(57)【要約】【課題】  本発明は、記憶ヘッドの位置ずれ補正用の記憶部からの転送効率若しくは転送速度を向上できる印刷装置を提供する。【解決手段】  本発明の印刷装置は、複数の発光素子を持つ発光素子チップと、複数の発光素子チップを並べた記録ヘッドと、記録ヘッドの取り付け誤差と発光素子チップの実装ばらつきによる印字位置ずれ量を取得して補正情報を生成する補正データ取得手段とを有する。また、補正データ取得手段からの補正情報を元に、データ補正単位の２以上の整数倍の単位で位置ずれを補正する第１の補正手段と、補正データ取得手段からの補正情報を元に、第１の補正手段で補正された画像データが有する位置ずれをデータ補正単位で補正する第２の補正手段とを有する。これにより、第１の補正手段が利用する記憶部からの転送効率若しくは転送速度を向上できる。【選択図】      図１
2014008611.tif 000002
【特許請求の範囲】
【請求項１】
複数の発光素子を持つ発光素子チップと、
複数の前記発光素子チップを並べた記録ヘッドと、
前記記録ヘッドの取り付け誤差と前記発光素子チップの実装ばらつきによる印字位置ずれ量を取得して補正情報を生成する補正データ取得手段と、
前記補正データ取得手段からの補正情報を元に、データ補正単位の２以上の整数倍の単位で位置ずれを補正する第１の補正手段と、
前記補正データ取得手段からの補正情報を元に、前記第１の補正手段で補正された画像データが有する位置ずれを前記データ補正単位で補正する第２の補正手段と
を有すること特徴とする印刷装置。
【請求項２】
前記第１の補正手段は、主記憶部に保持された画像データを前記データ補正単位の整数倍の単位で読み出すことを通じて位置ずれを補正するものであり、
前記第２の補正手段は、前記補正データ取得手段からの補正情報を元に、前記第１の補正手段が読み出した前記画像データを、前記主記憶部とは独立した記憶部に書き込むと共に、前記記憶部に書き込まれた前記画像データを前記データ補正単位で読み出すことを通じて位置ずれを補正するものである
ことを特徴とする請求項１に記載の印刷装置。
【請求項３】
前記主記憶部を構成するメモリがＤＲＡＭであって、前記データ補正単位の２以上の整数倍が前記ＤＲＡＭのバースト長と等しいことを特徴とする請求項１又は２に記載の印刷装置。
【請求項４】
複数の発光素子を持つ発光素子チップと、複数の前記発光素子チップを並べた記録ヘッドとを有する印刷装置における、前記記録ヘッドの取り付け誤差と前記発光素子チップの実装ばらつきによる印字位置ずれを補正するヘッド位置ずれ補正方法において、
前記印刷装置が、補正データ取得手段、第１の補正手段及び第２の補正手段を有し、
前記補正データ取得手段は、前記記録ヘッドの取り付け誤差と前記発光素子チップの実装ばらつきによる印字位置ずれ量を取得して補正情報を生成し、
前記第１の補正手段は、前記補正データ取得手段からの補正情報を元に、データ補正単位の２以上の整数倍の単位で位置ずれを補正し
前記第２の補正手段は、前記補正データ取得手段からの補正情報を元に、前記第１の補正手段で補正された画像データが有する位置ずれを前記データ補正単位で補正する
こと特徴とするヘッド位置ずれ補正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷装置及びヘッド位置ずれ補正方法に関し、例えば、ＬＥＤアレイヘッドを利用した印刷部を有するプリンタ、複合機、ＦＡＸなどに適用し得るものである。
【背景技術】
【０００２】
従来、カラー電子写真方式のプリンタにおいては、各色間の印字位置ズレを補正するために、ラスタバッファからの画像データを補正単位で斜め読みしながら、記録ヘッドに供給していた（特許文献１参照）。ラスタバッファを、ラスタバッファとしてのみ利用するメモリ素子で構成すると、コストアップになるため、近年では、プリンタのＣＰＵや画像処理回路などがアクセスできる共有メモリである主記憶部にラスタバッファを確保するようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３７０４０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来では、補正を行う単位でラスタバッファからの読み出しを行っていたため、ラスタバッファからの転送効率が悪く、システム全体の処理能力を低下させる問題があった。
【０００５】
一方、システム全体の処理能力を低下させないためには、ラスタバッファとシステムの主記憶部を別個に持てば良いが、上述したように印刷装置を高価なものとしてしまう。
【０００６】
本発明は、以上の点に鑑みてなされたものであり、記憶ヘッドの位置ずれ補正用の記憶部からの転送効率若しくは転送速度を向上することができる印刷装置及びヘッド位置ずれ補正方法を提供しようとしたものである。
【課題を解決するための手段】
【０００７】
第１の本発明の印刷装置は、（１）複数の発光素子を持つ発光素子チップと、（２）複数の前記発光素子チップを並べた記録ヘッドと、（３）前記記録ヘッドの取り付け誤差と前記発光素子チップの実装ばらつきによる印字位置ずれ量を取得して補正情報を生成する補正データ取得手段と、（４）前記補正データ取得手段からの補正情報を元に、データ補正単位の２以上の整数倍の単位で位置ずれを補正する第１の補正手段と、（５）前記補正データ取得手段からの補正情報を元に、前記第１の補正手段で補正された画像データが有する位置ずれを前記データ補正単位で補正する第２の補正手段とを有すること特徴とする。
【０００８】
第２の本発明のヘッド位置ずれ補正方法は、複数の発光素子を持つ発光素子チップと、複数の前記発光素子チップを並べた記録ヘッドとを有する印刷装置における、前記記録ヘッドの取り付け誤差と前記発光素子チップの実装ばらつきによる印字位置ずれを補正する方法であって、前記印刷装置が補正データ取得手段、第１の補正手段及び第２の補正手段を有し、（１）前記補正データ取得手段は、前記記録ヘッドの取り付け誤差と前記発光素子チップの実装ばらつきによる印字位置ずれ量を取得して補正情報を生成し、（２）前記第１の補正手段は、前記補正データ取得手段からの補正情報を元に、データ補正単位の２以上の整数倍の単位で位置ずれを補正し（３）前記第２の補正手段は、前記補正データ取得手段からの補正情報を元に、前記第１の補正手段で補正された画像データが有する位置ずれを前記データ補正単位で補正すること特徴とする。
【発明の効果】
【０００９】
本発明によれば、データ補正単位の整数倍単位で補正を行う第１の補正手段と、データ補正単位で補正を行う第２の補正手段を適用することにより、第１の補正手段が利用する記憶部からの転送効率若しくは転送速度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係るプリンタの電気的な処理構成（印刷制御構成）を示すブロック図である。
【図２】第１の実施形態における、主記憶部に確立されるラスタバッファの構成例を示す説明図である。
【図３】第１の実施形態における補正データ書き込み手段が実行する補正データの書込み処理を示すフローチャートである。
【図４】第１の実施形態における、各種データから補正データを形成する際の流れを示す説明図である。
【図５】第１の実施形態における、第１補正ＲＡＭ、第２補正ＲＤ＿ＲＡＭ、第２補正ＷＲ＿ＲＡＭに格納される補正値の一例を示す説明図である。
【図６】第１の実施形態における印刷制御部の動作タイミングを示す説明図である。
【図７】第１の実施形態における第１補正制御部の動作を示すフローチャートである。
【図８】第１の実施形態における第２補正制御部がローカルメモリに画像データを書き込む動作を示すフローチャートである。
【図９】第１の実施形態における第２補正制御部によるローカルメモリからの画像データの読み出し動作を示すフローチャートである。
【図１０】第１の実施形態における、ラスタバッファ、ローカルメモリ、ヘッド出力データ（印刷画像）の状態遷移をＬＳＹＮＣ信号毎に示す説明図（その１）である。
【図１１】第１の実施形態における、ラスタバッファ、ローカルメモリ、ヘッド出力データ（印刷画像）の状態遷移をＬＳＹＮＣ信号毎に示す説明図（その２）である。
【図１２】第１の実施形態における、ラスタバッファ、ローカルメモリ、ヘッド出力データ（印刷画像）の状態遷移をＬＳＹＮＣ信号毎に示す説明図（その３）である。
【図１３】第１の実施形態における、ラスタバッファ、ローカルメモリ、ヘッド出力データ（印刷画像）の状態遷移をＬＳＹＮＣ信号毎に示す説明図（その４）である。
【図１４】第１の実施形態の効果を説明するためにＤＲＡＭのバースト長と転送効率との関係を示したグラフである。
【図１５】第１の実施形態の効果を説明するためにＤＲＡＭのバースト長と転送速度との関係を示したグラフである。
【図１６】第２の実施形態に係るプリンタの電気的な処理構成（印刷制御構成）を示すブロック図である。
【図１７】第２の実施形態における第２補正制御部によるローカルメモリからの画像データの読み出し動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
（Ａ）第１の実施形態
以下、本発明による印刷装置及びヘッド位置ずれ補正方法の第１の実施形態を、図面を参照しながら説明する。
【００１２】
第１の実施形態は、以下の点に鑑みて創作されたものである。印刷装置（以下、各実施形態ではプリンタとする）のＣＰＵが直接アクセスできる主記憶部は、一般的には、ＤＲＡＭなどの高速、大容量の汎用メモリで構成される。ＤＲＡＭは常に高速化されているが、最高の転送速度を引き出すためには１度のアクセスのデータ長を長くする必要がある。プリンタにおけるコスト低減と高速性を両立するため、補正用のラスタバッファを主記憶部内に確保し、かつ、システム全体のパフォーマンスを落とさない補正方式が必須である。
【００１３】
（Ａ−１）第１の実施形態の構成
図１は、第１の実施形態に係るプリンタの電気的な処理構成（印刷制御構成）を示すブロック図である。
【００１４】
図１において、第１の実施形態に係るプリンタは、印刷制御部１、補正データ書き込み手段２、タイミング制御部３及び主記憶部４を有する。
【００１５】
なお、第１の実施形態に係るプリンタがカラープリンタの場合、プリンタは、印刷制御部１を４色分（イエロー（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）、ブラック（Ｂ））備えて、ドラムなどの各色用のトナー像形成機構部のタンデム構成に対応できるようになっているが、図１では、印刷制御部１については１色分だけ示している。また、トナー像形成機構部については公知であるため、図示を省略すると共にその説明も省略し、以下では、第１の実施形態の特徴に関連する制御構成を重点的に説明する。
【００１６】
印刷制御部１は、ＬＥＤヘッド１２、ＥＥＰＲＯＭ１３、ヘッド制御部１１、伸張部５、第１補正制御部６、第１補正ＲＡＭ７、第２補正制御部８、第２補正ＲＤ＿ＲＡＭ９、ローカルメモリ１０及び第２補正ＷＲ＿ＲＡＭ２７を有する。
【００１７】
ＬＥＤヘッド１２は、複数のＬＥＤアレイ（図示を省略）を、その長手方向に一列に配置して構成されたプリンタにおける記録ヘッドであり、例えば、図示しないドラムの外周面に対峙している。各ＬＥＤアレイは、発光素子であるＬＥＤを直線上に有する発光素子チップである。ＬＥＤヘッド１２は、例えば、１９２個のＬＥＤを有する１９２ドットのＬＥＤアレイが８０個一列に並んだものであり、一列全体のドット数は１５３６０ドット（各ドットをデータの１ビットに対応付けた場合にはデータ量の１９２０バイトが対応する）である。以下で具体的な数値で説明する場合には、このような具体例のＬＥＤヘッド１２が搭載されているとし説明する。
【００１８】
なお、印刷面における、ＬＥＤヘッド１２の長手方向に沿った方向を主走査方向、Ｘ方向、Ｘ座標と呼び、印刷面における、上記主走査方向に直交する方向を副走査方向、Ｙ方向、Ｙ座標と呼ぶこととする。座標系は、印刷面の左上を原点とし、右に行くに従ってＸ座標の値が大きくなり、下に行くに従ってＹ座標の値が大きくなるものである。
【００１９】
ＬＥＤヘッド１２には、ヘッド歪み・段差データを格納するためのＥＥＰＲＯＭ１３が内蔵されている。ヘッド歪み・段差データは、ＬＥＤヘッド１２の組立時に特定のドット単位に測定した位置情報であり、ＬＥＤヘッド１２の副走査方向の位置ずれ（ヘッド歪み、チップ段差（ＬＥＤアレイ間の段差））を示す値である。なお、これらの値は公知の手段により別途測定してＥＥＰＲＯＭ１３に書込むものである。ここでは、特定のドット単位として、９６ドット単位でヘッド歪み・段差データが書込まれているとする。この９６ドットは、一つのＬＥＤアレイの１９２ドット数を２分割した値であり、これをヘッド補正単位として、以下、説明する。すなわち、ＬＥＤヘッド１２についての副走査方向の補正データは、１６０（＝１５３６０／９６）個の位置補正値からなる。
【００２０】
なお、画素を意図した数値の単位をドットで表現し、データ（量）を意図した数値の単位をビット（やバイト）で表現している。但し、処理の流れにより、同じ数値を意図していながら単位の表現を変えていることもある。
【００２１】
ヘッド制御部１１は、印刷時には、補正された画像データを、この第１の実施形態のデータ補正単位である６４ビット単位で第２補正制御部８からパラレルに入力し、これをシリアル化してＬＥＤヘッド１２に送信する機能を有している。また、ヘッド制御部１１は、ＬＥＤヘッド１２の補正値取得時では、補正データ書き込み手段２からのポート切替え指令によって、ＥＥＰＲＯＭ１３からヘッド歪み・段差データを読出して、これを補正データ書き込み手段２に送信する機能を有している。
【００２２】
補正データ書き込み手段２（ＥＥＰＲＯＭ１３などと共に補正データ取得手段に該当する）は、詳細構成の図示は省略しているが、ＣＰＵ、回路、メモリ、プログラムなどで構成されている。補正データ書き込み手段２は、ＥＥＰＲＯＭ１３からのヘッド歪み・段差データと、ＬＥＤヘッド１２をプリンタに取り付けた状態で測定された傾きデータを合成して位置ずれデータを生成すると共に、この位置ずれデータをさらに加工して補正データを生成して第１補正ＲＡＭ７、第２補正ＲＤ＿ＲＡＭ９、第２補正ＷＲ＿ＲＡＭ２７に書込む機能を有している。ここで、補正データ書き込み手段２は、ヘッド補正単位が２のべき乗でない場合には、値の補間処理等を行って、２のｎ乗で、しかも、一つのＬＥＤアレイのドット数の約数で表されるデータ補正単位の補正データを生成する。上述したＬＥＤアレイのドット数が１９２ドット、ヘッド補正単位が９２ドットの例であれば、６４ドットであるデータ補正単位毎の補正データを生成する。
【００２３】
なお、補正データ書き込み手段２による、値の補間処理等を行ってデータ補正単位の補正データを生成する処理については、後述する図２を参照して後で詳細に説明する。また、第１の実施形態では、位置ずれ補正のためのライン数（Ｙ方向のライン数）の範囲は２５６ライン分としている。従って、それぞれの補正データの値は８ビットで表される。
【００２４】
第１補正ＲＡＭ７は、データ補正単位のＮ（Ｎは２以上の整数）倍である６４×Ｎドット毎の補正データを格納するためのメモリ（ＲＡＭ）である。ここでＮ＝４とすると、第１補正ＲＡＭ７には、２５６ドット単位の補正データ６０個（＝１５３６０ドット）がＸ方向について昇順で格納されている。第１補正ＲＡＭ７は、第１補正制御部６と補正データ書き込み手段２に接続されている。
【００２５】
第２補正ＲＤ＿ＲＡＭ９は、２５６ドット（＝データ補正単位のＮ倍）毎に分割された６０個のグループ内の６４ドット毎の相対位置を格納する２４０ワード×８ビットのメモリ（ＲＡＭ）であり、Ｘ方向について昇順で格納されている。「２４０ワード×８ビット」における２４０ワードは、６０個のグループがそれぞれ４分割されたことに対応しており、「２４０ワード×８ビット」における８ビットは、１つの補正データの表記ビット数である。第２補正ＲＤ＿ＲＡＭ９は、第２補正制御部８と補正データ書き込み手段２に接続されている。
【００２６】
第２補正ＷＲ＿ＲＡＭ２７は、２５６ドット毎に分割された６０個のグループ内の６４ドット毎の相対位置の最大値を格納する６０ワード×８ビットのメモリ（ＲＡＭ）であり、Ｘ方向について昇順で格納されている。「６０ワード×８ビット」における６０ワードは、６０個のグループに対応しており、「６０ワード×８ビット」における８ビットは、１つの補正データの表記ビット数である。第２補正ＷＲ＿ＲＡＭ２７は、第２補正制御部８と補正データ書き込み手段２に接続されている。
【００２７】
タイミング制御部３は、印刷時に、印刷起動タイミングとライン開始タイミングの制御を行うものであり、ＬＳＹＮＣ信号、伸張部ＶＳＹＮＣ信号、第１補正制御部ＶＳＹＮＣ信号、第２補正制御部ＶＳＹＮＣ信号を出力する。ここで、ＬＳＹＮＣ信号は、ライン開始タイミングを表すパルス信号であり、伸張部ＶＳＹＮＣ信号、第１補正制御部ＶＳＹＮＣ信号、第２補正制御部ＶＳＹＮＣ信号はそれぞれ、印刷開始を表すレベル信号である。ＬＳＹＮＣ信号は伸張部５、第１補正制御部６、第２補正制御部８及びヘッド制御部１１に与えられ、伸張部ＶＳＹＮＣ信号は伸張部５に与えられ、第１補正制御部ＶＳＹＮＣ信号は第１補正制御部６に与えられ、第２補正制御部ＶＳＹＮＣ信号は第２補正制御部８に与えられる。
【００２８】
主記憶部４は、図示しないＣＰＵ、図示しない画像処理回路、印刷制御部１などと接続され、これらの構成要素が直接アクセスできる共有メモリである。主記憶部４は、ＤＤＲ３  ＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ３  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＤＤＲ２  ＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ２  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）などの高速、大容量メモリと、メモリコントローラとからなる。この第１の実施形態の場合、画像データを圧縮した圧縮画像データを格納する圧縮画像データ格納領域４０と、斜め補正用データをバッファリングするラスタバッファ４１とが主記憶部４に確保される。
【００２９】
伸張部５は、タイミング制御部３から入力される印刷開始タイミング信号（伸張部ＶＳＹＮＣ信号）、ライン開始タイミング信号（ＬＳＹＮＣ信号）に同期して、圧縮画像データ格納領域４０から圧縮画像データ４０を読み出しながら伸張してラスタバッファ４１に書き込むためのものである。伸張部５は、主記憶部４から圧縮画像データを読み込む手段と、圧縮画像データを伸張する伸張手段と、主記憶部４のラスタバッファ４１に伸張画像データを書き込む手段からなる。
【００３０】
ラスタバッファ４１は、第１補正制御部６が２５６ドット単位の斜め補正を行うためのラインデータを複数ライン分だけ格納するバッファである。すなわち、ラスタバッファ４１は、ＬＥＤヘッド１２の副走査方向の種々の位置ずれ（ヘッド歪み、チップ段差（ＬＥＤアレイ間の段差）、ヘッド傾き）の和に対応するライン分の画像データを格納するものである。上述したように、位置ずれ補正のためのライン数は２５６ラインであり、ラスタバッファ４１は２５６ライン分のラインデータを格納する。ラスタバッファ４１は、最新のラインデータが与えられたときに、２５６ライン前の最古のラインデータに上書きするリングバッファとなっている。
【００３１】
図２は、第１の実施形態におけるラスタバッファ４１の構成例を示す説明図である。なお、説明を簡単にするために、図２は、ラスタバッファ４１のベースアドレスを０ｘ０として示している。また、図２は、アドレスを１６進表記で示している。
【００３２】
図２（ａ）に示すように、ＬＥＤヘッド１２の１ラインのドット数１９２０バイト（＝１５３６０ドット）を２Ｋバイト間隔（厳密に言えば２０４８バイト間隔）で配置している。例えば、１ライン目（ライン＃０）の０ｘ７８０〜０ｘ７ＦＦのアドレスは空きエリアとして使用せず、０ｘ８００を２ライン目（ライン＃１）の最初のＸ座標となるよう配置している。これは、ラスタバッファ４１の下位アドレスがＸ座標、上位アドレスがＹ座標に対応し易くするためである。図２（ｂ）に示すように、２５６ライン目（ライン＃２５５）に続く２５７ライン目（ライン＃２５６）は、１ライン目（ライン＃０）と同じアドレス空間の領域に書き込まれる。
【００３３】
第１補正制御部６は、タイミング制御部３から入力される第１補正制御部ＶＳＹＮＣ信号、ＬＳＹＮＣ信号に同期して、第１補正ＲＡＭ７からの補正データを元にラスタバッファ４１から画像データを斜め読みして第２補正制御部８に出力するものである。第１補正制御部６は、第１ＲＤ＿Ｘポインタ１４、第１ＲＤ＿Ｙポインタ１５、ベースアドレスレジスタ１６、第１加算器１９、第１ＲＤアドレス制御部２０、ページ開始ラインレジスタ１７、ページ終了ラインレジスタ１８及びデータ選択部２１を有する。なお、この明細書では、位置ずれを補正しながら読み出すことを「斜め読み」と表現している。
【００３４】
第１ＲＤ＿Ｘポインタ１４は、第１補正ＲＡＭ７における格納単位である２５６ドット（＝６４×Ｎドット＝６４×４ドット）の読み出し終了でポインタ値を１インクリメントし、１ラインの読み出しが終了すると初期化するポインタである。第１ＲＤ＿Ｘポインタ１４の値は、第１補正ＲＡＭ７へのアドレスとして与えられると共に、ラスタバッファ４１への読出し用下位アドレスとして第１ＲＤアドレス制御部２０に与えられるようになっている。
【００３５】
第１ＲＤ＿Ｙポインタ１５は１ラインを読出す度にポインタ値を１インクリメントし、最大補正ライン（上述した例では２５６ライン）を読み出すと初期化するポインタである。第１ＲＤ＿Ｙポインタ１５の値は、ＬＥＤヘッド１２における補正なしのボトムラインを示すものである。第１ＲＤ＿Ｙポインタ１５の値は第１加算器１９に与えられる。
【００３６】
第１加算器１９は、第１ＲＤ＿Ｙポインタ１５の値と、第１補正ＲＡＭ７からの値を加算してＹ座標のデータを生成し、ラスタバッファ４１への読出し用上位アドレスとして、第１ＲＤアドレス制御部２０及びデータ選択部２１に与えるものである。第１加算器１９の出力値は、第１補正ＲＡＭ７からの値を加算したものであるので、補正処理がなされた値である。
【００３７】
ベースアドレスレジスタ１６は、ラスタバッファ４１の主記憶部４におけるベースアドレスを保持するレジスタである。ラスタバッファ４１が図２に示す構成の場合であれば、ベースアドレスレジスタ１６に保持されるベースアドレスは「０ｘ０」となる。なお、ベースアドレスレジスタ１６に対する値のセットは、図示しないＣＰＵにより後述のように実行される。
【００３８】
第１ＲＤアドレス制御部２０は、第１ＲＤ＿Ｘポインタ１４のポインタ値と、第１加算器１９からの値と、ベースアドレスレジスタ１６の値から読み出しアドレスを生成して主記憶部４に出力するものである。
【００３９】
ページ開始ラインレジスタ１７は、伸張部５がラスタバッファ４１に書き込みを開始した位置（ライン）を記憶するレジスタであり、ページ終了ラインレジスタ１８は、伸張部５がラスタバッファ４１に書き込みを終了する位置（ライン）を記憶するレジスタである。なお、ページ開始ラインレジスタ１７及びページ終了ラインレジスタ１８に対する値のセットは、図示しないＣＰＵにより後述のように実行される。
【００４０】
データ選択部２１は、ページ開始ラインレジスタ１７の値、ページ終了ラインレジスタ１８の値、第１加算器１９の値により、０データ又はラスタバッファ４１からの読み出しデータを選択して第２補正制御部８に出力するものである。
【００４１】
ローカルメモリ１０は、主記憶部４に確保した最大補正量以上のラスタバッファ４１を使用して、データ補正単位のＮ（Ｎは自然数）倍単位で補正を行う第１段階の補正に続く、データ補正単位で補正を行う第２段階の補正で利用されるメモリである。ローカルメモリ１０は、主記憶部４とは別に設けられた最大補正量未満の容量のメモリである。
【００４２】
第２補正制御部８は、タイミング制御部３から入力される第２補正制御部ＶＳＹＮＣ、ＬＳＹＮＣ信号に同期して、第１補正制御部６から入力された画像データを、第２補正ＷＲ＿ＲＡＭ２７からの補正データに基づいて、ローカルメモリ１０に斜め書きし、第２補正ＲＤ＿ＲＡＭ９からの補正データを元に、ローカルメモリ１０から斜め読みした画像データをヘッド制御部１１に出力するためのものである。
【００４３】
第２補正制御部８は、第２ＲＤ＿Ｘポインタ２２、第２ＲＤ＿Ｙポインタ２３、第２ＲＤ加算器３０、第２ＲＤアドレス制御部３１、第２ＷＲ＿Ｘポインタ２５、第２ＷＲ＿Ｙポインタ２６、第２ＷＲ加算器２８及び第２ＷＲアドレス制御部２９を備えている。
【００４４】
第２ＲＤ＿Ｘポインタ２２は、データ補正単位（すなわち、上述した６４ドット単位）の画像データをローカルメモリ１０から読み出す毎に値を１インクリメントし、１ラインの読み出しが終了すると初期化するポインタである。第２ＲＤ＿Ｘポインタ２２の値は、第２補正ＲＤ＿ＲＡＭ９へのアドレスとして与えられると共に、ローカルメモリ１０への読出し用下位アドレスとして第２ＲＤアドレス制御部３１に与えられるようになっている。
【００４５】
第２ＲＤ＿Ｙポインタ２３は、１ラインを読出す度に値を１インクリメントし、ローカルメモリ１０の最終ラインからの読み出しが終了すると初期化するポインタである。
【００４６】
第２ＲＤ加算器３０は、第２ＲＤ＿Ｙポインタ２３の値と、第２補正ＲＤ＿ＲＡＭ９からの値を加算してＹ座標のデータを生成し、ローカルメモリ１０への読出し用上位アドレスとして第２ＲＤアドレス制御部３１に与えるものである。
【００４７】
第２ＲＤアドレス制御部３１は、第２ＲＤ＿Ｘポインタ２２の値と、第２ＲＤ加算器３０の値から、読み出しアドレスを生成してローカルメモリ１０に出力するものである。
【００４８】
第２ＷＲ＿Ｘポインタ２５は、データ補正単位のＮ倍（例えば、６４ドット×４倍）の画像データをローカルメモリ１０に書き込む毎に値を１インクリメントし、１ラインの書き込みが終了すると初期化するポインタである。第２ＷＲ＿Ｘポインタ２５の値は、第２補正ＷＲ＿ＲＡＭ２７へのアドレスとして与えられると共に、ローカルメモリ１０への書込み用下位アドレスとして第２ＷＲアドレス制御部２９に与えられるようになっている。
【００４９】
第２ＷＲ＿Ｙポインタ２６は、１ラインを書き込む度に値を１インクリメントし、ローカルメモリ１０の最終ラインの書き込みが終了すると初期化するポインタである。
【００５０】
第２ＷＲ加算器２８は、第２ＷＲ＿Ｙポインタ２６の値と、第２補正ＷＲ＿ＲＡＭ２７からの値を加算してＹ座標のデータを生成し、ローカルメモリ１０への書込み用上位アドレスとして第２ＷＲアドレス制御部２９に与えるものである。
【００５１】
第２ＷＲアドレス制御部２９は、第２ＷＲ＿Ｘポインタ２５の値、第２ＷＲ加算器２８の値から書き込みアドレスを生成してローカルメモリ１０に出力するものである。
【００５２】
ここで、ローカルメモリ１０に必要な容量は、第２補正制御部８で補正可能な補正量以上であり、次の（１）式で表すことができる。なお、（１）式の右辺における「１ライン」は書込み処理と読出し処理との競合を回避するためのマージンである。
【００５３】
ローカルメモリ１０に必要な容量（ライン）≧最大補正量（ライン）×データ補正単位（ドット）×Ｎ÷主走査方向ドット数（ドット）＋１ライン            …（１）
今、上述したように、最大補正量を２５６ライン、データ補正単位を６４ドット、Ｎを４、主走査方向ドット数を１５３６０（ドット）とする。この場合、（１）式から（２）式が得られ、ライン数は自然数であることが必要なことから（３）式が得られ、ローカルメモリ１０に必要な容量（ライン）は６ライン以上となる。
【００５４】
ローカルメモリ１０に必要な容量（ライン）
≧２５６＊６４＊４÷１５３６０＋１＝５．２６    …（２）
ローカルメモリ１０に必要な容量（ライン）≧６                    …（３）
すなわち、ラスタバッファ４１の容量が最大補正量（２５６ライン）以上必要なのに対して、ローカルメモリ１０は十分小さなメモリで構成可能である。
【００５５】
（Ａ−２）第１の実施形態の動作
次に、第１の実施形態に係るプリンタの特徴的な動作を説明する。特徴的な動作としては、第１補正ＲＡＭ７、第２補正ＲＤ＿ＲＡＭ９及び第２補正ＷＲ＿ＲＡＭ２７への補正データの書込み処理と、印刷時の処理がある。まず最初に、第１補正ＲＡＭ７、第２補正ＲＤ＿ＲＡＭ９、第２補正ＷＲ＿ＲＡＭ２７への補正データの書込み処理を、図面を参照しながら説明する。
【００５６】
プリンタの電源投入がなされると、ヒートローラのウォーミングアップやドラムのクリーニング等、各機構部の初期設定が行われると共に、制御部の初期設定が行われる。この初期設定の一貫で、第１補正制御部６、第２補正制御部８における各ポインタ１４、１５、２２、２３、２５、２６が「０」に初期化される。これらの初期化が終了すると、上位の図示しないＣＰＵは、第１補正ＲＡＭ７、第２補正ＲＤ＿ＲＡＭ９及び第２補正ＷＲ＿ＲＡＭ２７への補正データの書込み処理を指示する。これにより、補正データ書き込み手段２は、図３に示す補正データの書込み処理を開始する。なお、以下では、図３に示す処理の主体を補正データ書き込み手段２と述べる。補正データ書き込み手段２は、一部が専用の電子回路で構築されていても良く、図示しないＣＰＵが該当するものであっても良い。例えば、図示しないＣＰＵが、図３の全て又は一部の処理を行うものであっても良い。
【００５７】
補正データ書き込み手段２は、まず、ヘッド制御部１１のポートを切替え、ＥＥＰＲＯＭ１３からヘッド歪み・段差データを読出す（ステップＳ１１）。この歪み・段差データは、データ量を少なくするため、左隣のヘッド補正単位（９６ドット単位）のＹ方向位置を基準とした差分データになっている。
【００５８】
図４は、補正データの形成方法の説明図である。図４（ａ）は歪み・段差データを示し、図４（ｂ）は傾きデータを示し、図４（ｃ）は歪み・段差データ及び傾きデータを融合させた合成データを示し、図４（ｄ）は合成データを補正するように形成された補正データを示している。図４は、ＬＥＤヘッド１２の全長（例えば、１５３６０ドット）ではなく、左端からの一部分（データ補正単位で１２単位分）のデータを示している。なお、以下の説明における「左右」は、図４上での「左右」と同一である。また、図４はヘッド補正単位が２のべき乗の場合を示しているが、後述するように、読み出したヘッド補正単位の歪み・段差データが２のべき乗でない場合には、データ補正単位のヘッド補正単位の歪み・段差データへの変換処理が実行され、図４（ａ）に示す状態となる。
【００５９】
補正データ書き込み手段２は、歪み・段差データが左隣単位との差分データとなっているため、その左隣基準の歪み・段差データを左端基準の歪み・段差データに変換（差分符号から絶対符号への復号）する（ステップＳ１２）。この復号処理は、ＬＥＤヘッド１２の左端のデータを「０」として差分値を順次加算する処理である。従って、図４（ａ）に示すような「０，＋１，＋１，０，０，−２，…」の左隣基準の歪み・段差データは、図示は省略しているが、「０，＋１，＋２，＋２，＋２，０，…」といった左端基準の歪み・段差データに復号される。
【００６０】
その後、補正データ書き込み手段２は、歪み・段差データの補正単位（すなわち、ヘッド補正単位）が２のべき乗のドット数であるかを調べ（ステップＳ１３）、そうでない場合は、２のべき乗のドット数であるデータ補正単位の歪み・段差データに変換する（ステップＳ１４）。一方、ヘッド補正単位が２のべき乗であった場合には、ステップＳ１４の変換処理は実行されない。例えば、ヘッド補正単位が９６ドット、データ補正単位が６４ドットの場合には、ステップＳ１４による歪み・段差データの変換が実行される。この変換処理では、ヘッド補正単位（例えば９６ドット）のデータからデータ補正単位（例えば６４ドット）の値を補間して求め、補間値が小数の場合には四捨五入等により整数値とする。図４は、ヘッド補正単位が２のべき乗の場合を示しているが、仮に、ヘッド補正単位が９６ドットであって２のべき乗でない場合（ここで、データ補正単位は６４ドットであるとする）には、図４（ａ）の左隣基準の歪み・段差データ「０，＋１，＋１，０，０，−２，…」から変換された左端基準の歪み・段差データ「０，＋１，＋２，＋２，＋２，０，…」は、補間処理により、「０，＋１／３，＋４／３，＋２，＋２，＋２，＋４／３，＋２／３，…」に変換され、さらに、整数化により、「０，０，＋１，＋２，＋２，＋２，＋１，＋１，…」に変換される。
【００６１】
次に、補正データ書き込み手段２は傾きデータを入手する（ステップＳ１５）。傾きデータは、図示しない傾き検出手段、傾き入力手段等により入手するものである。この傾きデータの原データは、例えば、ＬＥＤヘッド１２左端のＹ座標（Ｙ方向位置）を基準とした、右端におけるＹ方向位置データの相違で表現される。傾きデータの原データが「＋３」と表現されている場合には、左端と右端を結ぶ線分は右下がりであり、右端のＹ方向位置は左端のＹ方向位置より３ライン分だけ下がっていることを表している。補正データ書き込み手段２は、傾きデータの原データを加工して得られた傾きデータを入手する。１ラインを、所定数（Ｎ）×データ補正単位に分割し、得られた分割期間毎に、傾きデータの原データを補間して求めた値（補間値が小数の場合には四捨五入等により整数化する）を、補正データ書き込み手段２が入手する傾きデータの系列とする。傾きデータの原データが＋３、１ラインのドット数が１５３６０ドット、データ補正単位が６４ドット、Ｎが４であれば、１５３６０／（６４×４）＝６０であるため、傾きデータは６０個のデータ系列となり、最初（１番目）の傾きデータは、１×３／６０＝０．０５≒０となり、２番目の傾きデータは、２×３／６０＝０．１≒０となる。図４（ｂ）は、このようにして得られた傾きデータを描いている。
【００６２】
補正データ書き込み手段２は、ステップＳ１２で求めた値（左端基準の歪み・段差データ）又はステップＳ１４で変換した値と、ステップＳ１５で入手した傾きデータを合成した位置ずれデータを作成する（ステップＳ１６）。位置ずれデータは、歪み・段差データと傾きデータのデータ補正単位（６４ドット）で各々対応するＹ方向の値を加算して求める。図４（ｃ）は、このようにして求めた位置ずれデータを示している。
【００６３】
補正データ書き込み手段２は、ステップＳ１６で求めた位置ずれデータの値の最大値を求め、最大値と位置ずれデータの値との差をそのデータ補正単位での補正値とする（ステップＳ１７）。また、この補正値は全て正になるようにする。このようにして求めたのが図４（ｄ）に示す補正データである。仮に、１ラインが図４に示す範囲であったとすると、７番目及び８番目のデータ補正単位の「＋５」が最大値となり、この最大値からの差を正値にするので、補正値の系列（補正データ）は「５，４，３，３，４，１，０，０，…」となる。以下、補正値をＣ（Ｘ）で表す。Ｘは補正値に対応するドット範囲の位置（データ補正単位の順番）を表している。例えば、Ｃ（０）は、０ドットから６３ドットまでの補正値である。
【００６４】
補正データ書き込み手段２は、ステップＳ１７で求めた補正値Ｃ（Ｘ）を隣り合うＮ個ずつのグループ毎に分割する（ステップＳ１８）。
【００６５】
補正データ書き込み手段２は、ステップＳ１８で求めた各グループの最大値を求め、第１補正ＲＡＭ７に書き込む（ステップＳ１９）。すなわち、第１補正ＲＡＭ７のアドレスをＸ１、第１補正ＲＡＭ７に格納する補正値をＣ１（Ｘ１）とすると、（４）式に示す補正値Ｃ１（Ｘ１）を求めて第１補正ＲＡＭ７に書き込むことになる。（４）式におけるｍａｘは、括弧内要素の最大値を選択することを表している。
【００６６】
Ｃ１（Ｘ１）＝ｍａｘ｛Ｃ（Ｘ１×Ｎ），Ｃ（Ｘ１×Ｎ＋１），
…，Ｃ（Ｘ１×Ｎ＋Ｎ−１）｝      …（４）
なお、ＸとＸ１との間には、Ｘ÷Ｎの整数値がＸ１となるという関係がある。仮に、歪み・段差データと傾きデータとから求めた補正値の系列（補正データ）が「５，４，３，３，４，１，０，０，…」で、Ｎが４であれば、Ｃ１（０）は「５，４，３，３」のうちの最大値の「５」となり、Ｃ１（１）は「４，１，０，０」のうちの最大値の「４」となる。
【００６７】
その後、補正データ書き込み手段２は、ステップＳ１８で求めた各グループ内の相対値を求めて第２補正ＲＤ＿ＲＡＭ９に書き込む（ステップＳ２０）。すなわち、第２補正ＲＤ＿ＲＡＭ９のアドレスを上述したＸと同じにすると共に、第２補正ＲＤ＿ＲＡＭ９に格納する補正値をＣ２（Ｘ）とすると、（５）式に示す補正値Ｃ２（Ｘ）を求めて第２補正ＲＤ＿ＲＡＭ９に書き込むことになる。（５）式におけるｍｉｎは、括弧内要素の最小値を選択することを表している。
【００６８】
Ｃ２（Ｘ）＝Ｃ（Ｘ）−ｍｉｎ｛Ｃ（Ｘ１×Ｎ），Ｃ（Ｘ１×Ｎ＋１），
…，Ｃ（Ｘ１×Ｎ＋Ｎ−１）｝      …（５）
仮に、歪み・段差データと傾きデータとから求めた補正値の系列（補正データ）が「５，４，３，３，４，１，０，０，…」で、Ｎが４であれば、Ｃ２（０）は、Ｃ（０）である「５」から、同一グループ「５，４，３，３」内の最小値「３」を減算した値「２」となり、Ｃ２（１）は、Ｃ（１）である「４」から、同一グループ「５，４，３，３」内の最小値「３」を減算した値「１」となり、Ｃ２（４）は、Ｃ（４）である「４」から、同一グループ「４，１，０，０」内の最小値「０」を減算した値「４」となる。この仮の例の場合、Ｃ２（Ｘ）の系列は、「２，１，０，０，４，１，０，０，…」となる。
【００６９】
最後に、補正データ書き込み手段２は、ステップＳ２０で求めた各グループ内の相対値の最大値を求めて第２補正ＷＲ＿ＲＡＭ２７に書き込み（ステップＳ２１）、図３に示した一連の処理を終了する。すなわち、第２補正ＷＲ＿ＲＡＭ２７のアドレスを上述したＸ１と同じにすると共に、第２補正ＷＲ＿ＲＡＭ２７に格納する補正値をＣ３（Ｘ１）とすると、（６）式に示す補正値Ｃ３（Ｘ１）を求めて第２補正ＷＲ＿ＲＡＭ２７に書き込むことになる。（６）式におけるｍａｘは、括弧内要素の最大値を選択することを表している。
【００７０】
Ｃ３（Ｘ１）＝ｍａｘ｛Ｃ２（Ｘ１×Ｎ），Ｃ２（Ｘ１×Ｎ＋１），
…，Ｃ２（Ｘ１×Ｎ＋Ｎ−１）｝      …（６）
仮に、Ｃ２（Ｘ）の系列が「２，１，０，０，４，１，０，０，…」で、Ｎが４であれば、Ｃ３（０）は、Ｃ２（０）〜Ｃ２（３）、すなわち、「２，１，０，０」のうちの最大値「２」となり、Ｃ３（１）は、Ｃ２（４）〜Ｃ２（７）、すなわち、「４，１，０，０」のうちの最大値「４」となる。
【００７１】
図５は、図３の処理により求められる、第１補正ＲＡＭ７、第２補正ＲＤ＿ＲＡＭ９、第２補正ＷＲ＿ＲＡＭ２７に格納される補正値Ｃ１（Ｘ１）、Ｃ２（Ｘ）、Ｃ３（Ｘ１）の一例を示している。図５は、当初の補正値Ｃ（Ｘ）が、図４（ｄ）に示すものの場合を示している。
【００７２】
図５（ａ）は、図４（ｄ）におけるＸ座標値Ｘと補正値Ｃ（Ｘ）の関係を示した図である。図５（ａ）に示すように、Ｘ座標値「０」、すなわち、ヘッドの０〜６３ドットに対応する補正値Ｃ（０）は「５」であり、Ｘ座標値「１」、すなわち、ヘッドの６４〜１２７ドットに対応する補正値Ｃ（１）は「４」、Ｘ座標値「２」、すなわち、ヘッドの１２８〜１９１ドットに対応する補正値Ｃ（２）は「３」になっている。
【００７３】
図５（ｂ）は、第１補正ＲＡＭ７のアドレスＸ１と補正値Ｃ１（Ｘ１）の関係を示した図である。図５（ａ）に示したＣ（Ｘ）とＮ＝４であることから、図５（ｂ）に示すように、アドレス「０」には、Ｃ（０）＝５，Ｃ（１）＝４，Ｃ（２）＝３，Ｃ（３）＝３の最大値「５」が、アドレス「１」には、Ｃ（４）＝４，Ｃ（５）＝１，Ｃ（６）＝０，Ｃ（７）＝０の最大値「４」が格納される。
【００７４】
図５（ｃ）は、第２補正ＲＤ＿ＲＡＭ９のアドレスＸと補正値Ｃ２（Ｘ）の関係を示した図である。図５（ｃ）に示すように、Ｃ２（０）＝２、Ｃ２（１）＝１、Ｃ２（２）＝０といったように値を格納する。
【００７５】
図５（ｄ）は、第２補正ＷＲ＿ＲＡＭ２７のアドレスＸ１と補正値Ｃ３（Ｘ１）の関係を示した図である。図５（ｄ）に示すように、アドレス「０」には、Ｃ２（０）＝２，Ｃ２（１）＝１，Ｃ２（２）＝０，Ｃ２（３）＝０の最大値「２」が、アドレス「１」には、Ｃ２（４）＝４，Ｃ２（５）＝１，Ｃ２（６）＝０，Ｃ２（７）＝０の最大値「４」が、アドレス「２」には、Ｃ２（８）＝０，Ｃ２（９）＝１，Ｃ２（１０）＝２，Ｃ２（１１）＝２の最大値「２」が格納される。
【００７６】
次に、第１の実施形態のプリンタにおける印刷時の動作について説明する。
【００７７】
図６は、印刷制御部１の動作タイミングを示す説明図である。タイミング制御部３は、印刷に先立って、一定のライン周期で、ライン開始タイミングを表すＬＳＹＮＣ信号を出力する。印刷が開始されると、図示しない機構部により用紙が給紙され、用紙が図示しない印刷開始センサを通過すると、タイミング制御部３は、伸張部ＶＳＹＮＣ信号、第１補正制御部ＶＳＹＮＣ信号、第２補正制御部ＶＳＹＮＣ信号の順にオンする（有意な論理レベルに切り替える）。
【００７８】
伸張部ＶＳＹＮＣ信号がオンしてから第１補正制御部ＶＳＹＮＣ信号がオンするまでの時間は最低１ライン期間である。図６は、１ライン期間が適用されている場合を示している。ここで、最低１ライン期間後とする理由は、ラスタバッファ４１に最低１ラインの画像が書き込まれるのを待つためである。
【００７９】
第１補正制御部ＶＳＹＮＣ信号がオンしてから第２補正制御部ＶＳＹＮＣ信号がオンするまでの時間は最低１ライン期間である。図６は、１ライン期間が適用されている場合を示している。ここで、最低１ライン期間後とする理由は、ローカルメモリ１０に最低１ラインの画像が書き込まれるのを待つためである。
【００８０】
伸張部５は、伸張部ＶＳＹＮＣ信号がオンすると、主記憶部４の圧縮画像データ領域４０から圧縮画像データを読み出して伸張し、伸張した画像データをＬＳＹＮＣ信号に同期して１ラインずつ主記憶部４に確立されたラスタバッファ４１に書き込む。
【００８１】
上述した図２（ｂ）は、伸張部５によるラスタバッファ４１への書き込み動作の説明図になっている。ラスタバッファ４１への書き込み開始アドレスは、（補正値Ｃ１（Ｘ１）の最大値）×０ｘ８００である。なお、図１では、補正値Ｃ１（Ｘ１）の最大値を伸張部５へ与える信号線を省略している。図５（ｂ）に示す場合であると、第１補正ＲＡＭ７の補正値Ｃ１（Ｘ１）の最大値が「５」であるので、画像データは、アドレス０ｘ２８００から書き込みが開始される。書き込み開始から１ラインの画像データ１５３６０ドット（＝１９２０バイト）を書き込んだ後には、次のＬＳＹＮＣ信号に同期して、（現ラインの先頭アドレス）＋０ｘ８００のアドレス（すなわち、０ｘ３０００）にジャンプして２ライン目の画像データを書き込む。このようなプラス０ｘ８００のアドレスジャンプを実行しての画像データの書込みを繰返し、ラスタバッファ４１の最後のラインまで書込みが進んだ場合には、ラスタバッファ４１の先頭アドレス０ｘ０にジャンプし、その後、上述と同様な動作をページ終了まで繰り返す。
【００８２】
図７は、第１補正制御部６の動作を示すフローチャートである。印刷起動がかかると、図示しないＣＰＵにより、第１ＲＤ＿Ｘポインタ１４、第１ＲＤ＿Ｙポインタ１５が初期化され、ページ開始ラインレジスタ１７には補正値Ｃ１（Ｘ１）の最大値、ページ終了ラインレジスタ１８には補正値Ｃ１（Ｘ１）の最大値＋ページ総ライン数、ベースアドレスレジスタ１６にはラスタバッファ４１の先頭アドレス０ｘ０が設定される（ステップＳ３１）。印刷時には、第１ＲＤ＿Ｘポインタ１４の値が第１補正ＲＡＭ７のアドレスに入力されている。
【００８３】
第１補正制御部ＶＳＹＮＣ信号がオンするのを待ち受けている（ステップＳ３２）。この待受けけ時においては、第１ＲＤ＿Ｘポインタ１４の値が第１補正ＲＡＭ７のアドレスに入力されていて、第１補正ＲＡＭ７から補正値Ｃ１（第１ＲＤ＿Ｘポインタ値）が出力されている。Ｃ１（第１ＲＤ＿Ｘポインタ値）は、Ｃ１（Ｘ１）のＸ１の所に、第１ＲＤ＿Ｘポインタ値を挿入することを表している。第１ＲＤアドレス制御部２０は、ラスタバッファ４１の読み出しアドレスを、（７）式に従って生成する。（７）式における２５６は、最大補正ライン数である。
【００８４】
読み出しアドレス＝ベースアドレス＋（（第１ＲＤ＿Ｙポインタ値＋Ｃ１（第１ＲＤ＿Ｘポインタ値））÷２５６の余り）×０ｘ８００＋第１ＲＤ＿Ｘポインタ値
…（７）
（７）式における右辺第１項及び第２項が、ラスタバッファ４１におけるいずれかのラインを特定する項であり、第３項が特定されたラインにおける左端からのデータ補正単位の順番を表している。ベースアドレスは、ラスタバッファ４１の先頭ラインの値を規定しているので、右辺第２項が、実質的にラインを特定するものとなっている。第２項のおける第１ＲＤ＿Ｙポインタ値は、現在、意図しているラインを表し、それに、Ｘ方向の位置に応じたラインの補正数を加算し、加算後の値を最大補正ライン数で割った余りを求めることで、ラスタバッファ４１のアドレスが一巡したときに対応するようにし、得られたライン数でなる値に、「０ｘ８００」を乗算することでメモリ空間上のアドレスに変換している。
【００８５】
第１補正制御部ＶＳＹＮＣ信号がオンした以降においては、ＬＳＹＮＣ信号がオンするのを待ち受け（ステップＳ３３）、ＬＳＹＮＣ信号がオンすると、第１補正制御部６は、生成されたラスタバッファ４１の読み出しアドレスに基づいて、画像データをデータ補正単位×Ｎ倍（＝６４ドット×４＝２５６ドット＝３２バイト）単位で読み出す（ステップＳ３４）。
【００８６】
第１ＲＤ＿Ｙポインタ値＋補正値Ｃ１（（第１ＲＤ＿Ｘポインタ値）が、ページ開始ラインレジスタ１７の値以上で、しかも、ページ終了ラインレジスタ１８の値以下のときには、データ選択部２１は、ラスタバッファ４１から読み出した画像データを第２補正制御部８に出力し、それ以外の場合は、０データ（白データ）を第２補正制御部８に出力すると共に、第１ＲＤ＿Ｘポインタ１４は値を１インクリメントする（ステップＳ３５）。１ラインの読み出しが終了していなければ、上述したステップＳ３３に戻る。
【００８７】
１ラインの読み出しが終了すると（ステップＳ３６）、第１補正制御部６は、１ページ分の読み出しが終了していないことを確認して（ステップＳ３７）、第１ＲＤ＿Ｘポインタ１４を初期化させ、第１ＲＤ＿Ｙポインタ１５の値を１インクリメントして（ステップＳ３８）、上述したステップＳ３３に戻る。ラスタバッファ４１からの１ページ分の読み出しが終了すると、図７に示す一連の処理を終了する。
【００８８】
図８は、第２補正制御部８がローカルメモリ１０に画像データを書き込む動作を示すフローチャートである。なお、第２補正制御部８における処理主体は、例えば、図示しないＣＰＵである。
【００８９】
印刷起動がかかると、図示しないＣＰＵは、第２ＷＲ＿Ｘポインタ２５、第２ＷＲ＿Ｙポインタ２６を初期化し、ローカルメモリ１０の全領域に０データ（白データ）を書き込む（ステップＳ４１）。ここで、第２ＷＲ＿Ｘポインタ２５の値が第２補正ＷＲ＿ＲＡＭ２７のアドレスに入力されていて、第２補正ＷＲ＿ＲＡＭ２７から補正値Ｃ３（第２ＷＲ＿Ｘポインタ値）が出力されている。Ｃ３（第２ＷＲ＿Ｘポインタ値）は、Ｃ３（Ｘ１）のＸ１の所に、第２ＷＲ＿Ｘポインタ値を挿入することを表している。
【００９０】
第２ＷＲアドレス制御部２９は、ローカルメモリ１０の書き込みアドレスを、（８）式に従って生成する。
【００９１】
書き込みアドレス
＝（（第２ＷＲ＿Ｙポインタ値＋Ｃ３（第２ＷＲ＿Ｘポインタ値））÷ローカルメモリ容量（ライン））の余り×０ｘ８００＋第２ＷＲ＿Ｘポインタ値      …（８）
（８）式における右辺第１項が、ローカルメモリ１０におけるいずれかのラインを特定する項であり、第２項が特定されたラインにおける左端からのデータ補正単位×４倍の順番を表している。第１項のおける第２ＷＲ＿Ｙポインタ値は、現在、意図しているラインを表し、それに、Ｘ方向の位置に応じたラインの補正数を加算し、加算後の値をローカルメモリの容量（ライン数で表現されている）で割った余りを求めることで、ローカルメモリ１０のアドレスが一巡したときに対応するようにし、得られたライン数でなる値に、「０ｘ８００」を乗算することでローカルメモリ空間上のアドレスに変換している。
【００９２】
第２補正制御部８は、第１補正制御部６から画像データが与えられるのを待ち受けている。伸張部ＶＳＹＮＣがオンし、伸張部５が圧縮画像データを伸張してラスタバッファ４１に書き込み、ラスタバッファ４１に書き込まれた画像データが、データ補正単位のＮ倍毎に、第１補正制御部６によって読み出されて第２補正制御部８に入力される（ステップＳ４２）。このような画像データは、第２ＷＲアドレス制御部２９によって指定されたローカルメモリ１０のアドレスに書き込まれ、書き込み終了後には、第２ＷＲ＿Ｘポインタ２５の値は１インクリメントされる（ステップＳ４３）。１ラインの書き込みが終了するまで、データ補正単位のＮ倍のドット数を有する画像データの入力、ローカルメモリ１０への書き込みが繰り返される。１ラインの書き込みが終了すると（ステップＳ４４）、１ページ分に対する書き込み処理を終了していないことが確認された上で（ステップＳ４５）、第２ＷＲ＿Ｘポインタ２５は初期化され、第２ＷＲ＿Ｙポインタ２６はその値を１インクリメントされ（ステップＳ４６）、上述した画像データの入力待ちのステップＳ４２に戻る。ローカルメモリ１０に対する１ページ分の書き込みが終了すると、図８に示す一連の処理を終了する。
【００９３】
図９は、第２補正制御部８によるローカルメモリ１０からの画像データの読み出し動作を示すフローチャートである。
【００９４】
印刷起動がかかると、図示しないＣＰＵは、第２ＲＤ＿Ｘポインタ２２、第２ＲＤ＿Ｙポインタ２３を初期化する（ステップＳ５１）。
【００９５】
第２補正制御部ＶＳＹＮＣ信号がオンするのを待ち受けている（ステップＳ５２）。この待受けけ時においては、第２ＲＤ＿Ｘポインタ２２の値が第２補正ＲＤ＿ＲＡＭ９のアドレスに入力されていて、第２補正ＲＤ＿ＲＡＭ９から補正値Ｃ２（第２ＲＤ＿Ｘポインタ値）が出力されている。Ｃ２（第２ＲＤ＿Ｘポインタ値）は、Ｃ２（Ｘ）のＸの所に、第２ＲＤ＿Ｘポインタ値を挿入することを表している。第２ＲＤアドレス制御部３１は、ローカルメモリ１０の読み出しアドレスを、（９）式に従って生成する。
【００９６】
読み出しアドレス
＝（（第２ＲＤ＿Ｙポインタ値＋Ｃ２（第２ＲＤ＿Ｘポインタ値））÷ローカルメモリ容量（ライン））の余り×０ｘ８００＋第２ＲＤ＿Ｘポインタ値      …（９）
（９）式における右辺第１項が、ローカルメモリ１０におけるいずれかのラインを特定する項であり、第２項が特定されたラインにおける左端からのデータ補正単位の順番を表している。第１項のおける第２ＲＤ＿Ｙポインタ値は、現在、意図しているラインを表し、それに、Ｘ方向の位置に応じたラインの補正数を加算し、加算後の値をローカルメモリの容量（ライン数で表現されている）で割った余りを求めることで、ローカルメモリ１０のアドレスが一巡したときに対応するようにし、得られたライン数でなる値に、「０ｘ８００」を乗算することでローカルメモリ空間上のアドレスに変換している。
【００９７】
第２補正制御部ＶＳＹＮＣ信号がオンした以降においては、ＬＳＹＮＣ信号がオンするのを待ち受け（ステップＳ５３）、ＬＳＹＮＣ信号がオンすると、第２補正制御部８は、生成されたローカルメモリ１０の読み出しアドレスに基づいて、画像データをデータ補正単位（＝６４ドット）で読み出す（ステップＳ５４）。１ライン分の読み出しが終了するまで、データ補正単位の画像データのローカルメモリ１０からの読み出しが繰り返される。１ライン分の読み出しが終了すると（ステップＳ５５）、第２補正制御部８は、１ページ分の読み出しが終了していないことを確認して（ステップＳ５６）、第２ＲＤ＿Ｘポインタ２２を初期化させ、第２ＲＤ＿Ｙポインタ２３の値を１インクリメントして（ステップＳ５７）、上述したステップＳ５３に戻る。ローカルメモリ１０からの１ページ分の読み出しが終了すると、図９に示す一連の処理を終了する。
【００９８】
図１０〜図１３は、ラスタバッファ４１、ローカルメモリ１０、ヘッド出力データ（印刷画像）の状態遷移をＬＳＹＮＣ信号毎に示す説明図であり、上述した図５の補正値Ｃ１（Ｘ１）、Ｃ２（Ｘ）、Ｃ３（Ｘ１）に対応している。本来のライン長は１５３６０ドットであるが、図１０〜図１３では、０〜７６７ドットまでの動作を記載している。図１０〜図１３において、ラスタバッファ４１及びローカルメモリ１０に付されている縦方向（Ｙ方向）のアドレスは、画像データのラインを特定するＹアドレス（上位アドレス）であり、横方向（Ｘ方向）のアドレスは、画像データのライン内の位置を特定するＸアドレス（下位アドレス）である。図１０〜図１３中の表示の意味は、以下の通りである。「ｌｉｎｅ０  ０−６３」は画像データのライン番号０の０ドットから６３ドットからを表している。「太枠部」は、書き込まれた画像データを意味している。「ハッチング部」は、読み出される画像データを意味している。
【００９９】
まず、図１０の状態を説明する。伸張部ＶＳＹＮＣ信号がオンすると、第１補正ＲＡＭ７の補正値Ｃ１（Ｘ１）の最大値が「５」であるので、ラスタバッファ４１の先頭ラインから５ライン目のラインに係るアドレス空間０ｘ２８００〜０ｘ２ＦＦＦ（有効に書き込まれる上限は０ｘ２８５Ｆ）に、第１補正制御部６は、伸張部５が伸張したｌｉｎｅ０の画像データを書き込む。伸張部ＶＳＹＮＣ信号がオンしたタイミングでは、第１補正制御部ＶＳＹＮＣはオンしていないので（図６参照）、ローカルメモリ１０は、白データが書き込まれている初期状態のままである。
【０１００】
次に、図１１の状態を説明する。第１補正制御部ＶＳＹＮＣ信号がオンし、さらに、次のタイミングのＬＳＹＮＣ信号がオンすると、第１補正制御部６は、ｌｉｎｅ１の画像データをラスタバッファ４１のアドレス空間０ｘ３０００〜０ｘ３７ＦＦに書き込む。並行して、第１補正制御部６は、ラスタバッファ４１から画像データを２５６ドット単位で読み出す。このとき、第１ＲＤ＿Ｙポインタ値＝０、補正値Ｃ１（０）＝５（ポインタ値が示すラインより５ライン下を表す；Ｘ１が０であることは最初の２５６ドット単位を表す）、補正値Ｃ１（１）＝４（ポインタ値が示すラインより４ライン下を表す；Ｘ１が１であることは２番目の２５６ドット単位を表す）、補正値Ｃ１（２）＝３（ポインタ値が示すラインより３ライン下を表す；Ｘ１が２であることは３番目の２５６ドット単位を表す）であるので、読み出しアドレス（２５６ドット単位を読み出す先頭アドレス）は、０ｘ２８００（＝０ｘ２８００＋０ｘ０）、０ｘ２０２０（＝０ｘ２０００＋０ｘ２０）、０ｘ１８４０（＝０ｘ１８００＋０ｘ４０）と遷移する。アドレス０ｘ２８００のデータはｌｉｎｅ０  ０−２５５であり、０ｘ２０２０、０ｘ１８４０は何も書き込まれていない領域なので不定データである。読み出された画像データは、データ選択部２１を介して第２補正制御部８に与えられる。このとき、ページ開始ラインレジスタ１７の値は５であるので、０ｘ２０２０、０ｘ１８４０から読み出された不定データは白データに置き換えられて第２補正制御部８に与えられる。
【０１０１】
第２補正制御部８は、受信した画像データをローカルメモリ１０に書き込む。このとき、第２ＷＲ＿Ｙポインタ値＝０、補正値Ｃ３（０）＝２、補正値Ｃ３（１）＝４、補正値Ｃ３（２）＝２であるので、画像データｌｉｎｅ０  ０−２５５はアドレス０ｘ１０００に、白データはアドレス０ｘ２０２０、０ｘ１０４０に書き込まれる。
【０１０２】
次に、図１２の状態を説明する。第２補正制御部ＶＳＹＮＣ信号がオンし、さらに、次のタイミングのＬＳＹＮＣ信号がオンすると、第２補正制御部６は、ｌｉｎｅ２の画像データをラスタバッファ４１のアドレス空間０ｘ３８００〜０ｘ３ＦＦＦに書き込む。並行して、第１補正制御部６は、ラスタバッファ４１から画像データを２５６ドット単位で読み出す。このとき、第１ＲＤ＿Ｙポインタ値＝１、補正値Ｃ１（０）＝５、補正値Ｃ１（１）＝４、補正値Ｃ１（２）＝３であるので、読み出しアドレスは０ｘ３０００、０ｘ２８２０、０ｘ２０４０と遷移する。アドレス０ｘ３０００の画像データはｌｉｎｅ１  ０−２５５、０ｘ２８２０の画像データはｌｉｎｅ０  ２５６−５１１であり、０ｘ２０４０は何も書き込まれていない領域なので不定データである。読み出された画像データは、データ選択部２１を介して第２補正制御部８に与えられる。このとき、ページ開始ラインレジスタ１７の値は５であるので、０ｘ２０４０から読み出された不定データは白データに置き換えられて第２補正制御部８に与えられる。
【０１０３】
第２補正制御部８は、受信した画像データをローカルメモリ１０に書き込む。このとき、第２ＷＲ＿Ｙポインタ値＝１、補正値Ｃ１（０）＝２、補正値Ｃ１（１）＝４、補正値Ｃ１（２）＝２であるので、画像データｌｉｎｅ１  ０−２５５はアドレス０ｘ１８００に、画像データｌｉｎｅ０  ２５６−５１１はアドレス０ｘ２８００に、白データはアドレス０ｘ１８４０に書き込む。
【０１０４】
第２補正制御部８は、ローカルメモリ１０への書き込みと並行して読み出しを行う。読み出しは、データ補正単位（６４ドット）で行われる。このとき、第２ＲＤ＿Ｙポインタ値＝０、補正値Ｃ２（０）＝２、Ｃ２（１）＝１、Ｃ２（２）＝０、Ｃ２（３）＝０、Ｃ２（４）＝４、Ｃ２（５）＝１、Ｃ２（６）＝０、Ｃ２（７）＝０、Ｃ２（８）＝０、Ｃ２（９）＝１、Ｃ２（１０）＝２、Ｃ２（１１）＝２であるので、読出しアドレス０ｘ１０００、０ｘ８０８、０ｘ１０、０ｘ１８、０ｘ２０２０、０ｘ８２８、０ｘ３０、０ｘ３８、０ｘ４０、０ｘ８４８、０ｘ１０５０、０ｘ１０５８から画像データｌｉｎｅ０  ０−６３と、白データが読み出されてヘッド制御部１１に与えられる。
【０１０５】
次に、図１３の状態を説明する。図１３の状態は、図１２の状態に対して、第１ＲＤ＿Ｙポインタ１５、第２ＷＲ＿Ｙポインタ２６、第２ＲＤ＿Ｙポインタ２３の値がそれぞれ１インクリメントしたことに伴って、アドレスが遷移しただけである。但し、第２ＷＲ＿Ｘポインタ値＝２のときの補正値Ｃ１（１）＝４に係る書き込みアドレスはローカルメモリ１０の額域を超えるので、ターンバックしてアドレス０ｘ２０のメモリ空間に画像データが書き込まれる。
【０１０６】
以上のような画像データの読出し処理が、イエロー、マゼンタ、シアン、ブラックの４色分のそれぞれの印刷制御部１で行われ、各色毎に印刷動作が行われるが、これらの４色間のタイミング制御動作は、従来と同様であるため、ここでの説明は省略する。
【０１０７】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、主記憶部に確保した最大補正量若しくはそれ以上の容量を有するラスタバッファ４１を使用して、データ補正単位のＮ（Ｎは２以上の整数）倍単位で補正を行う第１の補正手段（第１補正制御部６及び第１補正ＲＡＭ７）と、主記憶部とは別に設けた最大補正量未満のローカルメモリ１０を使用してデータ補正単位で補正を行う第２の補正手段（第２補正制御部８、第２補正ＷＲ＿ＲＡＭ２７及び第２補正ＲＤ＿ＲＡＭ９）を持つことにより、低コストで主記憶部のアクセス効率を損なうことのないヘッド位置ずれ補正を行うことができ、また、転送速度の高速化も期待できる。
【０１０８】
データ補正単位のＮ（Ｎは２以上の整数）倍単位で、ラスタバッファ４１（従って、主記憶部４）をアクセスすることにより、アクセス効率が良好となること、転送速度を高速化できることを、図１４及び図１５を用いて説明する。
【０１０９】
図１４は、３２ビットデータバスのＤＤＲ２  ５３３Ｍｂｐｓ、６６７Ｍｂｐｓ、８００Ｍｂｐｓのメモリシステムの読み出し時の転送単位と転送効率の関係を示したグラフであり、図１５は、３２ビットデータバスのＤＤＲ２  ５３３Ｍｂｐｓ、６６７Ｍｂｐｓ、８００Ｍｂｐｓのメモリシステムの読み出し時の転送単位と転送速度の関係を示したグラフである。なお、主記憶部４に適用可能なメモリの種類はこれらに限定されるものではない。
【０１１０】
従来の方式でＤＤＲ２  ８００ＭｂｐｓのＤＲＡＭを主記憶部に使用してラスタバッファを主記憶部上に確保した場合、ラスタバッファからの読み出し単位が８バイト単位（６４ドット単位）であるため、ＤＲＡＭの転送効率は４．２％であり転送速度はわずかに１３４Ｍバイト／ｓである。仮に、読み出し単位を２５６バイト単位にすることができた場合、転送効率は７３．６％となり、転送速度は２３５４Ｍバイト／ｓとすることができ、高速なシステムを構築できる。上記説明では、Ｎを４にしているため、読み出し単位を３２バイト単位にしたことに相当するが、この場合も、読み出し単位が８バイト単位の場合に比較すると、転送効率及び転送速度共に、４〜５倍程度向上させることができる。
【０１１１】
ここで、第１補正手段が読み出すデータ補正単位のＮ倍が主記憶部４を構成するＤＲＡＭのバースト長（ＢＬ）と等しくなるように、Ｎの値を選定することは、転送効率や転送速度を向上できて好ましい。
【０１１２】
（Ｂ）第２の実施形態
次に、本発明による印刷装置及びヘッド位置ずれ補正方法の第２の実施形態を、図面を参照しながら説明する。
【０１１３】
上述した第１の実施形態では、印刷開始前にローカルメモリ１０を初期化する必要があった。連続印刷のときには、用紙間で処理を行う必要が有り、遅いＣＰＵや、高速な印刷装置では処理が遅れる可能性があり、処理が遅れると用紙の搬送を停止しなければならない。
【０１１４】
この第２の実施形態は、印刷開始前に、ローカルメモリ１０を初期化することを不要としたものである。
【０１１５】
図１６は、第２の実施形態に係るプリンタの電気的な処理構成（印刷制御構成）を示すブロック図であり、第１の実施形態に係る上述した図１との同一、対応部分には同一符号を付して示している。
【０１１６】
第２の実施形態のプリンタは、第２補正制御部８に第２データ選択部３２が設けられている点が、第１の実施形態と異なっている。また、第２補正ＷＲ＿ＲＡＭ２７への入力が、第１の実施形態と異なっている。
【０１１７】
第２データ選択部３２は、第２ＲＤ加算器３０の出力、ページ終了ラインレジスタ１８の値、及び、第２補正ＷＲ＿ＲＡＭ２７の値によって、白データ（０データ）とローカルメモリ１０から読み出した画像データの一方を選択してヘッド制御部１１に出力するものである。
【０１１８】
第２補正ＷＲ＿ＲＡＭ２７には、ローカルメモリ１０の書き込み時に、第２ＷＲ＿Ｘポインタ２５の値がアドレスとして入力され、ローカルメモリ１０からの読み出し時に、第２ＲＤ＿Ｘポインタ２２の値がアドレスとして入力される。
【０１１９】
第２の実施形態において、第２補正制御部８以外の動作は第１の実施形態のものと同様であるので、その説明を省略する。また、第２補正制御部８についても、補正データ書き込み時の動作と、印刷時のローカルメモリ１０への書き込み動作は、第１の実施形態のものと同様であるので、その説明を省略する。
【０１２０】
以下では、第２の実施形態の第２補正制御部８における印刷時のローカルメモリ１０からの読み出し動作を、図１７のフローチャートに従って説明する。なお、図１７において、第１の実施形態に係る図９との同一、対応ステップには同一符号を付して示している。
【０１２１】
印刷起動がかかってからローカルメモリ１０から画像データを読み出すまでの動作と、各ポインタの値の更新動作と、各アドレスの遷移動作は、第１の実施形態と同様である（ステップＳ５１〜Ｓ５７）。
【０１２２】
第１の実施形態との違いは、ローカルメモリ１０から読み出した画像データと白データ（０データ）の一方を選択してヘッド制御部１１に出力する動作である（ステップＳ６１）。第２データ選択部３２は、第２ＲＤ＿Ｙポインタ２３の値に補正値Ｃ２（Ｘ１）を加算した加算値が、第２ＲＤ＿Ｘポインタ２２の値Ｘを値Ｘ１に変換して第２補正ＷＲ＿ＲＡＭ２７から読み出した補正値Ｃ３（Ｘ１）以上で、しかも、ページ終了ラインレジスタ１８の値以下の場合には、ローカルメモリ１０から読み出した画像データをヘッド制御部１１に出力し、それ以外の場合には、０データ（白データ）をヘッド制御部１１に出力する。
【０１２３】
第２の実施形態によれば、第１の実施形態と同様な効果に加え、以下の効果を奏することができる。データ補正単位毎に、ローカルメモリ１０への書き込み開始ライン及び書き込み終了ラインと、読み出しラインとを比較し、ローカルメモリ１０から読み出した画像データ又は白データ（０データ）を選択するようにしたので、印刷開始前に、ローカルメモリ１０をクリアする処理をなくすことができ、その結果、ヘッド位置ずれ補正の処理を簡略にすることができる。
【０１２４】
（Ｃ）他の実施形態
本発明は、ラスタバッファを主記憶部に設けた場合の不都合を解決しようとする点から創作されたものであるが、創作された結果の本発明は、ラスタバッファが主記憶部に設けられていない場合にも適用し得るものである。例えば、ラスタバッファが主記憶部以外の汎用メモリに構築された場合にも本発明を適用することができ、また、ラスタバッファがラスタバッファとしてのみ用いられるメモリで構築された場合にも本発明を適用することができる。
【０１２５】
上記各実施形態では、記憶ヘッドを複数有するカラープリンタに本発明を適用したものを示したが、記録ヘッドが１つであるモノクロプリンタに対しても本発明を適用することができる。
【０１２６】
また、本発明の適用装置はプリンタに限定されず、印刷装置を有する装置に広く適用可能である。例えば、ＦＡＸ装置や複合機などに対しても、本発明を適用することができる。
【符号の説明】
【０１２７】
１…印刷制御部、２…補正データ書き込み手段、３…タイミング制御部、４…主記憶部、５…伸張部、６…第１補正制御部、７…第１補正ＲＡＭ、８…第２補正制御部、９…第２補正ＲＤ＿ＲＡＭ、１０…ローカルメモリ、１１…ヘッド制御部、１２…ＬＥＤヘッド、１３…ＥＥＰＲＯＭ、２７…第２補正ＷＲ＿ＲＡＭ。
【図１】
2014008611.tif 000003
【図２】
2014008611.tif 000004
【図３】
2014008611.tif 000005
【図４】
2014008611.tif 000006
【図５】
2014008611.tif 000007
【図６】
2014008611.tif 000008
【図７】
2014008611.tif 000009
【図８】
2014008611.tif 000010
【図９】
2014008611.tif 000011
【図１０】
2014008611.tif 000012
【図１１】
2014008611.tif 000013
【図１２】
2014008611.tif 000014
【図１３】
2014008611.tif 000015
【図１４】
2014008611.tif 000016
【図１５】
2014008611.tif 000017
【図１６】
2014008611.tif 000018
【図１７】
2014008611.tif 000019