图形计算机 本发明涉及对文字、图形等显示信息(图形)进行绘图等图像处理,并显示其输出的图像处理器以及采用这种处理器的图像数据处理装置或图形计算机,尤其是涉及在廉价小型图形计算机中将文字符号等二值数据高速展开处理为多值数据的图像数据处理装置,以及缩短绘图所需时间的存储器结构以及控制方法。
存储字符和图形数据等,并根据这些数据来描绘、显示或印刷图形的图形计算机采用一种帧缓冲器来存储与显示画面的像素相对应的数据(以下称为像素数据)。
通常包括以下两种处理:其一是为了描绘图形,由字符和图形数据运算像素位置和像素数据,并根据像素位置将像素数据写入帧缓冲器的绘图处理;其二是为了在显示画面上显示稳定的图像,与显示装置的光栅扫描同步,按顺序重复从帧缓冲器读出与显示画面的像素相对应的像素数据的显示处理。
首先说明与显示有关的现有技术。降低图形计算机价格的方法已知的有帧缓冲器合并到大容量主存储器中的方案。这种例子有日本特开平4—84192中记载的图形处理装置和美国学术刊物《IEEE第一届计算机工作站国际会议》第30—37页(1985年11月)中记载的罗伯特P.科威尔(Robert P.Cowell)地显示结构等。这些装置将主存储器中所用的DRAM等的高速存取模式用于显示,来减轻显示处理的负荷。也就是说,使得帧缓冲器的水平方向与DRAM等的列地址方向一致。
但是对处于绘图状态的帧缓冲器的存取,即使对二维座标系中连续的像素进行存取,也大多会造成行地址改变。例如在描绘近乎垂直的直线时,二维座标系中即使是相邻像素,它们的地址也有与帧缓冲器水平方向存储区宽度相当的偏移。现在的个人计算机中,主流是水平方向640像素、垂直方向480像素、每一像素1字节,但正逐渐过渡为每一像素4字节。也就是说,水平方向的存储区宽度是640字节至2560字节,DRAM等的列地址宽度则是1K字节到4K字节左右。两者规模大致相同,因而对上述垂直排列的两个像素存取时,行地址往往不同。高速存取模式限于同一行地址以内。于是,可以认为上述现有技术并未使缓图的存取充分高速化。(第一现有技术)
而且,绘图处理方面,詹姆斯D.弗利(James D.Foly)和安垂斯·范·达姆(Andries Van Dam)共著(今宫淳美译)的《计算机图形学》(1984年发行)的第443—446页中就直线描绘方法记载了由两个座标点求出两点间连接直线的表达式,再按照该式求出两点间座标点的方法。(第二现有技术)
此外,日本特开昭57—200087中记载了一例高速执行直线绘图的装置(第三现有技术)。它说明了这样一种方法,即预先将向量数据展开成点的值存储到向量数据存储装置,再由始点、终点座标计算出存储地址,读出X座标每递增1时按Y座标的增量表达的向量数据,来求得描绘的座标。
文献《HD64410 ARTOP用户手册》第194—199页中记载有一例将文字等二值数据展开为多值数据,在帧缓冲器中进行描绘的文字描绘装置。(第四现有技术)
该文献揭示了将如图2所示的“0”和“1”表达的16×16位构成的二值数据展开为多值数据,此二值数据的例子是文字数据和符号数据(以下简单地称字符数据)。这些字符数据组排列存储到字符生成ROM(CGROM)中,各个字符数据被分配给字符,由该字符来存取。
因而,可根据与此排列特性相对应的数值计算求出与字符相应的字符数据在存储器上的地址。与这类存储地址对应明确的字符数据可以看作如图2所示那样,以行地址1、例地址1的点为原点,在X方向、Y方向上都由16像素构成的座标系。
进行的是将K的二值表达字符数据与字符数据在存储器上的地址展开成多值(彩色,多层次)数据与变换为帧缓冲器上的地址的多值数据。
第五现有技术则是日本特平5—135162号公报《图像处理装置》中揭示的包含二值数据屏蔽处理的绘图高速化技术。
由此可知,它是与二值数据的多值展开和用于显示的彩色化相关的技术,这里采取的绘图技术由于色成分处理方法,背景有些差异。
也就是说,由于考虑RGB三种基色成分用于显示的缘故,与先前说明的多值展开基本技术相比,每一像素由三种成分构成,处理数据量变多,处理复杂。
这里可以是与关注一种色成分,在绘图中进行多值展开相同的考虑方法。
此项技术的特点在于采用存储与二值数据“1”相对应的多值数据的RAM,此外还在该RAM内存储多个像素的展开数据。藉此可进行多像素处理,谋求展开处理高速化。
多值展开处理是这样实现的,即对RAM所存多值展开像素的多值数据,在二值数据“0”相应部分的数据上进行屏蔽处理。
根据第一现有技术可知,对帧缓冲器存取,存储器上的行地址常有差异。但是存储器的高速存取模式却限定在同一行地址内。因此,可认为上述现有技术并未使绘图的存取充分高速化。
根据第二现有技术可知,它未对描绘的直线长度做充分考虑,不管直线长短,都要求出座标点的算式。求出此座标点算式的处理,需要利用多条命令的组合来编写程序。因此,存在这样的问题,即算出直线描绘式的处理时间要比短直线情况下的描绘处理时间长。
根据第三现有技术可知,虽然在高速描绘直线方面有效,但对于向量的容量未做充考虑,带来向量数据存储装置容量大的问题。
根据第四现有技术可知,由于是多值展开字符全部像素数据的每一个,所以有无法高速处理的问题。
此外,第五现有技术中的高速化措施,与二值数据的“0”对应的部分未必向屏蔽处理对象相近的特定色变换。因而,带来无法应付无屏蔽处理的绘图,无法进行如图28所示带文字背景的绘图这类问题。
而且,在想要由计算机系统来实现这种高速化办法的情况下,当把对多个像素同时展开得到的结果写入帧缓冲器时,若有存储器存取限制,就会发生以下问题。
也即,CPU为了达到内部处理高速化,往往设置存储器存取限制。这种存储器存取限制就是如《计算机结构和定量方法》第94—97页中所记载那样,以字节单位的存储器存取作为基准,存取规模大于此基准,例如以字单位或长字单位存取时,则必须满足其地址为偶数,或是4的倍数。
也就是说,在例如以长字单位写入帧缓冲器,时则必须满足写入前的地址为4的倍数。在其他情况下,只能以较小的单位写入。
本发明的第一目的在于将图形计算机做成小型且低价格,并进一步缩短绘图所需时间。具体来说,使以往未作考虑的DRAM等构成主存储器的高速存取模式得以有效运用,提高对主存储器内配置的帧缓冲器进行描绘时的存取速度。(相对于第一现有技术)
本发明第二目的在于提供一种降低存储装置容量并且高速描绘直线的装置以及方法。(相对于第二、第三现有技术)
本发明第三目的在于提供一种高速执行多值展开的装置。
本发明另一目的在于缩短透明处理时间,有效地进行处理。
本发明再一目的在于提供一种既可高速多值展开处理又可高速透明处理的装置。
达到第一目的的措施是,利用寄存器和地址变换部,主存储器通用区域内同一行地址部分在CPU或DMAC看来,当作连续地址来处理。另一方面,属于帧缓冲器的同一行地址部分在CPU或DMAC看来可以安排成二维,将对垂直方向连续的像素的存取归于同一行地址内。这样,通过使往往一维连续的CPU程序和运算中所采用的数据存储在通用区域,往往二维排列的图形像素数据存储在帧缓冲器,就可以使绘图存取速度和其它存取速度都提高。
达到第二目的的措施是,根据直线的始点与终点的座标值,由绘图方式控制部可选择采用数据存储部数据加以描绘的方式和算出直线座标值的算式再描绘的方式,因而可以降低存储装置的容量,并且高速地描绘直线。
达到第三目的以及其它目的的措施是,通过对于析取出的像素二值数据,根据向多值数据展开的条件以及应处理像素数据的位置,选择预先保留在多值图案存储部与屏蔽图案存储器的多值以及屏蔽图案数据,就可根据屏蔽处理和存储器存取限制,同时就多个像素实现多值展开以及绘图处理。从而可以抑制程序步数增加,提高处理速度。
图1是图形计算机的构成例示意图。
图2是二值数据例示意图。
图3是第三存储器内的组成。
图4是图形计算机的构成例示意图。
图5是现有帧缓冲器的映像例示意图。
图6是帧缓冲器的物理映像例示意图。
图7是显示部的定时图。
图8是图形计算机的其它构成例示意图。
图9是图形计算机的其它构成例示意图。
图10是直线绘图方法构成图。
图11是绘图方式控制部的构成图。
图12是座标调整部的构成图。
图13是一例数据存储部内的向量数据。
图14是表示直线始点和终点的图。
图15是作为示范表示直线的图。
图16是用作示范表示直线始点和终点的图。
图17是直线座标生成部的构成图。
图18是作为第一实施例中的示范表示直线的图。
图19是表示直线像素数和处理时间关系的图。
图20是表示CPU实施例的构成图。
图21是CPU在实施例中生成直线向量数据时的处理流程。
图22是CPU在实施例中生成直线向量数据时的部分处理流程。
图23是CPU在实施例中生成直线向量数据时的处理流程。
图24是CPU分配实施例向量数据地址空间的说明图。
图25是现有多值展开装置的功能框图。
图26是现有多值展开装置的动作程序。
图27是无透明处理的绘图结果。
图28是有透明处理的绘图结果。
图29是包含多值展开程序的绘图程序的构成例示意图。
图30是通过屏蔽处理来规避存储器存取限制的概念图。
图31是多值展开装置的构成例示意图。
图32是边界判定部的动作说明。
图33是多像素析取部的内部构成。
图34是多像素析取部的动作程序。
图35是多像素析取例。
图36是多像素析取例。
图37是多像素析取例。
图38是多像素析取例。
图39是一例多值图案生成部的构成。
图40是一列多值图案存储部的构成。
图41是一例屏蔽图案存储部的构成。
图42是图案判定程序。
图43是图案判定程序。
图44是图案判定程序。
图45是一例多像素屏蔽处理部的构成。
图46是CPU多值展开绘图处理的流程图。
图1是使图形计算机小型化,并缩短绘图所需时间的本发明实施例。
本实施例的图形计算机包含:控制绘图和显示,工作频率为20MHz微型计算机001;由DRAM构成,其中并入帧缓冲器,且数据宽度为16位的主存储器002;由ROM构成,存储应用程序031和图形数据030,且数据宽度为16位的第二存储器003;进行控制,以便在LCD005上显示绘图数据的显示部004;存储大容量图形数据和应用程序等,由CD—RAM装置或硬盘装置等构成的外部存储器006;同步定时以NTSC电视制式为基准,水平方向为320像素,垂直方向为240像素的液晶显示器005。图1中,液晶显示器简略表示为LCD,以下均采用此缩写。
这里采用LCD005作为图形计算机的显示器,但只要不改变本发明实质,也可以用阴极射线管等其它光栅扫描型显示器来代替LCD005。
微型计算机(微机)001包含:作为运算装置的CPU010;由ROM构成,存储绘图程序以及显示控制程序,且数据宽度为16位的第三存储器013;由RAM构成,数据宽度为16位的第四存储器014;显示中从帧缓冲器020读出像素数据后送至显示部004的直接存储器存取控制器011;产生与LCD005同步用的显示控制信号的显示控制信号发生装置012;与微机001内部总线第二总线017和外部总线第一总线007连接的总线状态控制器015;产生系统时钟160的振荡器016。图1中,直接存储存取控制器011和总线状态控制器015分别简略地表示为DMAC和BSC。下文中采用这些缩写。
以下说明本实施例与绘图有关的部分。
CPU010是执行应用程序,并根据其要求产生文字以及图形等图形数据的运算装置。其动作包括根据应用程序提供的文字、图形等图形数据,按照第三存储器013存储的绘图程序,运算帧缓冲器020内的像素位置及其像素数据,再通过BSC015与第一总线007将此像素数据写入其像素位置。
BSC015与第二总线017和第一总线007连接的同时,为了通过第一总线007使DRAM构成的主存储器002与微机001直接连接,还需对行地址与列地址进行多路转换,产生行地址选通信号和列地址选通信号等总线控制信号。此外,通过对主存储器002的前一次存取中的行地址与现在存取中的行地址作比较,来自动检测出高速页面模式可以进行的存取,并自动产生在高速页面模式下的存取。此BSC015未增加逻辑装置,但做到了自动实施主存储器002或帧缓冲器020的高速页面模式存取。而且,后文所述帧缓冲器存取方法可随绘图座标系变化的实施例是主要作为BSC015的功能实现的。
第三存储器013存储缓图程序131。这些程序由应用程序调用,通过第二总线017顺序取到CPU010中执行。CPU010通过执行这些程序将图形要素、文字要素描绘到帧缓冲器中,还生成显示用控制信号。
图3表示第三存储器013的存储内容。显示控制程序130对DMAC011传送结束的通知次数计数,根据此通知次数DMAC011判定结束传送的光栅在LCD005画面上是否为垂直方向上最后的光栅。若不是最后的光栅,DMAC011再初始化。其初始化内容是接下来应传送的开头地址和每一个光栅像素数据相对应的应传送字数,然后使DMAC011处于等待DMA请求信号042的状态。这里,帧缓冲器020的大小与LCD005的大小相等时,DMAC011的源地址每次存取便递增,因而接下来应传送的光栅开头地址已经生成,不必设定为源地址。另一方面,在通知次数表示最后光栅时,通知次数清零,只剩最初光栅的开头地址和与一个光栅像素数据相对应的应传送字数,接着使DMA011处于等待DMA请求信号042的状态。CPU010依次执行以上程序,就可实现帧缓冲器020的垂直扫描。象这样通过由软件实现垂直扫描,就可以谋求降低图形计算机的价格。而且,通过使帧缓冲器020的规模比LCD005画面大,并利用上述显示控制程序130,还能够作平滑的上卷处理。所熟知的是,一般平滑上卷处理可以通过一点一点重复移动来实现。显示控制程序130是指定光栅开头地址的程序,因而通过每次略微改变这些地址,来实现平滑上卷处理。每一光栅的像素数据以该数据与LCD005的水平扫描相同步的定时,传送至显示部004,在显示部004内变换为模拟的RGB信号040,输出到LCD005。
绘图程序131根据绘图的图形要素,包括多个独立程序,分为单功能程序132与多功能程序136两类。多功能程序136是对各种图形要素,应用程序根据指定的属性来绘图的程序。因此需要作属性判定,分支转移以根据判定结果进行处理,并进行该处理。单功能程序132则是以相应于各种图形要素的特定属性,而非指定属性,进行绘图的程序。此特定属性采用各种图形要素中高频度出现的属性。虽然后面将详细叙述,但例如与点、直线、矩形区域色块有关的高频度出现的属性是颜色为单色,在已经描绘的图形上重写的情况。这类属性在描绘一个图形要素的基础上,不用改变色彩,不用在背景像素数据与写入像素数据之间运算。换言之,单功能程序只要简单地将求得的像素数据写入求得的位置上就行。这样就不需要与属性有关的处理,因而单功能程序132比多功能程序136速度快。本实施例中还包含高速直线绘图程序133和高速进行多值展开的多值展开程序124,以专门用于直线绘图。因而,可以分为三类程序,其中包含上述省去属性有关处理的其它绘图程序135。
另一方面,尽管数量不多,但仍有需要指定属性来执行绘图的情况。作为这种例子,说明描绘虚线的情况。描绘虚线时,控制实线与虚线的属性指定虚线,再对指定虚线间隔的数据进行指定,并执行多功能程序136。此属性称为线种,指定虚线间隔的数据称为线型。这时,由于要根据线型来判定每一像素是否写入像素数据,因而处理时间比单功能程序132长。这样,通过设有高速处理高频度出现的单纯属性的单功能程序132和可以处理复杂属性的多功能程序136,就既维持图形计算机的通用性,又缩短绘图时间。这些多功能程序136与单功能程序132建立了可以由高级语言编制的应用程序调用的图形程序库。高级语言对应于由美国标准协会(ANSI)规范化的C语言。在由图形要素属性可知仅仅单功能程序就足够时,不需要将通用多功能程序136与应用程序连接。这时,可以节约第三存储器013的容量。在不需要单功能程序132时,也同样不需要将它们与应用程序连接。这时,也可以节约第三存储器013的容量。在后面述及的采用本发明的汽车导向例子中,属于单功能程序132的各种图形要素绘图程序当中,用到的是少数程序。因此,将应用程序也存储到所连程序不多的第三存储器013。象这样,每一图形要素设绘图程序,图形要素的属性又设有多功能程序136和单功能程序132,只连接需要的绘图程序,因而可以使所需的存储器容量减小,降低图形计算机价格。
现脱离图1实施例说明绘图程序的其它实施例。这些实施例具有的结构是多功能程序136中包含单功能程序132,根据图形要素形成一个程序。这种情况下,判定形图要素所指定属性与上述特定属性一致时,起动单功能程序132。即使是这种实施方式,也可以达到根据图形要素的属性,缩短所需时间这种目的。由于每一图形要素有一个程序,绘图程序数量较少,应用程序员容易理解绘图程序库。而且,按照指定的属性执行绘图,所以应用程序的调试也容易。这里,图形要素的属性大多在编制成应用程序时就已经确定了。因而,象本实施例那样在绘图程序中进行特定属性的判定,在应用程序员看来是很冗长的处理。换言之,在缩短绘图所需处理时间方面与图1实施方式相比,考虑得不够充分。
再回到图1进行说明。DMAC011根据与LCD005水平扫描同步的DMA请求信号,通过第二总线017、BSC015和第一总线007,从帧缓冲器020连续读出一个光栅的像素数据,并送至显示部004。这时,DMAC011为了使用第二总线,由总线仲裁信号100向BSC015请求总线存取。与此相应,BSC015先由总线仲裁信号100使CP010停止,再将总线存取权授予DMAC011。获得总线存取权的DMAC011根据CPU010中预先设定的光栅开头地址,连续进行对规定像素的读出存取。可以在一次存取中得到多个像素,因而读出存取次数是1光栅像素数除以1字中所含像素数得出的值。例如,本实施例中第一总线的数据宽度为16位,像素数据为8位(同时显示彩色为256色),因而1字含有2像素。帧缓冲器020与LCD005的1光栅(水平方向的像素列)为320像素,所以要存取160次。
BSC015可以根据其设定,使对于特定地址空间的存取变成对DRAM的存取。本实施例中为了使内含帧缓冲器020的主存储器002以低价格构成,采用了DRAM。因此,将主存储器002配置于上述特定地址空间,在BSC015中设定将对此空间的存取变成对DRAM的存取。此设定由CPU010按照应用程序实施。按此设定,BSC015对DMAC011发出的地址多路转换成行地址和列地址,再对第一总线007实施DRAM的随机读出周期。这里,行地址与先行DRAM存取行地址相同的话,就实施高速页面周期。而且,因为是DMA011进行的存取,所以BSC015产生DMA写入信号150,将由帧缓冲器020读出的像素数据在其读出存取周期中写入显示部004。本实施例中采用的262144字×16位的DRAM,其存取时间是80ns,周期时间是150ns,相同行地址内的字数是512。系统时钟700是20MHz。因此,设定BSC015,使DRAM的存取周期对行地址发出的随机存取为4个时钟周期,对高速页面存取为2个时钟周期。此设定由CPU010按照应用程序实施。一光栅的第一次存取,其DRAM行地址大多与前一次存取时不同,因而是随机存取。一光栅连续存取过程中,其行地也往往改变。同一行地址内有512字,而每一光栅存取的是160字,所以这种改变最多只有一次。此外,刷新周期在一光栅传送中也至多一次。因而,整个光栅的存取所需的周期数是322至326,时间是16.1μs至16.3μs,平均是16.2μs。每一秒第一总线占有的时间是每一光栅平均存取时间乘以画面的光栅数(垂直方向像素数),再乘以垂直同步频率后得到的值。每一画面的光栅数是240,LCD005以NTSC电视制式为基准,垂直同步频率为59.9Hz。于是,每一秒中第一总线占有的时间是233ms。总线占有率为23.3%。
再回到图1说明帧缓冲器020的垂直扫描。DMAC011将一光栅像素数据从帧缓冲器020传送到显示部004,就通过第二中断信号110向CP010通知传送完毕。CPU010将第三存储器013中存储的显示控制程序130作为中断处理执行。
接着说明各部分的同步方法。显示控制信号发生装置012输入系统时钟信号160,产生控制LCD005水平扫描或垂直扫描的水平同步信号124、水平显示期信号121、垂直同步信号123和垂直显示期信号120。CPU010根据应用程序来设定这四种PWM信号的周期、相位和脉冲宽度。水平同步信号124是表示LCD005一次水平扫描结束和下一水平扫描开始的信号。水平显示期信号121是表示各水平扫描中显示开始位置和结束位置的信号。垂直同步信号123是表示LCD005一次垂直扫描结束和下一垂直扫描开始的信号。垂直显示期信号120是表示LCD005各垂直扫描中显示开始位置和结束位置的信号。水平显示期信号121表示的水平方向的显示期同垂直显示期信号120表示的垂直方向的显示期相结合,就可以确定LCD005的显示区域。此外,显示控制信号发生装置012与垂直显示期信号120相同步,请求中断处理。中断处理的请求是在垂直显示期开始的时候和结束的时候。本实施例中通过第一中断信号125来请求中断处理。CPU010根据这种中断处理请求,起动第三存储器013所存储的绘图程序131或显示控制程序130。由此,可以减少绘图和显示过程中产生的LCD005画面上出现的图形混乱。具体来说,根据垂直扫描结束时的中断处理请求,按显示控制程序130实施上述显示区域的变更处理。这样的话,在平滑上卷中LCD005画面上就不会有衔接缝之类的混乱图形出现。而且,根据垂直显示期开始时的中断处理请求,来起动垂直扫描速度比LCD005垂直扫描速度慢的绘图处理。这样,就不会发生在LCD005画面上显示的是画一半的不完整图形这种难堪情况。这类绘图处理有属于单功能程序的多角形色块处理和矩形区域的复印处理。不仅使这些绘图处理的起动与垂直扫描同步,还使这些绘图处理变成沿LCD005垂直扫描方向相同的方向进行扫描的程序。通过这样的措施,使得绘图垂直扫描不会超越LCD005的垂直扫描,绘图垂直扫描也不会被LCD005垂直扫描超越。
以上是本发明的基本构成。
这里详细说明实现第一目的的构成。图4是使图形计算机小型化,并且绘图所需时间缩短的本发明微机的一实施例。图4是从图1基本构成中选择实现第一目的所需的组成部分加以详细图示的。
达到第一目的图形计算机由微机001,将帧缓冲器020合并在一起且数据宽度为16位的主存储器002和显示部004构成。
显示部004临时将主存储器来的多个像素数据存储于串行化器043,再通过调色板044逐个像素进行彩色展开,形成RGB040送至LCD005。而且显示部004由显示控制电路产生垂直同步信号、水平同步信号,输出至LCD005,每一光栅与本机水平同步信号保持同步,输出DMA请求信号042,向微机001请求传送水平方向一光栅的数据。
微机001包括:运算装置CPU010;显示中从帧缓冲器020读出像素数据传送至串行化器043的DMAC011;作为微机001内部总线的第二数据总线170与第二地址总线171。这些第二数据总线170与第二地址总线171两者都是32位,是图1中第二总线017的组成部分。为了对主存储器002和显示部004收发数据,第二地址总线171通过执行地址生成部152和地址多路转换部153与外部总线的第一地址总线071连接。第一地址总线071相当于第二地址总线171的低25位。另外,第一数据总线070以及第一地址总线071是图1中第一总线007的组成部分。对于地址的高7位则输出经译码的选择信号155、156。而且,第二数据总线170通过总线缓冲器或收发器与第一数据总线070连接。第一数据总线070为32位。这里,总线缓冲器或收发器与本发明本质无关,因而图1中省略了。通过这些第一数据总线070和第一地址总线071在主存储器002与显示部004与微机001之间收发数据。对帧缓冲器020的存取和对通用区域021的存取是能过微机001内部设置的存储器控制寄存器151和实际地址生成部152实现高速化的。存储器控制寄存器151存储规定帧缓冲器020的第一信息TA。此第一信息TA由CPU010设定。而且,此第一信息TA被送至实际地址生成部152,在第一区域判定装置内与第二地址总线171的字段B比较大小。地址字段A表示主存储器002排列着的规定空间,而且地址字段B比第一信息TA小时,该地址即判定为帧缓冲器020。此时交换该地址的字段C与字段D。这里,地址字段A的位数为7位。因而,主存储器002的最大容量为33554432字节(2的25次幂)。字段B的位数为9位。因而,可以按65536(2的16次幂)字节单位将主存储器002设定为帧缓冲器020。地址字段C与D的大小与字段E的大小由存储器控制寄存器151的第二信息YS与第三信息XS规定。具体来说,第二信息YS与第三信息XS一起给出各字段位数。这里,字段C、D和E的位数是可变的,因而字段B与C往往重合。重复的位数设为n位(n=YS+YS+XS-16)的话,实际帧缓冲器020的最小单位则是2的(16+n)次幂。通过代入与上述第一区域判定相应的字段C与字段D,在帧缓冲器中按二维块状安排存储装置的行地址,通用区域021中则按原样安排成一维。地址多路转换部153根据存储器控制寄存器151中存储的第四信息MXC,对与构成主存储器002的DRAM相对应的行地址和列地址进行多路转换输出。这时,地址多路转换部153判定地址字段A是否为规定的主存储器002的空间,仅对主存储器002所安排的空间进行地址多路转换。由以上可知,可以只将主存储器002的帧缓冲器020安排成二维块状,从而能够使绘图中对像素的存取高速化。
接下来采用图5说明现有主存储器设置帧缓冲器020的情况。本例中,帧缓冲器020做成每一像素一字节,X方向有1024像素,Y方向有512像素。从CPU看去的逻辑地址在X方向上逐渐增加,并随着Y方向的增加,存储器宽度1024逐一递增。主存储器002的例子有用2个256K字×16位DRAM的1M字节。这时,同一行地址内有2K字节,因而对Y方向连续的两像素的存取是高速的。但图形直线平均规模为20像素左右,一根直线的绘图过程中就要对多个行地址进行存取。因此,仍照上面那样寻址,速度就慢。若进行图6所示的物理映像的话,只要是Y方向不超过32像素的直线,基本上可归于同一行,速度变快。即使是X方向连续有64像素、水平方向上作扫描的矩形色块等,也可以达到较充分的性能。在本例的情况下,存储器控制寄存器151中存储的第一信息TA为8,第二信息YS为5,第三信息XS为6。这种设定适合于方向任意的直线作为主体的绘图,但对于经常出现多角形、矩形色块的应用程序来说,增大第三信息XS则可以使位于色块中的像素的存取速度提高。也就是说,较好的方法是随应用程序的不同改变物理地址映像。即,本发明通过使第二信息YS和第三信息XS可变,就可由相同的微机构成最适合各种应用的帧缓冲器。接下来,采用图7说明DMAC011与实际地址生成部152与地址多路转换部153的关系。从帧缓冲器020向显示部004传送光栅要占用第一数据总线070,最好是尽可能短。因此,要如图4第一数据总线070的动作示出的那样,使光栅集中传送。而且,利用单地址模式的DMA传送,在同一存储周期内从存储器读出和写入到I/O。进行这种DMA的DMAC若位于微机001外部,DMAC则需要产生二维地址。为此,必须将实际地址生成部152与地址多路转换部153装于DMAC内部。这又使得硬件规模增大,因而做成将DMAC011装于微机001内部,共用实际地址生成部152与地址多路转换部153的方式。
图8是本发明的其它实施例。设有存储器控制寄存器组157,控制多个区域的地址分块。在4个区域分别有控制寄存器1570、控制寄存器1571、控制寄存器1572和控制寄存器1573。而且把实际地址生成部152与地址多路转换部153合在一起,设置地址变换部158。图9为本发明其它实施例。作为地址变换部158的替换,这里采用了利用查表的地址变换部159。
以下说明实现第二目的的实施例。
本实施例的高速直线绘图方式属于第三存储器013内绘图程序131的单功能程序132。
(用于实现第二目的的第一实施例)
图10是示出本发明直线绘图装置一实施例的功能构成图。本发明直线绘图装置输入第二存储器003的图形数据030所存有关直线的座标数据300。座标数据300示出了直线始点座标(Xs,Ys)与终点座标(Xe,Ye)。高速直线绘图程序133由绘图方式控制部1330、座标调整部1331、存储直线向量数据的数据存储部1332、直线座标生成部1333和绘图部1334形成。帧缓冲器020存储直线绘图装置输出的像素数据。
这里说明具有本发明特征的绘图方式控制部1330。
图11是将绘图方式控制部1330划分为各功能块的示意图。提供座标数据300,由线长运算部1340计算始点座标(Xs,Ys)与终点座标(Xe,Ye)之差△X(=Xe-Xs)和△Y(=Ye-Ys)(以下称这些数据为差分数据1341),并输出至座标调整部1331。此外,线长运算部1330还将差分数据的绝对值|△X|和|△Y|(以下称这些数据为绝对值数据1344),输出选择信息1342,符号信息1343输出至输出控制部1350内的多路转换器1351。
线长运算部1340当|△X|或|△Y|<3时,就将输出选择信息1342设定为例如“0”,|△X|或|△Y|>3时,则将输出选择信息1342设定为例如“1”。而且,当△X与△Y为相同符号时,则将符号信息1343设定为例如“0”,而当△X与△Y为不同符号时,则将符号信息1343设定为例如“1”。
座标数据300,绝对值数据1344和符号信息1343作为输入送给输出控制部1350,并由输出选择信息来控制是将绝对值数据1344和符号信息1343输出给上述数据存储部1332,还是将座标数据输出给直线座标生成部1333。输出控制部1350做成当上述输出选择信息为0时,就选择绝对值数据1344和符号信息1343输出给数据存储部1332,而当输出选择信息为“1”时,则选择座标数据输出给直线座标生成部1333。
以下说明具有本发明特征的座标调整部1331。
图12是将座标调整部1331划分为各功能块的示意框图。提供差分数据△X作为X差分判定部1360的输入。提供座标数据X(Xs和Xe)作为多路转换器1361的输入。X差分判定部1360做成当△X<0时将选择信息1366设定为例如“1”,△X≥0时将选择信息1366设定为例如“0”。多路复用器1361做成当加法值选择信息为“1”时输出Xe,当加法值选择信息为“0”时输出Xs。还提供差分数据作为差分组合判定部1363的输入。差分组合判定部1363当△X=1,△Y=-2或是△X=-1、△Y=2时,将组合信息1365设定为例如“1”,其它情况则设定为“0”。又,提供“0”和“-1”作为多路转换器1364的输入。多路转换器1364在组合信息为“1”时选择“-1”,为“0”时选择“0”。加法器1362使多路转换器1361的输出与多路转换器1364的输出相加,作为修正的X座标输出给绘图部。修正的Y座标也用同样的方法输出给绘图部。
接下来说明具有本发明特征的数据存储部1332。
图13示出一例存储于数据存储部1332的向量数据。如图所示,数据存储部总体划分为同符号部和异符号部,在绝对值数据1344表示的地址存储“1”、“0”。提供符号信息1343和绝对值数据1344作为输入,当符号信息1343为“0”时选择同符号部,当符号信息1343为“1”时选择异符号部。若绝对值数据1344被指定,就向绘图部1334输出同符号部或异符号部内的向量数据。
以下采用例题详细说明图10的装置。
首先说明|△X|或|△Y|<3的情况。图14中,设S为始点从标(Xs,Ys)=(4,3),E为终点从标(Xe,Ye)=(5,1),图中的“X”号(叉号)表示已经绘图的像素数据。以下说明连接点S和点E的座标点产生过程。绘图方式控制部1330内的线长运算部1340接受座标数据,运算得出△X(=Xe-Xs=1)和△Y(=Ye-Ys=-2),送至座标调整部1331。而且,△X与△Y为不同符号,因而符号信息1343设定为“1”。此外,在本例的情况下,|△X|=1、|△Y|=2,因而设定“0”作为输出选择信息。这里,输出选择信息为“0”,因而选择绝对值数据1344和符号信息1343,送至数据存储部1332。因为数据存储部中,在图5的场合,△X与△Y为相异符号,且|△X|=1、|△Y|=2,所以向绘图部1334输出
0 1 0
0 1 0
0 0 1。
另一方面,座标调整部1331输入△X=1、△Y=-2和座标数据(Xs=4,Ys=3)和(Xe=5,Ye=1)。△X=1因而选择信息1366被设定为“0”,多路转换器1361输出Xs。此外差分组合判定部1363输入△X与△Y。△X=1且△Y=-2,因而组合信息1365被设定为“1”。多路转换器1364因组合信息为“1”,故选择“-1”输出至加法器1362。加法器1362将多路转换器1361的输出Xs(=4)与多路转换器1364的输出“-1”相加,向绘图部输出“3”作为修正的X座标。
另外,△Y=-2因而选择信息1369设定为“1”,多路转换器1368将Ye(=1)作为修正的Y座标输出至绘图部。接下来绘图部再使存储数据部的3×3向量数据的左下点同(修正的X座标,修正的Y座标)重合,向帧缓冲器020绘图。这时绘图部将向量数据为“1”的部分展开为像素数据,为“0”部分则进行透明处理(即,“0”部分仍然保留原先的像素信息)。利用上述办法,如图15所示完成始点S到终点E的直线。
接下来说明|△X|或|△Y|≥3的情况。图16中,S表示始点座标(Xs,Ys)=(1,1),E表示终点座标(Xe,Ye)=(5,4)。说明连接点S与点E的座标点产生过程。
图17是将直线座标生成部1333划分成各功能块的示意框图。直线座标生成部是由判定部1370、误差项运算部1371、常数发生部1(1372)、常数发生部2(1373)和座标算部1374组成的。
始点座标(Xs,Ys)与终点座标(Xe,Ye)作为输入送至判定部1370,求出△X(=Xe-Xs)和△Y(=Ye-Ys)。而且,△X≥0时将增量信息fx1376设定为“1”,将△X送至误差项运算部1371、常数发生部1(1372)和常数发生部2(1373)。△X<0时,增量信息fx1376设定为“0”,将-(△X)送至误差项运算部1371、常数发生部1(1372)和常数发生部2(1373)。而且,△Y≥0时,增量信息fy1377设定为“1”,将△Y送至误差项运算部1371、常数发生部1(1372)和常数发生部2(1373)。△Y<0时,增量信息fy1377设定为“0”,将-(△Y)送至误差项运算部1371、常数发生部1(1372)和常数发生部2(1373)。此外,△X≥△Y时判定信息1375设定为“1”,送至误差项运算部、常数发生部1(1372)和常数发生部2(1373)。△X<△Y时判定信息1375设定为“0”,送至误差项运算部(1371)、常数发生部1(1372)和常数发生部2(1373)。
误差项运算部1371当判定信息为“1”时,求出误差项d=2×△Y(或-△Y)-△X(或-△X),输出至座标运算部1374。而且,误差项运算部1371当判定信息为“0”时,求出误差项d=2×△X(或-△X)-△Y(或-△Y),输出至座标运算部1374。
常数发生部1(1372)当判定信息为“1”时,求出常数1c1=2×△Y(或-△Y),输出至座标运算部1374。而当判定信息为“0”时,求出常数1c1=2×△X(或-△X),输出至座标运算部1374。
常数发生部2(1373)当判定信息为“1”时,求出常数2c2=2×(△Y(或-△Y)-△X(或-△X)),输出至座标运算部1374。而当判定信息为“0”时,求出常数2c2=2×(△X(或-△X)-△Y(或-△Y)),输出至座标运算部1374。
座标运算部1374当判定信息为“1”时,在X座标上加fx,当误差项d<0时使误差项d和常数1c1相加。误差项d≥0时,使误差项d与常数2c2相加,在Y座标上加fy。
由此求得更新的座标,将它输出至绘图部。重复以上处理,直到△X=-1。而且判定信息为“0”时,在Y座标上加fy,当误差项d<0时,使误差项d与常数1c1相加。误差项d≥0时,使误差项d与常数2c2相加,在X座标上加fx。
由此可求得新座标,将它输出至绘图部。重复上述处理,直到△Y=-1。在图15情况下,△X=4、△Y=3,所以判定信息为“1”,fx=1,fy=1,最初误差项d=2×3-4=2,常数1c1=2×3=6,常数2c2=2×(3-4)=-2,因而始点之后接下来该描绘的座标是(2,2),误差项d被加上常数2c2,而为d=0。
通过重复此处理,便如图18所示完成从始点S至终点E的向量。图19示出采用本装置描绘直线时直线像素数与处理时间的关系。在直线不超过3像素的情况下,从数据存储部读出数据,不论何种情况都要描绘3×3的9像素方块。因此,直线不超过3像素时,不论像素数为多少,时间总是一定的。但4像素以上直线,因为按每一像素确定绘图座标,所以处理时间为与像素数成正比的值。
综上所述,在进行短直线绘图时,只要读出预先存储的向量数据,就可以输出绘图数据,可以节省运算直线绘图算式及其所需数据的开销。而进行长直线绘图时,则采用算式绘图,因而可以抑制向量数据存储部容量的增加。由此,可以实现一种以较少的存储资源执行高速直线绘图的系统。
(用以达到第二目的的第二实施例)
图20示出本发明其它实施例的构成图。
本实施例包括CPU010、帧缓冲器020、第四存储器014和连接它们的第二总线017,其中CPU010由多个寄存器所组成的寄存器组103;通用运算器101;读出写入部107;连接它们的总线104、105和106,以及控制它们的控制部102等形成。
图21示出本装置中产生直线向量数据时的处理流程。
若指定有始点和终点座标,就求出|△X|与|△Y|,判定绘图的像素数是否为4个以上(步骤2000,步骤2001)。为4个以下便判断△X与△Y是否同符号(步骤2002)。是同符号就读出存储于同符号部中地址为|△X|、|△Y|的向量数据(步骤2003)。接下来,△X<0时选择Xe,△X≥0时选择Xs。此外,当△X=1且△Y=-2时从Xs减去1,当△X=-1且△Y=2时则从Xe减去1,从而求得修正的X座标。又,在△Y<0时以Ye为修正的Y座标,在△Y≥0时以Ys为修正的Y座标(步骤2004)。绘图的像素超过3个时,就求出直线座标算式(步骤2007),求出座标(步骤2008),并重复上述处理直到结束为止。
图22示出步骤2007的详细处理流程。
首先,求出△X(=Xe-Xs)(步骤2070)。而且,△X≥0时使fx=1(步骤2071、步骤2072),△X<0时使fx=0,使△X为(-△X)(步骤2071,步骤2073)。接下来求出△Y(=Ye-Ys)(步骤2074)。而且,△Y≥0时使fy=1(步骤2075,步骤2076),△Y<0时使fy=-1,△Y为(-△Y)(步骤2075,步骤2077)。此外,△X≥△Y时求出误差项d=2×△Y-△X,常数1c1=2×△Y,常数2c2=2×(△Y-△X)(步骤2078,步骤2079)。△X<△Y时求出误差项d=2×△X-△Y,常数1c1=2×△X,常数2c2=2×(△X-△Y)(步骤2078,步骤2080)。
图23求出由步骤2081开始的详细处理流程。
首先说明从步骤2080接入的一路流程。先在X座标上加fx(步骤2081),接下来,在误差项d<0时使误差项d与常数1c1相加(步骤2082,步骤2084)。误差项d≥0时,使误差项d与常数2c2相加,在Y座标上加fy(步骤2082,步骤2083)。由此求得新座标,重复此处理直到△X=-1(步骤2085)。其次,从步骤2079接入的另一路流程先在Y座标上加fy(步骤2086),再在误差项d<0时使误差项d与常数1c1相加(步骤2087,步骤2089)。误差项d≥0时,则使误差项与常数2c2相加,在X座标上加fx(步骤2087,步骤2088)。由此求得新座标,重复此处理直到△Y=-1(步骤2090)。
图24示出一例主存储器内或内置SRAM中的向量数据。
综上所述,按照本实施例,即使是普通CPU,仍可以方便、高速地,以较少的存储资源进行直线绘图。
以下说明实现第三目的以及其它目的的实施例。第三目的在于设法使文字绘图等2值展开所需的处理执行时间缩短。
图25示出现有技术的2值数据绘图方法的框图。
这些组成部分当中与多值展开动作有关的是2值数据物理地址计算部301,2值数据存储部302,1像素数据析取部303,1/0判定部304,多值数据0(305)和多值数据1(306)。此外,与包含多值展开数据透明处理的绘图有关的则是多值数据物理地址计算部307,屏蔽处理部308,绘图部309和帧缓冲器020。
2值数据物理地址计算部301具备的功能是将送给2值数据绘图装置的2值座标位置(Xs,Ys)变换为存储器所构成的2值数据存储部302的物理地址。此地址表示的存储区内存储了以字节为单位的数据,其数据量为8像素的2值数据。当输入到1像素数据析取部303的全部数据截取结束时,求得的地址即被表示构成文字的下一像素的地址所更新。
2值数据存储部302是存储2值数据群的存储器,将2值数据物理地址计算部301的输出结果存储器地址作为输入,与该地址对应的数据输出至1像素数据析取部303。存储器的传送单位随系统而异,但按字节单位传送时,输出至1像素数据析取部303的数据为8像素的2值数据(每一像素由1二进制位表达)。
1像素数据析取部303按每一像素截取由2值数据存储部303所输出的8像素数据后,输出至1/0判定部304。1像素截取采用移位器等。每一次多值展开进行一次截取,当2值数据存储部送来的数据全部截取结束时,就输入新的8像素数据。
1/0判定部304判定1像素数据析取部303输出的1像素的2值数据是0还是1。此判定结果当其2值数据0时,则选择输出多值数据0(305)至屏蔽处理部308,而当其为1时,则选择输出多值数值1(306)至屏蔽处理部308。
多值数据0(305)和多值数据1(306)是预先为2值数据绘图装置设定的,2值数据0,1所对应的多值数据存储区域。
多值数据物理地址计算部307的功能是,以提供给多值展开程序134的多值座标位置(Xd,Yd)为输入,计算构成帧缓冲器的存储器上相应的物理地址。确定该物理地址后,每进行一次写入即更新为下一次写入的目标地址。求得的地址输出至屏蔽处理部308和绘图部309。
屏蔽处理部308输入涉及有无屏蔽处理的信息,多值数据物理地址计算部307输出的帧缓冲器写入目标地址信息,帧缓冲器内该写入地址的数据,多值数据0(305)以及多值数据1(306)。涉及有无屏蔽处理的信息由多值展开程序134外部的模式控制寄存器等提供。
用图27、图28来说明有无屏蔽处理所造成的绘图结果差异。
图27示出的是经屏蔽处理,未执行透明处理的绘图结果。如该图所示,文字背景全被涂成与原先2值位映像数据“0”所对应的一种颜色。
图28示出的是执行过透明处理的绘图结果,因而与原先2值位映像数据“1”对应部分以外的部分显示本来帧缓冲器的数据。而且,透明处理可得到仅对原来的2值位映像图案“0”对应部分进行绘图的绘图结果,与图27所示的绘图结果不同,并非文字背景绘成四方形,文字部分透明。
绘图部309具有的功能是将屏蔽处理部308输出结果的多值数据写入地址为多值数据物理地址计算部307输出结果的存储区。
帧缓冲器020是RAM等存储器构成的绘图数据存储区域。
图26示出图25各部分所组成的2值数据绘图装置的处理程序。此处理由以下步骤1至步骤9组成,通过组成文字的像素逐个重复处理来进行一文字的绘图。
步骤1中,求出与所提供的座标点相对应的存储地址。由本多值展开程序外部提供的座标点标出文字组成像素左下角座标点。而且,求地址的计算是由2值数据物理地址计算部301根据预先定义的2值数据座标系原点相对应的地址和该座标系给出的X方向的存储宽度来进行的。
步骤2进行的是从步骤1所求得的地址处的数据析取1像素数据的处理。2值数据以1二进制位来表示1像素。因此,本步骤就是,对于用通常总线按存储器存取单位(即字节、字、长字)存取得到的多个像素的像素数据,执行从其中析取1像素像素数据的处理。
而且,数据的全部像素析取结束时,就更新步骤1求得的地址,由2值数据存储部输入下一展开所需的数据。本步骤的处理由1像素数据析取部303进行。
步骤3进行步骤2析取的1像素数据的1/0判定。也就是说,析取的1像素数据为0时,选择存储于多值数据0(305)中的彩色数据,而当析取的数据为1时,则选择存储于多值数据1(306)中的彩色数据。本步骤的处理由1/0判定部304进行。
步骤4计算作为绘图目标的帧缓冲器存储地址。此处理由多值数据物理地址计算部307进行。
步骤5判定是否为进行透明处理的模式。与此模式有关的信息由2值数据绘图装置的外部提供。这里,不进行透明处理的时候转移到步骤6,进行透明处理的则转移到步骤7。
步骤6是不进行透明处理时形成的程序。这里将步骤3所选的CL0或CL1写入步骤4求得的地址的存储区。由此结束1像素的绘图,转移至步骤9的结束判定。
步骤7是进行透明处理时形成的程序。这里进行步骤4求出的地址的数据读出。也就是保留写入开始的帧缓冲器数据。
步骤8与步骤7相同,也是进行透明处理时形成的程序。这里进行的处理是由步骤3的选择结果确定绘到帧缓冲器的数据。步骤3选择CL0时,就以步骤7读出的写入目标的帧缓冲器数据为绘图数据。而当步骤3选择CL1时则仍旧以CL1为绘图数据。
步骤9为多值展开装置的结束判定处理。在组成文字的全部像素的多值展开、绘图进行结束之前对转移至步骤2的重复处理加以控制。全部像素绘图结束以后,就结束多值展开手段。
以下用附图说明文字绘图等多值展开处理执行时间缩短的实施例。以下说明当中,是以8位来表现1像素多值数据的,但本发明并不特别规定1像素的位数。而且,多值展开除文字绘图以外,在面状色块图案等情况下也出现。本实施例尽管以文字为对象作说明,但只要是带有多值展开的绘图,都可以用本发明多值展开方法,不特别限于文字。
图29示出的是本发明存储多值展开绘图程序的第三存储器013内,涉及绘图程序131内多值展开程序134的功能框图。多值展开程序属于一系列绘图中的一个处理程序,由图1中的第二存储器031,通过绘图程序131才得到以下数据。
2值座标位置032是表示将要展开的2值数据座标系中座标位置的存储区,由X座标、Y座标两个数据构成。多值展开程序134由此数据计算存储2值数据的存储地址后,读出数据。
多值座标位置034是表示帧缓冲器多值数据中的座标系内进行绘图的座标位置的存储区,由X座标、Y座标两个数据构成。多值展开程序134根据此数据计算描绘多值展开后数据的帧缓冲器存储地址,用于屏蔽处理和绘图处理。
多值数据0的数据035是存储与2值数据0对应的多值数据的存储区。此数据在进行文字等多值展开之类处理以前定义。多值展开装置119从这里读出与2值数据“0”相对应的彩色数据。而且,存储于此区域的彩色数据的变更按照绘图程序131进行,或由CPU直接进行。
多值数据1的数据036是存储与2值数据1对应的多值数据的存储区。此数据在进行文字等多值展开之类处理以前定义。多值展开装置119从这里读出与2值数据“1”相对应的彩色数据。而且,存储于此区域的彩色数据的变更按照绘图程序131进行,或由CPU直接进行。
屏蔽处理的有无037是针对多值展开结果设定是否进行屏蔽处理这种信息的存储区。
传送次数038在绘图程序131中计算,并提供给多值展开程序134。此信息表示的是完成绘图所需的像素数。例如在进行16×16像素构成的文字绘图时,传送次数便给出256。
多值展开程序134是程序存储区,所存程序由以上信息将2值数据展开为多值数据,并根据需要按屏蔽处理的有无来实施透明处理,向帧缓冲器描绘展开的多值数据。
该多值展开程序134的基本思路是,将以往每一像素进行的多值展开,改为备有多个像素全部组合形成的多值数据图案,并使2值数据群析取的多个像素与多值数据图案带有对应关系。此外,还备有屏蔽图案,即是否对析取的多个像素进行屏蔽处理的信息组合,并根据析取的多个像素的2值、绘图目标的帧缓冲器地址、屏蔽处理的有无和传送次数等要素来选择多值图案和屏蔽图案,从而一边与屏蔽处理和存储器存取限制相对应,一边实现多个像素的同时处理。
这里,用图30说明屏蔽处理同存储器存取限制的对应方法。条件是令存储器存取限制必须在以长字(4字节)存取存储器时,其地址为4的倍数,而以字(2字节)存取存储器时,则为2的倍数。对于字节单位的存取无特别限制。这里,长字的存取边界和任意指定的帧缓冲器写入目标地址都得如图30所示为4的倍数+1。
为了将已多值展开的4像素数据高效率地写入存储区,这里要执行的动作应以长字的规模把4像素同时写入帧缓冲器,来谋求降低存储器存取次数,提高系统性能。为了一边接受存储器存取限制,一边进行4像素同时写入,要执行以下处理。
由2值数据存储部将取决于2值座标位置的数据输出至2值数据析取部。2值数据析取部从可传送的多个像素(二进制位)数据中析取进行同时处理的像素个数的数据。但根据构成帧缓冲器的存储区,将多值座标位置变换为存储器物理地址后所得的地址关系,以及该多个像素同时多值展开为第几次,调整上述析取。首先,就帧缓冲器存储区和变换后所得物理地址关系而言,析取的进行对应于长字写入的4字节数据中有效的数据个数。在图30例子的场合,存储有按长字传送的数据A、B、C、D的位置内,与A对应的位置并非写入绘图结果的位置,因而有效的数据个数为3。在此结果的基础上,2值数据析取部将3像素数据当作靠右的4位数据截取。此时,就最左侧的1位数据而言,由于不对以下处理造成影响,因而填入0或1合适的数据。其次,与多个像素同时多值展开为第几次的关系取决于对2值数据群的多值展开是初始的,中间的,还是最后的多值展开。也就是,对应于上述有效数据的位置随着同时处理展开数据写入帧缓冲器时是初始传送,中间传送,还是最后传送而有所不同。是初始传送时,有效数据处于连续的4像素中的靠右位置。中间传送则4像素全是有效数据。最后传送时有效数据位置靠左。初始传送中2值数据的析取如与帧缓冲器地址限制的关系中所说明的那样,靠右析取个数与帧缓冲器有效像素个数相应的2值像素。中间传送全部为有效像素,因而将初始析取以后的2值数据每次析取4像素。最后传送则接着中间传送所析取的数据之后靠左侧析取余下的2值数据。此时,右侧有效数据以外的相应位置填入0、1等合适的数据。
这种2值数据截取方法,由初始传送和最后传送的2值数据截取方法对存储器存取限制所造成的有效像素位置与长字存取边界的偏移加以调整,中间传送则不需要考虑存储器存取限制,能够执行以下处理。
多值展开根据这样析取的2值数据,对存储了4像素的多值数据组合的表进行查表检素,来获得相应的4像素多值数据。查表检索是将析取的4像素的多值数据当作数值,以此数值作为地址,分析与表的对应关系进行的。除此之外,还根据析取的2值数据、有关地址限制的地址偏移类型和反映第几次传送至存储处的信息,从存储了4像素屏蔽位置组合的屏蔽图案表中求出一个对应的数据。例如在图形初始传送时,对于与帧缓冲器A位置相对应的数据,根据地址偏移判定A位置非本应写入的位置,根据所析取的2值数据判定处于应屏蔽处理位置的C位置,并选择屏蔽位置所对应的1字节全部8位都填入0的图案。在随动作模式而选择不进行屏蔽处理的场合,不需要对C位置进行屏蔽,因而选择的屏蔽图案是对A位置进行屏蔽,以吸收地址偏移。对上文所述那样得到的4像素多值数据组合图案与屏蔽图案两者作逻辑积,又对帧缓冲器A—D位置数据与屏蔽图案的反转值两者作逻辑积,再对此二逻辑积结果取逻辑和,就可生成最终写入帧缓冲器的数据。
对于中间传送,由于初始传送解决了存储器存取限制问题,所以只要注意选择屏蔽处理时就屏蔽的位置,来选择屏蔽图案。至于最后传送,只是用以吸收存储器存取限制进行屏蔽处理的位置关系与初始传送不同,其它处理内容均相同。
例如在展开8像素2值数据时,以往方式需要写入帧缓冲器8次,而通过上述多个像素同时处理,在不涉及存储器存取限制时相同的处理2次存取就可以,即使涉及存储器存取限制也只需3次存取。
图31示出多值展开程序134的功能框图。与图25所示的以往基本组成重复的2值数据物理地址计算部1341,2值数据存储部1342,多值数据0(1345),多值数据1(1346),多值数据物理地址计算部1347和帧缓冲器020具有与上文所述完全相同的功能,这里省略说明。
边界判定电路1356所具有的功能是根据多值数据物理地址计算部1347输出的帧缓冲器020内绘图位置的地址判定与存储器存取限制的关系。
判定是对多值数据物理地址计算部1347输出的帧缓冲器绘图目标地址的低2位译码,来判定对应于哪一种状态的。对绘图目标地址的低2位译码,是因为在本例中按长字(4字节)进行传送时,存储存器存取限制令其地址必须为4的倍数。
此例的译码结果出现如图32所示的四种状态,即状态(1)、(2)、(3)和(4)。各状态分别表示以下情况:
状态(1)地址为4的倍数,因而是不涉及存储器存取限制的情况;
状态(2)地址为4的倍数+1,因而是涉及储器存取限制的情况;
状态(3)地址为4的倍数+2,因而是涉及存储器存取限制的情况;
状态(4)地址为4的倍数+3,因而是涉及存储器存取限制的情况。
本实施例中,分别称这些状态为边界0、边界1、边界2和边界3。此信息输出到多个像素数据析取部1351,图案选择部1352和地址修正部1357,由各部选择与各边界对庆的处理。
多个像素数据析取部1351所具有功能是从2值数据存储部1342输出的8像素2值数据,根据边界判定部1356输出的信息和传送次数存储区038的信息,析取作为多值展开对象的2值数据。析取的数据作为从多值图案存储部1354和屏蔽图案存储部1355选择相应图案用的选择信息,传送至图案选择部1352。此选择信息在进行4像素同时处理时是具有0至F值的16种信息。
图33示出多个像素数据析取部1351的内部组成。
X方向2值数据存储部3020是存储2值数据存储部送出的16像素2值数据的寄存器。本实施例中,以16×16点阵像素构成的文字数据作为绘图对象。因而,此寄存器存储有全部的X方向连续数据。
析取用寄存器3021是存储从X方向2值数据存储部3020所存X方向像素数据中析取的4像素2值数据的区域。
程序控制部3022具有的功能是根据传送次数038和边界判定部1356的输出信息来管理多像素数据析取部1351的动作。
图34示出程序控制部3022的动作。步骤1传送次数038来的信息当中随有关X方向传送次数的信息进行分支转移,当此传送次数为16时,分支转移至步骤2以下的处理,次数非16的场合则分支转移至步骤6以下的处理。传送次数038表示的信息是绘图剩下的像素个数,文字数据由X方向16像素构成。因而,此判定就变成判定是否为X方向的初始传送。
步骤1判定有X方向上为初始传送时,就执行步骤2。这里,根据2值数据物理地址计算部1341的运算结果,从2值数据存储部1342读出该地址的像素数据,存储到X方向2值数据存储部3020。通过此传送将相当于16像素2值数据的16位数据存储到寄存器。
步骤3则根据边界判定部1356的输出结果(即指示与存储器存取限制是否有关的信息)来选择以下处理。
进行与步骤3中判定结果对应的各个处理。
边界0的时候,从存储2值数据的X方向2值数据存储部3020的MSB(最高有效位)一侧将4像素数据传送给析取用寄存器3021。
边界1的时候,从存储2值数据的X方向2值数据存储部3020的MSB一侧将3像素数据传送给析取用寄存器3021。
边界2的时候,从存储2值数据的X方向2值数据存储部3020的MSB一侧将2像素数据传送给析取用寄存器3021。
边界3的时候,从存储2值数据的X方向2值数据存储部3020的MSB一侧将1像素数据传送给析取用寄存器3021。
将从X方向2值数据存储部3020传送至析取用寄存器3021的各像素数据作为右边对齐的数值输入至图案选择部,因而各边界的数值化数据的表示范围是,边界0时从0到15,边界1时从0到7,边界2时从0到3,边界3时从0到1。
步骤5则准备析取下一像素,对16位寄存器内已经传送给析取用寄存器的数据作移出处理。因为不同边界析取的数据量不同,所以移位量分别是,边界0时4位左移,边界1时3位左移,边界2时2位左移,边界3时1位左移。移位时从LSB(最低有效位)一侧输入0。
步骤6是步骤1中X方向的传送次数非16时执行的程序。步骤6判定X方向传送次数是否比3大。传送次数是否比3大具有以下意义。
一系列多值展开,除初始传送以外全部都执行4像素同时处理的程序。因而余下的传送次数为3以下时,就表示是X方向的最后处理。也即,步骤6判定是否为X方向最后的处理。此判定结果为最后传送时进至步骤7,非最后传送时则与步骤4的边界0的情况相同,进行每次4像素的像素数据析取。
步骤7从存储2值数据的16位寄存器MSB一侧将4像素数据(即4位数据)传送给析取用寄存器。步骤7是在步骤6判定为X方向最后处理的情况下执行的程序,这里仍析取4像素数据。因而,由于边界还析取像素以外的数据,但此时利用图案选择部1352的功能来执行忽略像素以外的数据的动作。
步骤8由传送次数038的Y方向传送次数来判定整个文字绘图处理结束。判定结果当Y方向余下未处理数据时,要读取下一行X方向的2值数据,转移至更新2值数据存储器地址的步骤9。
步骤9更新Y方向的地址,进行读取下一行X方向2值数据的准备。
图35、图36、图37和图38示出以上程序的动作情况。
图35示出的是传送次数=16,边界0时X方向2值数据存储部3020和析取用寄存器3021的状态变化。由2值数据存储部1342输入的数据值假定示出“1000101011101000”。程序控制部3022由X方向的传送次数信息和边界信息将X方向2值数据存储部3020靠MSB一侧的4位数据传送到析取用寄存器3021。此后,使X方向2值数据存储部3020左移4位,该数据就变成“1010111010000000”。另外,图中LSB一侧阴影部分示出左移后填入的“0”。
图36示出的是传送次数=16,边界2时的状态变化。由2值数据存储部1342输入的数据值假定示出“1000101011101001”。程序控制部3022由X方向的传送次数信息和边界信息将X方向2值数据存储部3020靠MSB一侧的2位数据右边对齐后传送给析取用寄存器3021。因而,析取用寄存器3021设定为“0010”。接下来程序控制部通过使X方向2值数据存储部3020左移2位,此数据就变成“0010101110100100”。
传送次数=16,边界分别为1、3时,与图36边界2时相比,除了传送至析取用寄存器3021的位数、传送后X方向2值数据存储部3020移位数分别为1位、3位以外,其它动作均相同。
图37示出的是16>传送次数>3、边界0时X方向2值数据存储部3020和析取用寄存器3021的状态变化。通过到现在为止的析取,X方向2值数据存储部3020存储“1010111010000000”。除传送次数=16时以外,程序控制部3022按4位为单位将X方向2值数据存储部3020的数据传送至析取用寄存器3021。因而,在此例中从X方向2值数据存储部3020的MSB一侧将“1010”传送至析取用寄存器3020。此后X方向2值数据存储部3020左移4位,该值变成“1110100000000000”。
图38示出的是传送次数≤3,边界2时X方向2值数据存储部3020和析取用寄存器3021的状态变化。X方向2值数据存储部3020内部具有2值数据意义的仅为MSB一侧的2位,LBS一侧阴影部分均为移位动作后填入的“0”。即使这种情况,程序控制部3022仍将靠MSB一侧的4位数据传送至析取用寄存器3021。因而,析取用寄存器3021中存储的值为“0100”。
多值图案发生部1353所具有的功能是,产生一种多像素组合分别存储1像素多值数据的多值数据0(1345)和多值数据1(1346)时的总数据图案,并输出至多值图案存储部1354。本实施例是以4像素同时处理为前提的,因而生成有16种组合的数据图案。
图39示出多值图案发生部1353的组成。如图所示,合成图案数据生成电路1381由同时处理的像素个数求出该组合有几种和该组合数据。如果是本实施例那样的4像素同时处理的情况,可求出有16种组合,而且生成表示该组合数据0—15的二进制位数据图案。该信息作为位选择信号控制多值数据0(1345)和多值数据1(1346)的选择和向多值图案数据缓冲器1382写入的数量。
合成图案生成部输出的像素选择信号1383顺序输出多个像素组合数据(即二进制位数据图案)。4像素同时处理时,开始时从MSB一侧每1位依次输出表示0的“0000”,接下来输出表示1的“0001”,最后输出表示15的“1111”。按每1位输出的此信息是“0”时,选择多值数据0,为1时选择多值数据1。
缓冲器控制信号1384是控制将所选定的多值数据0(1345)或多值数据1(1346)写入多值图案数据缓冲器1382规定位置的。
多值图案数据缓冲器仅按同时处理像素的数量存储所选多值数据0(1345)或多值数据1(1346),并输出至多值图案存储部1354。
上述多值图案发生处理的起动有两种情况,一种是与改写多值数据0(1345)和多值数据1(1346)同步进行,另一种是识别出起动专用指令。
多值图案存储部1354具有的功能是将同时处理像素的多值数据组合图案作为多值图案发生部1353的输出结果存储。图40示出存储于多值图案存储部1354的内容。如图所示,可生成CLT0—CLT15的16行存储表。
屏蔽图案存储部1355所具有功能是存储如图41所示与进行同时处理的像素个数相对应的总屏蔽数据组合,即MST0—MST15。因而,本实施例中,与多值图案相同,屏蔽图案也由16种的组合数据组成。
再回到图31继续说明。
图案选择部1352所具有的功能是根据多像素数据析取部1351、边界判定部1356、有无屏蔽处理036等三部分的输出信息,从多值图案存储部1354存储的多值图案和屏蔽存储部1355存储的屏蔽图案当中选择与上述输入信息对应的一种图案。这里,将从多像素数据析取部1351输入的4像素2值数据作为4位数值处理。因而,就能以16进制数将上述选择作为0至F的数据处理。
图42、图43、图44示出根据图案选择部1352输入的上述信息选择多值图案存储部以及屏蔽图案存储部内需要的信息的程序。以下,用图42说明无屏蔽处理的情况,然后再用图43、图44说明有屏蔽处理的情况。
先就图42进行说明。
以有无屏蔽处理的判定开始图案选择。步骤1中根据有无屏蔽处理进行分支转移,无屏蔽处理时转移至步骤2,有屏蔽处理时转移至图43所示的步骤19。无屏蔽处理时执行的步骤2执行从多值图案存储部中选择对应的的多值图案的处理。此处理将多像素析取部输出的多像素2值数据作为2进制数表示的数值使用,选择与此数值对应的多值图案,来进行对应的多值图案选择。因而,多像素2值数据的值为n时,所选多值图案为CLT(n)。
从以下步骤3开始的处理是用于选择屏蔽图案的处理。先根据是否为多值展开的初始传送进行分支转移,是初始传送则转移至步骤4,不是则转移至步骤11。
此初始传送、中间传送和最后传送等传送顺序的管理是根据输入至多值展开程序134的传送次数038判定的。多值展开程序134中,此传送次数部分实际上存储逐次递减的、尚未多值展开的像素数。也就是说,多值展开程序134中,管理的是余下的多值展开像素个数,根据此像素个数分成初始传送、中间传送和最后传送3种顺序加以考虑,具有各自对应的程序来实施多值展开。传送顺序在多值展开程序134所存传送次数与多值展开程序134所输入传送次数038一致时,判定为初始传送,在多值展开程序134所存传送次数少于同时处理的像素个数时,判定为最后传送,在上述两种情况以外时则为中间传送。
这种传送顺序的判定结果为初始传送时,执行步骤4的处理。步骤4判定由边界判定部1356输入的帧缓冲器传送目标地址相对于存储器存取限制的偏移类型是否为边界0。初始传送是边界0时,由步骤5从屏蔽存储部选择MST15。非边界0的场合由步骤6判定是否为边界1,是边界1时由步骤7选择MST7。非边界1的场合由步骤8判定是否为边界2,是边界2时由步骤9选择MST3,非边界2的场合由步骤10选择MST1,结束一系列的处理。
步骤3的判定结果为否时,即非初始传送时,由步骤11判定是否为中间传送。此判定结果判定为中间传送时,不论边界信息如何,选择MST15。判定非中间传送时,即最后传送时,由步骤13、14、16分别进行边界信息的判定,为边界0时就结束,为边界1时选择MST14,为边界2时选择MST12,为边界3时选择MST8。尤其是最后传送为边界0时,余下的传送次数必定为0,所以不必进行处理而选择结束。
图43示出按步骤1有无屏蔽处理的判定结果进行屏蔽处理的图案选择程序。步骤19示出多值图案存储部内多值图案的选择,其判定方法与无屏蔽处理时步骤2的选择方法相同。接下来步骤20是与无屏蔽处理时的步骤3对应的处理,判定是否为传送顺序中的初始传送。步骤2判定为初始传送时,执行步骤21以下的处理。步骤21以下是与无屏蔽处理时步骤4对应的处理,判定同发自边界判定部的存储器存取限制有关系。边界0时,选择析取的2值数据作为2进制数的数值n所对应的MST(n)。边界1时,把析取的2值数据作为数值处理的情况下,使23权重位变成0,求出新二进制数的数值m,所选的屏蔽图案就是MST(m)。当边界2时,在把析取的2值数据作为数值使用的情况下,使23、22等权重位变成0,求出新二进制数的数值m,所选的屏蔽图案就是MST(m)。当边界3时,在把析取的2值数据作为数值使用的情况下,使23、22、21等权重位变成0,求出新二进制数的数值m,所选的屏蔽图案就是MST(m)。
图43示出步骤20中执行顺序判定结果是中间传送、最后传送时的图案选择程序。步骤31判定是否为中间传送。此判定结果为中间传送时转移至步骤32,否则转移至步骤33。
步骤32示出的是中间传送时的屏蔽图案选择程序,选择所析取2值数据为数值n所对应的MST(n)。
传送顺序为最后传送时,与无屏蔽处理时的步骤13以后的处理相同,由边界判定部来的信息判定其目标地址偏移是哪一类,分别按每一类选择屏蔽图案。步骤35、36是边界1时屏蔽图案的判定程序,析取的2值数据作数值使用时,使23、22、21权重位为0,求出新二进制数的数值m,并得所选屏蔽图案MST(m)。步骤38、39是边界2时屏蔽图案的判定程序,析取的2值数据作数值使用时,使23、22权重位为0,求出新二进制数的数值m,并得所选屏蔽图案MST(m)。步骤40、41是边界3时屏蔽图案的判定程序,析取的2值数据作数值使用时23权重位为0,求出新二进制数的数值m,并得所选择屏蔽图案MST(m)。通过以上多值图案和屏蔽图案的选择程序,选择全部情况对应的各种图案。
多值图案选择部存储输入到多值展开程序134,用以管理传送顺序的传送次数,每次进行多值展开就使说明该次像素个数的传送次数递减。通过此处理,生成一图案选择因子,即判定是初始传送、还是中间传送、还是最后传送的信息。
地址修正部1357在加存储器存取限制时,对地址数据反复作修正,直至为最靠近的并且满足存储器存取限制的地址,并输出至多像素屏蔽处理部。而且,地址修正通过使帧缓冲器物理地址的低2位清零来实现。
多像素屏蔽处理部1358所具有的功能是执行向帧缓冲器写入按多个像素为单位多值展开的数据。这种写入所写入的是帧缓冲器写入位置所对应的数据和选定的多值图案、选定的屏蔽图案之间进行以下逻辑运算后的数据。
即,如图45所示,通过多值图案与屏蔽图案的逻辑积和屏蔽图案反转值与帧缓冲器数据的逻辑积这两组数据取逻辑和,在屏蔽图案表示屏蔽位置的0位置填入对应的帧缓冲器数据。但在屏蔽图案选择的是MST15时,由于不必考虑帧缓冲器的数据就能进行写入动作,所以不进行这类逻辑运算,直接将选定的多值图案描绘到帧缓冲器。
如上所述,根据本实施例,不是按1像素为单位进行多值展开和屏蔽处理,而是可以脱机进行多像素同时的多值展开处理和屏蔽处理,此外,可以一边吸取存储器存储限制,一边同时处理多个像素。因此,绘图时间可以缩短很多,约为一组同时处理像素的处理时间。
以下说明使上述实施例的多值展开高速化措施适用于绘图程序131的实施例。
图46示出CPU010中进行多值展开和绘图处理的处理流程。这种文字绘图程序是作为第三存储器013内绘图程序131中的一个存储内容存在的。
一般,应用程序执行文字绘图等处理时程序员的界面大多数情况下使用高级语言。尤其是C语言,通过将功能定义成一个函数,谋求处理结构化。在本实施例中,也将进行文字绘图的一系列程序当作一个函数来处理。通常是以字符发生器等ROM中每一文字若干像素×若干像素的形式来存储文字数据的,但这里假定以16×16的像素阵列存储。
若以函数形式表达文字绘图程序则用TCOPY(Xs,Ys,dx,dy,Xd,Yd)1600。这里,TCOPY所表示的是进行一种复制处理,即作从2值数据至多值数据的变换处理,Xs,Ys所表示的是2值数据的传送源座标,dx是沿X方向传送的像素个数,dy是Y方向传送的像素个数,Xd、Yd是多值展开的数据的传送目标座标。本实施例中,是以dx=16、dy=16为前提,实际传送的像素个数为16×16像素(即256像素),来进行以下说明的。
存储Y方向的传送次数1601意味着存储dy值。此值用于文字绘图处理的结束判定1608。存储X方向的传送次数1602存储dx值,传送至多值展开程序134用于传送顺序的判定。向多值展开程序134传送2值数据座标位置(Xs,Ys)的程序1603表示将矩形区域传送源所示的2值数据的左下角座标传送到多值展开程序。向多值展开程序传送多值数据座标位置(Xd,Yd)的程序1604则表示将帧缓冲器传送源的传送目对对应的左下角座标传送到多值展开程序。此接受了各座标位置的多值展开程序分别将座标位置变换为存储器上的地址来使用。
向多值展开程序传送X方向传送次数的程序1605用于多值展开程序判定传送顺序。多值展开程序根据1605传送的有关传送次数信息,减去进行过多值展开、描绘的像素个数的数据,由此差值判定处于初始传送、中间传送、最后传送中哪一种传送顺序。此外,该差值还用作X方向传送结束判定1606的判定基准信息。此X方向的判定结果是尚未结束时,就再一次重复多值展开程序134。这种重复在多值展开如图2所示的2值数据的情况下,若按本实施例4像素同时执行处理,不加存储限制时重复4次,即使加存储器存取限制也只重复5次。另外,当判定X方向传送结束时,便执行从Y方向传送次数减1的处理1607。而且,从向多值展开程序传送X方向传送次数的程序1605开始一直重复执行,直到Y方向传送次数变成0为止。
通过这一系列处理,对图2所示的2值数据作多值展开,描绘到帧缓冲器时对帧缓冲器进行的存取次数,在不加存储器存取限制、无屏蔽处理时,为X方向4次×Y方向16次,共计64次存储器存取。该值按现有技术的多值展开方法为256次。
此外,进行屏蔽处理时存储器存取次数本实施例为X方向8次,Y方向16次,共计128次(屏蔽处理要增加读取帧缓冲器数据的存储器存取,因而X方向的存取次数为无屏蔽处理时的2倍)。反之,现有技术需要512次存储器存取。
借助寄存器和地址变换部,从CPU或DMC的角度来看,主存储器的通用区域中同一行地址部分可当作连续地址处理。属于帧缓冲器的同一行地址部分,从CPU或DMAC的角度来看可二维配置,能将垂直方向连续像素的地址归于同一行地址内。因而,可通过通用区域存储大多为一维连续的CPU程序和运算中所用的数据,帧缓冲器存储大多为二维连续的图形像素数据,使绘图存取同其它存取一起高速化。
又,按照本发明,短直线绘图只要读出预先存储的向量数据,就可以输出绘图数据,从而可以节省求出直线绘图算式及其所需数据的开销。此外,长直线绘图时用算式绘图,因而可以抑制向量数据存储部容量的增加。由此可以实现一种以较少存储资源高速执行直线绘图的系统。
此外,按照本实施例,CPU也可以方便地进行多像素同时处理的多值展开处理。多值图案数据配置于存储器中,可以脱机进行多值展开,并且可以同时处理多个点。因此,即使由CPU执行多值展开和绘图处理,也不至于使性能下降。