本申请为2002年11月25日提交中国国家知识产权局的国家申请号为00819571.4,国际申请号为PCT/AU00/00516,发明名称为“打印引擎/控制器和集成了引擎/控制器的打印头接口芯片”的中国专利申请的分案申请。
背景技术
已经演变了各种类型的将墨以点格式选择性地施加到页来构建图像的打印机。在发明人Kia Silverbrook的题为“Self-aligned constructionand manufacturing process for monolithic print heads”的美国专利号6045710中展示了对按需供滴打印机及其制造工艺的现有技术评价。
微机电按需供滴打印头,以下被称为Memjet打印头在以下申请中已有所描述,在此以交叉引用的方式来引入:
PCT申请号 |
参考号 |
PCT/AU00/00591 |
MJ62 |
PCT/AU00/00578 |
IJ52 |
PCT/AU00/00579 |
IJM52 |
PCT/AU00/00592 |
MJ63 |
PCT/AU00/00590 |
MJ58 |
Memjet打印头是从能够例如在全页宽范围内产生1600点每英寸(dpi)双值点(bi-level dot)液体墨的打印头段发展而来。点容易被隔离产生,因此可以充分利用分散点的抖动。色平面可以非常好地对准打印,实现理想的点对点(dot-on-dot)打印。这种打印头通过使用微机电墨滴技术来使能高速打印。
与本发明有关的各种方法、系统和装置在下列共同未决专利申请中揭示,这些专利申请是本发明的专利申请人或受让人与本发明同时申请的:
PCT/AU00/00518,PCT/AU00/00519,PCT/AU00/00520,PCT/AU00/00521,
PCT/AU00/00522,PCT/AU00/00523,PCT/AU00/00524,PCT/AU00/00525,
PCT/AU00/00526,PCT/AU00/00527,PCT/AU00/00528,PCT/AU00/00529,
PCT/AU00/00530,PCT/AU00/00531,PCT/AU00/00532,PCT/AU00/00533,
PCT/AU00/00534,PCT/AU00/00535,PCT/AU00/00536,PCT/AU00/00537,
PCT/AU00/00538,PCT/AU00/00539,PCT/AU00/00540,PCT/AU00/00541,
PCT/AU00/00542,PCT/AU00/00543,PCT/AU00/00544,PCT/AU00/00545,
PCT/AU00/00547,PCT/AU00/00546,PCT/AU00/00554,PCT/AU00/00556,
PCT/AU00/00557,PCT/AU00/00558,PCT/AU00/00559,PCT/AU00/00560,
PCT/AU00/00561,PCT/AU00/00562,PCT/AU00/00563,PCT/AU00/00564,
PCT/AU00/00565,PCT/AU00/00566,PCT/AU00/00567,PCT/AU00/00568,
PCT/AU00/00569,PCT/AU00/00570,PCT/AU00/00571,PCT/AU00/00572,
PCT/AU00/00573,PCT/AU00/00574,PCT/AU00/00575,PCT/AU00/00576,
PCT/AU00/00577,PCT/AU00/00578,PCT/AU00/00579,PCT/AU00/00581,
PCT/AU00/00580,PCT/AU00/00582,PCT/AU00/00587,PCT/AU00/00588,
PCT/AU00/00589,PCT/AU00/00583,PCT/AU00/00593,PCT/AU00/00590,
PCT/AU00/00591,PCT/AU00/00592,PCT/AU00/00584,PCT/AU00/00585,
PCT/AU00/00586,PCT/AU00/00594,PCT/AU00/00595,PCT/AU00/00596,
PCT/AU00/00597,PCT/AU00/00598,PCT/AU00/00517,PCT/AU00/00511,
PCT/AU00/00501,PCT/AU00/00502,PCT/AU00/00503,PCT/AU00/00504,
PCT/AU00/00505,PCT/AU00/00506,PCT/AU00/00507,PCT/AU00/00508,
PCT/AU00/00509,PCT/AU00/00510,PCT/AU00/00512,PCT/AU00/00513,
PCT/AU00/00514,PCT/AU00/00515
上述共同未决申请的公开内容通过交叉引用被结合在此。
上述打印头的性能由其引擎/控制器决定。高速打印是开发打印头和其引擎/控制器两者的事情。由上述技术使能的页宽打印头需要能够向其递送高速率滴控制信号的引擎/控制器。典型的页布局可以包含图像、图表和文本的混合。由于上述微机电打印头的页宽特点,每一页都能以恒定的速度打印,从而避免产生可见的伪像。这意味着不需要改变打印速度来匹配输入数据速率。文档栅格化(rasterization)和文档打印可被分离开来。为了保证以恒定速率向打印头提供数据,页不应被打印,直到其被完全栅格化。理想情况下,在栅格化简单页时,栅格化应该能够在打印机之前进行,以便留出时间对比较复杂的页进行栅格化。引擎/控制器决定这些功能可被实现的程度。
打印头更高的速度取决于打印头及其引擎/控制器两者的发展。打印引擎/控制器的体系结构需要被设计成以高速度将大量数据推向打印头。
具体实施方式
典型为12英寸的打印头宽度由一个或多个PEC控制,如下所述,以便能够实现A4和信函页的全出血(full-bleed)打印。在当前打印环境中,最多期望6个有色墨通道,包括:
·CMY,用于常规的彩色打印。
·K,用于黑文本和其它黑打印。
·IR(红外),用于标签使能的应用。
·F(固定剂),使能高速打印。
由于打印机是要能够高速打印,所以将需要固定剂以使下一页的较高速度打印完成前墨能够干燥。否则页之间可能相互洇渗(bleed)。在较低速度的打印环境中,不需要使用固定剂。
PEC可被建立在单个芯片中,以与打印头对接。它应具有4级基本功能:
·通过串行接口,如IEEE 1394来接收压缩页。
·用于从压缩形式产生页的打印引擎。该打印引擎的功能性包括展开页图像、抖动连续色调层、把黑层合成到连续色调层上、任选地添加红外标签、以及向打印头发送所得图像。
·用于控制打印头和步进马达的打印控制器。
·两个标准的低速串行端口,用于与两个QA芯片通信。需要注意的是,必须有两个端口,而不是单个端口,以保证在鉴权过程中强的安全性。
图1所示为从计算机系统向打印页发送文档的数据流。文档在11处被接收,并被加载到存储器缓冲器12中,其中可以实现页布局,并且可能添加任何所需的对象。在传送给打印引擎控制器10之前,来自存储器12的页在13处被栅格化,并且在14处被压缩。在打印引擎控制器10中,页作为压缩的页图像被接收到存储器缓冲器15中,然后从缓冲器15被馈送到页展开器(page expander)16,页图像在页展开器中被还原(retrieve)。在17处,可以对任何连续色调层进行任何必要的抖动。在18处,可以把任何黑双值层合成到连续色调层上,在19处还可以连同任何红外标签而合成。在20处,合成后的页数据被打印以产生页21。
打印引擎/控制器获取压缩页图像,以流水线方式开始页展开和打印。页展开和打印优选地被流水线化,因为在存储器中存储相当大的双值CMYK+IR页图像是不切实际的。
流水线的第一级展开JPEG压缩的连续色调CMYK层(见以下),展开Group4传真压缩的双值抖动矩阵选择图(见以下),并且展开Group4传真压缩的双值黑层(见以下),全部以并行方式进行。与此并行的,标签编码器对来自压缩页图像的双值IR标签数据进行编码。第二级使用由抖动矩阵选择图选择的抖动矩阵抖动连续色调CMYK层,将双值黑层合成在所得到的双值K层上,并将IR层加到该页。在任何C、M、Y、K、或IR通道中有需要的任何地方,还在每个点位置上产生固定剂层。最后级通过打印头经由打印头接口(见以下)打印双值CMYK+IR数据。
图2所示为打印引擎/控制器10如何配合于总体打印机系统体系结构内。打印机系统的各种部件可包括:
·打印引擎/控制器(PEC):PEC芯片10或者多个芯片负责接收压缩页数据,以存储到存储器缓冲器24中,执行页展开、黑层合成,并把点数据发送给打印头23。它还可以与QA芯片25,26通信,并提供检索打印头特性以保证最佳打印的装置。该PEC是本说明书的主题。
·存储器缓冲器:存储器缓冲器24用于存储压缩页图像,并且用于打印给定页的过程中的暂存使用(scratch use)。存储器缓冲器的构造和工作是本领域技术人员所已知的,并且在使用本发明的PEC时,为了它们的使用可以利用各种标准的芯片和技术。
·主QA芯片:主芯片25与可更换墨盒QA芯片26匹配。QA单元的构造和工作是本领域技术人员所已知的,并且在使用本发明的PEC时,可以利用各种现有QA过程。例如,在共同未决的美国专利申请中所描述的QA芯片:
TBA |
AUTH01 |
验证协议和系统 |
09/112,763 |
AUTH02 |
保护芯片免受IDD波动冲击的电路 |
09/112,737 |
AUTH04 |
保护片上存储器(快闪和RAM)的方法 |
09/112,761 |
AUTH05 |
芯片的防篡改方法 |
09/113,223 |
AUTH06 |
用于鉴权物理对象的系统 |
TBA |
AUTH07 |
验证协议和系统 |
TBA |
AUTH08 |
验证协议和系统 |
09/505,003 |
AUTH09 |
消耗品鉴权协议和系统 |
09/517,608 |
AUTH10 |
消耗品鉴权协议和系统 |
09/505,147 |
AUTH11 |
消耗品鉴权协议和系统 |
09/505,952 |
AUTH12 |
对存储在闪存中的值的未授权更改 |
TBA |
AUTH13 |
用于安全数据操纵的系统 |
09/516,874 |
AUTH14 |
带有防电源冲击的鉴权芯片 |
TBA |
AUTH15 |
保密数据的防护操纵 |
QA芯片通信最好包含在PEC芯片的总体功能性中,因为它在图像展开和运行物理打印头方面起作用。通过设置QA芯片通信,可以保证打印页时有足够的墨。优选地,使用鉴权芯片来实施嵌入在打印头组件中的QA。由于它是主QA芯片,所以只包含鉴权密钥,而不包含用户数据。但是,它必须与墨盒的QA芯片匹配。墨盒中的QA芯片包含维护最佳可能打印质量所需的信息,并且使用鉴权芯片来实施。优选地,使用64M位(8M字节)存储器缓冲器来存储压缩页图像。当向缓冲器中写入一页时,可以读取另一页(双缓冲)。另外,在打印页时,PEC使用存储器来缓冲计算得到的点信息。在打印页N时,缓冲器用于:
·读取压缩页N
·读取并写入页N的双值点信息
·写入压缩页N+1
[30]优选地,PEC芯片结合简单的微控制器CPU芯35以执行下列功能:
·在打印页之间,经由串行接口36执行QA芯片鉴权协议
·在打印过程中,经由并行接口91运行步进马达(步进马达需要5KHz过程)
·在打印过程中同步化PEC芯片的各部分
·提供与外部数据请求(编程寄存器等)对接的装置
·提供与打印头段低速数据请求(如读取特征向量和写入脉冲外形(pulse profile)对接的装置
·提供向外部DRAM写入横向(纵向)和纵向(横向)标签结构的装置
[31]由于所有图像处理都由专用的硬件执行,所以CPU不必处理像素。因此,CPU可以非常简单。多种现有的CPU芯是适合的:任何一种具有足够处理能力足够快地执行所需计算和控制功能的处理器芯都可以使用。一个合适的芯的例子是运行在大约1MHz的Philips 8051微控制器。与CPU芯35关联的可以是程序ROM和小程序暂存RAM。CPU通过存储器映射I/O与PEC芯片内的其它单元通信。特定的地址范围可以映射到特定的单元,而且在每个范围内,映射到该特定单元的特定寄存器。这包括串行36和并行91接口。在PEC芯片中可以结合小程序快闪ROM。其大小取决于所选的CPU,但是不应超过8KB。同样,可以在PEC芯片中结合小暂存RAM区。由于程序代码不必操纵图像,所以不需要大的暂存区。RAM的大小取决于所选的CPU(例如堆栈机制、子程序调用约定、寄存器大小等),但是不能超过2KB。
[32]使用基于上述引用段的页宽打印头的PEC芯片可以在全点分辨率(典型为1600dpi)下再现黑,但是使用半色调以较低的分辨率再现连续色调颜色。因此,页描述被分为黑双值层和连续色调层。黑双值层被限定合成于连续色调层上。黑双值层由包含用于每个象素的1位暗度(opacity)的位图构成。该黑层蒙罩(matte)的分辨率是打印机的点分辨率的整数倍。它所支持的最高分辨率是1600dpi,即打印机的全点分辨率。连续色调层由包含用于每个象素的32位CMYK色的位图构成,其中的K是任选的。这种连续色调图像的分辨率是打印机的点分辨率的整数倍。对于单个PEC来说,它所支持的最高分辨率在12英寸上是320像素每英寸(ppi),即打印机的点分辨率的1/5。对于更高的连续色调分辨率,需要使用多个PEC,其中的每个PEC产生输出页的一条。为了简化RIP中的计算,连续色调分辨率典型地还是黑双值分辨率的整数倍。但是,这不是一种要求。为了实现在打印机的存储器中的高效存储,黑双值层和连续色调层都为压缩形式。
图3所示为打印引擎的体系结构。打印引擎的页展开和打印流水线由高速串行接口27(例如标准的IEEE 1394接口)、标准的JPEG解码器28、标准的Group4传真解码器、定制的半色调器/合成器单元29、定制的标签编码器30、行加载器/格式器单元31、以及到打印头33的定制接口32构成。解码器28,88和编码器30被缓冲到半色调器/合成器29。标签编码器30根据协议向页建立一个或多个红外标签,协议与页的使用有关,且标签的实际内容不是本发明的主题。
打印引擎以双缓冲方式工作。一个页从高速串行接口27通过DRAM接口89和数据总线90加载到DRAM34中,同时先前被加载的页被从DRAM34读出,并通过打印引擎流水线传送。当完成页的打印时,刚刚加载的页成为正被打印的页,而通过高速串行接口27加载新页。在第一级,流水线展开任何JPEG压缩的连续色调(CMYK)层,并展开两个Group4传真压缩的双值数据流中的任一个。所述两个数据流是黑色层(虽然PEC实际上是颜色不可知的,而且该双值层可以被指向输出墨的任何一个),以及蒙罩,其用于在连续色调抖动的抖动矩阵之间选择,(见以下)。在第二级,与第一级并行,对随后用于IR或者黑墨再现的标签进行编码。最后,第三级对连续色调层进行抖动处理,并把位置标签和双值斑点1层合成到双值抖动层上。理想地,该数据流被调整,以便产生跨打印头中的重合段的平滑过渡,并且理想地,它被调整以补偿打印头中的故障喷嘴。从该级可以生成多达6个通道的双值数据。需要注意,并不是全部6个通道都出现在打印头上。例如,打印头可能只是CMY,此时K被推入CMY通道,而IR被忽略。可替换地,如果没有IR墨(或者出于测试目的),位置标签可以以K打印。所得到的双值CMYK-IR点数据被缓冲并格式化以便于通过一组行缓冲(见下文)的打印头上的打印。大多数行缓冲可以存储在芯片外(off-chip)DRAM34上。最后级通过打印头接口32打印上述6个通道的双值点数据。
在使用PEC的打印系统中采用压缩。这是为了降低主机和PEC之间的带宽要求以及降低用于页存储的存储器要求。在267ppi下,连续色调CMYK数据的信函页的大小为25MB。使用诸如JPEG的有损连续色调压缩算法(见以下),连续色调图像的压缩比可达到10∶1,没有质量的明显损失,从而给出2.5MB的压缩页大小。在800dpi下,双值数据的信函页的大小为7MB。诸如文本的相干数据(coherent data)压缩效果很好。使用诸如Group4传真的无损双值压缩算法(见以下),十点文本以大约10∶1的比率压缩,因此上述压缩页大小为0.8MB。一旦被抖动,一页CMYK连续色调图像数据由114MB双值数据组成。下文中所述的双层压缩页图像格式利用了有损JPEG连续色调图像压缩和无损双值文本压缩的相对强度。该格式足够紧凑以实现高效存储,并且足够简单以在打印过程中直接地、实时地展开。由于文本和图像通常不重叠,所以在正常的最坏情况下,页图像大小为2.5MB(即,只是图像),而在最佳情况下,页图像大小为0.8MB(即,只是文本)。在绝对最坏情况下,页图像大小为3.3MB(即,文本在图像之上)。假设图像占1/4平均页,则平均页图像大小为1.2MB。
Group3传真压缩算法(见ANSI/EIA 538-1988,Facsimile CodingSchemes and Coding Control Functions for Group4 Facsimile Equipment,1988年8月)可被用于无损压缩双值数据以便于通过慢速并有噪音的电话线路传输。双值数据表示在白背景上的所扫描的黑文本和图形,而且上述算法还被调节用于此类图像(对于例如半色调化的双值图像,它不进行明显地调节)。1D Group3算法对每个扫描行进行行程长度编码(runlength encode),然后对所得到的行程长度进行霍夫曼编码。范围在0到63的行程长度使用终止码(terminating code)来编码。范围在64到2623的行程长度使用构成码(make-up code)来编码,每个表示64的倍数,后跟一个终止码。超过2623的行程长度使用后跟终止码的多构成码来编码。霍夫曼表是固定的,但是针对黑和白行程(run)被分开调节(但1728以上的构成码除外,它们是公用的)。在可能的情况下,2DGroup3算法根据前一个扫描行把扫描行编码为一组短边德耳塔(0,±1、±2、±3)。德耳塔符号被平均信息量编码(entropy-encoded)(因此零德耳塔符号仅一位长,等等)。不能被德耳塔编码的2D编码的行内的边被行程长度编码,并且由前缀来标识。1D和2D编码的行被不同地标记。不管实际需要与否,1D编码的行都以规则的间隔产生,以便保证解码器可以从行噪中以最小的图像降级来恢复数据。2D Group3实现高达6∶1的压缩比(见Urban,S.J.,“Review of standards for electronic imagingfor facsimile systems”,Journal of Electronic Imaging,Vol.1(1),1992年1月,第5-21页)。
Group4传真算法(见ANSI/EIA 538-1988,Facsimile Coding Schemesand Coding Control Functions for Group4 Facsimile Equipment,1988年8月)无损压缩通过无错通信线路(即,线路是真正无错的传输,或者在较低的协议层进行纠错)传输的双值数据。Group4算法是以2D Group3算法为基础,其主要修改是:由于假定传输是无错的,所以不需要再以规则的间隔产生1D编码的行作为错误恢复的帮助。对于CCITT测试图像组,Group 4算法所实现的压缩比范围在20∶1到60∶1之间。Group4压缩算法的设计目标和性能使其能够作为用于双值层的压缩算法。但是,其霍夫曼表被调节到较低的扫描分辨率(100-400dpi),而且它编码超过2623的行程长度是困难的。在800dpi下,我们的最大行程长度是目前的6400。虽然Group 4解码器芯可以在PEC中使用,它可能无法处理超过在400dpi传真应用中所正常遇到的行程长度的行程长度,所以需要进行修改。使用G4Fax对黑层(典型为1600dpi)进行无损压缩的典型压缩比为10∶1以上。使用G4Fax对与连续色调颜色层匹配的抖动矩阵选择层(典型为320dpi)进行无损压缩的典型压缩比为50∶1以上。
Group 4Fax(G4Fax)解码器负责解压缩双值数据。双值数据被限制为单个斑点色(典型为用于文本和线图形的黑),以及抖动矩阵选择位图,用于对连续色调数据(由JPEG解码器解压缩)进行后续抖动。输入到G4Fax解码器的是从外部DRAM读取的2个平面的双值数据。由G4Fax解码器输出的是2个平面的解压缩的双值数据。该解压缩的双值数据被送到半色调器/合成器单元(HCU)用于打印流水线中的下一级。两个双值缓冲器提供用于在G4Fax解码器和HCU之间传送双值数据的装置。每个解压缩的双值层被输出到两个行缓冲器。每个缓冲器能够以期望的最大分辨率容纳全12英寸点行。采用两个行缓冲器允许一行被HCU读取,同时另一行被G4Fax解码器写入。这是重要的,因为单个双值行典型低于1600dpi,并且因此必须在点和行两个尺度上展开。如果该缓冲低于一整行,那么G4Fax解码器将必须对相同的行多次解码,每个输出600dpi点行一次。
斑点色1被设计成允许高分辨率的点数据用于输出图像的单个色平面。尽管连续色调层为图像提供的足够的分辨率,斑点色1目标用于诸如文本和行图形(典型为黑)的应用。当被用作文本和行图形时,压缩比通常超过10∶1。斑点色1对于最高打印质量允许可变分辨率达到1600dpi。因此,两个行缓冲器中的每个为总共2400字节(12英寸×1600dpi=19200位)。
抖动矩阵选择图的分辨率应该理想地匹配连续色调分辨率。所以两个行缓冲器的每个是480字节(3840位),能够以320dpi存储12英寸。当该图与连续色调分辨率匹配时,典型的压缩比可以超过50∶1。
为了对下列提供支持:
·800dpi斑点色1层(典型为黑)
·320dpi抖动矩阵选择层
对于1页/秒的性能(无论页宽是12英寸或8.5英寸),解压缩带宽要求为9.05MB/秒,在最高打印机速度性能时(30,000行/秒),对于12英寸页宽度和8.5英寸页宽度,所需的解压缩带宽分别为20MB/秒和14.2MB/秒。当解压缩的数据被输出到行缓冲器时,G4Fax解码器可以容易地一次从每个输出中解压缩一行。
G4Fax解码器通过DRAM接口直接从主存储器接收数据。压缩量决定了到外部DRAM的带宽要求。由于G4Fax是无损的,所以图像的复杂程度影响数据量并因此影响带宽。典型地,800dpi黑文本/图形层超过10∶1的压缩,所以每秒打印1页所需要的带宽为0.78MB/秒。类似地,典型的320dpi抖动选择矩阵以超过50∶1来压缩,导致0.025MB/秒的带宽。对于抖动选择矩阵的320dpi和对于斑点色1的800dpi的最快打印速度配置分别需要1.72MB/秒和0.056MB/秒的带宽。因此,2MB/秒的总带宽完全可以满足DRAM的带宽要求。G4Fax解码功能性通过G4Fax解码器芯实施。多种G4Fax解码器芯是合适的:它可以是任何具有足够处理能力以足够快地执行所需计算和控制功能的芯。它必须能够处理超过在400dpi的传真应用中所遇到的行程长度的行程长度,因此可能需要进行修改。
JPEG压缩算法(见ISO/IEC 19018-1:1994,Informationtechnology-Digital compression and coding of continuous-tone still images:Requirements and guidelines,1994)以特定质量水平对连续色调图像进行有损压缩。在压缩比低于5∶1时,JPEG算法引入不可察觉的图像降级,并且在压缩比低于10∶1时,引入可忽略的图像降级(见Wallace,G.K.,“The JPEG Still Picture Compression Standard”,Communication of theACM,Vol.34,No.4,1991年4月,第30-44页)。JPEG典型地首先把图像变换为一个色空间,该色空间把亮度和色度分离为分开的色通道。这允许色度通道可以被二次取样而没有显著的损失,因为人类视觉系统对亮度的敏感性要比对色度的敏感性相对大。经过该第一步后,对每个色通道被分开压缩。把图像划分为8×8的像素块。然后,通过离散余弦变换(DCT)把每个块变换到频域中。这种变换具有以相对较低的频率系数来集中图像能量的效果,这允许较高频率系数被较粗地(morecrudely)量化。这种量化是JPEG中压缩的主要来源。通过根据频率对系数定阶以最大化相邻零系数的可能性,然后对零行程进行行程长度编码,从而实现进一步压缩。最终,对行程长度和非零频率系数进行平均信息量编码。解压缩是压缩的反过程。
CMYK(或CMY)连续色调层被压缩为平面的色JPEG字节流。如果出于表共享的目的或者为了色度二次取样而认为进行亮度/色度分离是必要的,那么CMYK将被转换为YCrCb并且Cr和Cb被适时地二次取样。JPEG字节流是完整的和自包含的。它包含解压缩所需的全部数据,包括量化和霍夫曼表。
JPEG解码器负责对连续色调数据层进行忙碌的(on-the-fly)解压缩。向JPEG解码器输入的是多达4个平面的连续色调数据。其典型地是表示CMY连续色调图像的3个平面,或者是表示CMYK连续色调图像的4个平面。每个色平面可以处于不同的分辨率,尽管典型地所有色平面将是相同的分辨率。连续色调层从外部DRAM读取。JPEG解码器的输出是分到平面中的解压缩的连续色调数据。解压缩的连续色调图像被发送到半色调器/合成器单元(HCU)29,用于打印流水线中的下一级。4平面连续色调缓冲器提供用于在JPEG解码器和HCU 29之间传送连续色调数据的装置。
解压缩的连续色调数据的每个色平面被输出到一组两个行缓冲器(见以下),每个行缓冲器为3840字节,因此能够以320ppi容纳12英寸的单个色平面的像素。行缓冲允许当HCU从一个行缓冲器读取时,JPEG解码器可以向另一个行缓冲器写入。这是非常重要的,因为单个连续色调行通常低于1600ppi,并且因此必须在点和行两个尺度上展开。如果缓冲低于一整行,那么JPEG解码器就必须对同一行多次解码,每个输出600dpi点行一次。虽然多种分辨率被支持,但是在分辨率和可用带宽之间有权衡。当分辨率和颜色数增加时,带宽要求也增加。另外,PEC芯片的目标段的数目也会影响带宽和可能的分辨率。注意,由于连续色调图像被以平面格式处理,所以每个色平面可以采用不同的分辨率存储(例如,CMY平面可以是高于K平面的分辨率)。所支持的最高连续色调分辨率是1600ppi(与打印机的全点分辨率匹配)。但是只有足够容纳12英寸长度的320ppi行的足够连续色调像素的输出行缓冲器。如果需要以较高连续色调分辨率输出全12英寸,那么需要多个PEC芯片,尽管需要注意,打印机上的最终输出仍将仅是双值。如果支持320ppi的4种颜色,对于每秒1页的性能(不管页宽是12英寸或8.5英寸),解压缩输出带宽要求为40MB/秒,而在最高打印机速度性能(30,000行/秒)时,12英寸和8.5英寸页宽所需的解压缩输出带宽分别为88MB/秒和64MB/秒。
JPEG解码器通过DRAM接口直接从主存储器接收数据。压缩量决定了到外部DRAM的带宽要求。当压缩水平提高时,带宽降低,但是最终的输出图像的质量也降低。用于单个色平面的DRAM带宽可以通过将压缩因子应用到输出带宽而容易地算出。例如,具有10∶1压缩因子的320ppi的单个色平面需要1MB/秒的对DRAM的存取从而每秒钟产生一个单页。JPEG功能性由JPEG芯实施。多种JPEG芯是合适的:它可以是任何具有足够处理能力以足够快地执行所需计算和控制功能的芯。例如,BTG X-March芯具有高达140MB/秒的解压缩速度,这允许对4个高达400ppi连续色调分辨率的色平面的解压缩用于最高的打印机速度(1600dpi,30,000行/秒)以及800ppi用于1页/秒的打印机速度。需要注意的是,所述芯只需要支持解压缩,由此降低了由较通用的JPEG压缩/解压缩芯所施加的要求。该芯的大小预期不超过100,000个门。假定解压缩的数据被输出到行缓冲器,JPEG解码器可以每次容易地为每个色平面一次一个地解压缩一个整行,由此节省了一行期间的根据前后关系(on context)的切换,并简化了JPEG解码器的控制。4个前后关系必须被保持(每个色平面一个前后关系),并且包括外部DRAM中的当前地址以及适当的JPEG解码参数。
在图4中,半色调器/合成器单元(HCU)29组合了把连续色调(典型为CMYK)层半色调化为其双值版本的功能和把斑点1双值层合成到适当的已被半色调化的连续色调层上的功能。如果打印机中没有K墨,那么HCU29能够把K适当地映射为CMY点。它还根据抖动矩阵选择图中的对应值在两个抖动矩阵之间逐象素选择。到HCU29的输入是(来自JPEG解码器单元)通过缓冲器37输入的展开的连续色调层,通过缓冲器38输入的展开的双值斑点1层,通过缓冲器39输入的展开的典型与连续色调层的分辨率一样的抖动矩阵选择位图,以及通过缓冲器40输入的全点分辨率的标签数据。HCU29使用从外部DRAM34读取的达两个抖动矩阵。在41处,从HCU29向行加载器/格式单元(LLFU)输出的是高达6个色平面中的一组打印机分辨率双值图像行。典型地,连续色调层是CMYK或CMY,并且双值斑点1层是K。
图5中更详细地描述了HCU。一旦启动,则HCU继续进行直到它检测到页结束(end-of-page)条件,或通过其控制寄存器被明确停止。HCU的第一任务是在诸如缩放单元43的相应缩放单元中把诸如42的缓冲器平面中所接收的所有数据在水平和垂直两个方向上缩放为打印机的分辨率。
缩放单元提供了在水平和垂直两个方向上把连续色调数据或双值数据缩放为打印机分辨率的一种装置。缩放是通过在上述两个尺度上将数据值复制整数次数而实现的。缩放数据的过程是本领域的技术人员所熟知的。
页边单元57向缩放单元43提供两个控制位:前进点(advance dot)和前进行(advance line)。前进点位允许状态机生成相同点数据的多个实例(对于页的页边是有用的并且为重叠打印头中的段创建点数据)。前进行位允许状态机控制何时完成特定点行,从而允许根据打印机的页边截断数据。它还使缩放单元节省了专门的行结束逻辑的需要。到缩放单元的输入是全行缓冲器。该行被使用了缩放因子的次数,以通过行复制实现垂直方向的放大,并且在每一行中,每个值被使用了比例因子的次数,以通过像素复制实现水平方向的放大。一旦输入行被使用了比例因子的次数(前进行位已经被设置了比例因子的次数),则地址的输入缓冲器选择位被轮转(toggle)(双缓冲)。缩放单元的逻辑对于8位和1位的情况是相同的,因为缩放单元只产生地址。
由于每个连续色调层可以是不同的分辨率,所以它们被独立地缩放。缓冲器45中的双值斑点1层和缓冲器46中的抖动矩阵选择层也需要被缩放。缓冲器47中的双值标签数据是以正确的分辨率建立的,所以不需要缩放。放大的抖动矩阵选择位被抖动矩阵访问单元48用于从两个抖动矩阵中选择单个8位值。该8位值被输出到4个比较器44和49到51,这些比较器将该8位值与特定的8位连续色调值简单地比较。实际抖动矩阵的产生依赖于打印头的结构,而产生抖动矩阵的一般过程将是本领域的技术人员所熟知的。如果连续色调值大于或等于上述8位抖动矩阵值,那么就输出1。否则就输出0。然后在52到56中,这些位都与来自页边单元57的inPage位(不论特定点是否在页的可打印区域内)进行AND运算。HCU中的最后级是合成级。对于6个输出层中的每一层,都有单个点合并单元,例如单元58,每个具有6个输入。来自每个点合并单元的单个输出位是任何或者所有输入位的组合。这允许斑点色被放入到任何输出色平面中(包括用于测试目的的红外),黑被合并到青、品红和黄中(如果打印头中没有黑墨),而标签点数据被放入到一个可视的平面中。固定剂色平面也可以容易地生成。点重组(reorg)单元(DRU)59负责获取为给定的色平面而产生的点流并将其组织为32位的数量,使得输出处于段顺序,并且在段内处于点顺序。由于用于重叠段的点不是以段顺序生成的,所以需要进行最小的重新排序。
页边单元57向缩放单元提供两个控制位:前进点和前进行。前进点位允许状态机生成相同点数据的多个实例(对于页的页边是有用的并且为重叠打印头中的段创建点数据)。前进行位允许状态机控制何时完成特定点行,从而根据打印机的页边截断数据。它还使缩放单元节省了对专门的行结束逻辑的需要。
比较器单元包含简单的8位“大于或等于”比较器。它被用于确定8位连续色调值是否大于或等于8位抖动矩阵值。同样,比较器单元采用两个8位输入并产生单个1位输出。
图6更详细地描述了点合并单元。点合并器单元提供了把双值抖动的数据、斑点1颜色以及标签数据映射到实际打印头中的输出墨的装置。每个点合并单元采用6个1位输入并产生单个位的输出,其表示该色平面的输出点。在60处的输出位是任何或者所有输入位的组合。这样使斑点色被放入到任何输出色平面中(包括用于测试目的的红外),黑被合并到青、品红和黄中(如果打印头中没有黑墨),而标签点数据被放入到一个可视平面中。用于固定剂的输出可以通过简单地组合所有输入位而容易地生成。点合并单元包含6位ColorMask寄存器61,其被用作对6个输入位的掩蔽。每个输出位与对应的ColorMask寄存器位进行AND运算,并且然后把所得到的6位一起进行OR运算,以形成最终的输出位。
图7描述了点重组单元(DRU),该单元负责获取为给定的色平面而生成的点流并将其组织为32位的数量,使得输出处于段顺序,而在段中处于点顺序。由于用于重叠段的点不是以段顺序生成的,所以需要进行最小的重新排序。DRU包含32位移位寄存器,常规的32位寄存器、以及常规的16位寄存器。5位计数器跟踪到目前为止所处理的位数。来自抖动矩阵访问单元(DMAU)的点前进信号被用于指示DRU哪些位应该被输出到它。
图7中的寄存器(A)62每个周期被钟控一次。它包含32个由点合并单元(DMU)最近期产生的点。借助于由DRU状态机64通过简单的5位计数器产生的WriteEnable信号每32个周期将全32位值拷贝到寄存器(B)63。用相同的WriteEnable脉冲,来自寄存器(B)63中的16个奇数位(位1,3,5,7等)被拷贝到寄存器(C)65中。然后,32位复用器66根据来自状态机的2个位在下列3个输出之间选择:
·来自寄存器B的全32位
·由寄存器A中的16个偶数位(位0,2,4,6等)和寄存器B中的16个偶数位构成的32位值。来自寄存器A的16个偶数位形成位0到15,而来自寄存器B的16个偶数位形成位16到31。
·由寄存器B中的16个奇数位(位1,3,5,7等)和寄存器C中的16位构成的32位值。寄存器C中的位形成位0到15,而来自寄存器B中的奇数位形成位16到31。
[56]DRU的状态机如表1所示。它以状态0开始。每32个周期改变状态。在该32个周期过程中,单个noOverlap位收集该32个周期的所有点前进位的AND(对于周期0,noOverlap=点前进,对于周期1到31,noOverlap=noOverlap AND点前进)。
表1.DRU的状态机
状态 |
NoOverlap |
输出 |
输出有效 |
注释 |
下一个状态 |
0 |
X |
B |
0 |
启动状态 |
1 |
1 |
1 |
B |
1 |
常规的非重叠 |
1 |
1 |
0 |
B |
1 |
A包含第一重叠 |
2 |
2 |
X |
偶数A,偶数B |
1 |
A包含第二重叠B包含第一重叠 |
3 |
3 |
X |
C,奇数B |
1 |
C包含第一重叠B包含第二重叠 |
1 |
图5中的页边单元(MU)57负责根据当前页的页边把来自抖动矩阵访问单元(DMAU)48的前进点和前进行信号转变成一般控制信号。它还负责生成页结束条件。MU保持页上的点和行的计数器。在页的开始,二者都被置为0。每次当MU从DMAU接收点前进信号时,点计数前进1。当MU从DMAU接收到行前进信号时,行计数被增量1,而点计数被复位到0。每个周期都把当前行和点值与页的页边进行比较,并根据这些页边给出适当的输出点前进、行前进和页边内的信号。DMAU包含对HCU的仅仅基本的存储器要求。
图8所示为行加载器/格式单元(LLFU)。它从HCU接收点信息,将用于给定打印行的点加载到适当的缓冲器存储中(一些在芯片上,一些在外部DRAM34中),并将它们格式化为打印头所需的顺序。图9中示出了根据其外部接口的LLFU的高级块图。到LLFU的输入67是一组32位的字和DataValid位,都由HCU生成。输出68是一组90个位,表示6种颜色的15个打印头段的最大值。并不是所有输出位都有效,这取决于打印头中实际使用的颜色数。
上述打印头上的触发(firing)喷嘴,即两个有偏差的行中的喷嘴的物理布置意味着相同色的奇数和偶数点用于两个不同的行。偶数点用于行L,而奇数点用于行L-2。另外,在一种颜色的点与另一种颜色的点之间有许多行。因为HCU一次算出用于相同点位置的6个色平面,所以需要延迟用于每个色平面的点数据,直到相同的点被定位到适当的色喷嘴下。
每个缓冲器行的大小取决于打印头的宽度。由于单个PEC为多达15个打印头段生成点,所以单个奇数或偶数缓冲行是15组的640点,总共为9600位(1200字节)。例如,颜色6奇数点所需的缓冲总共为几乎45KByte。
当制造技术能够时,整组的必备缓冲器可被提供在PEC芯片上。否则,颜色2向前(onward)的缓冲器可被存储在外部DRAM中。这样,使得即使将来色平面之间的距离发生变化,PEC能够仍然有效。在PEC上保持颜色1的偶数点意义不大,因为一切都是相对于该特定点行被打印的(不需要附加的行缓冲器)。另外,缓冲颜色1奇数点所需的2个半行节省了基本的DRAM带宽。在页被打印前,各种行缓冲器(芯片上的和DRAM中的)都需要用0预装载,以使页具有干净的边。页结束由HCU自动生成,所以它将具有干净的边。
图10是颜色N OESplit(见图9的OEsplit70)的块图,图9中的两个缓冲器E和F,71和72中的每一个的块图都可以在图10和图11中找到。缓冲器EF是一种双缓冲机构,用于向图3中所示的打印头接口(PHI)32传输数据。因此,缓冲器E和F具有相同的结构。在处理一行点的过程中,所述两个缓冲器E和F中的一个被写入时,另一个被读出。这两个缓冲器在接收到来自PHI的行同步(line-sync)信号时进行逻辑上的交换(swap)。缓冲器E和F两者都由6个子缓冲器构成,每种颜色一个子缓冲器,如图11所示,颜色1的子缓冲器编号为73。每个子缓冲器的大小是2400字节,足以以1280点/段容纳15个段。由于存储器一次被存取32位,所以每个子缓冲器具有600个地址(需要10个地址位)。在每种颜色的子缓冲器中,所有偶数点都在奇数点之前被放置。如果有任何未用的空间(对于少于15个段的打印),那么它被放置在每种颜色的子缓冲器的结尾。每个子缓冲器实际使用的存储器量与PEC实际寻址的段的数目直接相关。对于15段打印头,有1200字节的偶数点,后跟1200字节的奇数点,没有未用空间。有利地(gainfully)使用的子缓冲器的数目与打印头中所用的颜色数直接相关。所支持的最多颜色数为6。
缓冲器E和F的每个的寻址解码电路是这样的:在给定的周期中,可以对所有6个子缓冲器进行单个的32位存取-或者从所有6个中读取,或者写入到6个中的一个。从每种颜色缓冲器中读取的32位中,只有一位被选择,总共6个输出位。这个过程在图11中示出。15个地址位允许借助于正被用于选择32个位的10个地址位来读取特定位,而5个地址位从那32位中选择1位。由于所有颜色子缓冲器共享该逻辑,所以单个15位地址给出总共6个位,每种颜色一个位。73到78的每个子缓冲器都有它自己的WriteEnable线,因此,允许在给定的周期内将单个32位值写入特定颜色缓冲器。各个WriteEnable是通过将单个WriteEnable输入与解码形式的ColorSelect进行AND运算而生成的。线79上的32位的DataIn被共享,因为只有一个缓冲器将实际上将数据钟控进入。
用于从缓冲器E和F中读取的地址生成是直接的。每个周期产生一位地址,其用于取来用于特定段的表示每种颜色1位的6个位。通过向当前位地址添加640,我们前进到下一段中的相当的点。我们添加640(不是1280)是因为在缓冲器中奇数和偶数点是分开的。对上述动作进行NumSegments次,以还原表示偶数点的数据,然后把这些位传送给PHI。当NumSegments=15时,位数为90(15×6位)。然后,为奇数点重复上述过程。整个偶数/奇数位生成过程被重复640次,每次都增量起始地址。采取这种方法,所有点值都在640×2×NumSegments个周期中被以打印头所需要的顺序传递到PHI中。当NumSegments=15时,周期数目为19,200个周期。需要注意的是,不管在打印头中实际使用的颜色数是多少,在给定读取周期中,都会产生6个位(每个颜色缓冲器一个位)。
另外,我们为写入到图9中的90位传递寄存器90产生TWriteEnable控制信号。由于LLFU在PHI之前开始,我们必须在来自PHI的前进脉冲之前传递第一值。我们还必须为第一前进脉冲产生做好准备的下一个值。解决方案是在NumSegments个周期后把第一值传递给传递寄存器,然后停止随后的NumSegments个周期,等待前进脉冲以开始下一个NumSegments周期组。一旦第一前进脉冲到达,LLFU被与PHI同步。
单个点行的读取过程在下面的伪代码中示出:
DoneFirst=FALSE
WantToXfer=FALSE
For DotInSegment0=0 to 1279
If(DotInSegment0:bit0=0)
CurrAdr=DotInSegment0(high bits)(puts in range 0 to 639)
EndIf
XfersRemaining=NumSegments
Do
WantToXfer=(XfersRemaining=0)
TWriteEnable=(WantToXfer AND NOT DoneFirst)OR PHI:ADVANCE
DoneFirst=DoneFirst OR TWriteEnable
Stall=WantToXfer AND(NOT TWriteEnable)
SWriteEnable=NOT(Stall)
If(SWriteEnable)
Shift Register=Fetch 6bits from EFSense[ReadBuffer]:CurrAdr
CurrAdr=CurrAdr+640
XfersRemaining=XfersRemaining-1
EndIf
Until(TWriteEnable)
EndFor
Wait until BufferEF Write process has finished
EFSense=NOT(EFSense)
当读取过程将数据从E或F传送到PHI时,写过程正在准备另一个缓冲器中的下一个点行。
被写入到E或F的数据是由HCU生成的颜色1数据以及来自缓冲器D的颜色2-6数据(由DRAM提供)。每当HCU的OutputValid旗标被置位时,颜色1的数据就被写入EF中,而在其它时间,颜色2-6的数据被从寄存器C中写入。
图9中的缓冲器OE1 81是32位寄存器,它用于容纳颜色1的单个HCU产生的一组相连的32个点。虽然点在页上是相连的,但是奇数和偶数点是在不同的时间被打印的。
缓冲器AB82采用一种双缓存机构,用于将颜色1的奇数点数据延迟2个点行。因此,缓冲器A和B具有相同的结构。在一行点的处理过程中,两个缓冲器中的一个被读取,然后被写入。当整个点行被处理完成后,这两个缓冲器被逻辑上交换。单个位旗标ABSense确定两个缓冲器中的哪一个被读取以及被写入。
每当输出有效控制旗标被置位时,HCU提供32位的颜色1数据,其中该旗标在第一旗标为所述行被发送之后,每32个周期被置位一次。该32位限定了用于单个点行的一组相连的32个点-16个偶数点(位0、2、4等),16个奇数点(位1、3、5等)。输出有效控制旗标被作为OE1寄存器81的WriteEnable控制。我们每2个OutputValid信号处理一次HCU数据。HCU颜色1数据的16个偶数位被与寄存器OE1的16个偶数位组合,产生32位的偶数颜色1数据。类似地,HCU颜色1数据的16个奇数位被与寄存器OE1的16个奇数位组合,产生32位的奇数颜色1数据。在收到两者的组的第一OutputValid信号时,我们读取缓冲器AB以把奇数数据传送给缓冲器EF中的颜色1,如图11中的73。在收到两者的组的第二OutputValid信号时,我们把32位奇数数据写入我们先前读取的缓冲器AB中的相同位置,并把32位偶数数据写给缓冲器EF中的颜色1。
每当OutputValid控制旗标被置位时,HCU就为每个色平面提供32位数据。该动作每32个周期出现一次,除了在某些启动时间内。这32位限定了用于单个点行的一组相连的32个点-16个偶数点(位0、2、4等)和16个奇数点(位1、3、5等)。
当缓冲器OE1(图10中的83)用于存储颜色1的单个32位值时,缓冲器OE2到OE6分别用于存储颜色2到颜色6的单个32位值。正如颜色1的数据每64个周期被分为表示颜色1奇数点的32位和表示颜色1偶数点的32位(每两个OutputValid旗标一次),其余色平面也被分为偶数和奇数点。
但是,点数据被延迟许多行,并通过缓冲器CD(图9中的84)写出到DRAM,而不是直接被写入缓冲器EF。当给定行的点被写入DRAM时,先前行的点被从DRAM中读取,并被写入缓冲器EF(71,72)。这个过程必须与把颜色1写入缓冲器EF的过程交错进行。
每次在如图10中的线85上接收来自HCU的OutputValid旗标时,32位的颜色N数据就被写入缓冲器OEN(83)。每次收到第二OutputValid旗标时,经组合的64位值就被写入颜色缓冲器N(86)。这个过程与所有色平面2到6是并行进行的。颜色缓冲器N(86)包含有40组64位(320字节),以便使两个完整段的点能够被存储。这样,先前段的数据(包括奇数和偶数点)在完整段生成时间(20×64=1280个周期)内被写出到DRAM中。写入操作的地址生成是直接的。线87上的ColorNWriteEnable信号在每第二个OutputValid旗标时被给出。地址从0开始,在每第二个OutputValid旗标时增加1,直到39。它将被复位为0,而不是前进到40,这样可以提供双缓冲方案。只要在OutputValid旗标期间不发生读操作,并且先前段的数据可在产生单个段的数据所花费的时间内被写入到DRAM中,所述方案就起作用。下面的伪代码示出了上述过程:
adr=0
firstEncountered=0
While(NOT AdvanceLine)
If(HCU_OutputValid)AND(firstEncountered))
ColorNWriteEnable=TRUE
ColorNAdr=adr
If(adr=39)
<!-- SIPO <DP n="25"> -->
<dp n="d25"/>
adr=0
Else
adr=adr+1
EndIf
Else
ColorNWriteEnable=FALSE
EndIf
If(HCU_OutputValid)
firstEncountered=NOT(firstEncountered)
EndIf
EndWhile
读操作的地址生成较为复杂,因为它依赖于DRAM存取(包括读和写两者)、缓冲器EF的存取、以及由此颜色1生成的时序有关。下面对其进一步说明。
颜色N和缓冲器C、D、E、F的地址生成都与DRAM存取的时序有关,并且不能干扰与缓冲器E和F有关的颜色1的处理。其基本原理是,把颜色N(奇数点或偶数点)的单个段的数据从DRAM中通过缓冲器CD传送给缓冲器EF。一旦数据从DRAM中被读取,根据ColorBufferN中的值替换上述点。对奇数和偶数点中的每种颜色执行相同的过程。在累积了相当于完整段的点之后(20组64周期),重新开始上述过程。一旦把给定的打印行中的所有段的数据在DRAM往返传送后,前进该颜色的DRAM缓冲器的当前地址,使得它为适当的行数,直到把该颜色的行的特定数据从DRAM中读回。就此而言则DRAM作为FIFO的形式。因此,颜色N(偶数或奇数)被从DRAM中读入缓冲器D,同时颜色N(相同的偶数/奇数意义)被拷贝到缓冲器C中。向缓冲器C拷贝数据需要20或21个周期,这取决于OutputValid旗标是否在20次传输过程中出现。一旦上述两个任务都完成(典型地,DRAM存取是较慢的任务),过程的第二部分开始。把缓冲器C中的数据写入到DRAM中(写到与刚才的读操作相同的位置),并且把缓冲器D中的数据拷贝到缓冲器EF中(同样,由于颜色1的数据正在传送,所以当OutputValid旗标被置位时,不会传送颜色N的数据)。当上述两个任务完成后,为其它意义的颜色N(奇数或偶数)执行相同的过程,然后为每个其余颜色执行相同的过程。上述的完整双过程进行10次。然后,为要开始的下一行的处理更新DRAM中的每个当前行的地址。
在带宽方面,用于点数据缓冲器的DRAM存取占用了所有从PEC进行的DRAM存取的大部分。对于每个打印行,我们为颜色2-6读取整个点行,并且为颜色2-6写入整个点行。对于最大15个段,这相当于2×5×15×1280位=192,000位(24,000字节)每打印行。对于最快的打印系统(30,000行/秒),这相当于687MB/秒。对于1页/秒的打印,所需带宽为312MB/秒。由于所需带宽太高,所以应该针对所用的存储器类型来优化DRAM中每种颜色的各种半行的地址。例如,在RDRAM存储器系统中,为了最大化DRAM访问的分页计次(page-hit),为每种颜色把正好第一半行缓冲器对准到1KByte边界。当处理各种段时,必须保证如果下一段的起始将被对准在1KByte页中的字节960处,那么640位的存取将跨接2个页。为此,可以使用可变的DRAMMaxVal来检查这种情况,如果这种情况发生,那么把要页对准的下一个半行缓冲器的地址上舍入。这样每13段只浪费64字节,但是所具有的优点是640位的存取将完全发生在单个页中。
上述的地址生成过程可以视为相当于NumSegments的10组20×32位读操作之后为20×32位写操作,在下面的伪代码中可以看到这种地址生成过程:
EFStartAdr=0
Do NumSegments times:
For CurrColor=0 to MaxHalfColors
DRAMStartAddress=ColorCurrAdr[CurrColor]
While reading 640bits from DRAMStartAddress into D(>=20cycles)
ColorNAdr=0
While(ColorNAdr!=20)
If(NOT HCU_OutputValid)
Transfer ColorNBuffer[ColorNAdr|CurrColor_bit0]to C[ColorNAdr]
ColorNAdr=ColorNAdr+1
EndIf
EndWhile
EndWhile-wait until read has finished
While writing 640bits from C into DRAMStartAddress(>=20cycles)
ColorNAdr=0
EFAdr=EFStartAdr
While(ColorNAdr!=20)
If(NOT HCU_OutputValid)
Transfer D[ColorNAdr]to EF[CurrColor|EFAdr]
If((ColorNAdr=19)AND(CurrColor=NumHalfColors))
EFStartAdr=EFAdr+1
Else
EFAdr=EFAdr+1
EndIf
ColorNAdr=ColorNAdr+1
EndIf
EndWhile
EndWhile-wait until write has finished
If(DRAMStartAddress=DRAMMaxVal)
ColorCurrAdr[currColor]=round up DRAMStartAddress to next 1KByte page
Else
ColorCurrAdr[currColor]=DRAMStartAddress+640bits
EndIf
If(Segment=maxSegments)
If(ColorCurrRow[CurrColor]=ColorMaxRow[CurrColor])
ColorCurrRow[currColor]=ColorStartRow[currColor]
<!-- SIPO <DP n="28"> -->
<dp n="d28"/>
ColorCurrAdr[currColor]=ColorStartAdr[currColor]
Else
ColorStartRow[currColor]=ColorCurrRow[currColor]+1
EndIf
EndIf
EndFor
EndDo
Wait until next Advance signal from PHI
需要注意的是,MaxHalfColors寄存器比就被分开处理但不包括颜色1的奇数和偶数颜色而言的颜色数少一。例如,对于标准的6颜色打印系统,共有10个(分奇数和偶数的颜色2-6),所以应该把MaxHalfColors设置为9。
LLFU需要2NumSegments个周期来为PHI准备数据的头180位。因此,在LLFU已经启动后的这个时间段,打印头应该被启动并且第一LineSync脉冲必须出现。这使初始的传送值有效并且使接下来的90位值准备好被加载到传递寄存器中。
打印头接口(PHI)是处理器向打印头加载要打印的点所用的装置,并且控制着实际的点打印过程。它从LLFU获取输入,并把数据输出给打印头本身。PHI能处理各种打印头长度和格式。PHI的内部结构应滤及最大6种颜色、每次传递8个段、以及最大2个段组。这对于能够以全出血打印A4/信函的15段(8.5英寸)打印机应当是足够的。
在整个说明书中,目标已针对描述本发明的优选实施例,但不应将本发明局限于任何一个实施例或特征的特定集合。本领域的技术人员可从特定实施例实现各种变化,而它们仍将属于本发明的范围。