背景技术
目前市场上有多种类型的打印机。这些打印机用相应的墨水产生图像,并以点阵格式打印页。在发明人卡·西尔弗布鲁克申请的标题为“单片集成电路打印头的自调节构造和制造工艺”的美国专利(专利号:6045710)中对传统喷墨打印机进行了讨论,并介绍了其制造工艺。
与本发明有关的各种方法、系统和装置在下列共同未决专利申请中揭示。这些专利申请是本发明的专利申请人或受让人在2000年5月24日与本发明同时申请的:
PCT/AU00/00518,PCT/AU00/00519,PCT/AU00/00520,PCT/AU00/00521,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/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/00594,
PCT/AU00/00595,PCT/AU00/00596,PCT/AU00/00597,PCT/AU00/00598,PCT/AU00/00516,
PCT/AU00/00517 and PCT/AU00/00511
这些共同未决专利申请的揭示以交叉索引方式总结于此。
另外,与本发明相关的各种方法、系统和装置在下列共同未决PCT申请中揭示。这些PCT申请是本发明的申请人或受让人与本发明同时申请的:PCT/AU00/00754,PCT/AU00/00755和PCT/AU00/00757。
这些共同未决专利申请的揭示以交叉索引方式总结于此。
特别需要说明的是下列共同未决PCT申请:PCT/AU00/00591、PCT/AU00/00578、PCT/AU00/00579、PCT/AU00700592和PCT/AU00/00590,这些申请中描述了一种微电机喷墨打印头(以下称为Memjet打印头)。
Memjet打印头从能够在整个页宽度上产生1600dpi双层墨点的多个打印头段发展而来。墨点以相互隔离的方式产生,因此,散布的点能够产生完美的抖动效果。颜色平面在打印时能够完美地重合,实现理想的重叠点打印。这种打印头支持使用微电机墨滴控制技术进行高速打。
另外,在共同未决申请PCT/AU00/00516、PCT/AU00/00517、PCT/AU00/00511、PCT/AU00/00754、PCT/AU00/00755和PCT/AU00/00757中描述了一种驱动上述页宽打印头的打印引擎/控制器。
用于驱动打印头的打印引擎/控制器把接收的输入数据传送给打印头的喷嘴。向数据施加抖动是一种现有技术。
特别值得一提的PCT/AU00/00754,它描述了一种适合于与一种多段打印头连接的多个打印引擎/控制器芯片接口的打印引擎/控制器。还需要特别说明的是,可以在这种打印引擎/控制器中采用抖动技术以及特征化向量技术。
在类似于上述打印头的多段打印头中,如何在打印头段的重叠部分保持一致的点增益和亮度是一个问题,而且打印头段的错置会加剧这个问题。为了克服这个问题,需要使用抖动处理技术。
具体实施方式
一个典型的12英寸打印头宽度由一个或多个打印引擎/控制器(PEC)控制(如下所述),实现在A4和信纸页上的全页宽打印。在现有打印环境中,最多使用6个彩色墨水通道,它们是:
·CMY,用于普通彩色打印
·K,用于打印黑色文本和黑色内容
·IR(红外),用于支持标记的应用
·F(定色剂),用于高速打印
可以使用单个芯片实现与打印头接口的打印引擎/控制器。该芯片包含4个基本功能:
·通过串行接口(例如IEEE 1394)接收压缩的页数据
·具有从压缩数据产生页的打印引擎。该打印引擎必须具备下列功能:扩展页图像、抖动连续色调层、把黑色层合成到连续色调层上、增加红外标记(可选)、以及向打印头发送结果图像。
·控制打印头和步进电机的打印控制器
·两个标准的低速串行口,用于与两个QA芯片通信。需要注意的是,必须提供两个串口,而不能是一个串口,这样才能保证在鉴权过程中的高度安全性。
由于Memjet打印头的页宽特点,必须以恒定的速度打印每个页,以防止产生可见的瑕疵。这意味着不能改变打印速度来配合输入数据速率。因此,把文档栅格化和文档打印分离开来,以确保打印头具有恒定的提供数据。直到把页内容完全光栅化,才能打印该页。为了满足这个要求,可以在内存中存储每个光栅化的页图像的压缩版本。文档光栅化和文档打印的分离还允许在对简单页进行光栅化时可以在打印机之前运行RIP,以便留出时间对比较复杂的页进行光栅化。
由于连续色调图像由随机抖动重构而黑色文本和线图形由点直接复制,所以压缩后的页图像格式包含分离的前景二值黑色层和背景连续色调颜色层。在连续色调层被抖动处理后,黑色层被合成到连续色调层上(虽然连续色调层也可能有黑色成分)。,最后层Netpag标记(使用红外或黑色墨)可选地被加入到页上用于打印输出。
RIP软件/硬件对页描述进行光栅化,并压缩光栅化后的页图像。每个压缩的页图像被转移到内存中。页描述中的抖动矩阵选择区域被光栅化为连续色调分辨率二值位图,其被无损地压缩到可以忽略不计的大小,并且其构成压缩页图像的一部分。打印页的红外(IR)层可选地包含可设计密度的编码的Netpage标记。
图1中在11处接收到文档,然后文档被装载到存储缓冲器12中,在存储缓冲器12中可以产生页布局,并可以增加任何所需的对象。从存储缓冲器12中输出的页在13处被光栅化,在14中被压缩,然后被送到打印引擎控制器10。页在打印引擎控制器10接收压缩的页图像,并保存在存储缓冲器时,然后,存储缓冲器15中存储的压缩的页图像被送到页扩展器16,并被还原为非压缩的页图像。在17处,可以对任何连续色调层施加任何所需的抖动。在18处,任何黑色二值层可以被合成到连续色调层上,和在19处,向合成后的图像加入任何红外标记。在20处,合成后的页数据被打印以形成页21。
管道的第一阶段扩展以JPEG格式压缩的连续色调CMYK层(见下文),扩展以Group 4传真格式压缩的二值抖动矩阵选择图(见下文),并扩展以Group 4传真格式压缩的二值黑色层(见下文),所有扩展都以并行方式完成。同时,标记编码器从压缩的页图像编码二值IR标记数据。第二个阶段使用根据抖动矩阵选择图选择的抖动矩阵抖动连续色调CMYK层,把二值黑色层合成到所得到的二值K层上,并向页增加IR层。在需要时,在任意C、M、Y、K、或IR通道的每个点的位置上产生定色剂层。最后阶段通过打印头接口利用打印头打印二值CMYK+IR数据(见下文)。
图2所示为打印引擎/控制器10如何适应于总体打印机系统体系结构中。打印机系统的各种部件可能包括:
·打印引擎/控制器(PEC)。一个PEC芯片10或芯片集负责接收压缩的页图像以储到存储缓冲器24中,执行页扩展、黑色层合成,并把点数据发送给打印头23。PEC芯片10或芯片集还可以与QA芯片25、26通信,从而提供恢复打印头特性的方法,以保证最佳打印效果。PEC是本说明书的主体。
·存储缓冲器。存储缓冲器24用于存储压缩的页图像,并且在打印特定页的过程中用于临时使用。存储缓冲器的构造和工作方式被本领域技术人员公知,并且在使用本发明的PEC时,可以利用一系列标准的芯片和它们所用的技术。
·主QA芯片。主芯片25与可更换墨盒QA芯片26匹配。QA单元的构造和工作方式被本领域技术人员公知,在使用本发明的PEC时,可以利用一系列公知QA过程。例如,在共同未决美国专利申请中描述了一种QA芯片:
USSN |
我们的备案号 |
我们的标题 |
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芯片通信最好包含在打印引擎/控制器芯片的总体功能中,因为它在图像扩展和驱动物理打印头方面有一定的作用。通过在所述总体功能中设置QA芯片通信,可以保证有足够的墨来打印页。嵌入在打印头组件中的QA最好使用鉴权芯片实现。由于它是主QA芯片,所以只包含鉴权密钥,而不包含用户数据。但是,该芯片必须与墨盒的QA芯片匹配。墨盒中的QA芯片包含维持最佳打印质量所需的信息,并且是使用鉴权芯片实现的。
优选地PEC芯片将包括一个简单的微控制器CPU核心35以执行下列功能:
·在打印页之间通过串行接口36执行QA芯片鉴权协议
·在打印过程中通过并行接口91控制步进电机(步进电机需要5KHz的处理频率)
·在打印过程中同步PEC芯片的各部分
·提供与外部数据请求的接口方法(编程寄存器等)
·提供与打印头段低速数据请求的接口方法(例如读取特征向量和写入脉冲参数)
·提供向外部DRAM写入横向和纵向标记结构的方法
图3所示为打印引擎的体系结构。打印引擎的页扩展和打印管道由高速串行接口27(例如标准的IEEE1394接口)、标准的JPEG解码器28、标准的Group 4Fax解码器、定制的半色调器/合成器单元29、定制的标记编码器30、行装载器/格式器单元31、以及连接打印头33的定制接口32构成。解码器28,88和编码器30向半色调器/合成器单元29缓冲。标记编码器30根据协议向页增加红外标记或标记组,协议与页的使用有关,并且标记的内容不是本发明的主体。
打印引擎以双缓冲方式工作。一个页从高速串行接口27通过DRAM接口89和数据总线90被装载到DRAM 34中,同时,先前已装载的页被从DRAM 34读出,并被通过打印引擎管道传送。一旦完成页的打印,则刚刚装入的页成为被打印页,并且通过高速串行接口27装入新页。在第一阶段,管道扩展任何JPEG压缩的连续色调(CMYK)层,并扩展任何两个Group 4传真压缩的二值数据流。上述两个流是黑色层(尽管PEC是颜色不可知的,而且该二值层可以定向到任何输出墨)以及一个蒙罩(该蒙罩用于为连续色调的抖动选择抖动距阵,见下文的说明)。在第二阶段,并行于第一阶段,任何标记被编码,以便随后以红外(IR)或黑色墨再现。最后第三个阶段对连续色调层进行抖动,并把位置标记和二值spot1层合成到抖动后的二值层上。数据流被很好地调整,以便在打印头中的重叠段之间产生平滑的渐变效果,同时补偿打印头中的被堵喷嘴。在此阶段最多可以生成6个通道的二值数据。但是需要注意,并不是全部6个通道都出现在打印头上。例如,打印头可能只是CMY的,此时K被推入CMY通道,而IR被忽略。另外,如果没有IR墨(或者出于测试目的),位置标记也可以以K打印。所得到的二值CMYK-IR点数据被缓冲并格式化,用于通过一套行缓存器(见下文的说明)打印在打印头上。大多数行缓存器可以理想地在片外DRAM34中存储。最后阶段通过打印头接口32打印上述6个通道的二值点数据。
图4所示的半色调器/合成器单元(HCU)29把半色调和连续色调(通常是CMYK)层合并为相同的二值版本,并把spot1二值合成到适当的半色调连续色调层上。如果打印机中没有K墨,那么HCU29可以把K适当地映射为CMY点。它还根据抖动矩阵选择图中的相应数值逐点选择抖动矩阵。HCU29的输入是(从JPEG解码器单元)通过缓存器37的扩展的连续色调层,通过缓存器38的扩展的二值spot 1层,通过缓存器39的扩展的抖动矩阵选择位图(通常与连续色调层的分辨率一样),以及通过缓存器40的全点分辨率的标记数据。HCU29最多可以使用从外部DRAM 34读取的两个抖动矩阵。由HCU29向行装载器/格式单元(LLFU)41的输出是一套打印机分辨率二值图像行,最多可以达到6个颜色平面。连续色调层一般是CMYK或CMY,而二值spot1层是K。
图5中更详细地显示了HCU。在启动后,HCU不断运行,直到检测到一个页结束条件或直到通过其控制寄存器被明确停止。HCU的第一任务是把从缓存器平面(例如42)中接收的所有数据在各个比例单元(例如比例单元43)中在水平和垂直方向上同时缩放为打印机的分辨率。
比例单元提供了在水平和垂直方向上把连续色调数据或二值数据缩放为打印机分辨率的一种方法。缩放是通过把上述两个方向上的数据值复制为该值的整数倍而实现的。缩放数据的过程将是本领域技术人员所熟悉的。
页边单元57向比例单元43提供两个控制位:前进点和前进行。前进点位允许状态机为同一个点数据生成多个实例(用于页边和为打印头中的重叠段创建点数据)。前进行位允许状态机控制特定点行的结束时间,从而允许根据打印机的页边截断数据。它还使比例单元不必执行特殊的行结束逻辑。比例单元的输入数据是一个整行缓存器。该行被重复使用比例因子次,以便通过行复制实现垂直方向的放大,并且在每一行中,每个值被重复使用比例因子次,以便通过像素复制实现水平方向的放大。当输入行被重复使用比例因子次时(前进行位已经被设置比例因子次),地址的输入缓存选择位被切换(双缓冲)。缩放单元的逻辑对于8位和1位的情况都是相同的,因为比例单元只产生地址。
由于每个连续色调层可以处于不同的分辨率,所以每个连续色调层被独立缩放。在缓存器45的二值spot 1层和在缓存器46的抖动矩阵选择层也需要被缩放。在缓存器47的二值标记数据是以正确的分辨率建立的,且不需要缩放。放大后的抖动矩阵选择位被抖动矩阵存取单元48用于从两个抖动矩阵中选择单个8位值。该8位值被输出到4个比较器44、及49到51,这些比较器它们与特定的8位连续色调值相比较。实际抖动矩阵的产生与打印头的结构有关,而产生抖动矩阵的过程将是本领域技术人员所熟悉的。如果连续色调值大于上述8位抖动矩阵值,那么就输出1。否则输出0。然后这些位在52-56与从页边单元57而来的inPage位(特定点是否在页的可打印区域内)进行“与(AND)”操作。HCU中的最后阶段是合成阶段。对于6个输出层中的每一层,都有一个单点合并器单元(例如单元58),每个单点合并器单元有6个输入。每个点合并器单元的输出位是上述任何或所有输入位的合并。这样,点颜色就能够被放入到任何输出颜色平面中(包括用于测试的红外平面),黑色被合并到青色、品红色和黄色中(如果打印头中没有黑色墨),而标记点数据被放入到可见平面中。定色剂颜色层也可以立即生成。点重组单元(DRU)59负责把为特定颜色平面产生的点流组织到32位数值中,这样,输出内容被按段排列,而在每一段中,输出内容被按点排列。由于重叠段的点不是以段顺序生成的,所以还需要进行稍许重排。
页边单元57向比例单元提供两个控制位:前进点和前进行。前进点位允许状态机为同一个点数据生成多个实例(用于页边和为打印头中的重叠段创建点数据)。前进行位允许状态机控制特定点行的结束时间,从而根据打印机的页边截断数据。它还使比例单元避免需要特殊的行结束逻辑。
比较器单元包含简单的8位“大于”比较器。该比较器用于确定8位连续色调值是否大于8位抖动矩阵值。因此,比较器单元使用两个8位输入,并产生一个1位输出。
图6中更详细地显示了点合并器单元。点合并器单元提供了把二值抖动数据、spot 1颜色以及标记数据映射到实际打印头的输出墨的方法。每个点合并器单元使用6个1位输入并产生一个1位的输出,该输出代表颜色平面的输出点。在60处的输出位是任何或所有输入位的合并值。这样,点颜色可以被放入到任何输出颜色平面中(包括用于测试的红外平面),黑色被合并到青色中、洋红色和黄色中(如果打印头中没有黑色墨),而标记点数据被放入到可见平面中。定色剂颜色层的输出可以通过简单地合并所有输入位立即生成。点合并器包含6位ColorMask寄存器61,其被作为6个输人位的掩码。每个输人位与相应的ColorMask寄存器位进行“与(AND)”操作,然后,把所得到的6位进行“或(OR)”操作,形成最终的输出位。
图7中所示为点重组单元(DRU),该单元负责为特定颜色平面把生成的点流组织到为32位数值中,这样,输出内容被按段排列,而在每一段中,输出内容被按点排列。由于重叠段的点不是以段顺序生成的,所以还需要进行稍许重排。DRU包含32位移位寄存器,普通的32位寄存器、以及普通的16位寄存器。一个5位计数器跟踪到此为止所处理的位数。来自抖动矩阵存取单元(DMAU)的点前进信号被用于指令DRU关于哪些位应该被输出。
图7中的寄存器(A)62每个周期被钟控(clock)。它包含32个由点合成器单元(DMU)产生的最近的点。每过32个周期,寄存器A62中的全部32位值被复制到寄存器(B)63中,复制动作由DRU状态机64通过一个简单的5位计数器产生的写使能信号触发。用相同的写使能脉冲把寄存器B 63中的16个奇位(1,3,5,7等)复制到寄存器C 65中。然后,32位多路器根据状态机中的2位在下列3个输出中做出选择:
·寄存器B中的全部32位
·由寄存器A中的16个偶数位(位0,2,4,6等)和寄存器B中的16个偶数位构成的32位值。寄存器A的16个偶数位构成该32位值的0-15位,而寄存器B中的16个偶数位构成该32位值的16-31位。
·由寄存器B中的16个奇数位(位1,3,5,7等)和寄存器C中的16位构成的32位数值。寄存器C中的位构成该32位值的0-15位,而寄存器B中的16个奇数位构成该32位值的16-31位。
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包含第二重叠 | |
图5中的页边单元(MU)57负责根据当前页的页边距把从抖动矩阵存取单元(DMAU)48获得的前进点和前进行信号转化为一般控制信号。它还负责生成页结束条件。MU保存页的点和行的计数器。在页开始时二者都被设置为0。每次当MU从DMAU接收一个点前进信号时,点计数器向前进1。当MU从DMAU接收到行前进信号时,行计数器递增,而点计数器被重置为0。在每个周期内,把当前行和点值与页边进行比较,然后根据这些页边适当输出点前进、行前进,和页边内信号。DMAU只包含HCU的实际存储要求。
图8中所示为行装载器/格式单元(LLFU)。LLFU从HCU接收点信息,为特定的打印行把点装载到适当的缓存器中(某些在芯片上,某些在外部DRAM34中),并把这些点数据格式化为打印头所需的顺序。图9为一个LLFU关于其外部接口的高级方框图。到LLFU的输入67是一组6个32位字和一个数据有效位,这些数据都由HCU产生。输出68是一组90位的值,代表6种颜色的最大15个打印头段。并不是所有输出位都有效,这与打印头中实际使用的颜色数有关。
本文中所述的打印头的喷射喷嘴部分的物理布局是两个偏移排喷嘴,也就是说,同一种颜色的奇数和偶数点用于两个不同的行。偶数点用于行L,而奇数点用于行L-2。另外,在一个颜色的点与另一种颜色的点之间有若干行。因为HCU同时计算相同点位置的6个颜色平面,所以必须为每个颜色平面延迟点数据,直到同一个点定位到适当的颜色喷嘴下。
每个缓冲行的大小取决于打印头的宽度。由于单个PEC为多达15个打印头段产生点,所以单个奇数缓冲行或偶数缓冲行由15套640点组成,总数据量为9600位(1200字节)。例如,颜色6奇数点所需的缓存器为45KB。
图10是颜色N OESplit(见图9的Oesplit70)的方框图,并且图9中的每个缓存器E、F,即71、72的方框图可以在图10和图11中找到。缓存器EF是一种双缓存装置,用于向图3中显示的打印头接口(PHI)32传输数据。因此,缓存器E和F具有相同的结构。在点行的处理过程中,当上述缓存器E、F中一个用于写时,另一个用于读。这两个缓存器在接收到从PHI发来的行同步信号时进行逻辑交换。缓存器E和F都由6个子缓存器构成,每种颜色对应一个子缓存器,如图11所示。颜色1的子缓存器编号为73。每个子缓存器的大小是2400B,足以储存15个1280点/段的段。由于内存每次存取32位,所以每个子缓存器有600个地址(需要10个地址位)。在每个颜色的子缓存器中,所有偶数点都被放在奇数点的前面。如果有任何未用的空间(用于少于15个段的打印),那么未用空间应位于每个颜色的子缓存器的末端。每个子缓存器实际使用的存储量与打PEC实际可寻址的段数量直接相关。对于15段打印头,有1200B个偶数点,后跟1200B个奇数点,没有未用空间。所使用的子缓存器的数量与打印头中所用的颜色数直接相关。所支持的最多颜色数为6。
每个缓存器E、F的寻址编码电路可以保证在特定周期中对所有6个子缓存器进行32位访问一一可以从所有6个缓存器读取,也可以向其中的某个缓存器写入。从每个颜色缓存器中读取的32位中,只有一位被选择用来构成6个输出位的输出。这个过程在图11中示出。15位地址中,允许通过10位地址用于选择32位,5位地址用于从所选的32位中选择1位,从而获得要读取的特定位。由于所有颜色子缓存器共享该逻辑,单个15位地址给出总共6位输出,每种颜色一位。每个子缓存器73-78都有自己的写使能行,因此,一个32位值可以在给定周期内写入特定的颜色缓存器。这些个别的写使能是通过上述单个写使能输入与颜色选择的解码形式的″与(AND)″操作产生的。因为实际上只有一个缓冲器钟控数据输入,所以行79的32位数据输入(DataIn)是被共享的。
用于从缓存器E和F中读取数据的地址是直接生成的。每个周期产生一个用于为特定段取上述6位数值(1位/颜色)的位地址。通过向当前位位地址上加640,可以前进到下一个段中的相等点。加640而不是1280是因为,在缓存器中奇数和偶数点是分离的。对上述动作重复NumSegments次,可以取回代表偶数点,然后把这些点传送给PHI。当NumSegments=15时,位数为90(15×6位)。然后,为奇数点重复上述过程。该完整的偶数/奇数位生成过程需要重复640次,每次递增起始地址。这样所有点数据都在640×2×NumSegments个周期中以打印头所需要的顺序被传递到PHI。当NumSegments=15时,周期数为19200个周期。需要注意的是,不管在打印头中实际使用的颜色数,在给定读取周期中产生6位(从每个颜色缓存器中产生一位)。
另外,我们为写入到图9中的90位传送寄存器90产生T写使能控制信号。由于LLFU在PHI之前开始,我们必须在前进脉冲前从PHI传送第一个值。我们还必须为第一个前进脉冲产生准备就绪的下一个值。解决方法是在NumSegments个周期后把第一个值传送给传送寄存器,然后停顿NumSegments个周期,等待前进脉冲启动下一个NumSegments周期组。当第一个前进脉冲到达时,LLFU将被同步到PHI。
单个点行的读取过程在下面的伪代码中说明:
DoneFirst=FALSE
WantToXfer=FALSE
For DotlnSegment0=0 to 1279
If(DotlnSegment0:bit0=0)
CurrAdr=DotlnSegment0(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
Stalf=WantToXfer AND(NOT TWriteEnable)
SWriteEnable=NOT(Stall)
If(SWriteEnable)
Shift Register=Fetch 6 bits from EFSense[ReadBuffer]:CurrAdr
CurrAdr=CurrAdr+640
XfersRemaining=XfersRemaining-1
Endlf
Until(TWriteEnable)
EndFor
Wait until BufferEF Write process has finished
EFSense=NOT(EFSense)
当读进程从E或F向PHI传送数据时,写进程正在准备另一个缓存器中的下一个点行。
被写入E或F的数据是由HCU产生的颜色1数据以及从缓存器D(由DRAM提供数据)提供的颜色2-6数据。每当HCU的输出有效标志被设置时,颜色1数据就被写入EF中,在其它时间,颜色2-6数据从寄存器C中被写入。
图9中的缓存器OE181是32位寄存器,用于容纳单个HCU为颜色1产生的连续32个点的集合。虽然点在页上是连续的,但是奇数和偶数点是在不同时间打印的。
缓存器AB 82是一种双缓存装置,用于为颜色1把奇数点数据延迟2个点行。因此,缓存器A和B的结构是相同的。在点行的处理过程中,两个存储器之一被读取然后被写入。当整个点行处理完成后,这两个缓存器进行逻辑交换。单个位标志ABSense确定两个缓存器的哪个被读取以及写入。
每当输出有效控制标志被设置时(在第一个标志为行发送后,每隔32个周期设置一次),HCU提供32位颜色1数据。这32个位为单个点行定义了32个点的连续集合=16个偶数点(位0、2、4等),和16个奇数点(位1、3、5等)。输出有效控制器标志被用作OE1寄存器81的写使能控制。我们每2个输出有效信号处理一次HCU数据。HCU颜色1数据的16个偶数位被与寄存器OE1的16个偶数位合并,以产生32位的偶数颜色1数据。同样,HCU颜色1数据的16个奇数位被与寄存器OE1的16个奇数位合并,以产生32位的奇数颜色1数据。在收到输出有效信号组的两个中的第一个时,我们读取缓存器AB的数据,把奇数数据传送给缓存器EF中的颜色1,如图11中的73。在收到输出有效信号组的两个中的第二个时,我们把32位奇数数据写入缓存器AB中我们先前所读取的相同位置,然后把32位偶数数据写到缓存器EF的颜色1中。
每当输出有效被设置时,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位数据一样,剩余颜色平面也被划分为偶数和奇数点。
但是,点数据被延迟若干行,然后被通过缓存器CD(图9中的84)输出到DRAM中,而不是直接写入缓存器EF中。当特定行的点被写入DRAM时,前一行的点被从DRAM中被读出,并被写入缓存器EF(71,72)。这个过程必须与把颜色1写入缓存器EF的过程交错进行。
每次从HCU收到一个输出有效标志时(如图10中的85行),32位颜色N数据就被写入缓存器OEN(83)。每次收到第二个输出有效标志时,合并后的64位数据就被写入颜色缓存器N(86)。对于所有颜色平面2-6,这是并行发生的。颜色缓存区N(86)含有40套64位(320B),以便使两个完整的段的点能够被存储。这样,前一个段的数据(包括奇数和偶数点)可以在一个整段生成时间(20×64=1280个周期)内被输出到DRAM中。用于写入的地址是直接生成的。行87的颜色N写使能信号每两个输出有效标志产生一次。地址从0开始,并且每两个输出有效标记递增,直到39。当地址到达39时,它将被重置为0,而不是前进到40,从而提供双缓冲方案。只要在输出有效标记期间不发生读取,上述工作就一直进行,并且前一个段的数据可以在产生单个段的数据所用的时间内被写入到DRAM中。下面的伪代码说明了上述过程:
adr=0
firstEncountered=0
While(NOT AdvanceLine)
If(HCU_OutputValid)AND(firstEncountered))
ColorNWriteEnable=TRUE
ColorNAdr=adr
If(adr==39)
adr=0
Else
adr=adr+1
Endlf
Else
ColorNWriteEnable=FALSE
Endlf
If(HCU_OutputValid)
firstEncountered=NOT(firstEncountered)
Endlf
EndWhile
用于读取的地址生产比较复杂,因为它与DRAM存取(包括读和写)、缓存器EF存取、以及由此的颜色1生成的定时有关。它在被更详尽地说明。
缓存器C、D、E、F和颜色N的地址生成都与DRAM存取的定时有关,并且不能影响与缓存器E和F有关的颜色1的处理。基本原理是,把颜色N(奇数点或偶数点)的单个段的数据从DRAM中通过缓存器CD传送给缓存器EF。当已从DRAM中读出数据时,根据颜色缓冲器N中的值替换上述点,对奇数和偶数点中的每种颜色都完成该过程。当累积了完整段的点值后(20套64个周期),则该过程再次开始。一旦给定打印行的所有段的数据已经从DRAM传送和传送到DRAM,则把该颜色的DRAM的当前地址递增以便其为合适的行号,直到把该颜色的行的特定数据从DRAM中读回。在这方面,DRAM起到一种FIFO的作用。最终的结果是,颜色N(奇数或偶数)被从DRAM中读入缓存器D,同时颜色N(相同的奇数或偶数意义)被复制到缓存器C中。向缓存器C复制数据需要20或21个周期,取决于输出有效标志是否在20次传输过程中出现。当上述两个任务都完成后(通常,DRAM存取将是较慢的任务),过程的第二部分开始。缓存器C中的数据被写入到DRAM(与刚刚的读取相同的位置),并且缓存器D中的数据被复制到缓存器EF中(同样,由于正在传输颜色1的数据,所以当输出有效标志被设置时,不会有颜色N的数据被传输)。当上述两个任务都已完成,为其它意义的颜色N(奇数或偶数)发生相同的过程,然后为每个剩余的颜色也发生相同的过程。上述的完整双过程发生10次。然后,为下一行的处理能够开始,更新DRAM中每个当前行的地址。
上述的地址生成过程可以视为NumSegments,其相当于10个如下集合:20×32位读操作+20×32位写操作。下面的伪代码可以说明这种地址生成过程:
EFStartAdr=0
Do NumSegments times:
For CurrColor=0 to MaxHaltColors
DRAMStartAddress=ColorCurrAdr[CurrColor]
While reading 640bits from DRAMStartAddress into D(>=20cycles)
ColorNAdr=0
While(ColorNAdr!=20)
If(NOT HCU_OutputValld)
Translar ColorNBuller[ColorNAdr|CurrColor_bit0]to C[ColorNAdr]
ColorNAdr=ColorNAdr+1
Endlf
EndWhile
EndWhile·walt until read has finishad
While writing 640 bits from C into DRAMStartAddross(>=20cycles)
ColorNAdr=0
EFAdr=EFStartAdr
While(ColorNAdr!=20)
If(NOT HCU_OutputValid)
Transfer D[ColorNAdr]to EF[CurrColor|EFAdr]
If((ColorNAdr==19)AND(CurrColor=NurnHallColors))
EFStartAdr=EFAdr+1
Else
EFAdr=EFAdr+1
Endlf
ColorNAdr=ColorNAdr+t
Endlf
EndWhile
EndWhile-wati until write has finlshod
If(DRAMStartAddress==ORAMMaxVal)
CotorCurrAdr[currColor]=round up DRAMStartAddress to next 1KByto page
Else
<!-- SIPO <DP n="21"> -->
<dp n="d21"/>
ColorCurrAdr[currColor]=DRAMStartAddress+640bits
Endlf
If(Segmenl==maxSegments)
If(ColorCurrRow[CurrColor]==ColorMaxRow[CurrColor])
ColorCurrRow[currColor]=ColorSlartRow[currColor]
ColorCurrAdr[currColor]=ColorStartAdr[currColor]
Else
ColorStarlFow[currColor]=ColorCurrRow[currColor]+1
Endlf
Endlf
EndFor
EndDo
Wait until next Advance signal from PHI
需要注意的是,MaxHalfColors寄存器小于根据奇数颜色和偶数颜色单独处理的颜色(但不包括颜色1)数。例如,对于一个标准的6颜色打印系统,需要处理的总颜色数为10(以奇数和偶数的颜色2-6),所以应该把MaxHalfColors设置为9。
LLFU需要2个NumSegments周期来为PHI准备第一个180位数据。因此,必须在已经LLFU启动上述周期的时间后才能启动打印头和出现第一个行同步脉冲。这样初始传送值才有效,也才能准备好向传送寄存器中装入下90位数据。
打印头接口(PHI)是处理器向打印头装载要打印点的装置,并且控制着实际的点打印过程。它从LLFU接收数据,并把数据输出给打印头本身。PHI将能处理各种打印头长度和格式。PHI的内部结构应支持最大6种颜色、每次传输8个段、以及最大2个段组。这对于以全出血(full bleed)打印A4/信纸幅面的15段(8.5英寸)打印机将是足够的。
组合打印头的特征化向量可以从串行接口读回。特征化向量可包括被堵打印嘴的信息以及相对段的对准数据。每个打印头段可以通过其低速串行总线被查询,以返回该段的特征化向量。从多个打印头产生的特征化向量可以合并以构成整个打印头的喷嘴缺陷列表,并且允许在打印中打印引擎可以补偿有缺陷的喷嘴。如果有缺陷的喷嘴的数量少,那么补偿产生的结果与不含有缺陷的喷嘴的打印头产生的结果没有明显差别。
每个段具有384位特征化向量,包含:
·64位标志和打印头段信息,包括序列号和段中表示的颜色数。
·16位相对于前一个段的对准数据(0=第一个段)
·其余位为可变长度的有缺陷的喷嘴的列表
有缺陷的喷嘴的列表是可变长度的,其中每套有缺陷的喷嘴具有如下结构:
·5位计数(0=列表尾)
·3位颜色
·计数×11位,每个有缺陷的喷嘴都有一个记录
总体来说,打印头段的连接如表12所示。需要注意的是,当存在多个颜色时,某些连接是重复的。
表12.打印头段的连接
名称 |
针对多颜色段重复 |
功能 |
D[n] |
是 |
图像数据的通道n |
SClk |
否 |
串行数据传输时钟 |
NPSync |
否 |
喷嘴相同步 |
PLL |
否 |
锁相环时钟 |
Ten |
否 |
并行传输使能 |
Reset |
否 |
控制复位 |
SCl |
否 |
用于控制的I2C串行时钟 |
SD |
否 |
用于控制的I2C串行数据 |
CCEn[n] |
否 |
控制芯片使能[n] |
Gnd |
否 |
模拟地 |
Sense |
否 |
模拟感应输出 |
V- |
是 |
反激励器供应 |
V+ |
是 |
正激励器供应 |
Vss |
是 |
反逻辑供应 |
Vdd |
是 |
正逻辑供应 |
21mm长的打印头段在300μm中心上可以具有64个结合垫。其中的24个结合垫是给激励器的V-电源,以及20个是给激励器的V+电源。其余的20个连接是CMOS逻辑电源、信号和数据连接。表13中详细说明了这些连接。
表13.6颜色段的连接
# |
名称 |
功能 |
1-6 |
V- |
反激励器供应 |
7 |
Vss |
反逻辑电源 |
8 |
D1[n] |
图像数据[n]的通道1(6通道打印头的定色剂) |
9 |
D2[n] |
图像数据[n]的通道2(6通道打印头的红外) |
10 |
SClk |
串行数据传输时钟 |
11 |
Vdd |
正逻辑供应 |
12-16 |
V+ |
正激励器供应 |
17-22 |
V- |
反激励器供应 |
23 |
NPSync |
喷嘴相同步 |
24 |
D3[n] |
图像数据[n]的通道3(6通道打印头的黑色) |
25 |
D4[n] |
图像数据[n]的通道4(6通道打印头的黄色) |
26 |
PLL |
锁相环时钟 |
27 |
TEn |
并行传输使能 |
28-32 |
V+ |
正向激励器供应 |
33-38 |
V- |
反向激励器供应 |
39 |
Reset |
控制复位 |
40 |
D5[n] |
图像数据[n]的通道5(6通道打印头的品红) |
41 |
D6[n] |
图像数据[n]的通道6(6通道打印头的青色) |
42 |
SCl |
用于控制的I2C串行时钟 |
43 |
SD |
用于控制的I2C串行数据 |
44-48 |
V+ |
正激励器供应 |
49-54 |
V- |
反激励器供应 |
55 |
Vdd |
正逻辑供应 |
56 |
Gnd |
模拟地 |
57 |
CCEn[n] |
控制芯片使能[n] |
58 |
Vss |
反逻辑供应 |
59 |
Sense |
模拟感应输出 |
60-64 |
V+ |
正激励器供应 |
多段打印头通常由若干个相同的打印头段构成。这些打印头段通常为21mm的段,其被制造在一起或制造后组装在一起,以组成所需长度的打印头。所述段可以根据需要被设置为重叠的,以实现段之间的平滑过渡。每个21mm英寸段在页的不同部分上打印1600dpi的二值点以产生最终的图像。虽然每个段产生最终图像的1280个点,但是每个点由有色墨的组合表示。例如,可以把15个打印头段并排组合以产生12英寸的打印头。每个段可以被认为具有引入区、中央区、以及引出区。一个段的引出对应于下一个的引入。
图12中通过两个重叠段106、107示出段的3个区域。需要注意的是,段S(110)的引出区108对应于段S+1(107)的引入区109。段的中央区是完全没有重叠的区域(106的110和107的111)。虽然本图显示的打印头段是垂直错置的,但是实际上错置有一定的角度,这样两个打印头段才能在垂直方向上对准。
在下文中,我们假设打印头是由上述若干个打印头段构成的。我们还假设这些打印头段被划分为G个段组,其中最大的段组中有L个段,以实现数据载入。假设在打印头中有C种颜色。我们假设打印头的激发机制是所有打印头段同时激发,并且在同一时刻只有一个段提供关于共用三态总线的反馈信息。在上述假定的基础上,表15中列出了打印头的外部连接。
表15.打印头的连接
名称 |
针脚 |
描述 |
Dn |
CL |
向段0到L-1的C移位寄存器输入 |
SClk |
G |
SClk[N](ShiftRegisterClock N)上的一个脉冲从Dn线路向段组N中的L段装入当前值。 |
NPSync |
1 |
NPSync上的一个脉冲启动所有打印头段的行打印 |
PLL |
1 |
用于在打印头中产生计时信号的锁相环时钟 |
Ten |
1 |
从移位寄存器向内部喷嘴使能位(每个喷嘴1位)并行传送数据 |
Reset |
1 |
控制复位 |
SCl |
1 |
用于控制的I2C串行时钟 |
SD |
1 |
用于控制的I2C串行数据 |
CCEn |
G |
CCEn N上的脉冲与D1[n]上的数据进行“与”运算的结果为段组N中的段 |
| |
n选择感应线路 |
Sense |
1 |
模拟感应输出 |
Gnd |
1 |
模拟感应接地 |
V- |
多个,取决于颜色数 |
反激励器供应 |
V+ | |
正激励器供应 |
Vss | |
反逻辑供应 |
Vdd | |
正逻辑供应 |
请参考图5,图中的HCU提供了使用两个不同的抖动矩阵抖动的方法,这两个抖动矩阵由抖动矩阵选择图选择。抖动矩阵存取单元(DMAU)48为每个循环提供了适当的抖动值。另外,DMAU还把抖动复制给多个重叠的Memjet打印头段。DMAU的作用只是为打印头中的输出点位置提供适当的8位抖动值。
如果整个Memjet打印头是由单片集成电路制成的,那么只需要一个抖动矩阵(例如64×64)就足够了。但是,Memjet打印头通常是由多个重叠的段构成的。段重叠可以实现从一个Memjet段向另一个Memjet段的平滑过渡,而不会产生可见的锐边瑕疵。另外,由于各段的位置安排的问题,这些段不需要精确地与打印点对准。一个普通的抖动矩阵无法处理过渡,也无法处理段之间的亚点水平的对准问题。使用打印引擎/控制器进行打印的方案是使用从Memjet打印头获得的特征化向量,并构造一套与打印头有关的抖动矩阵。每个段都可认为是具有一个引入区、一个中央区和一个引出区。每段的引出区与下一个段的引入区相对应。段的中央区是没有任何重叠的区域。
图12中通过显示两个重叠段106、107表示一个打印头段的3个区域。需要注意的是,段S的引出区108对应着段S+1的引入区109。对于任何数量的打印头段,我们可认为各段的中央区的抖动矩阵是相同的,但是段S的引出区和段S+1的引入区应按照两个段之间的排列方式配对。虽然多个打印引擎/控制器可以控制同一个页的打印,但是一个特定的打印引擎/控制器只控制特定数量的打印头段,而另一个打印引擎/控制器只控制另一些打印头段。因此,由一个打印引擎/控制器控制的段组的第一个段的引入区实际上对应着由另一个打印引擎/控制器控制的段组的最后一段的引出区。
抖动矩阵的全部目的是使重叠区的亮度水平和点增益特征与正常区域的亮度水平和点增益特征一致。为此,需要为打印头段定义一套由打印引擎/控制器使用的抖动矩阵。这些抖动矩阵总称为多段抖动矩阵。
·通用抖动矩阵是一个常规的抖动矩阵,它对于所有段都是相同的(由于段之间的排列问题,特定点行的中央区域的第一个点的抖动矩阵值可能与期望的位置不一致)。
·应为每个段对的重叠区域使用引入/引出抖动矩阵。还需要为由打印引擎/控制器控制的所有段的集合提供一个引入和引出。引入/引出矩阵的宽度等于重叠区域的两个段的总点数。该值应在32到48之间(与16到24的重叠宽度对应)。一个段的引入/引出抖动矩阵和相邻段的引出矩阵配合使用,并考虑了重叠区域的亚点调整问题以及重叠区域开始和结束时通用抖动矩阵的位置问题。
·还应提供第一个段的引入抖动矩阵以及最后一个段的引出抖动矩阵。它们与由打印引擎/控制器管理的其它段中的矩阵对应。
每个段还为该段的第一个点在通用抖动矩阵指定水平偏移。这样可补偿由重叠段所引起的多达2个点的错置。这也使抖动矩阵生成软件更灵活地在引入/引出抖动矩阵的引出部分末端提供一任意连接点。
多段抖动矩阵按行组织。总行数等于抖动矩阵的高度。每一行都以双缓存方式从外部DRAM装入到本地DMAU中。当一个点行(相对于多段抖动矩阵的当前行)被生成时,多段抖动矩阵的下一行被载入。在从HCU状态机接收″前进行(advance line)″的信号时,抖动矩阵行缓冲区相互交换。
图13所示为多段抖动矩阵的一行的成分。
多段抖动矩阵的行的宽度取决于重叠尺寸和段数。假设通用抖动矩阵的宽度是64,重叠区宽度为32点,有15个段,那么一共应该有64+32+32+(14×(32+32))个入口,每个入口为8位,总大小=1024字节。
DRAM要求在64KB存储区内每行为1KB,总共64行(抖动矩阵的高度)。每次输出一行时,DMAU必须从DRAM装载上述一行。对于每秒30000行的最高打印速度,装载量约为30MB/秒左右。
DMAU实际上支持两个多段抖动矩阵,具体使用哪个抖动矩阵由抖动矩阵选择位确定。当Matrix2Valid 1位寄存器被置位时,使用第二个抖动矩阵。因此,在最高打印速度时,DRAM存储要求为128KB,DRAM访问要求总带宽为60MB/秒。所以在每个缓冲区1024B的情况下,DMAU包含4个行缓冲区,并使用15个偏移寄存器作为进入通用抖动矩阵的初始入口(每个使用一个入口)。
地址生成的过程可以用下列伪代码描述:
DblBufferSelect=0
MatrixLineStartAddress=0(refers to 64KByte-aligned address of start of Matrix1)
Load Matrix 1 address pointed to by MatrixLineStartAddress
If(Matrix2Valid)
Load Matrix 2,address pointed to by MatrixLineStartAddress+64KBytes
Endlf
<!-- SIPO <DP n="29"> -->
<dp n="d29"/>
Do until end-of-page
currAdr=64
lineAdvance=0
dotAdvance=0
dot=1
segment=1
While(NOT lineAdvance)
CalculateEntry
EndWhile
DblBufferSelect=NOT DblBufferSelect
MatrixLineStartAddress=(MatrixLineStartAddress+1)AND 63
Load Matrix 1 address pointed to by MatrixLineStartAddress
Load Matrix 2,address pointed to by MatrixLineStartAddress+64KBytes
EndDo
其中,“Calculate Entry”是一个单循环过程,它可以由下面的伪代码描述。需要注意的是,如果Matrix2Balid寄存器被清除,那么不管抖动矩阵选择图的值是什么,将始终使用第一抖动矩阵。
Output matrlx value read from;
DblBufferSelsect,DitherMatrixSelect AND Matrix2Valid,CurrAdr
Output dotAdvance=NOT(((dot<32)AND(segmenl NOT==0)AND(doto==0))OR((dot>1248)
AND(segment NOT=numSegments))AND(doto==0))
OutputIlneAdvance=((segment==numSegments)AND(dot==1280))
If((dot<32)OR(dot>1248))
CurrAdr=CurrAdr+1
Else If(dot==1248)
CurrAdr=NextOvarlapAdr
Else If(dot==32)
NexlOverlapAdr=CurrAdr
CurrAdr=CentsalAreaFirstDotDitherOffset[segment]
Else
CurrAdr=(CurrAdr+1)AND 63
Endlf
If(dot==1280)
dot=1
segment=segment+1
Else
dot=dot+1
Endlf
需要注意的是,点和段计数器用于对点进行计数,并且只与非重合区、第一个段的引入区以及最后一个段的引出区域中的实际段/点的组合情况对应。在重叠阶段,交错点对应着段S和段S+1。因此,″点提前″信号只在此阶段中每隔1个点(第2个点)给出。
通过每个打印头段的低速串行总线可以查询每个打印头段的信息,查询结果返回各个段的特征化向量。从多个打印头芯片产生的特征化向量经过合并后产生整个多段打印头的喷嘴缺陷列表,这样,在打印中打印引擎可以补偿有缺陷的喷嘴。如果有缺陷的喷嘴的数量较少,那么经补偿后的打印结果与不含有缺陷的喷嘴的打印头的打印效果没有明显差别。
每个打印头段的特征化向量为384位,包含:
·标志和打印头段的信息(共64位),包括序列号和段中的颜色数。
·相对于前一个段的对准数据(16位,0=第一个段)
·其余位为有缺陷的喷嘴的列表(长度可变)。
有缺陷的喷嘴的列表的长度是可变的。每个有缺陷的喷嘴数据的结构如下:
·5位计数(0=列表尾)
·3位颜色
·计数×11位,每个有缺陷的喷嘴都有一个记录
淡入/淡出抖动矩阵不仅用于引入引出。它们是一起定义的,当按照错置的重叠方案使用它们时,可以保证在重叠区域维持恒定的点增益。这样,两个段之间不必要按点对准。
段之间的错置是很重要的。对于不是理想按点对准的两个段,第一个段上的点不是完全与第二个段上的点对准。因此,第二个段上的两个点可能与第一个段的一个点重叠。如果第一个段上的某个点与第二个段上的某个点同时打印,那么在最终的打印结果上可能产生一个颜色加重的点。如果在第一个段上的某个点打印时,第二个段上的重叠点都不打印,那么最终打印结果上会出现一个半点。第一种情况会使一个加重的色条落在页上,而第二种情况会使一个白色条落在页上,这两种情况都不是我们所希望的。
解决上述错置问题的一个方案是采用一个能够弥补上述错置情况的抖动单元,使重叠区域中维持恒定的点增益,这样才不会有颜色较重的区域或颜色条落到整个页上。由于有两个段,所以要使用两个抖动单元。一个作为淡出单元,一个作为淡入单元。这两个单元必须同时使用,以产生恒定的点增益。很明显,不同的错置方案需要不同的抖动单元对。由半点错置产生的重叠与1/4点错置产生的重叠不同。因此每种错置方案都需要特定的抖动单元对。如果知道公共抖动单元从哪里开始重叠,那么可以更好地产生抖动单元对。
由于上述错置问题,当到达重叠区域的末尾时,还需要知道是否使用公共抖动单元中的预期位置(如果点之间能够完美地对准),或者是否需要使用抖动单元的另一列。因此,要使用一个偏移值来指定在特定段重叠对的末尾应衔接公共抖动单元的哪个部分。
因此,使用段错置有两个目的,第一个目的是为重叠区域产生抖动单元对。产生抖动单元对的目的是把公共抖动单元中的某个已知位置与抖动单元的所选列连接。对于点之间完美对准的段,抖动单元的所选列是预期的列,对错点错置的段,所选列是一个邻近列。因此,错置用于确定进入公共抖动单元的偏移。这种情况一个例子是:对于每个段重叠区域,都有一个特定的抖动矩阵对,该抖动矩阵对还计入了公共抖动单元中的错置和位置。有很多种方法能够产生这些抖动单元,这是一种现有技术。可以为每个打印头错置对一次产生抖动单元。也可以为所有打印头一次产生抖动单元。例如,可以为多达100个点的错置产生一个详尽的抖动单元对列表。这个工作需要产生100×64个抖动单元对以及100×64个偏移值一一总共6400套数据。假设一个重叠区域占32个点,且抖动单元的高度为64每个抖动单元对的数据量为4KB,那么总共需要12.5MB数据。这些数据可以存储在打印机驱动程序的安装光碟上(或其它媒质上)。在打印机驱动程序的安装过程中,可以根据连接的打印头的错置情况选择正确的抖动单元,对于一个15段的打印头,总共需要64KB数据。对于这种情况,只需要一次性产生抖动单元。通过模拟训练抖动单元产生技术,可以产生实际所需的6400个抖动单元(假设错置的范围为100个点)。″优度函数″是一种简单的点增益计算。模拟训练的目的是尽量减少与标准抖动单元相比的点增益差异。
上述描述的目的只是说明本发明的较佳实施例,不应构成对本发明的任何限制。本领域的技术人员可以在本发明的特定实例基础上很容易地实现各种变化,但按照本发明进行的任何等价修改或修饰都应属于本
发明的范围。