图像形成装置及其方法转让专利

申请号 : CN200710170092.8

文献号 : CN100589037C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 横山登黑沢秀德小仓圭吾森田靖二郎

申请人 : 佳能株式会社

摘要 :

本发明提供一种图像形成装置及其方法。在逐行图像形成装置中,在寄存器中设定取决于扫描行弯曲的行切换信息、以及跨行切换信息指示的切换位置之前和之后的多行而重叠的、要读出的重叠数据长度。如果行切换信息指示向上面行或下面行切换,则当从图像存储器中读出图像数据时,地址产生单元根据行切换信息和重叠数据长度,产生图像存储器的读出地址和读出数据长度,并且根据所产生的数据读出与当前行和当前行上面或下面的行对应的图像数据。

权利要求 :

1.一种用于形成图像的图像形成装置,包括:

存储单元,用于存储至少多行的图像数据;

数据读出单元,用于根据读出开始地址沿行方向从所述存储单元 中读出图像数据;

设定单元,用于设定行方向上的行切换地址,所述行切换地址用 于把将要由所述数据读出单元读出的图像数据的行从第一行切换到第 二行;

产生单元,用于在所述数据读出单元将图像数据的行从第一行切 换到第二行的情况下,产生第二行的读出开始地址,从而使第一行在 行方向上的读出地址与第二行在行方向上的读出地址重叠;

控制单元,用于在读出第一行的图像数据时的行方向上的读出地 址与行切换地址相同的情况下,根据所述产生单元产生的读出开始地 址,控制所述数据读出单元读出第二行的图像数据;

半色调处理单元,用于根据所述数据读出单元读出的第一行的图 像数据和第二行的图像数据来执行半色调处理;以及图像形成单元,用于根据由半色调处理单元执行了半色调处理后 的图像数据来形成图像。

2.如权利要求1所述的图像形成装置,其中,第二行与第一行 相邻。

3.如权利要求2所述的图像形成装置,其中,所述设定单元根 据在将一行的图像数据分割成多个段的情况下每段的长度来设定行切 换地址。

4.如权利要求3所述的图像形成装置,其中,所述多个段中的 每个段的长度是可变的。

5.如权利要求3所述的图像形成装置,其中读出开始地址相当 于要读出的段的基础地址。

6.如权利要求1所述的图像形成装置,其中,所述数据读出单 元经由环形缓冲器从存储单元中读出图像数据。

7.一种用于形成图像的图像形成方法,包括:

数据读出步骤,根据读出开始地址沿行方向从存储至少多行的图 像数据的存储器中读出图像数据;

设定步骤,设定行方向上的行切换地址,所述行切换地址用于把 将要在所述数据读出步骤中读出的图像数据的行从第一行切换到第二 行;

产生步骤,在所述数据读出步骤将图像数据的行从第一行切换到 第二行的情况下,产生第二行的读出开始地址,从而使第一行在行方 向上的读出地址与第二行在行方向上的读出地址重叠;

控制步骤,在读出第一行的图像数据时的行方向上的读出地址与 行切换地址相同的情况下,根据在所述产生步骤中产生的读出开始地 址,控制所述数据读出步骤读出第二行的图像数据;

半色调处理步骤,根据在所述数据读出步骤中读出的第一行的图 像数据和第二行的图像数据来执行半色调处理;以及图像形成步骤,根据在半色调处理步骤中执行了半色调处理后的 图像数据来形成图像。

8.如权利要求7所述的图像形成方法,其中,第二行与第一行 相邻。

9.如权利要求7所述的图像形成方法,其中,所述设定步骤根 据在将一行的图像数据分割成多个段的情况下每段的长度来设定行切 换地址。

10.如权利要求9所述的图像形成方法,其中,所述多个段中的 每个段的长度是可变的。

11.如权利要求9所述的图像形成方法,其中,读出开始地址相 当于要读出的段的基础地址。

12.如权利要求7所述的图像形成方法,其中,在所述数据读出 步骤中,经由环形缓冲器从存储器中读出图像数据。

13.一种图像形成装置,包括:

输入单元,用于按页来接收图像数据;

图像数据存储单元,用于存储由所述输入单元接收的图像数据;

读出单元,用于根据读出开始地址和读出数据长度读出存储在所 述图像数据存储单元中的图像数据,将所读出的图像数据作为读出数 据长度的数据段;

图像形成单元,用于根据由所述读出单元读出的多个数据段构成 的图像数据的扫描行来扫描图像承载体,并且按扫描行在图像承载体 上形成图像;

修正信息存储单元,用于存储修正信息,该修正信息用于修正图 像承载体上的扫描行的弯曲;和产生单元,用于根据存储在所述修正信息存储单元中的修正信 息,产生多个读出开始地址,其中,所述读出单元一边切换由产生单元产生的多个读出开始地 址,一边从图像数据存储单元中读出多个数据段。

14.如权利要求13所述的图像形成装置,其中,所述图像形成 单元具有多个图像承载体;

所述修正信息存储单元存储与多个图像承载体一一对应的多个 修正信息;

所述产生单元根据与存储在所述图像数据存储单元中的图像数 据的多个颜色中的每个颜色相对应的修正信息,产生多个读出开始地 址。

15.如权利要求14所述的图像形成装置,其中,所述读出单元 根据读出数据长度和由所述产生单元产生的多个读出开始地址,执行 从所述图像数据存储单元向图像形成单元的数据段的DMA传送。

说明书 :

技术领域

本发明涉及一种通过使用图像数据修正在图像形成期间出现的 扫描行弯曲来形成图像的图像形成装置和方法。

背景技术

近年来,经常使用串联系统并利用电子照相法来提高彩色图像形 成装置(激光打印机)的图像形成速度。该系统设置多种类型的染色 材料(调色剂)、相等数量的显影器和一个感光鼓,通过将不同颜色 的图像依次转印到传送带或记录纸上来形成彩色图像。在利用该串联 系统的彩色图像形成装置中,多种因素会导致不同颜色的图像之间的 配准误差,因为这些图像利用对应于各种颜色的不同图像形成单元形 成。用于对此进行修正的各种方法被提出。
一个导致因素被认为是偏转/扫描激光光束的偏转扫描仪的透镜 之间的不均匀性、安装透镜时的位置偏移或向图像形成装置安装偏转 扫描仪时的位置偏移。当这种情况发生时,激光光束的扫描行会倾斜 或弯曲。由于扫描行的倾斜或弯曲程度对于每种颜色不同,因此以配 准误差的形式出现。
关于处理配准误差的方法,在日本专利公开No.2002-116394 (文献1)中,在组装偏转扫描仪期间使用光学传感器来测量偏转扫 描仪中的扫描行弯曲量。然后,在通过根据测量结果机械转动透镜来 调节扫描行弯曲之后,利用粘接剂将透镜固定。
在日本专利公开No.2003-241131(文献2)中,在向彩色图像 形成装置安装偏转扫描仪时,使用光学传感器来测量扫描行倾斜量, 通过根据所测量的倾斜机械地倾斜偏转扫描仪来调节扫描行倾斜。在 进行了调节后,将偏转扫描仪安装到彩色图像形成装置上并固定到位。
另外,日本专利公开No.2004-170755(文献3)中公开了使用 光学传感器测量偏转扫描仪中的扫描行倾斜和弯曲量,修正位图数据 以消除该倾斜和弯曲,并基于该修正后的图像数据来形成图像。由于 通过处理图像数据来修正配准误差,文献3的方法不需要机械调节或 组装期间的调节。因此,与文献1和2中公开的方法相比可以更为低 成本地处理配准误差。
但是,如果使用文献3中公开的方法,则因为执行混合操作来以 不同的灰度等级记录当前行的上面或下面的相邻行的数据,因此需要 用于存储多个扫描的位图数据的行缓冲器。行缓冲器的数量取决于扫 描行弯曲的宽度。例如,如果扫描行弯曲跨图像数据的N行,则要求 有足够的行缓冲器以便能够存储图像数据的N行。由于彩色图像形成 装置之间的差异,N的值必须适应超过该差异的最大值的行数。当这 样确保了大量的行缓冲器时,存储容量同等增加,用于修正位图图像 数据的电路也增加,从而导致成本增加。

发明内容

本发明的目的在于解决现有技术的上述问题。
本发明的目的在于提供一种使用图像数据修正扫描行弯曲的低 成本、结构简单、不需要用于修正扫描行弯曲的行缓冲器的图像形成 装置及其方法。
根据本发明的第一方面,提供一种用于形成图像的图像形成装 置,包括:
存储单元,用于存储至少多行的图像数据;
数据读出单元,用于根据读出开始地址沿行方向从所述存储单元 中读出图像数据;
设定单元,用于设定行方向上的行切换地址,所述行切换地址用 于把将要由所述数据读出单元读出的图像数据的行从第一行切换到第 二行;
产生单元,用于在所述数据读出单元将图像数据的行从第一行切 换到第二行的情况下,产生第二行的读出开始地址,从而使第一行在 行方向上的读出地址与第二行在行方向上的读出地址重叠;
控制单元,用于在读出第一行的图像数据时的行方向上的读出地 址与行切换地址相同的情况下,根据所述产生单元产生的读出开始地 址,控制所述数据读出单元读出第二行的图像数据;
半色调处理单元,用于根据所述数据读出单元读出的第一行的图 像数据和第二行的图像数据来执行半色调处理;以及
图像形成单元,用于根据由半色调处理单元执行了半色调处理后 的图像数据来形成图像。
根据本发明的第二方面,提供一种用于形成图像的图像形成方 法,包括:
数据读出步骤,根据读出开始地址沿行方向从存储至少多行的图 像数据的存储器中读出图像数据;
设定步骤,设定行方向上的行切换地址,所述行切换地址用于把 将要在所述数据读出步骤中读出的图像数据的行从第一行切换到第二 行;
产生步骤,在所述数据读出步骤将图像数据的行从第一行切换到 第二行的情况下,产生第二行的读出开始地址,从而使第一行在行方 向上的读出地址与第二行在行方向上的读出地址重叠;
控制步骤,在读出第一行的图像数据时的行方向上的读出地址与 行切换地址相同的情况下,根据在所述产生步骤中产生的读出开始地 址,控制所述数据读出步骤读出第二行的图像数据;
半色调处理步骤,根据在所述数据读出步骤中读出的第一行的图 像数据和第二行的图像数据来执行半色调处理;以及
图像形成步骤,根据在半色调处理步骤中执行了半色调处理后的 图像数据来形成图像。
根据本发明的第三方面,提供一种图像形成装置,包括:
输入单元,用于按页来接收图像数据;
图像数据存储单元,用于存储由所述输入单元接收的图像数据;
读出单元,用于根据读出开始地址和读出数据长度读出存储在所 述图像数据存储单元中的图像数据,作为读出数据长度的数据段;
图像形成单元,用于根据由所述读出单元读出的多个数据段构成 的图像数据的扫描行来扫描图像承载体,并且按扫描行在图像承载体 上形成图像;
修正信息存储单元,用于存储修正信息,该修正信息用于修正图 像承载体上的扫描行的弯曲;和
产生单元,用于根据存储在所述修正信息存储单元中的修正信 息,产生多个读出开始地址,
其中,所述读出单元一边切换由产生单元产生的多个读出开始地 址,一边从图像数据存储单元中读出多个数据段。
从以下结合附图对示例性实施例的说明中可以明确本发明的进 一步的特征。

附图说明

结合在说明书中并且构成说明书一部分的附图示出了本发明的 实施例,并且与说明一起用于解释本发明的原理。
图1是示出本发明一个实施例的彩色图像形成装置(多功能外围 设备)的结构的框图。
图2是表示本发明实施例的打印机控制器的详细结构的框图。
图3是表示本发明实施例的打印控制器的DMA控制器的详细结 构的框图。
图4A和4B描绘出示出本发明实施例的配准误差及其修正的图。
图5A~5D描绘出示出本发明实施例的配准误差及其修正的图。
图6描绘出说明本发明第一实施例的DMA控制器中的指定扫描 行弯曲的方法的图。
图7A和7B是说明本发明第一实施例的DMA控制器中的地址产 生单元的操作的流程图。
图8描绘出说明本发明第二实施例的DMA控制器中的指定扫描 行弯曲的方法的图。
图9A和9B是说明本发明第二实施例的DMA控制器中的地址产 生单元的操作的流程图。
图10A描绘出说明本发明第三实施例的DMA控制器中的指定扫 描行弯曲的方法的图。
图10B描绘出示出被存储为表的信息(UpDown[i])的图。
图11是示出本发明第三实施例的DMA控制器的结构的框图。
图12A和12B是说明本发明第三实施例的DMA控制器中的地址 产生单元的操作的流程图。
图13A和13B描绘出说明本发明第四实施例的DMA控制器中的 指定扫描行弯曲的方法的图。
图14A和14B是说明本发明第四实施例的DMA控制器中的地址 产生单元的操作的流程图。
图15描绘出说明本发明第五实施例的DMA控制器中的指定有 效图像区域的存储器地址的方法的图。
图16是说明本发明第五实施例的DMA控制器中的地址产生单 元的操作的流程图。
图17是详细说明在图16的步骤S513中更新状态和地址的处理 的流程图。
图18描绘出说明本发明第六实施例的DMA控制器中的利用存 储器中的地址指定有效图像区域的方法的图。
图19是说明本发明第六实施例的DMA控制器中的地址产生单 元的操作的流程图。
图20是表示本发明第七实施例的打印机控制器的详细结构的框 图。
图21是表示本发明第七实施例的打印机控制器的DMA控制器 的详细结构的框图。
图22A和22B描绘出说明本发明第七实施例的DMA控制器中的 指定扫描行弯曲的方法的图。
图23A~23C描绘出说明本发明第七实施例的DMA控制器中的 指定环形缓冲器区域的方法的图。
图24是说明本发明第七实施例的DMA控制器中的地址产生单 元的操作的流程图。
图25是说明图24的流程图中的一行处理操作的流程图。
图26描绘出说明图像数据被记录在记录介质上的特定记录位置 上的状态的图。
图27描绘出示出图像数据被记录在记录介质上的、已经从特定 记录位置移开的位置上的状态的图。

具体实施方式

以下将参照附图详细说明本发明的实施例。以下实施例不用于限 制本发明的权利要求,并且,并非在实施例中描述的特征的所有组合 都是本发明所必须的。
图像形成装置
图1是示出本发明一个实施例的彩色图像形成装置(多功能外围 设备)100的结构的框图。
该图像形成装置100例如由实现多个功能的多功能外围设备 (MFP)来实现。图像形成装置100经由网络接口108与网络连接, 可以使用网络与连接到网络的外部设备交换图像数据和各种信息。
在图1中,包括平台和自动文档馈送器(ADF)的图像读取器 105利用光源照射平台上的一张或一堆原稿,在具有透镜的固体图像 传感器(未示出)上形成原稿的反面像。图像读取器105由此可以根 据来自固体图像传感器的光栅图像信号,以规定的密度(例如600dpi) 获得光栅图像页。注意,尽管在各实施例中给出纸文档作为由图像读 取器105读取的原稿的一个例子,但也可以读取纸之外的打印物,例 如记录介质(例如OHP薄片或胶片等透明原稿或纤维等)。
图像形成装置100具有利用打印单元107在记录介质上打印对应 于由图像读取器105读取的图像信号的图像的拷贝功能。特别是当制 作原稿的一份拷贝时,由数据处理器101对图像信号执行图像处理, 产生打印数据,然后该打印数据被输出到打印单元107并被打印在记 录介质上。另一方面,当制作原稿的多份拷贝时,打印数据最初被存 储在硬盘(HD)等存储单元106中,然后被重复地输出到打印单元 107用于指定数量的拷贝,然后打印到打印介质上。注意,使用打印 单元107的各种打印控制是通过打印机控制器103实现的。在本实施 例中,打印单元107例如包括应用串联系统的激光打印机的打印机引 擎。
从安装在图像形成装置100中的控制台单元104给出从操作者向 图像形成装置100发出的指令,这一系列的操作由数据处理器101中 的控制器(图2中的CPU 308)来控制。控制台单元104的输入状态 和当前正处理的图像数据的显示在显示单元102上执行。注意,向用 户提供用于执行各种处理(下述)的各种操作和显示的用户接口由显 示单元102和控制台单元104在图像形成装置100中实现。
以下参照图2说明打印机控制器103的详细结构。
图2是表示本实施例的打印机控制器103的详细结构的框图。
打印机控制器103具有主机接口302。主机接口302配置有输入 缓冲器(未示出),用于输入从数据处理器101发送的打印数据和指 示图像形成装置100的操作的设定。主机接口302还配置有输出缓冲 器(未示出),用于临时保持包括钥发送给数据处理器101的信号和 设备信息的输出数据。主机接口302构成用于发送到数据处理器101 和从数据处理器101发送来的信号和通信分组的输入/输出单元,并且 利用数据处理器101来控制通信。
经由主机接口302输入的打印数据被提供给图像数据产生器 303。在此,所输入的打印数据例如由页描述语言(PDL)数据构成。 图像数据产生器303利用预定的分析单元来分析所输入的打印数据 (例如PDL分析)。图像数据产生器303然后从分析结果产生中间语 言,进而产生打印单元(打印机引擎)107能够处理的位图数据。
具体地,在分析打印数据和利用分析结果创建中间语言数据的同 时,图像数据产生器303与中间语言数据的创建并行地执行光栅化。 该光栅化包括从包含在打印数据中的显示颜色RGB(加法处理)到打 印单元107能够处理的YMCK(减法处理)的转换。该处理还包括从 包含在打印数据中的字符代码到预先存储的位模式或轮廓字体等字体 数据的转换处理。光栅化接着包括创建位图数据的页或组(band), 使用抖动模式对该位图数据执行伪半色调处理,以及产生可以由打印 单元107打印的位图数据。由此创建的位图数据被存储在图像存储器 304中。对存储在图像存储器304中的位图数据的读出由直接存储器 存取(DMA)控制器305控制。对DMA控制器305从图像存储器304 读取位图数据的控制基于来自CPU 308的指令来执行。
从图像存储器304读出的位图数据由执行混合处理(后述)的混 合处理器306处理,并经由引擎接口307作为视频信号传送到打印单 元107。引擎接口307配置有临时保持将要传送到打印单元107的打 印数据(视频数据)的输出缓冲器(未示出)和临时保持从打印单元 107发送的信号的输入缓冲器(未示出)。引擎接口307构成发送到 打印单元107和从打印单元107发送来的信号的输入/输出单元,同时 管理与打印单元107的通信控制。
例如作为用户对控制台单元104进行的操作输入的结果的、与模 式设定有关的各种指令经由控制台单元接口301输入。控制台单元接 口301构成控制台单元104与CPU 308之间的接口。CPU 308根据从 控制台单元104或数据处理器101指示的模式来控制上述单元。这些 控制基于存储在ROM 309中的控制程序来执行。存储在ROM 309中 的控制程序包括利用系统时钟按照被称为任务的负载模块执行时分控 制的操作系统。该控制程序还包括多个负载模块,这些负载模块的执 行由操作系统按功能进行控制。RAM 310被CPU 308用作运算处理 的工作区。包括CPU 308在内的这些单元被连接到系统总线311。该 系统总线311具有地址总线、数据总线和控制信号总线。
以下参照图3说明DMA控制器305的详细结构。
图3是示出本实施例的打印机控制器103中的DMA控制器305 的详细结构的框图。
寄存器单元501由多个寄存器(未示出)构成。作为CPU 308 向寄存器单元501中的寄存器写入适当值的结果,CPU 308向DMA 控制器305发出指令。地址产生器502参照寄存器单元501中的寄存 器的内容产生用于读出存储在图像存储器304中的位图数据的地址。 地址产生器502向总线接口503输出地址信号(addr)和表示将从这 些地址读出的数据长度(数据量)的长度信号(length)。这些地址 信号和长度(读出数据长度)信号与请求信号(req)一起被输出到总 线接口503。
当输入了来自地址产生器502的地址信号和长度信号时,总线接 口503向系统总线311发出用于图像存储器304的读出事务 (transaction)。例如,如果系统总线311的数据总线宽度为32位, 则总线接口503按32位访问来分析读出请求,并发出读出事务。当完 成了与地址和长度信号组成的对有关的读出时,总线接口503利用确 认信号(ack)将读出完成情况发送到地址产生器502。接收到该确认 信号的地址产生器502可以通过向总线接口503输出下一对地址和长 度信号来发出从图像存储器304读出数据的下一请求。
从图像存储器304读出的位图数据被临时存储在FIFO(先进先 出缓冲器)504中。即使在混合处理器306暂时不能接收数据的期间, DMA控制器305也从图像存储器304中读出位图数据,并将所读出 的位图数据存储在FIFO 504中。从而当混合处理器306再次能够接 收数据时,可以立即将位图数据从FIFO 504提供给混合处理器306。
总线接口503监视从FIFO 504输出的、表示没有向FIFO 504 写入数据的空闲空间的FIFO满信号(full)。如果这样输出了表示 FIFO 504已满的满信号,则总线接口503不发出读出事务,而是等待 满状态被取消。
混合处理器接口505将蓄积在FIFO 504中的位图数据发送到混 合处理器306。混合处理器接口505监视从FIFO 504输出的、表示没 有数据蓄积在FIFO 504中的FIFO空信号(empty)。如果FIFO 504 不为空且混合处理器306能够接收数据,则混合处理器接口505从 FIFO 504读出位图数据,并将该数据发送到混合处理器306。
配准误差修正的原理
以下参照图4A、4B和图5A~5D说明配准误差修正的原理。
图4A、4B和图5A~5D是说明本实施例的配准误差修正原理的 图。
图4A描绘出表示导致配准误差的扫描行弯曲的例子的图。在图 4A中,水平轴表示扫描行的主扫描方向,垂直轴表示副扫描方向。图 4B示出在切换对应于每个扫描行的行数据以与扫描行弯曲相匹配时, 被发送到打印单元107的位图数据的例子。在此,n行表示本来应打 印的扫描行。在图4B中,阴影部分表示在打印n行时被发送到打印 单元107的图像数据。通过切换输出到打印单元107的图像数据的行 以与图4A中所示的扫描行弯曲相匹配,即使弯曲发生在曝光扫描行 中,也可以在图像承载体(例如感光鼓)上产生不失真的静电潜影。
图5A示出导致配准误差的弯曲扫描行的放大部分。图5B示出 在切换图像数据以与扫描行中的弯曲相匹配时被发送到打印单元107 的位图数据。但如图5A中所示,当在简单切换行数据后将位图数据 发送到打印单元107时,在进行切换的位置产生不自然的台阶。因此, 通过改变进行切换的位置处的点尺寸来形成点,使得两行如图5C所 示重叠,则可以消除图像的这一不自然的台阶,从而实现图像的平滑。 在进行切换的位置附近向两个相邻行的图像数据增加半色调(混合处 理),使得该台阶更不明显。注意,该混合处理由混合处理器306执 行。
为了使行缓冲器变得不必要,本实施例的DMA控制器305根据 扫描行弯曲产生地址来切换行数据。而且,考虑到仅在切换行的时刻 前后才需要该混合处理的事实,除了图5D中的涂黑部分510,还将阴 影部分511的位图数据发送到打印单元107。从而使得混合处理器306 可以执行混合处理,行缓冲器也变得不必要。
第一实施例
以下将参照图6、7A和7B来说明本发明第一实施例的DMA控 制器305的操作。
图6描绘出说明本发明第一实施例的DMA控制器305中的指定 扫描行弯曲的方法的图。注意,在此将位图数据的一行平均地分割。 以下将分割行的一部分称为段。注意,在以下的说明中,表示段长度、 相邻段之间的行切换的存在、用于行切换前后的混合处理的读出数据 长度、各种地址以及数据长度的名称表示包括在寄存器单元501中的 寄存器的名称。如上所述,CPU 308通过向寄存器单元501中的这些 寄存器写入值,指示DMA控制器305执行操作。
在DMA控制器305的寄存器单元501中设有用于设定段的长度 的寄存器RegSegLen。设有要求数量的寄存器RegUpDown[i],用于 指示相邻段之间的行的切换,以与扫描行弯曲相匹配。注意,变量i 表示段边界的编号。在此,每个寄存器可以取3个值,因为寄存器指 定不切换行、或者切换到上面的行或下面的行。在此,在不切换行时 分配“00”或“01”,在切换到上面的行时分配“10”,在切换到下面的行 时分配“11”。当在相邻段之间切换行时,指定进行切换的位置附近的 要读出的图像数据的长度(混合长度)的寄存器被设置在DMA控制 器305的寄存器单元501中。该寄存器由RegOverlapLen定义。注意, 在第一实施例中,一个扫描行中的段长度(RegSegLen)和混合长度 (RegOverlapLen)被固定。
DMA控制器305的寄存器单元501还包括指定存储在图像存储 器304中的位图数据的基础地址的寄存器RegStartAddr、以及表示位 图数据的行长度的寄存器RegLineLen。而且,寄存器单元501包括位 图数据中的相邻行地址的偏移(RegLineOffset)、以及指定要发送到 混合处理器306的行数的RegBeams。除了上述寄存器,DMA控制器 305的寄存器单元501还包括用于在CPU 308设定了上述寄存器后开 始DMA操作的开始寄存器(未示出)。
图7A和7B是说明本发明第一实施例的DMA控制器305中的地 址产生器502的操作的流程图。注意,在以下说明中,为了方便说明, 数据等的名称由对应的寄存器名称代替。
首先,在步骤S100中,当通过来自CPU 308的指令开始了DMA 操作时,每个扫描行的开始地址(line_start_addr)被初始化为位图 数据的基础地址(RegStartAddr)。已被发送到混合处理器306的行 的行数(line_cnt)被初始化为“0”。接着,处理前进到步骤S101,在 此对每个扫描行执行初始化。在此,段开始地址(seg_addr)被初始 化为扫描行的开始地址(line_start_addr)。扫描行的已处理数据量 (line_data_cnt)被初始化为“0”。表示是否在段的前边界有行切换的 up_down_front被初始化为“00”。这表示在行的第一段的前边界没有 行切换。要参照的寄存器RegUpDown[i]的变量i(索引)被初始化为 “0”。
接着,在步骤S102,对每一段执行初始化。在此,将向总线接 口503请求的地址和长度信号(addr、len)被分别初始化为段开始地 址(seg_addr)和段长度(RegSegLen)。这些信号可能在后续步骤 中改变。表示是否在段的后边界有行切换的up_down_back被设定为 寄存器RegUpDown[i]的值。从而设定是否在段的后边界有行切换。
接着,处理前进到步骤S103,在此根据up_down_front的值确 定是否在当前段的前边界有行切换。如果在段的前边界有行切换,则 处理前进到步骤S104,在此从地址(addr)中减去混合长度 (RegOverlapLen)。该混合长度(RegOverlapLen)还被加到要读 出的数据长度(length)上。结果,正切换的行的读出开始地址被向 前移动了RegOverlapLen的值(在图6中向左),从而数据的该部分 被额外读出。从而实现了段的前边界的行数据的重叠(要被读出的重 叠两行的数据长度)。注意,如果在步骤S103中确定在段的前边界没 有行切换,则处理前进到步骤S105,否则继续步骤S104。
接着,在步骤S105,根据在步骤S102中设定的up_down_back 的值确定是否在段的后边界有行切换。如果在段的后边界没有行切换, 则处理前进到步骤S107。如果有行切换,则处理前进到步骤S106, 在此将混合长度(RegOverlapLen)加到数据长度(length)上。结果, 在段的后边界,等于混合长度(RegOverlapLen)的额外的数据量被 作为当前行的数据读出(例如图6中的n行的阴影部分)。从而实现 了行数据在后边界的重叠,处理前进到步骤S107。
接着,在步骤S107,地址产生器502通过向总线接口503输出 地址(addr)和数据长度(length),请求从图像存储器304读出位 图数据。接着,处理前进到步骤S108,在此,为了将段开始地址 (seg_addr)更新为下一段的开始地址,确定表示是否在当前段的后 边界有行切换的up_down_back的值。如果在段的后边界没有行切换, 则处理前进到步骤S111。另一方面,在切换到上面的行的情况下,处 理前进到步骤S109,而在切换到下面的行的情况下,处理分支到步骤 S110。在步骤S109中,将段开始地址(seg_addr)切换到上面的行的 地址。即,从段开始地址(seg_addr)中减去位图数据中的相邻行地 址的偏移(RegLineOffset)。注意,尽管需要将段长度(RegSegLen) 加到该值上以得到下一段的开始地址,但这在步骤S111中执行。在步 骤S110中,将段开始地址(seg_addr)切换到下面行的地址。这里, 将偏移(RegLineOffset)加到开始地址(seg_addr)上。注意,尽管 需要将段长度(RegSegLen)加到该值上以得到下一段的开始地址, 但这在步骤S111中执行。在步骤S111中,为了处理下一段而将值更 新。在此,将段长度(RegSegLen)加到段开始地址(seg_addr)上。 段长度(RegSegLen)还被加到当前行的已处理数据量(line_data_cnt) 上。表示在当前段的后边界是否有行切换的up_down_back变成表示 是否在下一段的前边界有行切换的数据。因而,下一段的 up_down_front被设定为当前段的up_down_back的值。进而,为了 使要参照的寄存器RegUpDown[i]加1而使变量“i”加“1”。
接着,处理前进到步骤S112,在此从行长度(RegLineLen)中 减去已处理数据量(line_data_cnt),并将结果与段长度(RegSegLen) 进行比较。这里,如果剩余的数据长度大于段长度(RegSegLen), 则因为在当前行中还有两个以上的段要处理,因此处理返回步骤 S102,重复对段的上述处理。否则,为了处理当前行的最后段,处理 前进到下一步骤S113(图7B)。在步骤S113,地址产生器502开始 处理当前行的最后段。首先,输出要向总线接口503请求的地址和数 据长度(addr、len)。在此,将地址(addr)设定为段开始地址 (seg_addr),并将数据长度(length)设定为通过从行长度 (RegLineLen)中减去已处理数据量(line_data_cnt)而得到的值。
接着,处理前进到步骤S114,在此根据up_down_front的值确 定是否在段的前边界有行切换。如果没有行切换,则处理前进到步骤 S116,如果有行切换,则前进到步骤S115。注意,对于当前行的最后 段,地址产生器502仅参照表示是否在当前段的前边界有行切换的 up_down_front。在步骤S115中,由于在当前段的前边界有行切换, 因此从地址(addr)中减去混合长度(RegOverlapLen)。混合长度 (RegOverlapLen)还被加到数据长度(length)上。从而实现行数据 在当前段的前边界上的重叠。接着,处理前进到步骤S116,在此利用 在步骤S115中更新的地址(addr)和数据长度(length)向总线接口 503发出从图像存储器304读出图像数据的请求。然后,在步骤S117 中,为了处理下一行数据而更新数据。在此,将位图数据中的相邻行 地址的偏移(RegLineOffset)加到每行的开始地址(line_start_addr) 上,以设定下一行的基础地址。向输出到混合处理器306的行的行数 (line_cnt)加“1”。接着,在步骤S118中,将输出行数(line_cnt) 与要发送到混合处理器306的行的行数(RegBeams)进行比较。在此, 如果输出行数(line_cnt)小于总行数(RegBeams),则由于还有要 处理的行数据,因此处理返回步骤S101,重复对行的上述处理。否则, 由于已经处理了一页的图像数据,因此结束DMA操作。注意,当DMA 操作结束时,DMA控制器305利用中断信号(未示出)将该情况传 送给CPU 308。CPU 308通过检测该中断来检测DMA传送的结束。
如上所述,DMA控制器305从图像存储器304中读出由多个数 据段构成的一个扫描行的图像数据,并将该图像数据传送到打印单元 107。打印单元107然后根据一个扫描行的图像数据并利用激光光束扫 描感光鼓(图像承载体),并且在感光鼓上形成一个扫描行的静电潜 影。在此,静电潜影是具有电位差的图像,该电位差取决于通过在被 充电到规定电位的感光鼓上照射(扫描)激光光束而在感光鼓上产生 的图像数据。打印单元107然后通过向静电潜影上附着调色剂,而在 感光鼓上形成取决于电位差的调色剂像,并通过将该调色剂像转印到 纸张上而在纸张上形成图像。
注意,尽管上述说明了由DMA控制器305实现本实施例的数据 转印控制的例子,但如果CPU 308具有空闲处理时间,则可以由CPU 308来执行控制。替代地,这些控制可以由CPU 308之外的另一CPU、 或者由数字信号处理器(DSP)来实现。另外,如果彩色图像处理装 置具有与多种颜色(CYMK)一一对应的图像形成单元,则通过在每 种颜色的图像形成单元中实施本实施例的数据转印方法,就可以防止 由每种颜色的配准误差导致的颜色偏差。这同样也可以适用于下述的 实施例。
根据上述的第一实施例,即使每种颜色都发生扫描行弯曲,在没 有提供在数量上对应于这些颜色的配准偏差量的行缓冲器的情况下, 也可以防止由于每种颜色的配准误差导致的颜色偏差。不提供行缓冲 器也可以实现在切换行时使起因于行切换的台阶变得不明显的混合处 理。
第二实施例
以下将参照图8~9B来说明第二实施例的DMA控制器305的操 作。注意,由于该第二实施例的图像处理装置的硬件结构与上述第一 实施例相似,因此省略其说明。第二实施例与第一实施例的不同在于, 一个扫描行中的段长度(RegSegLen)和混合长度(RegOverlapLen) 是可变的。
图8描绘出说明本发明第二实施例的DMA控制器中的指定扫描 行弯曲的方法的图。
在此,由于段长度是可变的,因此设置根据扫描行弯曲指定到行 上的切换位置为止的长度(段长度)的寄存器RegSegLen[i]。而且, 在DMA控制器305的寄存器单元501中设置有用于为每个段边界指 定是切换到上面的行还是下面的行的要求数量的寄存器 RegUpDown[i]。这里,由于每个寄存器RegUpDown[i]可以取上和下 的两个值,因此在切换到上面的行时分配“0”,在切换到下面的行时分 配“1”。在进行行切换的位置附近要读出的图像数据的(混合)长度 (RegOverlapLen)被设定在DMA控制器305的寄存器单元501中。 存储在图像存储器304中的位图数据的基础地址(RegStartAddr)以 及位图数据的扫描行长度(RegLineLen)被进一步设定在DMA控制 器305的寄存器单元501中。位图数据中的相邻行数据地址的偏移 (RegLineOffset)以及要发送到混合处理器306的行的行数 (RegBeams)也被设定在寄存器单元501中。而且,DMA控制器305 的寄存器单元501还包括用于在CPU 308设定了上述寄存器的值后开 始DMA操作的开始寄存器(未示出)。
图9A和9B是说明本发明第二实施例的DMA控制器305中的地 址产生器502的操作的流程图。
首先,在步骤S200中,当通过来自CPU 308的指令开始了DMA 操作时,每个扫描行的开始地址(line_start_addr)被初始化为图像 存储器304中的位图数据的基础地址(RegStartAddr)。已被发送到 混合处理器306的行的行数(line_cnt)被初始化为“0”。接着,在步 骤S201中,对每个扫描行执行初始化。段开始地址(seg_addr)被初 始化为扫描行的开始地址(line_start_addr)。行的已处理数据量 (line_data_cnt)被初始化为“0”。表示要参照的寄存器RegSegLen[i] 和RegUpDown[i]的索引的变量i被初始化为“0”。
接着,处理前进到步骤S202,对每一段执行初始化。要向总线 接口503请求的地址(addr)和数据长度(length)被分别初始化为 段开始地址(seg_addr)和段长度(RegSegLen[i])。这些信号可能 在后续步骤中改变。表示是否在段的后边界有行切换的 up_down_back被设定为寄存器RegUpDown[i]的值。从而设定是否在 段的后边界有行切换。
接着,处理前进到步骤S203,在此确定变量i是否为“0”,即, 该段是否是当前行的第一段。如果变量i是“0”,则处理前进到步骤 S204,否则前进到步骤S205。在步骤S204,由于这是第一段,数据 被读出以便仅在段的后边界重叠,因此将混合长度(RegOverlapLen) 加到数据长度(length)上。相反,如果变量i不是“0”,则处理前进 到步骤S205。在这种情况下,由于在段的前边界和后边界执行混合处 理,因此,从地址(addr)中减去混合长度(RegOverlapLen),并 将该混合长度(RegOverlapLen)的2倍加到数据长度(length)上。 一旦这样执行了步骤S204或S205,则处理前进到步骤S206。在步骤 S206,利用地址(addr)和数据长度(length)向总线接口503发出 从图像存储器304读出位图数据的请求。
接着,处理前进到步骤S207,在此,为了将段开始地址(seg_addr) 更新为下一段的开始地址,确定表示是否在当前段的后边界有行切换 的up_down_back的值。在当前段的后边界切换到上面的行的情况下, 处理前进到步骤S208,而在切换到下面的行的情况下,处理分支到步 骤S209。在步骤S208中,为了将下一段的开始地址切换到上面的行, 从开始地址(seg_addr)中减去偏移(RegLineOffset)。尽管需要将 当前段长度(RegSegLen[i])加到该值上以得到下一段的开始地址, 但这在步骤S210中执行。在步骤S209中,为了将段的开始地址切换 到下面的行,将偏移(RegLineOffset)加到开始地址(seg_addr)上。 尽管需要将当前段长度(RegSegLen[i])加到该值上以得到下一段的 开始地址,但这在步骤S210中执行。
在执行了步骤S208或S209后,或者在步骤S207中确定没有行 切换时,处理前进到步骤S210,并且为了处理下一段而更新数据。即, 将当前段长度(RegSegLen[i])加到段开始地址(seg_addr)上。段 长度(RegSegLen[i])还被加到当前行的已处理数据量(line_data_cnt) 上。进而,为了使表示每段的边界上的行切换的寄存器RegUpDown[i] 和要参照的当前段长度(RegSegLen[i])加1,而使变量“i”加“1”。接 着,处理前进到步骤S211,在此将通过从扫描行长度(RegLineLen) 中减去已处理数据量(line_data_cnt)而得到的差与下一段长度 (RegSegLen[i])进行比较。如果该差大于下一段长度(RegSegLen[i]), 则因为在该扫描行中还有两个以上的段要处理,因此处理返回步骤 S202,重复上述处理。如果当前扫描行中仅剩下一段,则为了处理当 前行中的最后段,处理前进到下一步骤S212(图9B)。
在步骤S212,地址产生器502开始处理当前行的最后段。将图 像存储器304中的读出开始地址(addr)设定为通过从段开始地址 (seg_addr)中减去混合长度(RegOverlapLen)而得到的值。从扫 描行长度(RegLineLen)中减去已处理数据量(line_data_cnt),通 过将混合长度(RegOverlapLen)加到该差上得到的值被设定为数据 长度(length)。接着,处理前进到步骤S213,在此根据在步骤S212 中得到的地址(addr)和数据长度(length)向总线接口503发出从 图像存储器304读出图像数据的请求。从而读出对应于当前行的最后 段的图像数据。然后,处理前进到步骤S214,在此,为了处理下一行 而更新数据。在此,通过将相邻行之间的偏移(RegLineOffset)加到 下一行的开始地址(line_start_addr)上,得到下一个扫描行的基础 地址。向已发送到混合处理器306的行的行数(line_cnt)加“1”。接 着,在步骤S215中,将已发送到混合处理器306的行的行数(line_cnt) 与将要发送到混合处理器306的行的行数(RegBeams)进行比较。在 此,如果已处理的行数(line_cnt)小于RegBeams的值,则由于还没 有结束一页的处理,因此处理返回步骤S201,重复对行的上述处理。 否则,地址产生器502判断已经结束了对当前页的处理,并且结束 DMA操作。当DMA操作结束时,DMA控制器305向CPU 308发 送中断信号(未示出)。通过该中断信号,CPU 308检测出从图像存 储器304的DMA数据读出已经结束。
除了第一实施例的效果外,上述第二实施例通过根据扫描行弯曲 来改变段长度,可以防止由于每种颜色的配准误差所导致的颜色偏差。 由于根据扫描行弯曲来改变段长度,因此第二实施例还使得配准误差 可以被准确修正。
第三实施例
以下将参照图10A、10B、11、12A和12B来说明本发明第三实 施例的DMA控制器305的操作。注意,除了DMA控制器305外, 该第三实施例的图像处理装置的硬件结构与上述第一实施例相似,因 此省略其说明。
图10A描绘出说明本发明第三实施例的DMA控制器305中的指 定扫描行弯曲的方法的图。在此,与第一实施例相同,位图数据的一 行被均等地分割。段长度(RegSegLen)被设定在DMA控制器305 的寄存器单元501中。在此,与第一实施例不同的是,使用根据扫描 行的弯曲量指定不在相邻段之间切换行、或者切换到上面的行或下面 的行的信息(UpDown[i])。这里,变量i表示段边界的顺序。
图10B描绘出与段边界相关联地作为表存储在图像存储器304 或RAM 310中的信息(UpDown[i])的例子的图。
该表的基础地址(RegTableStartAddr)被设定在DMA控制器 305的寄存器单元501中。在相邻段之间切换行的情况下,在进行切 换的位置附近要读出的数据(混合)长度(RegOverlapLen)被设定 在DMA控制器305的寄存器单元501中。存储在图像存储器304中 的位图数据的基础地址(RegStartAddr)以及位图数据的行长度 (RegLineLen)被进一步设定在DMA控制器305的寄存器单元501 中。而且,寄存器单元501包括位图数据中的相邻行地址的偏移 (RegLineOffset)以及要发送到混合处理器306的行的行数 (RegBeams)。DMA控制器305的寄存器单元501还包括用于在CPU 308设定了上述寄存器的值后开始DMA操作的开始寄存器(未示出)。
图11是示出本发明第三实施例的DMA控制器305的结构的框 图。与图3共同的部分用相同的附图标记示出。
寄存器单元501由多个寄存器(未示出)构成。通过向寄存器单 元501中的寄存器写入适当值,CPU 308向DMA控制器305发出指 令。地址产生器502′参照寄存器单元501中的寄存器的内容产生用于 读出存储在图像存储器304中的位图数据的地址。地址产生器502′还 产生用于读出图像存储器304中的行切换信息的表的地址。
地址产生器502′利用地址(addr)和表示将从该地址读出的数据 量的数据长度(length)向总线接口503请求从图像存储器304读出 图像数据。在从图像存储器304读出位图数据的情况下,该请求利用 请求信号(req)作出,而在从表中读出数据的情况下,利用请求信号 (req_table)作出。
总线接口503′从地址产生器502′接收地址和数据长度,并向系统 总线311发出图像存储器304的读出事务。例如,如果系统总线311 的数据总线宽度为32位,则按32位访问来分析地址和数据长度,并 发出读出事务。当完成了对地址和数据长度组成的对的处理时,总线 接口503′利用确认信号(ack)将完成情况发送到地址产生器502′。 接收到该确认信号(ack)后,地址产生器502′可以向总线接口503′ 请求下一地址和数据长度。总线接口503′接收从图像存储器304读出 的数据,并且如果该数据是位图数据,则将该数据写入FIFO 504。另 一方面,如果数据是表,则将所读出的表数据发送给地址产生器502′。
所读出的位图数据被临时存储在FIFO 504中。即使在混合处理 器306暂时不能接收数据的期间,DMA控制器305也能将位图数据 存储在FIFO 504中。从而当混合处理器306再次能够接收数据时, 可以立即将位图数据从FIFO 504提供给混合处理器306。
总线接口503′监视从FIFO 504输出的、表示没有向FIFO 504 写入数据的空闲空间的FIFO满信号(full)。如果FIFO 504显示出 满状态,则总线接口503′不发出读出事务,而是等待满状态被取消。 混合处理器接口505将蓄积在FIFO 504中的位图数据发送到混合处 理器306。混合处理器接口505监视从FIFO 504输出的、表示FIFO 504 中没有数据的FIFO空信号(empty)。如果FIFO 504不为空且混合 处理器306能够接收数据,则混合处理器接口505从FIFO 504读出 位图数据,并将该数据发送到混合处理器306。
图12A和12B是说明本发明第三实施例的DMA控制器305中的 地址产生器502′的操作的流程图。
首先,在步骤S300中,当通过来自CPU 308的指令开始了DMA 操作时,每行的开始地址(line_start_addr)被初始化为位图数据的 基础地址(RegStartAddr)。已发送到混合处理器306的行的行数 (line_cnt)被初始化为“0”。接着,在步骤S301,对每行执行初始化。 在此,段开始地址(seg_addr)被初始化为行的开始地址 (line_start_addr)。行的已处理数据量(line_data_cnt)被初始化为 “0”。表示在段的前边界的行切换的up_down_front被初始化为“00”。 这表示在当前行的第一段的前边界没有行切换。并且,要参照的行切 换信息(UpDown[i])的表的地址(table_addr)被初始化为表的基础 地址(RegTableStartAdd)。
接着,在步骤S302,对每一段执行初始化。要向总线接口503′ 请求的地址(addr)和数据长度(length)被分别初始化为段开始地 址(seg_addr)和段长度(RegSegLen)。这些数据可能在后续步骤 中改变。接着,处理前进到步骤S303为了读出图10B所示的表数据, 利用表地址(table_addr)向总线接口503′发出请求。所读出的表数 据被设定在表示是否在当前段的后边界有行切换的up_down_back 中。从而设定是否在该当前段的后边界有行切换。
接着,在步骤S304,根据up_down_front的值确定是否在当前 段的前边界有行切换。在此,如果有行切换,则处理前进到步骤S305, 否则前进到步骤S306。在步骤S305中,从地址(addr)中减去混合 长度(RegOverlapLen)。通过加上混合长度(RegOverlapLen)来 更新数据长度(length)。从而实现为了执行混合处理而在当前段的 前边界的数据读出的重叠。
接着,在步骤S306,根据up_down_back的值确定是否在当前 段的后边界有行切换。如果在后边界有行切换,则处理前进到步骤 S307,否则前进到步骤S308。在步骤S307中,将混合长度 (RegOverlapLen)加到数据长度(length)上。从而实现为了在当前 段的后边界执行混合处理而对读出的图像数据的重叠。
接着,在步骤S308,利用在上述步骤中设定的地址(addr)和 数据长度(length),经由总线接口503′从图像存储器304中读出位 图数据。然后,在步骤S309,为了将段开始地址(seg_addr)更新为 下一段的开始地址,地址产生器502′确定表示是否在当前段的后边界 有行切换的up_down_back的值。如果在当前段的后边界没有行切换, 则处理前进到步骤S312。在切换到上面的行的情况下,处理分支到步 骤S310,而在切换到下面的行的情况下,处理分支到步骤S311。在 步骤S310中,从段开始地址(seg_addr)中减去相邻行地址的偏移 (RegLineOffset)。尽管需要将段长度(RegSegLen)加到该值上以 得到下一段的开始地址,但这在步骤S312中执行。在步骤S311中, 为了寻址下面的行,将偏移(RegLineOffset)加到段开始地址 (seg_addr)上。尽管需要将段长度(RegSegLen)加到该值上以得 到下一段的开始地址,但这在步骤S312中执行。处理从而前进到步骤 S312,在此为了处理下一段而更新数据。在此,将段长度(RegSegLen) 加到段开始地址(seg_addr)上。段长度(RegSegLen)还被加到当 前行的已处理数据量(line_data_cnt)上。由于表示在当前段的后边 界是否有行切换的up_down_back变成下一段的前边界的切换数据, 因此up_down_back的值被设定为下一段的up_down_front。进而, 为了使要参照的行切换信息(UpDown[i])的表(参见图10B)加“1” 而在表地址(table_addr)上加“4”。接着,在步骤S313中,从位图 数据的行长度(RegLineLen)中减去当前行的已处理数据量 (line_data_cnt),并将该值与段长度(RegSegLen)进行比较。如 果差大于段长度(RegSegLen),则因为在当前行中还有两个以上的 段要处理,因此处理返回步骤S302,重复对段的上述处理。否则,为 了处理当前行的最后段,处理前进到下一步骤S314(图12B)。
在图12B的步骤S314,地址产生器502′开始处理当前行的最后 段。将要向总线接口503′请求的地址(addr)设定为段开始地址 (seg_addr)。将数据长度(length)设定为通过从位图数据的行长度 (RegLineLen)中减去已处理数据量(line_data_cnt)而得到的值。
接着,处理前进到步骤S315,在此根据up_down_front的值确 定是否在当前段的前边界有行数据切换。如果在当前段的前边界不切 换行数据,则处理前进到步骤S317。注意,对于当前行的最后段,仅 参照表示是否在段的前边界切换行数据的up_down_front。在切换行 的情况下,处理前进到步骤S316,从地址(addr)中减去混合长度 (RegOverlapLen)。混合长度(RegOverlapLen)还被加到数据长 度(length)上。从而实现为了在段的前边界执行混合处理而对所读 出的图像数据的重叠。
接着,处理前进到步骤S317,在此利用地址(addr)和数据长 度(length)向总线接口503′发出读出请求。从而将指定数据长度的 位图数据从图像存储器304的指定地址读出。然后,处理前进到步骤 S318,为了处理下一行数据而更新数据。在此,将偏移(RegLineOffset) 加到每行的开始地址(line_start_addr)上,以设定下一行的基础地 址。向已发送到混合处理器306的行的行数(line_cnt)加“1”。在步 骤S319中,将已发送到混合处理器306的行的行数(line_cnt)与将 要发送到混合处理器306的行的行数(RegBeams)进行比较,确定是 否结束了一页的图像数据处理。在此,如果行数(line_cnt)小于 RegBeams的值,则由于还有要处理的行,因此处理返回步骤S301, 对下一行重复处理。否则,结束DMA操作。当DMA操作结束时, DMA控制器305向CPU 308发送中断信号。CPU 308通过检测该中 断信号检测出DMA传送已经结束。
除了第一实施例的效果外,根据上述第三实施例,可以在固定段 长度的情况下,根据扫描行弯曲来对每个段指定不切换行或者切换到 上面行或下面行。即使在固定段长度的情况下,也可以防止由取决于 扫描行弯曲的配准误差导致的颜色偏差。
第四实施例
以下将参照图13A、13B、14A和14B来说明本发明第四实施例 的DMA控制器305的操作。注意,由于该第四实施例的图像处理装 置的硬件结构与上述第三实施例相似,因此省略其说明。
图13A和13B说明了本发明第四实施例的DMA控制器305中的 指定扫描行弯曲的方法。在此,行中的段长度是可变的,并且可以针 对每个段设定是向上面的行切换还是向下面的行切换。
这里,与第二和第三实施例不同,改变到行切换位置为止的(段) 长度(SegLen[i])和表示行数据切换的信息(UpDown[i])以与扫描 行弯曲相匹配。图13B示出存储了段长度(SegLen[i])和表示是切换 到上面的行还是下面的行的信息(UpDown[i])的表的数据结构的例 子。该表被存储在图像存储器304或RAM 310中。当读出该表时, 该表的读出开始地址(RegTableStartAddr)被设定在DMA控制器 305的寄存器单元501中。由于UpDown[i]可以取两个值,因此在段 边界处切换到上面的行时分配“0”,在切换到下面的行时分配“1”。在 第四实施例中还设定混合长度(RegOverlapLen)、位图数据的基础 地址(RegStartAddr)以及位图数据的行长度(RegLineLen)。位图 数据中的相邻行地址的偏移(RegLineOffset)以及要发送到混合处理 器306的行的行数(RegBeams)被设定在寄存器单元501中。而且, DMA控制器305的寄存器单元501还包括用于在CPU 308设定了上 述寄存器的值后开始DMA操作的开始寄存器(未示出)。
图14A和14B是说明本发明第四实施例的DMA控制器305中的 地址产生器502′(图11)的操作的流程图。
首先,在步骤S400中,当通过来自CPU 308的指令开始了DMA 操作时,每行的开始地址(line_start_addr)被初始化为位图数据的 基础地址(RegStartAddr)。已发送到混合处理器306的行的行数 (line_cnt)被初始化为“0”。接着,在步骤S401,对每行执行初始化。 在此,段开始地址(seg_addr)被初始化为行的开始地址 (line_start_addr)。行的已处理数据量(line_data_cnt)被初始化为 “0”。要参照的段长度(SegLen[i])和行切换信息(UpDown[i])的表 的地址(table_addr)被初始化为表的基础地址(RegTableStartAddr)。 变量i被设定为“0”。
接着,在步骤S402,为了从地址(table_addr)中读出图13B所 示的表数据,向总线接口503′发出读出数据的请求。根据从表中读出 的数据来设定第一段的长度(SegLen)和表示是否在段的后边界有行 数据切换的up_down_back。
接着,在步骤S403中,对每一段执行初始化。在此,要向总线 接口503′请求的地址(addr)被初始化为段的段开始地址(seg_addr)。 数据长度(length)被初始化为所读出的表中的段的数据长度 (Seg_len[i])。这些信号在后续步骤中改变。
接着,在步骤S404中确定变量i是否为“0”,即,该段是否是行 的第一段。如果变量i是“0”(第一段),则处理前进到步骤S405, 否则前进到步骤S406。在步骤S405,由于这是第一段,仅在段的后 边界需要进行混合处理,因此将混合长度(RegOverlapLen)加到数 据长度(length)上。另一方面,如果该段不是第一段,则处理前进 到步骤S406。在这种情况下,由于在当前段的前边界和后边界都要求 进行混合处理,因此,从地址(addr)中减去混合长度 (RegOverlapLen)。并且将该混合长度(RegOverlapLen)的2倍 加到数据长度(length)上。在步骤S405或S406之后,处理前进到 步骤S407。
在步骤S407,根据地址(addr)和数据长度(length)向总线接 口503′发出读出请求。从而从图像存储器304的地址(addr)中读出 指定数据长度(length)的位图数据。接着,处理前进到步骤S408, 将段开始地址(seg_addr)更新为下一段的开始地址。在此,根据 up_down_back的值确定是否在当前段的后边界有数据行切换。如果 在当前段的后边界切换到上面的行,则处理前进到步骤S409,而如果 切换到下面的行,则处理分支到步骤S410。在步骤S409中,从段开 始地址(seg_addr)中减去相邻行地址的偏移(RegLineOffset)。注 意,尽管需要将段长度(Seg_len)加到该值上以得到下一段的开始地 址,但这在步骤S411中执行。在步骤S410中,将偏移(RegLineOffset) 加到段开始地址(seg_addr)上以得到下面的行的地址。尽管需要将 段长度(Seg_len)加到该值上以得到下一段的开始地址,但这在步骤 S411中执行。
在步骤S409或S410之后,或者在步骤S408中确定没有行切换 时,处理前进到步骤S411,将段长度(Seg_len)加到段开始地址 (seg_addr)上。段长度(Seg_len)还被加到当前行的已处理数据量 (line_data_cnt)上。进而,为了使要参照的段长度(SegLen[i])和 行切换信息(UpDown[i])的表加“1”,而将“8”加到表地址(table_addr) 上。接着,处理前进到步骤S412,为了从表地址(table_addr)中读 出表数据,向总线接口503′发出请求。根据从表中读出的数据来设定 段长度(Seg_len)和表示是否在当前段的后边界有行切换的 up_down_back。接着,在步骤S413中,从位图数据的行长度 (RegLineLen)中减去当前行的已处理数据量(line_data_cnt),并 将该差与段长度(Seg_len)进行比较。在此,如果该差大于段长度 (Seg_len),则因为在当前行中还有两个以上的段要处理,因此处理 返回步骤S403,重复上述对段的处理。否则,即,如果是当前行的最 后段,则为了处理当前行的最后段,处理前进到下一步骤S414。
在步骤S414,地址产生器502′开始处理当前行的最后段。首先, 将通过从段开始地址(seg_addr)中减去混合长度(RegOverlapLen) 而得到的值设定为将要向总线接口503′请求的地址(addr)。将通过 从位图数据的行长度(RegLineLen)中减去行的已处理数据量 (line_data_cnt)并加上混合长度(RegOverlapLen)而得到的值设 定为将要向总线接口503′请求的数据长度(length)。然后,处理前 进到步骤S415,在此根据地址(addr)和数据长度(length)向总线 接口503′发出从图像存储器304读出图像数据的请求,并且读出对应 于最后段的位图数据。然后,处理前进到步骤S416,在此,为了处理 下一行而更新数据。在此,将相邻行地址的偏移(RegLineOffset)加 到每行的开始地址(line_start_addr)上,以得到下一行的基础地址。 向已发送到混合处理器306的行的行数(line_cnt)加“1”。接着,在 步骤S417中,将已发送到混合处理器306的行的行数(line_cnt)与 将要发送到混合处理器306的行的行数(RegBeams)进行比较。在此, 如果已处理的行数(line_cnt)小于RegBeams的值,则由于还有行要 处理,因此处理返回步骤S401,重复上述处理。否则,地址产生器502′ 判断已经结束了一页的数据处理,并结束DMA操作。当DMA操作 结束时,DMA控制器305向CPU 308发送中断(未示出)。CPU 308 通过检测该中断来检测出DMA传送已经结束。
除了第一实施例的效果外,根据上述第四实施例,可以在使段长 度可变的情况下,根据扫描行弯曲来对每个段指定不切换行、或者切 换到上面行或下面行。从而可以防止由取决于扫描行弯曲的配准误差 导致的颜色偏差。
第五实施例
以下将参照图15、16和17来说明本发明的DMA控制器305的 操作。注意,由于该第五实施例的图像处理装置的硬件结构与上述第 三实施例相似,因此省略其说明。
图15描绘出说明本发明第五实施例的DMA控制器305中的利 用存储器地址指定有效图像区域的方法的图。
相当于给定扫描行的数据的读出开始位置(RegBeamStartAddr) 和有效图像区域的基础地址(RegLowerAddr)被设定在DMA控制器 305的寄存器单元501中。而且,可以设定紧接有效图像区域的底边 之后的地址(RegUpperAddr)、一页中的所有扫描行的扫描行数 (RegBeamLines)、相邻行地址的偏移(RegLineOffset)以及打印 有效区域外的数据(RegFillData)(未示出)。
图16是说明本发明第五实施例的DMA控制器305中的地址产 生器502′的操作的流程图。
首先,在步骤S501中,执行一页的DMA处理的初始化。行开 始地址(line_start_addr)被设定为相当于扫描行的数据的读出开始 地址(RegBeamStartAddr),并且该页的已处理行数(line_cnt)被 设定为“0”。接着,在步骤S502中,确定DMA开始地址是否在图像 的有效区域内。如果地址在有效区域外,则处理前进到步骤S503,将 表示地址在有效区域外的值输出到行开始位置状态 (line_start_state)。另一方面,如果在步骤S502中确定地址在有效 区域内,则处理前进到步骤S504,将表示地址在有效区域内的值输出 到line_start_state。
在步骤S503或S504之后,处理前进到步骤S505,对每行执行 初始化。将步骤S505之后的处理重复进行该页的行数。在步骤S505 中,在地址(addr)中设定行开始地址(line_start_addr)。在状态 (st)中设定行开始位置状态(line_start_state),并且在表地址 (table_addr)中设定表的基础地址(RegTableStartAddr)。
接着,处理前进到步骤S506,由总线接口503′根据表地址从表 中读出弯曲信息。然后,处理前进到步骤S507,根据所读出的弯曲信 息设定数据长度(length)和表示在边界部分切换到上面行还是下面 行的信息(UpDown[i])。
接着,处理前进到步骤S508,根据状态(line_start_state)确定 地址(addr)是否在有效区域内。在此,如果地址在有效区域内,则 处理前进到步骤S509,向总线接口503′发出读出请求。另一方面,如 果地址在有效区域外,则处理前进到步骤S510,将有效区域外的等于 数据长度(length)的数据量(RegFillData,即空数据或黑数据)传 送到下游的图像处理块。在执行了步骤S509或S510之后,处理前进 到步骤S511,更新当前地址(addr)。在此,将数据长度(length) 加到地址(addr)上,并将“8”加到表地址(table_addr)上。处理前 进到步骤S512,确定是否结束了一行的处理。如果此时还没有结束一 行的处理,则处理前进到步骤S513,在返回到步骤S506之前更新状 态(st)、地址(addr)和表示切换到上面行还是下面行的信息 (UpDown)。如果在S512中确定已经结束了一行的处理,则处理前 进到步骤S514。
图17是详细说明在图16的步骤S513中更新状态(st)和地址 (addr)的流程图。
首先,在步骤S512中,地址产生器502′检查表示切换到上面行 还是下面行的信息(UpDown)。在此,如果弯曲信息表示上面行, 则处理前进到步骤S522,从地址(addr)中减去相邻行地址的偏移 (RegLineOffset)。另一方面,如果弯曲信息表示下面行,则处理前 进到步骤S528,将偏移(RegLineOffset)加到地址(addr)上。
在切换到上面行的情况下,处理从步骤S522前进到步骤S523, 确定状态(st)表示地址在有效区域内、有效区域上方、还是有效区 域下方。如果状态表示地址在有效区域上方,则由于上面的行也会在 有效区域外,因此结束处理。如果状态表示地址在有效区域内,则处 理前进到步骤S524,将有效图像区域的基础地址(RegLowerAddr) 与上面行的更新后的地址(addr)进行比较。如果有效图像区域的基 础地址(RegLowerAddr)大于更新后的地址(addr),则由于上面 行的更新后的地址在有效区域外,因此处理前进到步骤S525,并将表 示地址在有效区域外的值设定在状态(st)中。另一方面,在步骤S524 中,如果基础地址(RegLowerAddr)小于或等于更新后的地址(addr), 则由于上面行的更新后的地址仍在有效区域内,因此不改变状态(st) 而结束处理。
如果在步骤S523中确定状态(st)表示地址在有效区域下方, 则处理前进到步骤S526,将紧接有效图像区域的底边之后的地址 (RegUpperAddr)与更新后的地址(addr)进行比较。如果紧接底 边之后的地址(RegUpperAddr)大于或等于更新后的地址(addr), 则由于上面的行在有效区域内,因此处理前进到步骤S527,并将状态 (st)设定为表示地址在有效区域内的值。另一方面,如果紧接底边 之后的地址(RegUpperAddr)小于地址(addr),则由于这下面的 行仍在有效区域下方,因此不改变状态(st)而结束处理。
另一方面,在切换到下面行的情况下,处理从步骤S521前进到 步骤S528、S529,在步骤S529中确定状态(st)表示地址在有效区 域内、有效区域上方、还是有效区域下方。如果状态(st)表示地址 在有效区域下方,则由于这下面的行会无条件地在有效区域外,因此 不改变状态(st)而结束处理。另一方面,如果状态(st)表示地址在 有效区域上方,则处理从步骤S529前进到步骤S532,将有效图像区 域的基础地址(RegLowerAddr)与下面行的更新后的地址(addr) 进行比较。如果基础地址(RegLoweFAddr)大于更新后的地址(addr), 则由于下面行的更新后的地址在有效区域外,因此不改变状态(st) 而结束处理。如果在步骤S532中确定基础地址(RegLowerAddr)小 于或等于地址(addr),则处理前进到步骤S533,将表示地址在有效 区域内的值设定在状态(st)中。如果在步骤S529中确定状态(st) 表示地址在有效区域内,则处理前进到步骤S530,将紧接底边之后的 地址(RegUpperAddr)与更新后的地址(addr)进行比较。如果紧 接底边之后的地址(RegUpperAddr)大于或等于更新后的地址 (addr),则不改变状态(st)而结束处理。另一方面,如果紧接底 边之后的地址(RegUpperAddr)小于更新后的地址(addr),则将 表示地址在有效区域下方的值设定在状态(st)中。在更新了状态(st) 后,处理返回到图16的步骤S506。
重新返回图16,在步骤S514中,更新行开始位置状态 (line_start_state)和行开始地址(line_start_addr),作为移动到下 一行处理的处理。然后,处理前进到步骤S515,将“1”加到该页的已 处理行数line_cnt上。然后,在步骤S516中,确定是否结束了一页的 处理。在此,如果已经结束了一页的所有处理,则结束处理,否则, 处理返回步骤S505并执行上述处理。
除了第一实施例的效果外,根据上述第五实施例,DMA控制器 读出图像数据以便消除被设为图像有效区域内的区域的扫描行弯曲, 从而可以修正扫描行弯曲。在有效区域外,可以输出特定数据(例如 空数据或黑数据等)。从而,即使使用在打印机引擎不具有屏蔽功能 等时在扫描行中产生弯曲的小的打印单元,也可以形成高质量的图像。
第六实施例
以下将参照图18和19来说明本发明第六实施例的DMA控制器 305的操作。注意,由于该第六实施例的图像处理装置的硬件结构与 上述第三实施例相似,因此省略其说明。
图18描绘出说明本发明第六实施例的DMA控制器305中的利 用存储器中的地址指定有效图像区域的方法的图。
存储弯曲信息的表的基础地址用RegTableStartAddr表示,存储 图像数据的存储器的基础地址用RegStartAddr表示。表示光束的开 始位置的索引被设定为RegStartLineIndex(以上下两行的弯曲为例, 在第六实施例中被设定为“-2”,“0”对应于有效区域的第一行)。而且, 可以将一页的扫描行数设定为RegBeamLines,将行之间的地址偏移 设定为RegLineOffset,并将打印有效区域外的数据设定为 RegFillData。
图19是说明本发明第六实施例的DMA控制器305中的地址产 生器502′的操作的流程图。
首先,在步骤S601中,对该处理执行初始化。在此,存储图像 数据的存储器中的基础地址(RegStartAddr)被设定在行开始地址 (line_start_addr)中。表示一页的开始位置的索引 (RegStartLineIndex)被设定在开始行索引(start_line_index)中, 并将“0”代入该页的已处理行数(line_cnt)。接着,处理前进到步骤 S602,对每行执行初始化。在此,将行开始地址(line_start_addr) 设定在地址(addr)中,将开始行索引(start_line_index)设定在行 数(line_index)中,并将存储了弯曲信息的表的基础地址 (RegTableStartAddr)设定在表地址(table_addr)中。
接着,处理前进到步骤S603,向总线接口503′发出读出表数据 的请求。接着,处理前进到步骤S604,根据在步骤S603中读出的表 数据设定数据长度(length)和表示切换到上面行还是下面行的信息 (up_down_info)。接着,处理前进到步骤S605,检查行数 (line_index)。这里,如果当前行的行数是0到N(打印有效区域的 行数),则由于当前行在打印有效区域内,则处理前进到步骤S606, 并向总线接口503′发出读出图像数据的请求。另一方面,如果在步骤 S605中确定当前行在打印有效区域外,则处理前进到步骤S607,将 等于数据长度(length)的数据量(RegFillData)传送到下游的图像 处理块。这样,如果当前行在有效区域外,则输出特定数据 (RegFillData),因此不需要下游的屏蔽处理等。
在执行了步骤S606或S607之后,处理前进到步骤S608,将数 据长度(length)加到地址(addr)上,并将“8”加到表地址(table_addr) 上。然后在步骤S609中,确定表示切换到上面行还是下面行的信息 (up_down_info)。在此,当切换到下面行时,处理前进到步骤S610, 从行数(line_index)中减去“1”。如果在步骤S611中确定相减结果大 于等于“0”,则处理前进到步骤S612,在前进到步骤S603之前从地址 (addr)中减去行之间的地址偏移(RegLineOffset)。如果在步骤 S611中确定行数(line_index)小于“0”,则处理返回步骤S603。
另一方面,如果在步骤S609中确定切换到上面行,则处理前进 到步骤S613,将“1”加到行数(line_index)上。然后,处理前进到步 骤S614,如果相加结果小于等于打印有效区域的行数N,则由于当前 行在有效区域内,因此处理前进到步骤S615,在前进到步骤S603之 前将行之间的地址偏移(RegLineOffset)加到地址(addr)上。如果 在步骤S614中确定行数(line_index)大于N,则由于当前行在有效 区域外,因此处理返回步骤S603。如果在步骤S609中确定不向上面 行或下面行切换,则处理前进到步骤S616,确定图像数据的读出开始 行索引(start_line_index)是否在有效区域内,即start_line_index是 否在0和总行数N之间,0和N也包括在内。如果是,则处理前进到 步骤S617,在前进到步骤S618之前,将行之间的地址偏移 (RegLineOffset)加到每行的行开始地址(line_start_addr)上。如 果在步骤S616中确定当前行在有效区域外,则处理前进到步骤S618, 将“1”加到图像数据的读出开始行索引(start_line_index)和已处理行 数(line_cnt)上。然后,处理前进到步骤S619,根据已处理行数 (line_cnt)是否大于一页的行数(RegBeamLines),确定是否结束 了一页的处理。如果确定没有结束一页的处理,则处理返回步骤S602, 如果确定一页的处理已经结束,则结束该处理。
除了第一实施例的效果外,根据上述第六实施例,DMA控制器 读出图像数据以便修正有效区域内的扫描行弯曲,并且在有效区域外 可以产生特定数据。从而,即使使用在打印机引擎不具有屏蔽功能等 时在扫描行中产生弯曲的小的打印单元,也可以获得高质量的输出。
第七实施例
以下将参照图20、21、22A、22B、23A~23C、24和25来说明 本发明第七实施例的DMA控制器305a的操作。
图20是表示本发明第七实施例的打印机控制器103a的详细结构 的框图。与上述图2的框图共同的部分用相同的附图标记表示,并省 略其说明。
图21是表示本发明第七实施例的打印机控制器103a中的DMA 控制器305a的详细结构的框图。与上述图3的框图共同的部分用相同 的附图标记表示,并省略其说明。注意,该DMA控制器305a与图2 中的DMA控制器305的区别仅在于,地址产生器502a还指示环形缓 冲器计数器320的计数值的递增和递减。
关于图20的打印机控制器103a,将DMA控制器321和322、 图像处理器323和环形缓冲器计数器320添加到图2的打印机控制器 103中。这里,DMA控制器322将存储在图像存储器304中的位图数 据读出到图像处理器323。DMA控制器321将图像处理器323处理后 的图像数据写入图像存储器304。由图像处理器323进行的处理具体 包括旋转处理和变倍处理。根据来自CPU 308的指示来执行对DMA 控制器321和322的这些控制。另外,将环形缓冲器计数器320连接 在DMA控制器321与DMA控制器305a之间。通过由DMA控制器 305a和321控制和参照环形缓冲器计数器320的状态,可以利用环形 缓冲器来进行向图像存储器304的数据传送和从图像存储器304的数 据传送。环形缓冲器计数器320在接收到来自向环形缓冲器写入数据 的DMA控制器321的递增指示时,使内部计数器(未示出)递增。 同样,环形缓冲器计数器320在接收到来自从环形缓冲器读出数据的 DMA控制器305a的递减指示时,使内部计数器递减。通过由DMA 控制器305a和321根据环形缓冲器计数器320的计数值进行操作,可 以使用环形缓冲器向图像存储器304发送小于一页的图像数据,并且 可以在不读出图像存储器304的没有图像数据的区域的情况下,从 DMA控制器321向DMA控制器305a传送图像数据。
从图像存储器304经由环形缓冲器读出的位图数据由混合处理器 306处理,并经由引擎接口307作为视频信号传送到打印单元107。注 意,尽管说明的是使用环形缓冲器来进行第七实施例的DMA控制器 305a与DMA控制器321之间的数据传送的情况下的结构,但也可以 使用环形缓冲器与CPU 308之间进行数据传送。
图22A描绘出说明本发明第七实施例的DMA控制器305a中的 指定扫描行弯曲的方法的图。
在图22A中,n行表示作为图像形成的最初对象的扫描行。这里, 一个扫描行(其长度为RegLineLen)被分割成多个段以与扫描行弯曲 相匹配。这里,将段长度设定为SegLen[i]。变量i对应于扫描行中的 段的顺序。表示扫描行弯曲向上还是向下的UpDown[i]被设定在行切 换位置处。同样,变量i对应于扫描行中的段的顺序,UpDown[i]=0 表示向上切换,UpDown[i]=1表示向下切换。
图22B描绘出存储了到行切换位置为止的(段)长度SegLen[i] 和表示向上面行切换还是向下面行切换以与扫描行弯曲相匹配的 UpDown[i]的表。该表被存储在图像存储器304或RAM 310中。
该表的基础地址(RegTableStartAddr)被设定在DMA控制器 305a的寄存器单元501中。这里,由于UpDown[i]可以取上或下的两 个值,因此在切换到上面的行时分配“0”,在切换到下面的行时分配 “1”。
DMA控制器305a的寄存器单元501还包括位图数据的行长度 (RegLineLen)和用于在CPU 308设定了上述寄存器的值后开始 DMA操作的开始寄存器(未示出)。
图23A~23C描绘出说明本发明第七实施例的DMA控制器305a 中指定环形缓冲器区域的方法的图。
图23A描绘出M行环形缓冲器。
存储在环形缓冲器中的位图数据中的相邻行地址的偏移 (RegLineOffset)被设定在寄存器单元501中。并且设定了环形缓冲 器区域的下限(RegRingBufferLowerAddr)和上限 (RegRingBufferUpperAddr)。在图像存储器304中确保的环形缓冲 器区域的基础地址(RegStartAddr)以及环形缓冲器区域的行数 (RegLines)被设定在寄存器单元501中。
图23B描绘出扫描行弯曲的一个例子。
在此,指定用于从读出行的开始沿向上方向进行切换的最大行数 (RegUpMax)和用于从读出行的开始沿向下方向进行切换的最大行 数(RegDownMax)。这些值被设定在寄存器单元501中。在图23B 的例子中,RegUpMax=2,RegDownMax=3。
图23C描绘出说明在图23B所示的扫描行弯曲的情况下判断扫 描行是否在打印有效区域内的图。
这里,将表示环形缓冲器的基础地址处的给定行的读出开始位置 的RegStartLineIndex设定在寄存器单元501中。另外还设定将要发 送到混合处理器306的行的行数(RegBeamLines)和当输出打印有效 区域外的数据时使用的伪数据(RegFillData)。在图23B中,由于 RegUpMax为“2”、RegDownMax为“3”,因此读出开始行 (RegStartLineIndex)是从打印有效区域的第一行向下的第三行。读 出结束行是从打印有效区域的最后行向上的第二行。
图24和25是说明第七实施例的DMA控制器305a中的地址产 生器502a的操作的流程图。
该处理与DMA控制器321将图像处理器323处理后的位图数据 存储到图像存储器304的环形缓冲器、以及使环形缓冲器计数器320 递增并行地进行。
首先,在步骤S701中,当通过来自CPU 308的指令开始了DMA 操作时,每行的开始地址(line_start_addr)被初始化为环形缓冲器 区域的基础地址(RegStartAddr)。已发送到混合处理器306的行的 已处理行数(line_cnt)被初始化为“0”,图像数据的读出开始行 (start_line_index)被初始化为读出开始行(RegStartLineIndex)(在 图23B的例子中为向下第3行)。接着,处理前进到步骤S702,对每 行执行初始化。这里,将段开始地址(seg_addr)初始化为行开始地 址(line_start_addr)。行的已处理数据量(line_data_cnt)被初始化 为“0”,当前行位置(line_index)被初始化为图像数据的读出开始行 (start_line_index)。要参照段的长度(SegLen[i])和表示行切换信 息(UpDown[i])的表中的地址的table_addr被初始化为表的基础地 址(RegTableStartAddr)。
接着,处理前进到步骤S703,地址产生器502a确定图像数据的 读出开始行(start_line_index)相对于图23C所示的打印有效区域在 哪里。如果在步骤S703中确定读出开始行(start_line_index)在有效 区域上方,例如在图23C中的-3行到2行之间,则处理前进到步骤 S704,地址产生器502a等待将图23C中的-3行到2行的数据存储在 环形缓冲器中。具体地说,将环形缓冲器计数器(RBC)的值与通过 使BH(=RegUpMax+RegDownMax+1)+1(在第七实施例中BH =6)与(start_line_index-1)相加而得到的值进行比较。当这样将-3 行到2行的数据存储在环形缓冲器中时,处理前进到步骤S705,在前 进到步骤S711之前,执行一行的处理。这一行的处理将在后面参照图 25进行说明。在此,步骤S704和S705的处理相当于图23C的区域A 所示的行的数据处理。
如果在步骤S703中确定图像数据的读出开始行 (start_line_index)在图23C所示的打印有效区域内,则处理前进到 步骤S706,在前进到步骤S707之前,地址产生器502a等待将考虑到 扫描行弯曲的图像数据的6(BH)行存储在环形缓冲器中。在步骤S707 中,在前进到步骤S708之前,执行一行的处理(后述),并在前进到 步骤S711之前,从环形缓冲器计数器(RBC)中减去“1”。这里,步 骤S706和S707的处理相当于如图23C的区域B所示的、其行数据全 部包含在打印有效区域中的行的数据处理。
如果在步骤S703中确定图像数据的读出开始行 (start_line_index)在图23C所示的打印有效区域下方,在N-3行到 N+1行之间,则处理前进到步骤S709,在前进到步骤S710之前,执 行一行的处理(后述)。在步骤S710中从环形缓冲器计数器(RBC) 中减去“1”后,处理前进到步骤S711。这里,步骤S709的处理相当于 图23C的区域C所示的行的数据处理。
以下参照图25的流程图说明步骤S705、S707和S709的一行处 理。
图25是说明第七实施例的一行处理的流程图。
在步骤S801中,根据表地址得到(start_line_index所示的)行 的弯曲信息。接着,处理前进到步骤S802,将段长度(length)和行 的切换信息(up_down_info)设定在寄存器中。接着,处理前进到步 骤S803,确定当前行位置(line_index)是否在打印有效区域内。如 果在步骤S803中确定当前行位置(line_index)在打印有效区域内, 则处理前进到步骤S804,读出该行中的相关段的图像数据。如果在步 骤S803中确定当前行位置(line_index)不在打印有效区域内,则处 理前进到步骤S805,读出长度等于该行中的相关段的伪数据 (RegFillData)。在这样执行了步骤S804或S805之后,处理前进到 步骤S806,更新图像数据的读出地址(addr)和表地址(table_addr)。 这里,将读出地址(addr)更新为通过将已处理段长度加到读出地址 上而得到的地址,并将“8”加到表地址上,以得到下一段的弯曲信息。
接着,处理前进到步骤S807,地址产生器502a检查表示是向上 面行切换还是向下面行切换的信息(up_down_info)。这里,如果切 换信息为“0”,即如果没有向上或向下的切换,则由于在读出行数据之 前不必切换行,因此结束处理。即使在行中有弯曲,由于切换信息 (up_down_info)将为“0”,因此在最后段结束处理。
另一方面,如果在步骤S807中确定有向上的弯曲,则处理前进 到步骤S808,从当前行位置(line_index)减去“1”,然后在步骤S809 中,地址产生器502a检查相减结果是否为负值。如果不是负值,则处 理前进到步骤S810,从读出地址(addr)中减去环形缓冲器中的一行 的地址偏移(RegLineOffset),以将读出地址更新为前一行的地址。 然后在步骤S811中,确定更新后的地址是否小于或等于环形缓冲器的 基础地址(RegRingBufferLowerAddr),即,该地址是否在环形缓冲 器中。如果地址在环形缓冲器中,则处理返回步骤S801,执行上述处 理,否则,处理前进到步骤S812,将环形缓冲器的存储器区域 (RegRingBufferUpperAddr-RegRingBufferLowerAddr)加到读出 地址(addr)上,以将读出地址更新为环形缓冲器中的地址。然后处 理返回步骤S801。
另一方面,如果在步骤S807中确定扫描行向下弯曲,则处理前 进到步骤S813,将“1”加到当前行位置(line_index)上,然后在步骤 S814中,地址产生器502a确定相加结果是否超过环形缓冲器的行数 N。如果相加结果没有超过环形缓冲器的行数N,则处理前进到步骤 S815,将环形缓冲器中的一行的地址偏移(RegLineOffset)加到读出 地址(addr)上,以将读出地址更新为下一行的地址。在步骤S816 中,确定更新后的地址是否小于或等于环形缓冲器的最后地址 (RegRingBufferUpperAddr),即,该地址是否在环形缓冲器中。如 果地址在环形缓冲器中,则处理返回步骤S801,执行上述处理,否则, 处理前进到步骤S817,从读出地址(addr)中减去环形缓冲器的存储 器区域(RegRingBufferUpperAddr-RegRingBufferLowerAddr)。 从而将读出地址更新为环形缓冲器中的地址。然后处理返回步骤 S801。注意,如果在步骤S809或S814中计算结果为负或大于N,则 处理返回801。
这样,利用该一行处理,可以按照存储在环形缓冲器中的打印有 效区域中包含的行的段来读出图像数据。针对不在打印有效区域内的 段读出伪数据(RegFillData)。
接着返回图24,在执行了步骤S705、S708和710之一后,处理 前进到步骤S711,确定读出开始行(start_line_index)是否在打印有 效区域内。如果读出行在打印有效区域内,则处理前进到步骤S712, 将环形缓冲器中的一行的地址偏移(RegLineOffset)加到addr上, 以将读出开始位置更新为下一行的地址。然后,在步骤S713中,确定 更新后的地址是否小于或等于环形缓冲器的最后地址 (RegRingBufferUpperAddr),即,更新后的地址是否在环形缓冲器 内。这里,如果更新后的地址在环形缓冲器内,则处理前进到步骤 S715,否则,在步骤S714中将地址初始化为环形缓冲器的基础地址, 并且处理前进到步骤S715。
如果在步骤S711中确定读出开始行(start_line_index)不在打 印有效区域内,则处理前进到步骤S715。在步骤S715中,将“1”加到 读出开始行(start_line_index)和已处理行数(line_cnt)上。然后在 步骤S716中,地址产生器502a检查已处理行数是否等于一页的行数 (RegBeamLine),即,是否已经处理了一页的图像数据。如果已经 处理了一页的图像数据,则结束DMA处理,否则处理前进到步骤 S702,对下一扫描行执行处理。这里,当DMA操作结束时,DMA控 制器305a向CPU 308发送中断(未示出)。CPU 308通过检测该中 断来检测出DMA传送已经结束。
根据上述第七实施例,DMA控制器可以使用环形缓冲器一边在 行间改变一边读出弯曲的图像数据,从而修正扫描行弯曲。这样,通 过使用具有小于一页图像数据的容量的缓冲器来修正激光光束的弯 曲。
第八实施例
以下将参照图26和27来说明本发明第八实施例的DMA控制器 305的操作。
第八实施例的特征是将由打印单元107打印到记录介质上的图像 数据在记录介质上的任意定位。
图26描绘出图像数据被记录在记录介质上的特定记录位置上的 状态的例子。图27描绘出图像数据被记录在记录介质上的、已经从特 定记录位置移开的位置上的状态的例子。
如上所述,导致配准误差的扫描行弯曲根据扫描行在主扫描方 向上的位置而不同。这样,从图26中的记录位置沿主扫描方向移动规 定数量的移动象素(shift x)会要求取决于被移动的位置的调整。注 意,假设移动象素数(shift x)由CPU 308针对DMA控制器305中 的寄存器单元501设定。然后,CPU 308根据设定在寄存器单元501 中的shift x,如下在重写RegSegLen的同时计算RegStartAddr。
(i)计算满足下式的值Y,并确定为读出开始段Y。
shift x≤∑RegSegLen[i](i=1,2,...Y)
(ii)开始段的段长度由于移动而改变,因此开始段的段长度 (RegSegLen[Z])根据下式被重写。
RegSegLen[Z]=∑RegSegLen[i](i=1,2,...Y)-shift x
(iii)开始段由于移动而改变,因此根据下式计算开始行(Line)。
Line=∑RegUpDown[i-1](i=1,2,...Y)
根据下式从行移动量和图像数据中相邻行的地址偏移 (RegLineOffset)来计算开始地址(RegStartAddr)。
RegStartAddr=Line*RegLineOffset
然后,通过根据上述计算的值执行第一实施例中的图7A和7B 的操作,可以把将要由打印单元107打印到记录介质上的图像数据在 记录介质上任意定位。
注意,可以通过直接或间接地将实现上述实施例的功能的软件程 序提供给系统或装置,并且在系统或装置中使用计算机以读出和执行 所提供的程序代码,来实现本发明。在这种情况下,只要系统或装置 具有程序的功能,则实施方式不必为程序。
因此,为了通过计算机实现本发明的功能而安装到计算机上的实 际的程序代码也实现本发明。换言之,本发明的权利要求还覆盖用于 实现本发明的功能的实际的计算机程序。在这种情况下,只要系统或 装置具有程序的功能,则程序可以以任何形式来执行,例如目标码、 由解释器执行的程序或提供给操作系统的脚本数据。
可以用于提供程序的记录介质的例子包括软盘(floppy:注册商 标)、硬盘、光盘、磁光盘、MO、CD-ROM、CD-R、CD-RW、磁 带、非易失性存储卡、ROM和DVD(DVD-ROM、DVD-R)。
替代地,也可以通过使用客户机的浏览器连接到互联网上的站点 并将程序从站点下载到硬盘等记录介质来提供程序。这种情况下,可 以下载本发明的实际程序或包括自动安装功能的压缩文件。而且,可 以通过将构成程序的程序代码分割成多个文件并从不同的站点下载各 个文件来实现本发明的程序。换言之,允许多个用户利用计算机下载 用于执行本发明的功能的程序文件的万维网(WWW)服务器也被本 发明的权利要求覆盖。
本发明的程序还可以以存储在CD-ROM等存储介质上的加密形 式来分发给用户。这种情况下,满足规定要求的用户被允许经由互联 网从站点下载解密密钥信息,并且将利用该密钥信息解密后的程序以 可执行的形式安装在计算机上。
通过由计算机执行所读出的程序,各实施例的功能可以以不同于 上述的形式来实现。例如,在计算机上运行的操作系统等可以根据程 序中的指令执行实际处理的一部分或全部,并且通过该处理实现上述 实施例的功能。
而且,还可以将从记录介质读出的程序写入插入到计算机中的功 能扩展板或连接到计算机上的功能扩展单元中设置的存储器中。这种 情况下,设置在功能扩展板或功能扩展单元中的CPU等根据程序中的 指令执行实际处理的一部分或全部,并且通过该处理实现上述实施例 的功能。
尽管参照示例性实施例说明了本发明,但可以理解,本发明不限 于所公开的示例性实施例。下述权利要求的范围应当进行最宽泛的解 释,以包括所有这样的修改和等同结构及功能。