(57)【要約】【課題】ヘッドモジュールに転送するための簡易パターンの生成を高速に行うことができる画像形成装置の開発・メンテナンス用ツールを提供する。【解決手段】本発明の画像形成装置の開発・メンテナンス用ツールは、簡易パターンファイルの頻出パターンをインデックステーブルのインデックスＮｏ．で代表させて記述したインデックステーブルを用いるものであり、簡易パターンメモリ（４１０）には、簡易パターンデータファイル（４１１）とインデックステーブル（４１２）が設けられ、これらの記憶手段から簡易パターンを生成するように構成される。【選択図】図９
2008017163.tif 000002
【特許請求の範囲】
【請求項１】
簡易パターンを生成して、当該簡易パターンをヘッドモジュールに転送することによって画像形成装置の開発やメンテナンスの際のテスト印刷を行う画像形成装置の開発・メンテナンス用ツールにおいて、
当該簡易パターンに頻出するデータ配列の少なくとも一部をインデックス番号で代表したパターンデータが記憶されているインデックステーブルを記憶するインデックステーブル記憶手段と、当該インデックス番号を用いて記述された簡易パターンデータファイルを記憶する簡易パターンデータファイル記憶手段とを有し、当該簡易パターンを該簡易パターンデータファイル記憶手段と該インデックステーブル記憶手段を読み出すことによって生成することを特徴とする画像形成装置の開発・メンテナンス用ツール。
【請求項２】
簡易パターンを生成して、当該簡易パターンをヘッドモジュールに転送することによって画像形成装置の開発やメンテナンスの際のテスト印刷を行う画像形成装置の開発・メンテナンス方法において、
当該簡易パターンに頻出するデータ配列の少なくとも一部をインデックス番号で代表したパターンデータが記憶されているインデックステーブルを準備するステップと、当該インデックス番号を用いて記述された簡易パターンデータファイルを準備するステップと、該簡易パターンデータファイルと該インデックステーブルを参照することによって当該簡易パターンを生成するステップとを含むことを特徴とする画像形成装置の開発・メンテナンス用ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタなどのヘッドモジュールによって印刷出力した印刷結果の画質評価テストをおこなう際に用いる開発・メンテナンス用ツール、及び、ヘッドモジュールの画質評価テストを行う開発・メンテナンス方法に関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置の開発においては、各種コントローラが完成していないような段階において、メカニカルな部分のハードウエア構成についてテストを行いたい、ということがある。このようなハードウエアとしては、例えばヘッドモジュールがあり、開発段階のコントローラレスの状態にてヘッドモジュールによる印字品質の確認等を行いたいという要請がある。このため開発用のボードなどを利用して、画像データをヘッドモジュールに入力してテスト印刷を行うことが一般的である。なお、このようなヘッドモジュールによる印字品質の確認を行いたいということは、画像形成装置のメンテナンスの際にも生じる要請であり、メンテナンスの現場においても、ヘッドモジュールに対して、既存のコントローラを介さず、メンテナンス用のツールなどから直接的に画像データを入力することが行われている。
【０００３】
プリンタなどのヘッドモジュールによって印刷出力した印刷結果の画質評価テストをおこなう際には、細かい線の繰り返し画像や円などの一定パターンの繰り返し画像など、多種類の画像を印刷出力して画質評価を行う。この場合、ビットマップ画像などのデータ量の大きな画像データを用いるのではなく、データ容量の小さな画像データを用いて画質評価をおこなうことが望まれている。
【０００４】
出願人は、このようなテスト印刷において、ヘッドモジュールで印刷出力させるテストパターンとして、簡易パターンというものを提案している。この簡易パターンは、データ容量を少なくして、比較的簡単なファイルの定義に基づく画質評価用のパターンデータである（特許文献１、特許文献２参照）。
【特許文献１】特願２００６−１０８３５０号公報
【特許文献２】特願２００６−１０８３５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
画像形成装置などのプリンタ内部においては、印刷画像データは、ヘッドモジュールから１ドット単位に受信するビデオクロックに同期して出力する必要がある。つまり、
（１ドットをデコードするための処理速度）≧（１ドット出力要求速度）
を保つ必要があり、デコード部とヘッドモジュールとの間に出力画像用バッファメモリ
が無く、ビデオクロックに同期するように画像をデコードして、出力するシステムである必要がある。そして、このようなスペックは、ヘッドモジュールの評価を行う画像形成装置の開発・メンテナンス用ツールにおいても要求されるものである。
【０００６】
ところで、従来例の簡易パターンデータは、１ラインを８ビットの階調データとその繰り返し、更にグループの繰り返しにより定義し、ラインデータの繰り返しによりページデータを作成する為、常に８ビットのデータで１ドットの処理をする仕様となっていた。印刷の高速化、高解像度化に伴い画素データのデコードも高速化する必要がある。そして、デコードの処理を高速化するためには、クロックアップによって、全体の処理を高速化する方法、及び、処理のパイプライン化、又はデコードの並列処理化によって複数の画素データを同時にデコードする方法の２通りの方法が考えられる。これらの方法を実現するためには、１クロック毎にデコーダへ何画素分のデータを渡せるかがキーになり、メモリから１クロックでどれだけ多くのデコード前画素データを読み込めるかにかかっているが、従来の簡易パターンにおいてはこのような高速化に係ることについては考慮されていなかった。
【課題を解決するための手段】
【０００７】
本発明は上記の各課題を解決するために、請求項１に係る発明は、簡易パターンを生成して、当該簡易パターンをヘッドモジュールに転送することによって画像形成装置の開発やメンテナンスの際のテスト印刷を行う画像形成装置の開発・メンテナンス用ツールにおいて、当該簡易パターンに頻出するデータ配列の少なくとも一部をインデックス番号で代表したパターンデータが記憶されているインデックステーブルを記憶するインデックステーブル記憶手段と、当該インデックス番号を用いて記述された簡易パターンデータファイルを記憶する簡易パターンデータファイル記憶手段とを有し、当該簡易パターンを該簡易パターンデータファイル記憶手段と該インデックステーブル記憶手段を読み出すことによって生成することを特徴とする。
【０００８】
このような本発明の開発・メンテナンス用ツールによれば、ヘッドモジュールに転送するための簡易パターンの生成においては、インデックステーブルを用いて、簡易パターンデータファイルを所謂データ圧縮するような形式が採られているので、（１ドットをデコードするための処理速度）≧（１ドット出力要求速度）の要求に対応することができ、ヘッドモジュールに対してより高速にデータ転送を行うことができる。
【０００９】
また、請求項２に係る発明は、簡易パターンを生成して、当該簡易パターンをヘッドモジュールに転送することによって画像形成装置の開発やメンテナンスの際のテスト印刷を行う画像形成装置の開発・メンテナンス方法において、当該簡易パターンに頻出するデータ配列の少なくとも一部をインデックス番号で代表したパターンデータが記憶されているインデックステーブルを準備するステップと、当該インデックス番号を用いて記述された簡易パターンデータファイルを準備するステップと、該簡易パターンデータファイルと該インデックステーブルを参照することによって当該簡易パターンを生成するステップとを含むことを特徴とする。
【００１０】
このような本発明の開発・メンテナンス用方法によれば、ヘッドモジュールに転送するための簡易パターンの生成においては、インデックステーブルを用いて、簡易パターンデータファイルを所謂データ圧縮するような形式が採られているので、（１ドットをデコードするための処理速度）≧（１ドット出力要求速度）の要求に対応することができ、ヘッドモジュールに対してより高速にデータ転送を行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図面を参照しつつ、本発明の実施の形態に係る画像形成装置の開発・メンテナンス用ツール（方法）について説明する。
（簡易パターンのデータ構造）
図１は、簡易パターンファイルのデータ構造の一例を示す説明図である。簡易パターンファイル１００は、画像をカンマ区切りのテキスト形式で定義しているパターンデータである。この簡易パターンファイル１００に基づいて、細かい線の繰り返し画像や円などの一定パターンの繰り返し画像など多種類の画像を作成して印刷することによって、プリンタなどにより印刷出力された画像の画質評価をおこなうことができる。
【００１２】
図１に示すように、簡易パターンファイル１００は、主走査方向側の定義であるライン定義部１０１（図中上側の破線で囲んだ領域）と、副走査方向側の定義であるライン配置部１０２（図中下側の破線で囲んだ領域）とによって構成されている。ここで、主走査方向とは、たとえばレーザプリンタによって印刷出力された画像の画質評価をおこなう場合に、筐体内部に設けられた感光体に照射されるレーザ光などが走査される方向であり感光体の進行方向と垂直な方向である。また、副走査方向とは、主走査方向と垂直な方向であり、感光体の進行方向と同一方向である。
【００１３】
また、簡易パターンファイル１００の先頭行１０３にある「Ｘ」は、「簡易パターンファイル識別子」である。この識別子「Ｘ」は、簡易パターンファイル１００がどのようなパターンに定義されるかを示した識別子である。この識別子「Ｘ」を用いれば、たとえば、プリンタの固有の仕様などを示すことができる。具体的には、識別子「Ｘ」は、プリンタの仕様にあわせて、画素値の上「２Ｂｉｔ」が画素値の配置情報（右寄せ、左寄せ、中央寄せなど）で、下「６Ｂｉｔ」がピクセル値であることを示している。
【００１４】
他に識別子を用いて示すことができる情報としては、たとえば画像を構成する画素値の配置情報、プリンタ内に設けられたプリンタヘッドの進行方向、主走査方向の最大の長さ、印刷をおこなう際における印刷出力する色の順番などの情報が挙げられる。また、簡易パターンファイル１００に基づいて作成された画像を印刷する際には、この識別子「Ｘ」が示す識別情報に応じて印刷処理をおこなう。
【００１５】
ライン定義部１０１は、主走査方向のラインを構成する画素値と当該画素値の所定の画素数とを関連付けて定義するものであり、複数のラインについてライン定義することができる。また、ライン配置部１０２は、ライン定義部１０１によって定義されたラインと、当該ラインの副走査方向へのライン数とを関連付けて定義する。さらに、ライン配置部１０２は、画像として用いられる色ごとに定義することができる。具体的には、ライン定義部１０１で定義された各ラインを副走査方向にどのように配置するかを定義するものであり、たとえば、Ｃ（シアン）、Ｍ（マゼンタ）、Ｙ（イエロー）、Ｋ（ブラック）などの８色ごとに定義されている。
【００１６】
なお、簡易パターンファイル１００におけるライン定義部１０１とライン配置部１０２との間には、２行の空行（３２行目および３３行目）が設けられており、この空行によりライン定義部１０１とライン配置部１０２とを区切っている。つぎに、簡易パターンファイル１００内の各部の構成を示す際に用いる用語の説明をするとともに、ライン定義部１０１とライン配置部１０２との詳細な説明をする。
【００１７】
まず、ライン定義部１０１は、ライン定義された複数のラインによって構成されている。また、ライン定義部１０１の複数のラインにはそれぞれ番号が付されており、上から順番にライン定義１（１１０）、ライン定義２（１１１）、ライン定義３（１１２）、ライン定義４（１１３）、ライン定義５（１１４）、ライン定義６（１１５）、ライン定義７（１１６）となっている。さらに、図示は省略しているが、ライン定義１〜７とは異なるライン定義０も存在している。ライン定義０は、予約番号であり、「画素値０」がライン幅分並んでいることを示した白べたラインとなる。
【００１８】
また、ライン定義１〜７のそれぞれのラインの間には、１行の空行が設けられており、たとえば５行目の空行により、ライン定義１（１１０）とライン定義２（１１１）とを区切っている。なお、ここではライン定義の定義数をライン定義０〜７の８個としたが、定義することができるライン定義の定義数は、固定ではなく任意に変更することができる。具体的には、たとえば簡易パターンファイル１００のライン定義部１０１に、最大で２５６個までのライン定義を任意に定義することができる。
【００１９】
それぞれのライン定義１〜７は、少なくとも１つのグループによって構成されており、さらに、それぞれのグループは、少なくとも１回のグループユニットの繰り返しによって構成されている。また、ライン定義部１０１の「Ａ列」には、それぞれのグループユニットが何回繰り返されたかを示す繰り返し回数がそれぞれのグループユニットにあわせて付されている。なお、ライン定義において、ある画素値以降はすべて白データ（画像として何も表現されていない白べたライン）となる場合は、この白データを定義しなくてもよい。さらに、あるライン以降はすべて空白行となる場合は、この空白行を定義しなくてもよい。つぎに、ライン定義３（１１２）を例に挙げてライン定義についての詳細な説明を行う。
【００２０】
図２−１は、ライン定義の一例を示す図である。また、図２−２は、図２−１に示すライン定義の内容を示す説明図である。図２−１に示すように、ライン定義３（１１２）は、グループ１（２０１）とグループ２（２０２）とが順番に並べられて構成されている。また、グループ１（２０１）は、グループユニット１（２１０）によって構成されており、グループユニット１（２１０）が１回繰り返されたことを示す「１」がグループユニット１（２１０）とともに付されている。さらに、グループユニット１（２１０）は、画素値０が１１８画素並んでいることを示すペア１（２１１）と、画素値０が８０画素並んでいることを示すペア２（２１２）とによって構成されている。
【００２１】
このように、ライン定義３（１１２）において、ペア１（２１１）とペア２（２１２）とが並んでグループユニット１（２１０）を形成し、このグループユニット１（２１０）が１回繰り返されてグループ１（２０１）を形成している。また、図２−１に示すように、グループ２（２０２）も同様の構成で形成されている。具体的には、ペア３（２２１）とペア４（２２２）とが並んでグループユニット２（２２０）を形成し、このグループユニット２（２２０）が１回繰り返されてグループ２（２０２）を形成している。
【００２２】
以上説明したように、ライン定義３（１１２）は、上記グループ１（２０１）とグループ２（２０２）とが順に並んで構成されており、ライン定義３（１１２）の画素値の並びは順番に、画素値「０」が１１８画素、画素値「０」が８０画素、画素値「０」が８０画素、画素値「６３」が６６２０画素となる。
【００２３】
また、簡易パターンファイル１００のライン定義部１０１において、同じ画素値のペアを並べて定義することができる（たとえば、図１に示すライン定義３（１１２）における、画素値「０」が１１８画素、画素値「０」が８０画素の部分。）。これにより、たとえばすべてのライン定義の先頭に余白部分を設けるためのペアを定義することで、各ラインの先頭に共通の余白部分を設けることができる。さらに、副走査方向に連続するパターンを形成する際にも、同様に同じ画素値のペアを並べて定義することができる。
【００２４】
つぎに、ライン配置部１０２についての詳細な説明をする。ライン配置部１０２は、複数のゾーンによって構成されている。また、ライン配置部１０２の複数のゾーンにはそれぞれゾーン番号が付されており、上から順番にゾーン０、１、２、３（図１に示す１２０、１２１、１２２、１２３）となっている。さらに、ライン配置部１０２の先頭行（３４行目）には、それぞれの色のページが何番目から何番目までのゾーンで形成されているかをあらわす色情報が示されている。
【００２５】
また、それぞれのゾーン０〜３（１２０〜１２３）には、ライン定義部１０１において定義されたある番号のライン定義がいくつか並んで形成されたラインセットと、いくつかのラインセットが並んで形成されたゾーンユニットとによって構成されており、それぞれのゾーンユニットには、ゾーンユニットが何回繰り返されているかを示すゾーン回数が付されている。なお、ここではゾーンの定義数をゾーン０〜３（１２０〜１２３）の４個としたが、ライン定義の定義数と同様に最大で２５６個までのゾーンを任意に定義することができる。ここで、図３を用いてライン配置部１０２についての詳細な説明をおこなう。
【００２６】
図３は、ライン配置の一例を示す図である。図３に示すように、ライン配置部１０２は、色情報１２４と、ゾーン０（１２０）と、ゾーン１（１２１）と、ゾーン２（１２２）と、ゾーン（１２３）とによって構成されている。
【００２７】
ゾーン０（１２０）は、ゾーンユニット１（３１２）が１回繰り返されて並んでいる構成である。また、ゾーンユニット１（３１２）は、ラインセット１（３１１）によって構成されており、このラインセット１（３１１）は、図１に示すライン定義１（１１０）が３０００ライン並んでいることを示している。
【００２８】
ゾーン１（１２１）は、ゾーンユニット２（３２４）が１回繰り返されて並んでいる構成である。また、ゾーンユニット２（３２４）は、ラインセット２（３２１）と、ラインセット３（３２２）と、ラインセット４（３２３）とによって構成されている。
【００２９】
ラインセット２（３２１）は、図１に示すライン定義１が６６６１ライン並んでいることを示している。また、ラインセット３（３２２）、ラインセット４（３２３）についてもラインセット２（３２１）と同様であり、所定のライン定義がいくつ並んでいるかを示している。なお、ゾーン２（１２２）およびゾーン３（１２３）の構成は、上記ゾーン０（１２０）およびゾーン１（１２１）と同様のため説明を省略する。
【００３０】
つぎに、ライン配置部１０２の先頭行（３４行目）に示された、色情報について詳細に説明する。色情報は、３４行目の左から順番に、第１色目に応じた色情報３３１として（１，１）、第２色目に応じた色情報３３２として（０，０）、第３色目に応じた色情報３３３として（１，１）、第４色目に応じた色情報３３４として（０，０）が示されている。たとえば、第１色目の色情報３３１である（１，１）は、第１色目の先頭ゾーン番号が「１」であり、終了ゾーン番号が「１」であることを示している。
【００３１】
なお、ここでは色情報として開始ゾーン番号および終了ゾーン番号がすべて同じ番号となっているが、開始ゾーン番号および終了ゾーン番号は、それぞれ異なる番号であってもよい。具体的には、たとえば、色情報を（０，１）とすることによって、先頭ゾーン番号を「０」、終了ゾーン番号を「１」としてもよい。
【００３２】
具体的には、ライン配置部１０２の第１色目のライン配置は、順番に、ライン定義０が６６６１ライン、ライン定義２（１１１）が３０００ライン、ライン定義３（１１２）が１ライン並んでいる配置となる。
【００３３】
また、第２色目の色情報は（０，０）であるため、第２色目の先頭ゾーン番号は「０」であり、終了ゾーン番号が「０」である。このため、ライン配置部１０２の第２色目のライン配置は、ライン定義１（１１０）が３０００ライン並んでいる配置となる。
【００３４】
さらに、第３色目の色情報は（１，１）であるため、第３色目の先頭ゾーン番号は「１」であり、終了ゾーン番号が「１」である。このため、ライン配置部１０２の第３色目のライン配置は、順番に、ライン定義０が６６６１ライン、ライン定義２（１１１）が３０００ライン、ライン定義３（１１２）が１ライン並んでいる配置となる。
【００３５】
さらに、第４色目の色情報は（０，０）であるため、第３色目の先頭ゾーン番号は「０」であり、終了ゾーン番号が「０」である。このため、ライン配置部１０２の第２色目のライン配置は、ライン定義１（１１０）が３０００ライン並んでいる配置となる。
【００３６】
以上説明したように、簡易パターンファイル１００に基づいて画像を作成する場合、ライン定義部１０１で定義された各ラインが、色ごとに、ライン配置部１０２に示すライン配置に基づいて副走査方向に配置され、画像が形成されることとなる。つぎに、この発明の実施の形態にかかるインデックステーブルについて説明する。
【００３７】
図４は、本発明の実施の形態に係る画像形成装置の開発・メンテナンス用ツールにおけるインデックステーブルを示す図である。インデックステーブルは、簡易パターンファイルにおける頻出するデータパターンをインデックスＮｏ．で代表させたものである。
簡易パターンファイルは、パターンの繰り返しの為、少種類の階調データの組み合わせになる場合が多い。そこで、パターンデータに出現する階調値と、繰り返し数をインデックステーブルに登録し、頻出するパターンの代替としてインデックステーブルＮｏ．を使用することでデータのビット幅を減らす。また、インデックステーブルＮｏ．を簡易パターンデータとして持つ為、データのビット幅は、インデックステーブルに登録されたデータ数に依存する。ビット幅を決めてしまえば、１バイト中の画素データを1画素ではなく、多画素に出来る。本実施形態では、「グループユニットの繰り返し数」、「画素値」、「画素繰り返し数」、「ゾーン開始」、「ゾーン終了」、「ゾーンユニット繰り返し数」、「ライン定義Ｎｏ．」、「ライン繰り返し数」の各項目に対して、例えば図４に示すように、「０」、「１」、「２」の３つのインデックスＮｏ．に代表させるように定義することができる。このようなインデックステーブルによれば、図１に示した簡易パターンファイルは、インデックスＮｏ．を用いて図５のように表すことができる。
【００３８】
このように本発明によれば、簡易パターンファイルの頻出パターンをインデックステーブルのインデックスＮｏ．で代表させて処理するものであり、ヘッドモジュールに転送するための簡易パターンの生成においては、このインデックステーブルを用いて、簡易パターンデータファイルを所謂データ圧縮するような形式が採られているので、（１ドットをデコードするための処理速度）≧（１ドット出力要求速度）の要求に対応することができ、ヘッドモジュールに対してより高速にデータ転送を行うことができる。
（システム構成）
図６は、本発明の実施の形態に係る画像形成装置の開発・メンテナンス用ツールのシステム構成の一例を示すブロック図である。図６において、開発・メンテナンス用ツール４００は、簡易パターンメモリ４１０と、デコードモジュール４２０とを備えて構成されている。
【００３９】
開発・メンテナンス用ツール４００は、ヘッドモジュール４３０において印刷出力する簡易パターンファイルを選択する。ここで、選択される簡易パターンは、後述するようにメモリ（例えば、フラッシュメモリを使用）に、簡易パターンデータファイル４１１とインデックステーブル４１２として保存されており、簡易パターンごとにそれぞれヘッダ情報（ファイル名など）が付加されている。開発者、メンテナンス要員は、たとえば図示しない操作部を操作することによって図示しないＬＣＤに表示された複数の簡易パターンファイル名の中から印刷出力するための簡易パターンファイルを選択し、図示しないスタートボタンを押下してヘッドモジュール４３０に印刷を開始させる。
【００４０】
開発・メンテナンス用ツール４００は、例えば、フラッシュメモリと、ＦＰＧＡ（Ｆｉｅｌｄ Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ）とからなる。フラッシュメモリは、ブートプログラム、画像データ処理プログラムなどの各種プログラムや複数の簡易パターンファイルなどを格納している。ＦＰＧＡは、フラッシュメモリから簡易パターンデータファイル４１１とインデックステーブル４１２を読み出して復号化（デコード処理）し、復号化した簡易パターンファイルをヘッドモジュール４３０に転送する。
【００４１】
ヘッドモジュール４３０は、ＦＰＧＡの制御に基づいて、転送された簡易パターンファイルを印刷出力する。ヘッドモジュール４３０としては、レーザプリンタ方式、インクジェットプリンタ方式および熱転写プリンタ方式など各方式が用い得る。
（画像データ処理の内容）
つぎに、フラッシュメモリに格納されている簡易パターンデータファイル４１１とインデックステーブル４１２を読み出して復号化する際のデコード処理について詳細に説明する。ＦＰＧＡは、フラッシュメモリから読み出した簡易パターンデータファイル４１１とインデックステーブル４１２に対するデコード処理をリアルタイムに（連続して）実行し、デコード処理された簡易パターンファイルを順次ヘッドモジュール４３０に転送する。これにより、印刷出力される画像が途中で途切れてしまうなどの不具合を防止することができる。
【００４２】
上述したように、ＦＰＧＡはリアルタイムにデコード処理を実行するため、フラッシュメモリから読み出された簡易パターンファイルを、デコード処理しやすい形式でＦＰＧＡ内に保存する。具体的には、たとえばフラッシュメモリから読み出された簡易パターンファイルを、ＦＰＧＡ内に設けられた簡易パターンファイル格納用内部ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）にテーブル形式で保存する。
【００４３】
図７は、簡易パターンファイル格納用内部ＲＡＭの概要を説明するための説明図である。図７に示すように、簡易パターンデータファイル４１１は、インデックステーブル４１２を参照しつつ、ＦＰＧＡ内に設けられた簡易パターンファイル格納用内部ＲＡＭ５０１に保存される。ここで、それぞれの内部ＲＡＭ（Ｎｏ．１〜Ｎｏ．９）に保存される内容について説明する。なお、簡易パターンファイル格納用内部ＲＡＭ５０１は、ライン定義に関するブロック５０２、ライン配置に関するブロック５０３およびアドレス取得用に関するブロック５０４の３つの分類ブロックに分けられて設けられている。
【００４４】
ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）には、ライン定義されているすべての画素値を保存している。画素値を保存する際には、定義された画素値を順番に並べて保存し、簡易パターンファイルにおける行が変わる部分（グループが変わる場合）には、行が変わることを示す（グループが変わったことを示す）付加情報としてターミネータ情報を画素値と画素値との間に入れて保存する。具体的には、たとえば図１に示す簡易パターンファイル１００のライン定義部１０１において定義された画素値を保存する場合、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）には、画素値が「０，６３，０，ターミネータ情報，０，０，６３，０，０，ターミネータ情報，０，…」と順番に並べられて保存される。
【００４５】
ＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）には、ライン定義されているすべての画素の繰り返し回数を保存している。画素値の繰り返し回数を保存する際も上記と同様12に、定義された画素値の繰り返し回数を順番に並べて保存し、グループが変わる場合には、グループが変わったことを示すターミネータ情報を繰り返し回数と繰り返し回数との間に入れて保存する。具体的には、たとえば図１に示す簡易パターンファイル１００のライン定義部１０１において定義された画素値の繰り返し回数を保存する場合、ＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）には、繰り返し回数が「１１８，６７８０，１１８，ターミネータ情報，１１８，８０，８０，６６２０，１１８，ターミネータ情報，１１８，…」と順番に並べられて保存される。
【００４６】
ＲＡＭ＿Ｎｏ．３（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｘ）には、ライン定義されているすべてのグループユニットの繰り返し回数を保存している。グループユニットの繰り返し回数を保存する際には、定義されたグループユニットの繰り返し回数を順番に並べて保存し、簡易パターンファイルにおけるライン定義とライン定義との間で行が変わる場合（ライン定義が変わる場合）は、行が変わったことを示す（ライン定義が変わったことを示す）ターミネータ情報を繰り返し回数と繰り返し回数との間に入れて保存する。具体的には、たとえば図１に示す簡易パターンファイル１００のライン定義部１０１において定義されたグループユニットの繰り返し回数を保存する場合、ＲＡＭ＿Ｎｏ．３（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｘ）には、繰り返し回数が「１，ターミネータ情報，１，ターミネータ情報，１，１，ターミネータ情報，１，…」と順番に並べられて保存される。
【００４７】
ＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）には、配置されるすべてのライン定義のライン定義番号を保存している。ライン定義番号を保存する際も上記と同様に、ライン定義番号を順番に並べて保存し、ライン定義番号とライン定義番号との間で行が変わる場合（ゾーンが変わる場合）は、行が変わったことを示す（ゾーンが変わったことを示す）ターミネータ情報をライン定義番号とライン定義番号との間に入れて保存する。具体的には、たとえば図１に示す簡易パターンファイル１００のライン配置部１０２において定義されたライン配置に基づいて、配置されるライン定義のライン定義番号を保存する場合、ＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）には、ライン定義番号が「１，ターミネータ情報，０，２，３，２，３，２，０，ターミネータ情報，０，…」と順番に並べられて保存される。
【００４８】
ＲＡＭ＿Ｎｏ．５（ＲＡＭ＿ＬＩＮＥ＿ＮＵＭ）には、配置されるすべてのライン定義の繰り返し回数を保存している。ライン定義の繰り返し回数を保存する際も上記と同様に、定義されたライン定義の繰り返し回数を順番に並べて保存し、ゾーンが変わる場合には、ゾーンが変わったことを示すターミネータ情報を繰り返し回数と繰り返し回数との間に入れて保存する。具体的には、たとえば図１に示すライン配置部１０２において定義されたライン配置に基づいて、配置されるライン定義の繰り返し回数を保存する場合、ＲＡＭ＿Ｎｏ．５（ＲＡＭ＿ＬＩＮＥ＿ＮＵＭ）には、繰り返し回数が「９６８５，ターミネータ情報，９５２５，４，３４，４，３４，４，８０，ターミネータ情報，９５２５，…」と順番に並べられて保存される。
【００４９】
ＲＡＭ＿Ｎｏ．６（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｙ）には、配置されるすべてのゾーンユニットの繰り返し回数を保存している。ゾーンユニットの繰り返し回数を保存する際も上記と同様に、ゾーンユニットの繰り返し回数を順番に並べて保存する。また、ゾーンユニットの繰り返し回数を順番に並べた最後の部分には、ターミネータ情報を入れて保存する。具体的には、たとえば図１に示すライン配置部１０２において定義されたライン配置に基づいて、配置されるゾーンユニットの繰り返し回数を保存する場合、ＲＡＭ＿Ｎｏ．６（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｙ）には、繰り返し回数が「１，１，１，１，ターミネータ情報」と順番に並べられて保存される。
【００５０】
ＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）には、ライン定義されているすべての画素値が保存されているＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）内にアクセスするためのアドレスが保存される。さらに、ＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）には、ライン定義されているすべての画素の繰り返し回数が保存されているＲＡＭ#Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）内にアクセスするためのアドレスが保存される。
【００５１】
ＲＡＭ＿Ｎｏ．８（ＲＡＭ＿ＢＮＤ＿ＲＥＰＥＡＴ＿Ｘ）には、ライン定義されているすべてのグループユニットの繰り返し回数が保存されているＲＡＭ＿Ｎｏ．３（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｘ）内にアクセスするためのアドレスが保存される。
【００５２】
ＲＡＭ＿Ｎｏ．９（ＲＡＭ＿ＢＮＤ＿ＬＩＮＥ）には、配置されるすべてのライン定義のライン定義番号が保存されているＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）内および配置されるすべてのライン定義の繰り返し回数が保存されているＲＡＭ＿Ｎｏ．５（ＲＡＭ＿ＬＩＮＥ＿ＮＵＭ）内にアクセスするためのアドレスが保存される。つぎに、具体的なサンプリングを例に挙げて簡易パターンファイル格納用内部ＲＡＭ状態の説明をする。
【００５３】
図８−１は、簡易パターンファイルのサンプルの一例を示す説明図である。また、図８−２は、図８−１に示す簡易パターンファイルを保存した場合の簡易パターンファイル格納用内部ＲＡＭ状態を示すテーブルである。図８−１に示すように、簡易パターンファイル６００のライン定義部６０１には、破線であらわされた２つのラインについてのライン定義が示されており、それぞれのライン定義を構成するグループが太線によってあらわされている。
【００５４】
さらに、簡易パターンファイル６００のライン配置部６０２には、一点鎖線であらわす３つのゾーンが示されている。また、図８−２には、ＦＰＧＡ内に設けられた９つの内部ＲＡＭ６２０のそれぞれのＲＡＭに保存されている内容がアドレス６３０と関連付けられて示されている。なお、図８−１に示す簡易パターンファイル６００は、簡易パターンファイル格納用内部ＲＡＭ状態の説明をおこなうために、図１に示す簡易パターンファイル１００の一部を省略して示したものである。
【００５５】
図８−２に示すＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）には、簡易パターンファイル６００においてライン定義されているすべての画素値が保存されている。このとき、それぞれのアドレスには、１つの画素値が順番に保存されている。また、グループとグループとの間には、グループ間を区別するためのターミネータ情報を保存する。さらに、ライン定義されているすべての画素値が保存されたことを示すターミネータ情報を最後のアドレスに保存する。なお、ターミネータ情報を保存するアドレスには、ターミネータ情報を示す下線付きの「０」が示されている。また、デコード処理を一意化するために、アドレスＮｏ．０には空行を示す「画素値０」が保存されており、アドレスＮｏ．１には、ターミネータ情報が保存されている。
【００５６】
また、ＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）には、ライン定義されているすべての画素の繰り返し回数が保存されている。このとき、それぞれのアドレスには、１つの画素の繰り返し回数が順番に保存されている。また、グループとグループとの間には、グループ間を区別するためのターミネータ情報を保存する。さらに、ライン定義されているすべての画素の繰り返し回数が保存されたことを示すターミネータ情報を最後のアドレスに保存する。また、デコード処理を一意化するために、アドレスＮｏ．０には空行を示すための画像幅が保存されており、アドレスＮｏ．１には、ターミネータ情報が保存されている。なお、保存される画像幅は、後述する画像サイズ算出部４２４において計算される。
【００５７】
つぎに、ＲＡＭ＿Ｎｏ．３（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｘ）には、ライン定義されているすべてのグループユニットの繰り返し回数が保存されている。このとき、それぞれのアドレスには、１つのグループユニットの繰り返し回数が順番に保存されている。また、グループとグループとの間には、グループ間を区別するためのターミネータ情報を保存する。さらに、ライン定義されているすべてのグループユニットの繰り返し回数が保存されたことを示すターミネータ情報を最後のアドレスに保存する。また、デコード処理を一意化するために、アドレスＮｏ．０には空行を示すための繰り返し回数「１」が保存されており、アドレスＮｏ．１には、ターミネータ情報が保存されている。
【００５８】
また、ＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）には、配置されるすべてのライン定義のライン定義番号が保存されている。このとき、それぞれのアドレスには、１つのライン定義番号が順番に保存されている。また、ゾーンとゾーンとの間には、ゾーン間を区別するためのターミネータ情報を保存する。さらに、配置されるすべてのライン定義のライン定義番号が保存されたことを示すターミネータ情報を最後のアドレスに保存する。
【００５９】
つぎに、ＲＡＭ＿Ｎｏ．５（ＲＡＭ＿ＬＩＮＥ＿ＮＵＭ）には、配置されるすべてのライン定義の繰り返し回数が保存されている。このとき、それぞれのアドレスには、１つのライン定義の繰り返し回数が順番に保存されている。また、ゾーンとゾーンとの間には、ゾーン間を区別するためのターミネータ情報を保存する。さらに、配置されるすべてのライン定義におけるライン定義の繰り返し回数が保存されたことを示すターミネータ情報を最後のアドレスに保存する。
【００６０】
また、ＲＡＭ＿Ｎｏ．６（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｙ）には、配置されるすべてのゾーンユニットの繰り返し回数が保存されている。このとき、それぞれのアドレスには、１つのゾーンユニットの繰り返し回数が順番に保存されている。また、配置されるすべてのゾーンユニットの繰り返し回数が保存されたことを示すターミネータ情報を最後のアドレスに保存する。
【００６１】
つぎに、ＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）には、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）およびＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）内のいずれかに保存されているデータにアクセスするためのアドレスを保存している。たとえば、ライン定義「Ｘ」のデータにアクセスするためには、ＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）内のアドレス「Ｘ」に保存している値が、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）およびＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）におけるライン定義「Ｘ」の先頭アドレスとなる。
【００６２】
また、ＲＡＭ＿Ｎｏ．８（ＲＡＭ＿ＢＮＤ＿ＲＥＰＥＡＴ＿Ｘ）には、ＲＡＭ＿Ｎｏ．３（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｘ）内に保存されているデータにアクセスするためのアドレスを保存している。たとえば、ライン定義「Ｘ」のデータにアクセスするためには、ＲＡＭ＿Ｎｏ．８（ＲＡＭ＿ＢＮＤ＿ＲＥＰＥＡＴ＿Ｘ）のアドレス「Ｘ」に保存されている値が、ＲＡＭ＿Ｎｏ．３（ＲＡＭ＿ＲＥＰＥＡＴ＿Ｘ）におけるライン定義「Ｘ」の先頭アドレスとなる。
【００６３】
つぎに、ＲＡＭ＿Ｎｏ．９（ＲＡＭ＿ＢＮＤ＿ＬＩＮＥ）には、ＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）およびＲＡＭ＿Ｎｏ．５（ＲＡＭ＿ＬＩＮＥ＿ＮＵＭ）内に保存されているデータにアクセスするためのアドレスを保存している。たとえば、ゾーン「Ｘ」のデータにアクセスするためには、ＲＡＭ＿Ｎｏ．９（ＲＡＭ＿ＢＮＤ＿ＬＩＮＥ）のアドレス「Ｘ」に保存されている値が、ＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）およびＲＡＭ＿Ｎｏ．５（ＲＡＭ＿ＬＩＮＥ＿ＮＵＭ）におけるゾーン「Ｘ」の先頭アドレスとなる。
【００６４】
ここで、図８−１および図８−２を用いて、ライン定義２（６０３）の３個目の画素値「６３」にアクセスする場合について説明する。まず、ライン定義２（６０３）の先頭アドレスとしてＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）内のアドレス「２」に保存されている「５」を取得する。
【００６５】
つぎに、ライン定義２（６０３）の３個目の画素値「６３」にアクセスするため、先頭アドレス「５」に２（３−１＝２）を加算する。これにより、算出された「７」の値がライン定義２（６０３）の３個目の画素値「６３」のアドレスとなる。そして、このアドレス「７」をＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）に指定し、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレス「７」から画素値「６３」を取得する。つぎに、上述した簡易パターンファイルのデコード処理を実行するＦＰＧＡの機能的構成について説明する。
（ＦＰＧＡの機能的構成）
図９は、この発明の実施の形態にかかるＦＰＧＡの機能的構成を示すブロック図である。図９に示すように、ＦＰＧＡは、モジュール内メモリ４２２と、画像サイズ算出部４２４と、デコーダ４２１と、出力制御部４２３とを含む構成となっている。先のＦＰＧＡ内に設けられた簡易パターンファイル格納用内部ＲＡＭは、モジュール内メモリ４２２の構成の一部である。
【００６６】
モジュール内メモリ４２２は、フラッシュメモリに格納されている簡易パターンファイルの行方向への読み込みを、インデックステーブル４１２を参照しておこない、読み込まれた簡易パターンファイルを読み込まれた順に、簡易パターンファイルに含まれる種別ごとに異なる記憶領域に振り分けて保存する。このとき、簡易パターンファイルの行が変わる部分には、当該行が変わることを示す付加情報（ターミネータ情報）をあわせて保存する。具体的には、モジュール内メモリ４２２は、簡易パターンファイルを読み込んで、ＦＰＧＡ内に設けられた簡易パターンファイル格納用内部ＲＡＭの複数の内部ＲＡＭにテーブル形式で保存する。
【００６７】
画像サイズ算出部４２４は、ＦＰＧＡ内の内部ＲＡＭに保存されているデータに基づいて、簡易パターンファイルの画像サイズを算出する。具体的には、画像サイズ算出部４２４は、ＦＰＧＡ内に設けられた内部ＲＡＭから簡易パターンファイルを読み出し、読み出した簡易パターンファイルの画像の幅を算出するとともに、画像の高さを算出する。また、画像の高さは、画像の色ごとに（たとえば、Ｃ（シアン），Ｍ（マゼンタ），Ｙ（イエロー），Ｋ（ブラック））、それぞれ算出する。
【００６８】
デコーダ４２１は、モジュール内メモリ４２２によって保存されている簡易パターンファイルを、画像を形成するための順序にしたがって、付加情報であるターミネータ情報とあわせて簡易パターンファイル格納用内部ＲＡＭの複数の内部ＲＡＭから読み出す。そして、読み出された簡易パターンファイルを、付加情報であるターミネータ情報とあわせて画像の主走査方向のラインごとに連続してデコード処理する。
【００６９】
出力制御部４２３は、デコーダ４２１によってデコード処理された簡易パターンファイルをＦＰＧＡ内に設けられた図示しないビデオメモリへ、付加情報であるターミネータ情報とあわせて画像の主走査方向のラインごとに連続的に出力する。ここで、ビデオメモリとは、ＦＰＧＡ内に設けられた記憶領域であり、ビデオメモリに格納されたデータは、古いデータ（一番始めに格納されたデータ）から順に読み出される。つぎに、フラッシュメモリから読み出した簡易パターンファイルがヘッドモジュール４３０に転送されるまでの間に、ＦＰＧＡが簡易パターンファイルに対しておこなう処理の内容について説明する。
（ＦＰＧＡの画像データ処理手順）
図１０は、この発明の実施の形態にかかるＦＰＧＡの処理の手順を示すフローチャートである。図１０のフローチャートにおいて、まず、操作基板４０１から印刷開始を示す信号が通知された場合、ＦＰＧＡのモジュール内メモリ４２２は、フラッシュメモリに格納されている簡易パターンファイルを読み込んで、ＦＰＧＡ内に設けられた複数の簡易パターンファイル格納用内部ＲＡＭにテーブル形式で保存する（ステップＳ８０１）。
【００７０】
つぎに、画像サイズ算出部４２４は、ＦＰＧＡ内の内部ＲＡＭに格納されているデータに基づいて、簡易パターンファイルの画像サイズを算出する（ステップＳ８０２）。そして、デコーダ４２１は、ＦＰＧＡ内の内部ＲＡＭに格納されているデータに基づいて、簡易パターンファイルに対するデコード処理を実行する（ステップＳ８０３）。
【００７１】
最後に、デコーダ４２１によってデコード処理された簡易パターンファイルをＦＰＧＡ内に設けられたビデオメモリへ出力して（ステップＳ８０４）、本フローチャートによる一連の処理を終了する。つぎに、ステップＳ８０１において、モジュール内メモリ４２２がフラッシュメモリから読み込んだ簡易パターンファイルを、ＦＰＧＡ内に設けられた簡易パターンファイル格納用内部ＲＡＭに保存する際の処理について詳細に説明する。
【００７２】
図１１−１および図１１−２は、ＦＰＧＡのモジュール内メモリがおこなう処理の手順を示すフローチャートである。図１１−１のフローチャートにおいて、まず、ＦＰＧＡのモジュール内メモリ４２２は、フラッシュメモリに格納されている簡易パターンファイルの１行分のデータを読み込む（ステップＳ９０１）。具体的には、簡易パターンファイル１００（図１参照、以下同様。）の行方向への読み込みを連続して、上から順に１行ずつ（１行目、２行目、…）おこなう。
【００７３】
そして、モジュール内メモリ４２２は、読み込んだ１行が空行か否かを判断する（ステップＳ９０２）。具体的には、たとえばモジュール内メモリ４２２は、簡易パターンファイル１００の５行目を読み込んだ場合に、空行であると判断する。ここで、読み込んだ１行が空行ではなかった場合（ステップＳ９０２：Ｎｏ）は、つぎに、読み込んだ１行分のデータに基づいて、グループユニットの繰り返し回数を保存する（ステップ９０３）。具体的には、たとえばステップＳ９０１において簡易パターンファイル１００の２行目を読み込んだ場合、グループユニットの繰り返し回数を「１」と判断し、ＦＰＧＡの所定の内部ＲＡＭにグループユニットの繰り返し回数「１」を保存する。
【００７４】
つぎに、モジュール内メモリ４２２は、新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９０４）。そして、モジュール内メモリ４２２は、読み込んだ１行分のデータに基づいて、グループの画素値を保存する（ステップＳ９０５）。具体的には、たとえばステップＳ９０４において簡易パターンファイル１００の２行目を読み込んだ場合、グループの画素値を「０，６３，０」と判断し、ＦＰＧＡの所定の内部ＲＡＭに画素値を「０，６３，０」と順に並べて保存する。
【００７５】
ここで、グループ内（読み込んだ１行分）の画素値をすべて保存した場合、モジュール内メモリ４２２は、ターミネータ情報を追加して保存する（ステップＳ９０６）。つぎに、モジュール内メモリ４２２は、また新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９０７）。そして、モジュール内メモリ４２２は、読み込んだ１行分のデータに基づいて、グループの画素値の繰り返し回数を保存する（ステップＳ９０８）。具体的には、たとえば簡易パターンファイル１００の３行目を読み込んだ場合、グループの画素値の繰り返し回数を「１１８，６７８０，１１８」と判断し、ＦＰＧＡの所定の内部ＲＡＭにグループの画素値の繰り返し回数を「１１８，６７８０，１１８」と順に並べて保存する。
【００７６】
ここで、グループ内（読み込んだ１行分）の画素値の繰り返し回数をすべて保存した場合、モジュール内メモリ４２２は、ターミネータ情報を追加して保存し（ステップＳ９０９）、ステップＳ９０１に戻り、本フローチャートによる一連の処理を繰り返す。
【００７７】
また、ステップＳ９０２において、読み込んだ１行が空行であると判断された場合、モジュール内メモリ４２２は、新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９１０）。そして、モジュール内メモリ４２２は、ステップＳ９０２およびステップＳ９１０において読み込んだ２行分のデータに基づいて、連続して空行か否かを判断する（ステップＳ９１１）。
【００７８】
ここで、連続して空行ではないと判断された場合、モジュール内メモリ４２２は、ターミネータ情報を追加して保存し（ステップＳ９１２）、ステップＳ９０３に移行し、本フローチャートによる一連の処理をおこなう。また、ステップＳ９１１において、連続して空行であると判断された場合は、モジュール内メモリ４２２は、ライン定義の読み込みが終了したと判断し、図１１−２に示すステップＳ９２１に移行する。
【００７９】
図１１−２に示すフローチャートのステップＳ９２１において、モジュール内メモリ４２２は、新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９２１）。具体的には、たとえば簡易パターンファイル１００のライン配置部１０２の最初の行である３４行目を読み込む。つぎに、モジュール内メモリ４２２は、読み込んだ１行分のデータに基づいて、１色分の開始ゾーンを内部ＲＡＭに保存し（ステップＳ９２２）、１色分の終了ゾーンを内部ＲＡＭに保存する（ステップＳ９２３）。具体的には、簡易パターンファイル１００の３４行目を読み込んだ場合、１色分の開始ゾーンを「１」として保存し、１色分の終了ゾーンを「１」として保存する。
【００８０】
そして、モジュール内メモリ４２２は、すべての色について開始ゾーンおよび終了ゾーンが保存されたか否かを判断する（ステップＳ９２４）。具体的には、簡易パターンファイル１００の３４行目に示されている４色分すべての開始ゾーンおよび終了ゾーンを保存したか否かを判断する。ここで、すべての色について開始ゾーンおよび終了ゾーンが保存されていない場合（ステップＳ９２４：Ｎｏ）は、ステップＳ９２２に戻り、一連の処理を繰り返す。
【００８１】
また、すべての色について開始ゾーンおよび終了ゾーンが保存された場合（ステップＳ９２４：Ｙｅｓ）、モジュール内メモリ４２２は、新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９２５）。そして、すべての簡易パターンファイルの読み込みが終了したか否かを判断する（ステップＳ９２６）。ここで、読み込みが終了していないと判断された場合（ステップＳ９２６：Ｎｏ）は、ステップＳ９２５において読み込んだ１行分のデータに基づいて、ゾーンユニットの繰り返し回数を保存する（ステップＳ９２７）。
具体的には、たとえば簡易パターンファイル１００の３５行目を読み込んだ場合、ゾーンユニットの繰り返し回数を「１」と判断し、所定の内部ＲＡＭにゾーンユニットの繰り返し回数「１」を保存する。
【００８２】
つぎに、モジュール内メモリ４２２は、新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９２８）。そして、モジュール内メモリ４２２は、読み込んだ１行分のデータに基づいて、ゾーンのライン定義番号を保存する（ステップＳ９２９）。具体的には、たとえば簡易パターンファイル１００の３９行目を読み込んだ場合、ゾーンのライン定義番号を「０，２，３，２，３，２，０」と判断し、内部ＲＡＭにゾーンのライン定義番号「０，２，３，２，３，２，０」を保存する。
【００８３】
ここで、ゾーン内（読み込んだ１行分）のライン定義番号をすべて保存した場合、モジュール内メモリ４２２は、ターミネータ情報を追加して保存する（ステップＳ９３０）。つぎに、モジュール内メモリ４２２は、新たに簡易パターンファイルの１行分のデータを読み込む（ステップＳ９３１）。そして、モジュール内メモリ４２２は、読み込んだ１行分のデータに基づいて、ゾーンのライン定義の繰り返し回数を保存する（ステップＳ９３２）。具体的には、たとえば簡易パターンファイル１００の４０行目を読み込んだ場合、ゾーンのライン定義の繰り返し回数を「９５２５，４，３４，４，３４，４，８０」と判断し、内部ＲＡＭにゾーンのライン定義の繰り返し回数「９５２５，４，３４，４，３４，４，８０」を保存する。
【００８４】
ここで、グループ内（読み込んだ１行分）のゾーンのライン定義の繰り返し回数をすべて保存した場合、モジュール内メモリ４２２は、ターミネータ情報を追加して保存し（ステップＳ９３３）、つぎに、ステップＳ９２５に戻り、本フローチャートによる一連の処理を繰り返す。また、ステップＳ９２６において、読み込みが終了したと判断された場合（ステップＳ９２６：Ｙｅｓ）は、本フローチャートによる一連の処理を終了する。
【００８５】
つぎに、図１０に示すフローチャートのステップＳ８０２において、画像サイズ算出部４２４がＦＰＧＡ内の内部ＲＡＭに保存されているデータに基づいて、簡易パターンファイルの画像サイズを算出する際の処理について詳細に説明する。
【００８６】
図１２−１は、ＦＰＧＡの画像サイズ算出部がおこなう幅算出処理の手順を示すフローチャートである。また、図１２−２は、ＦＰＧＡの画像サイズ算出部がおこなう高さ算出処理の手順を示すフローチャートである。図１２−１のフローチャートにおいて、まず、ＦＰＧＡの画像サイズ算出部４２４は、ＦＰＧＡの簡易パターンファイル格納用内部ＲＡＭに保存されている画素値の繰り返し回数およびグループユニットの繰り返し回数を読み出す（ステップＳ１００１）。具体的には、図８−２に示す簡易パターンファイル格納用内部ＲＡＭ状態を示すテーブルに示すように、ＲＡＭ＿Ｎｏ．２に保存されている画素値の繰り返し回数を読み出し、ＲＡＭ＿Ｎｏ．３に保存されているグループユニットの繰り返し回数を読み出す。
【００８７】
つぎに、画像サイズ算出部４２４は、グループユニットの繰り返し回数がターミネータ情報か否かを判断する（ステップＳ１００２）。具体的には、画像サイズ算出部４２４は、ステップＳ１００１において読み出したグループユニットの繰り返し回数が下線付きの「０」であるか否かを判断し、下線付きの「０」であった場合にターミネータ情報であると判断する。
【００８８】
ここで、グループユニットの繰り返し回数がターミネータ情報ではなかった場合（ステップＳ１００２：Ｎｏ）は、つぎに、画素値の繰り返し回数がターミネータ情報か否を判断する（ステップＳ１００３）。具体的には、画像サイズ算出部４２４は、ステップＳ１００１において読み出した画素値の繰り返し回数が下線付きの「０」であるか否かを判断し、下線付きの「０」であった場合にターミネータ情報であると判断する。
【００８９】
そして、画素値の繰り返し回数がターミネータ情報であった場合（ステップＳ１００３：Ｙｅｓ）は、画像サイズ算出部４２４は、画素数カウント値およびグループユニットの繰り返し回数の乗算結果を幅に加算する（ステップＳ１００４）。つぎに、画像サイズ算出部４２４は、画素数カウント値をリセットし（ステップＳ１００５）、グループユニットの繰り返し回数のアドレスをつぎのアドレスに移行する（ステップＳ１００６）。
【００９０】
さらに、画像サイズ算出部４２４は、画素値の繰り返し回数のアドレスをつぎのアドレスに移行し（ステップＳ１００７）、つぎに、ステップＳ１００１に戻り、本フローチャートによる一連の処理を繰り返す。また、ステップＳ１００３において、画素値の繰り返し回数がターミネータ情報ではなかった場合（ステップＳ１００３：Ｎｏ）は、画像サイズ算出部４２４は、画素数カウント値を更新し（ステップＳ１００８）、ステップＳ１００７に移行する。
【００９１】
また、ステップＳ１００２において、グループユニットの繰り返し回数がターミネータ情報であった場合（ステップＳ１００２：Ｙｅｓ）は、画像サイズ算出部４２４は、画像の幅をすべて算出したと判断して、本フローチャートによる一連の処理を終了する。
【００９２】
つぎに、画像サイズ算出部４２４がおこなう画像の高さを算出する処理について図１２−２を用いて説明する。図１２−２のフローチャートにおいて、まず、ＦＰＧＡの画像サイズ算出部４２４は、モジュール内メモリ４２２によってＦＰＧＡの簡易パターンファイル格納用内部ＲＡＭに保存されているライン定義の繰り返し回数およびゾーンユニットの繰り返し回数を読み出す（ステップＳ１０２０）。具体的には、図８−２に示すＲＡＭ＿Ｎｏ．５に保存されているライン定義の繰り返し回数を読み出し、ＲＡＭ＿Ｎｏ．６に保存されているゾーンユニットの繰り返し回数を読み出す。
【００９３】
そして、画像サイズ算出部４２４は、すべての色についてライン定義の繰り返し回数およびゾーンユニットの繰り返し回数の読み出しが終了したか否かを判断する（ステップＳ１０２１）。ここで、すべての色について読み出しが終了していない場合（ステップＳ１０２１：Ｎｏ）、画像サイズ算出部４２４は、１色分のライン定義の繰り返し回数およびゾーンユニットの繰り返し回数の読み出しが終了したか否かを判断する（ステップＳ１０２２）。
【００９４】
ここで、１色分の読み出しが終了していない場合（ステップＳ１０２２：Ｎｏ）、画像サイズ算出部４２４は、ライン定義の繰り返し回数がターミネータ情報か否かを判断する（ステップＳ１０２３）。そして、ライン定義の繰り返し回数がターミネータ情報ではなかった場合（ステップＳ１０２３：Ｎｏ）、画像サイズ算出部４２４は、高さカウント値を更新する（ステップＳ１０２４）。具体的には、画像サイズ算出部４２４は、画像の高さにライン定義の繰り返し回数を加算する。
【００９５】
そして、画像サイズ算出部４２４は、ライン定義の繰り返し回数のアドレスをつぎのアドレスに移行し（ステップＳ１０２５）、ステップＳ１０２０に戻り、本フローチャートによる一連の処理を繰り返す。また、ステップＳ１０２１において、すべての色について読み出しが終了した場合（ステップＳ１０２１：Ｙｅｓ）は、本フローチャートによる一連の処理を終了する。
【００９６】
さらに、ステップＳ１０２３において、ライン定義の繰り返し回数がターミネータ情報であった場合（ステップＳ１０２３：Ｙｅｓ）、画像サイズ算出部４２４は、高さカウント値とゾーンユニットの繰り返し回数との乗算結果を画像の高さに加算する（ステップＳ１０２６）。そして、画像サイズ算出部４２４は、高さカウント値をリセットする（ステップＳ１０２７）。つぎに、画像サイズ算出部４２４は、ゾーンユニットの繰り返し回数のアドレスをつぎのアドレスに移行し（ステップＳ１０２８）、ステップＳ１０２５に移行する。
【００９７】
また、ステップＳ１０２２において、１色分の読み出しが終了したと判断された場合（ステップＳ１０２２：Ｙｅｓ）、画像サイズ算出部４２４は、色番号の更新をおこない（ステップＳ１０２９）、ステップＳ１０２７に移行する。
【００９８】
つぎに、図１０に示すフローチャートのステップＳ８０３において、デコーダ４２１がＦＰＧＡ内の内部ＲＡＭに格納されているデータに基づいて、簡易パターンファイルに対するデコード処理を実行し、デコード処理をおこなった簡易パターンファイルをＦＰＧＡ内に設けられたビデオメモリへ出力する際の処理について詳細に説明する。
【００９９】
図１３は、ＦＰＧＡのデコーダがおこなう処理の手順を示すフローチャートである。図１３のフローチャートにおいて、まず、ＦＰＧＡのデコーダ４２１は、ＦＰＧＡの簡易パターンファイル格納用内部ＲＡＭに保存されている１色分の開始ゾーン番号および終了ゾーン番号を取得する（ステップＳ１１０１）。つぎに、デコーダ４２１は、取得したゾーン内の先頭ライン定義番号を取得する（ステップＳ１１０２）。これにより、デコーダ４２１は、ライン定義されている画素値にアクセスすることができる。
【０１００】
そして、デコーダ４２１は、内部ＲＡＭから画素値を読み出す（ステップＳ１１０３）。具体的には、図８−２に示すＲＡＭ＿Ｎｏ．１に保存されている画素値を読み出す。つぎに、デコーダ４２１は、読み出した画素値を出力する（ステップＳ１１０４）。このとき、デコーダ４２１は、画素値の繰り返し回数を判断し、それぞれの画素値の繰り返し回数分、ＦＰＧＡ内に設けられたビデオメモリへ出力する。たとえば、デコーダ４２１は、図８−２に示すＲＡＭ＿Ｎｏ．２から読み出した画素値の繰り返し回数に基づいて、繰り返し回数分出力したか否かを判断する。
【０１０１】
ここで、デコーダ４２１は、画素値を画素値の繰り返し回数分、ビデオメモリへ出力したか否かを判断する（ステップＳ１１０５）。そして、すべて出力した場合（ステップＳ１１０５：Ｙｅｓ）は、つぎに、デコーダ４２１は、１つのグループユニット内のすべての画素値の出力が終了したか否かを判断する（ステップＳ１１０６）。また、ステップＳ１１０５において、画素値を画素値の繰り返し回数分出力していない場合（ステップＳ１１０５：Ｎｏ）は、ステップＳ１１０３に戻り、本フローチャートによる一連の処理を繰り返す。
【０１０２】
ステップＳ１１０６において、１つのグループユニット内のすべての画素値の出力が終了した場合（ステップＳ１１０６：Ｙｅｓ）、デコーダ４２１は、グループユニットの繰り返しが終了したか否かを判断する（ステップＳ１１０７）。具体的には、たとえばデコーダ４２１は、図８−２に示すＲＡＭ＿Ｎｏ．３から読み出したグループユニットの繰り返し回数に基づいて、グループユニットの繰り返し回数が終了したか否かを判断する。
【０１０３】
また、１つのグループユニット内のすべての画素値の出力が終了していない場合（ステップＳ１１０６：Ｎｏ）、ステップＳ１１０３に戻り、本フローチャートによる一連の処理を繰り返す。
【０１０４】
ステップＳ１１０７において、グループユニットの繰り返しが終了するのを待って、終了した場合（ステップＳ１１０７：Ｙｅｓ）、つぎに、デコーダ４２１は、１ライン分（１つのライン定義）の画素値の出力が終了したか否かを判断する（ステップＳ１１０８）。ここで、１ライン分の画素値の出力が終了した場合（ステップＳ１１０８：Ｙｅｓ）、つぎに、デコーダ４２１は、ライン定義の繰り返しが終了したか否かを判断する（ステップＳ１１０９）。また、ステップＳ１１０８において、１ライン分の画素値の出力が終了していないと判断された場合（ステップＳ１１０８：Ｎｏ）は、ステップＳ１１０３に戻り、本フローチャートによる一連の処理を繰り返す。
【０１０５】
ステップＳ１１０９においてライン定義の繰り返しが終了するのを待って、繰り返しが終了した場合（ステップＳ１１０９：Ｙｅｓ）、１つのゾーンユニット内のすべてのライン定義の繰り返しが終了したか否かを判断する（ステップＳ１１１０）。具体的には、たとえばデコーダ４２１は、図８−２に示すＲＡＭ＿Ｎｏ．４およびＲＡＭ＿Ｎｏ．５からライン定義番号およびライン定義の繰り返し回数を読み出す。そして、デコーダ４２１は、読み出したライン定義番号およびライン定義の繰り返し回数に基づいて、１つのゾーンユニット内に配置されている順にそれぞれのライン定義の繰り返しが終了したか否かを判断するとともに、ゾーンユニット内のすべてのライン定義の繰り返しが終了したか否かを判断する。
【０１０６】
ここで、１つのゾーンユニット内のすべてのライン定義の繰り返しが終了したと判断された場合（ステップＳ１１１０：Ｙｅｓ）は、デコーダ４２１は、ゾーンユニットの繰り返しが終了したか否かを判断する（ステップＳ１１１１）。具体的には、たとえばデコーダ４２１は、図８−２に示すＲＡＭ＿Ｎｏ．６から読み出したゾーンユニットの繰り返し回数に基づいて、ゾーンユニットの繰り返しが終了したか否かを判断する。
【０１０７】
そして、ゾーンユニットの繰り返しが終了するのを待って、繰り返しが終了した場合（ステップＳ１１１１：Ｙｅｓ）は、１色分についての画素値の出力が終了したか否かを判断する（ステップＳ１１１２）。具体的には、ステップＳ１１０１において取得した１色分の開始ゾーン番号および終了ゾーン番号に基づいて、１色分についての画素値の出力が終了したか否かを判断する。
【０１０８】
ここで、１色分についての画素値の出力が終了した場合（ステップＳ１１１２：Ｙｅｓ）、本フローチャートによる一連の処理を終了する。なお、たとえば簡易パターンファイル１００に示すように、４色分のライン配置が定義されている場合には、デコーダ４２１は、４色分のすべてについて上述した一連の処理と同様の処理をおこなう。また、ステップＳ１１１２において、１色分についての画素値の出力が終了していない（ステップＳ１１１２：Ｎｏ）、ステップＳ１１０３に戻り、本フローチャートによる一連の処理を繰り返す。
【０１０９】
図１３のフローチャートで説明したデコーダ４２１がおこなう処理は、リアルタイムでおこなう必要があるため、デコーダ４２１は、たとえばつぎのような制約に基づいて上記処理をおこなうようにしてもよい。デコーダ４２１は、図１３のステップＳ１１０３において、ＲＡＭ＿Ｎｏ．１に保存されている画素値を読み出す際には、複数の内部ＲＡＭからのデータの読み出しを連続的におこなっている。ここで、デコーダ４２１が画素値を読み出す際の詳細な説明を図１４を用いて説明する。
【０１１０】
図１４は、ラインの先頭の画素値を読み出すまでのクロック数を示す説明図である。図１４に示すように、ラインの先頭の画素値を読み出す際には、まず、デコーダ４２１は、図１４中矢印Ａで示す１クロック目にＲＡＭ＿Ｎｏ．９（ＲＡＭ＿ＢＮＤ＿ＬＩＮＥ）に対してゾーン番号を指定する。このとき、指定するゾーン番号は、たとえば、図１１のフローチャートのステップＳ１１０１において取得した開始ゾーン番号などである。
【０１１１】
つぎに、デコーダ４２１は、図１４中矢印Ｂで示す２クロック目にＲＡＭ＿Ｎｏ．９（ＲＡＭ＿ＢＮＤ＿ＬＩＮＥ）から１クロック目に指定したゾーン番号の先頭アドレスを取得して、取得した先頭アドレスをＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）に対して指定する。そして、デコーダ４２１は、図１２中矢印Ｃで示す３クロック目にＲＡＭ＿Ｎｏ．４（ＲＡＭ＿ＬＩＮＥ）から２クロック目に指定した先頭アドレスに応じたライン定義番号を取得して、取得したライン定義番号をＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）に対して指定する。
【０１１２】
つぎに、デコーダ４２１は、図１４中矢印Ｄで示す４クロック目にＲＡＭ＿Ｎｏ．７（ＲＡＭ＿ＢＮＤ＿ＰＵＬＳＥ）から３クロック目に指定したライン定義番号の先頭アドレスを取得して、取得したライン定義番号の先頭アドレスをＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）に対して指定する。そして、デコーダ４２１は、図１４中矢印Ｅで示す５クロック目にＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）から４クロック目に指定したライン定義番号に応じたラインの画素値を取得する。
【０１１３】
以上説明したように、ラインの先頭の画素値を取得（読み出す）するには、ライン間において５クロック分の待ち時間（待ちクロック）が必要となる。このため、デコーダ４２１によって連続して出力されるラインとラインとの間に、つぎのラインの先頭画素にアクセスするまでの期間相当分のクロック（待ちクロック）を設定する。これにより、ラインが変わる際に、ラインの先頭の画素値を読み出す際に必要となる５クロック分のクロック差により、印刷出力するためのデコード処理が追いつかず、ヘッドモジュール４３０において印刷出力するときの画像が途中で途切れてしまうなどの不具合を防ぐことができる。
【０１１４】
なお、同一ラインにおける画素値の読み出しをおこなう際は、デコーダ４２１は、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）に対して順にアドレスを指定して、指定した順に画素値を読み出していけばよいため、図１２に示すような複数の内部ＲＡＭからのデータの読み出しを連続的におこなう必要はない。
【０１１５】
このため、同一ラインにおけるすべての画素値の読み出しをおこなう際において、最初の画素値を読み出した以降は、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスのみを更新することによってリアルタイムに画素値を読み出すことができる。具体的には、画素値の繰り返し回数の最後の画素値を読み出すクロックと同クロックにおいて、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスを更新することによって連続して１つのライン分の画素値を読み出すことができる。
【０１１６】
しかしながら、読み出したデータがグループが変わったことを示すターミネータ情報であった場合には、ターミネータ情報を読み出したクロックと同一クロックにおいて出力すべき画素値の読み出しをおこなうことができないため、連続して１ライン分の画素値を読み出すことができなくなってしまう。ここで、ターミネータ情報を読み出してしまうことによって、連続して１ライン分の画素値を読み出すことができない場合の一例を図１３を用いて説明する。
【０１１７】
図１５は、連続して１ライン分の画素値を読み出すことができない場合の一例を示す説明図である。図１５に示す読み出し例は、図２−１に示すライン定義に基づいて画素値を出力した場合の読み出し例である。図１５に示すように、デコーダ４２１は、図１３中矢印Ａで示すクロックにおいて、図２に示すペア１（２１１）の１１８個目の画素値「０」を読み出し、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスを１つ加算（更新）する。つぎに、デコーダ４２１は、図２に示すペア２（２１２）の１個目の画素値「０」を読み出す。このとき、デコーダ４２１は、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスを更新しない。
【０１１８】
そして、デコーダ４２１は、ペア２（２１２）の画素値を順に読み出し、図１５中矢印Ｂで示すクロックにおいて、ペア２（２１２）の８０個目画素値「０」を読み出し、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスを１つ加算（更新）する。つぎに、デコーダ４２１は、図１５中矢印Ｃで示すクロックにおいて、図２に示すペア３（２１３）の１個目の画素値「６３」を読み出す。このとき、デコーダ４２１は、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスを更新しない。
【０１１９】
そして、デコーダ４２１は、ペア３（２１３）の画素値を順に読み出し、図１５中矢印Ｅで示すクロックにおいて、ペア３（２１３）の４個目画素値「６３」を読み出し、ＲＡＭ＿Ｎｏ．１（ＲＡＭ＿ＰＵＬＳＥ）のアドレスを１つ加算（更新）する。つぎに、デコーダ４２１は、図１５中矢印Ｆで示すクロックにおいて、図２に示すペア４（２２１）の１個目の画素値「０」を読み出す必要があるのだが、ターミネータ情報を読み出してしまう。
【０１２０】
このため、ターミネータ情報を読み出したクロックと同一クロックにおいて出力すべきペア４（２２１）の１個目の画素値「０」の読み出しをおこなうことができないため、連続して１ライン分の画素値を読み出すことができない。この不具合を防ぐために、ＦＰＧＡに設けられている簡易パターンファイル格納用内部ＲＡＭをデュアルポートＲＡＭとし、デコーダ４２１は、リアルタイムに出力するための画素値（着目アドレスの画素値）を読み出すとともに、１つ先のアドレス（着目アドレスに「１」を加算したアドレス）の画素値および画素値の繰り返し回数を読み出すようにする。
【０１２１】
ここで、デュアルポートＲＡＭとは、データの入出力のための信号のポート（出入口）が２つ設けられたＲＡＭのことであり、１つのポートからデータを読み出すとともに、同時にもう一方のポートからデータを読み出すことができる。このとき、新たな記憶領域である内部ＲＡＭをさらに設け、この内部ＲＡＭに余分に読み出したデータを一時保存するようにしてもよい。そして、デコーダ４２１は、デュアルポートＲＡＭから読み出したデータを用いて、アドレスを更新するか否かを判断するようにしてもよい。
【０１２２】
また、デコーダ４２１は、着目アドレスの画素値を繰り返し回数分読み出した際に、つぎのようにアドレスを更新する。デコーダ４２１は、読み出されたデータ（パターンデータ）に、付加情報であるターミネータ情報が含まれているか否かを判断する。そして、デコーダ４２１は、上記判断結果に基づいて、読み出されたデータを出力する。
【０１２３】
具体的には、デコーダ４２１は、着目アドレスのつぎのアドレスのデータがターミネータ情報か否を判断する。そして、着目アドレスのつぎのアドレスのデータがターミネータ情報ではなかった場合には、デコーダ４２１は、アドレスを「着目アドレス＋１」に更新する。また、たとえば着目アドレスのつぎのアドレスのデータがターミネータ情報であった場合は、グループユニットの繰り返しが終了しているか否かによってアドレスの更新方法が異なる。
【０１２４】
まず、グループユニットの繰り返しが終了していなかった場合、デコーダ４２１は、現在出力中のグループユニットの先頭アドレスにアドレスを更新する。つぎに、グループユニットの繰り返しが終了している場合、デコーダ４２１は、つぎのグループユニットの先頭アドレス（着目アドレス＋２）にアドレスを更新する。
【０１２５】
したがって、デコーダ４２１は、アドレスを更新する際に、その時点でどのようにアドレスを更新すればよいのかを把握しておく必要がある。このため、デコーダ４２１は、アドレスの更新をおこなうクロックの１つ前のクロックにおいて、更新方法を示すフラグを状態に応じてアドレスを更新する。なお、フラグのＯＮ／ＯＦＦの制御は、デコーダ４２１がそれぞれの画素値の繰り返し回数をカウントしながら判断するようにしてもよい。
【０１２６】
図１６は、アドレス更新方法フラグの内容を示す説明図である。図１６に示すアドレス更新表１４００には、フラグ名称１４０１、フラグ名称が示す状態１４０２およびフラグがＯＮになる条件１４０３が示されている。なお、図１６に示す各フラグは、同時にＯＮになる場合もあるが、アドレス更新表１４００に示すフラグ名称１４０１の最上行から順に優先順位が付されている。このため、たとえば複数のフラグがＯＮとなった場合、デコーダ４２１は、最も優先度が高いフラグのみをＯＮにするようにしてもよい。
【０１２７】
ここで、デコーダ４２１によってフラグがＯＮに制御される際の一例を説明する。たとえば、読み出した画素値のカウント値が「画素値の繰り返し回数−１」となった場合、具体的には、画素値を「繰り返し回数−１」分出力した際に、デコーダ４２１は、ＰｉｘＲｅｐＥｎｄフラグ１４０４をＯＮにする。
【０１２８】
上述したように、デコーダ４２１は、リアルタイムに画素値を出力するために、着目アドレスと着目アドレスに「１」を加算したアドレスに関するデータは常に読み出しておく必要がある。しかしながら、デコーダ４２１によってつぎのアドレスに関するデータを読み出して把握していたとしても、ターミネータ情報のつぎの画素値の繰り返し回数が「１」であった場合には、つぎのような問題が発生してしまう。
【０１２９】
図１７は、簡易パターンファイルのライン定義の一例を示す図である。また、図１８は、連続して１ライン分の画素値を読み出すことができない場合の一例を示す説明図である。図１８に示す読み出し例は、図１７に示すライン定義に基づいて画素値を出力した場合の読み出し例である。図１８中矢印Ａで示すクロックにおいて、デコーダ４２１は、図１７に示すペア１５０３の３個目の画素値「６３」を読み出すとともに、つぎのアドレスのデータであるターミネータ情報１５０４を把握している。このとき、図１６に示すＰｉｘＲｅｐＥｎｄフラグ１４０４がＯＮとなる。
【０１３０】
また、図１８中矢印Ｂで示すクロックにおいて、デコーダ４２１は、ペア１５０３の４個目の画素値「６３」を読み出すとともに、つぎのアドレスのデータであるターミネータ情報１５０４を把握している。このとき、ＰｉｘＲｅｐＥｎｄフラグ１４０４がＯＮであり、かつ、つぎのデータがターミネータ情報１５０４であるため、アドレスを「着目アドレス＋２」に更新する。そして、図中１６中矢印Ｃで示すクロックにおいて、デコーダ４２１は、ペア１５０４の１個目の画素値「０」を読み出すとともに、つぎのアドレスへの更新をおこなう。
【０１３１】
しかしながら、図１８中矢印Ｃで示すクロックにおいて、アドレス変更方法が不定のため、つぎのアドレスへの更新をおこなうことができず、連続して１つのライン分の画素値を読み出すことができなくなってしまう問題が生じる。この問題は、ターミネータ情報１５０４のつぎのデータが事前にわかっていないために発生する問題であるため、つぎのような対策をすることによって解決することができる。
【０１３２】
たとえば、ＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）に保存されているデータと同じデータを保存する別の内部ＲＡＭを設ける（たとえばＲＡＭ＿Ｎｏ．１０（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）とする。）。そして、デコーダ４２１は、ＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）に「着目アドレス」を指定して、「着目アドレス」のデータおよび「着目アドレス＋１」のデータを読み出す。また、同時にデコーダ４２１は、ＲＡＭ＿Ｎｏ．１０（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）に「着目アドレス＋２」を指定して、「着目アドレス＋２」のデータおよび「着目アドレス＋３」のデータを読み出す。
【０１３３】
このように、デコーダ４２１は、２つの内部ＲＡＭを用いて４つのアドレス分のデータを読み出すようにする。着目アドレスの更新は最大で「＋２」であるため（つぎのグループユニットに変わる場合）、デコーダ４２１は、グループユニットが変わった直後であっても、常に着目アドレスの画素値の繰り返し回数と「着目アドレス＋１」の画素値の繰り返し回数を把握することができるようになる。
【０１３４】
なお、ＲＡＭ＿Ｎｏ．２（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）およびＲＡＭ＿Ｎｏ．１０（ＲＡＭ＿ＰＵＬＳＥ＿ＮＵＭ）を用いてデコーダ４２１が読み出したデータは、ＦＰＧＡ内に設けられた、それぞれ異なる第１の記憶領域および第２の記憶領域に一時保存されるように構成してもよい。
【０１３５】
ここで、着目アドレスを更新する際の読み出しデータの切り替え方法について説明する。デコーダ４２１は、読み出されたデータ（パターンデータ）に付加情報であるターミネータ情報が含まれていると判断した場合は、ターミネータ情報のつぎに読み出されたデータ（パターンデータ）の内容をさらに判断する。そして、この判断結果に基づいて、上述した第１の記憶領域または第２の記憶領域からデータ（パターンデータ）を読み出して、読み出した当該パターンデータを出力する。
【０１３６】
具体的には、たとえばデコーダ４２１が図１７に示すペア１５０１を出力しているときには、デコーダ４２１が読み出しておくべき読出データは、ペア１５０１、ペア１５０２、ペア１５０３、ターミネータ情報１５０４であり、必要としている読出データは、ペア１５０１およびペア１５０２である。このとき、ペア１５０１の画素値「０」が１１８回繰り返された場合は、必要とする読出データをペア１５０２およびペア１５０３に切り替える。
【０１３７】
また、デコーダ４２１が図１７に示すペア１５０２を出力しているときには、デコーダ４２１が読み出しておくべき読出データは、ペア１５０２、ペア１５０３、ターミネータ情報１５０４、ペア１５０５であり、必要としている読出データは、ペア１５０２およびペア１５０３である。このとき、ペア１５０２の画素値「０」が８０回繰り返された場合は、必要とする読出データをペア１５０３およびターミネータ情報１５０４に切り替える。
【０１３８】
さらに、デコーダ４２１が図１７に示すペア１５０３を出力しているときには、デコーダ４２１が読み出しておくべき読出データは、ペア１５０３、ターミネータ情報１５０４、ペア１５０５、ペア１５０６であり、必要としている読出データは、ペア１５０３およびターミネータ情報１５０４である。このとき、ペア１５０３の画素値「６３」が４回繰り返された場合は、必要とする読出データをペア１５０５およびペア１５０６に切り替える。
【０１３９】
なお、上述したように４つ分のアドレスに関するデータを読み出すように構成したのは、つぎのような問題が生じてしまう場合があるからである。具体的には、たとえばターミネータ情報の直後のデータが、画素値の繰り返し回数が「１」であり、かつそのつぎのデータがターミネータ情報であった場合、画素値の繰り返し回数が「１」のつぎのデータがターミネータ情報であることをあらかじめデコーダ４２１が把握することができず、アドレス変更方法が不定となってしまう問題が生じてしまうためである。
【０１４０】
また、この発明の実施の形態にかかる開発・メンテナンス用ツール４００では、フラッシュメモリから読み出した画像を形成するためのパターンデータを、バッファメモリなどに一時保存することなく連続的に出力する構成としたが、パターンデータを出力する際の方式はこれに限られない。たとえば、開発・メンテナンス用ツール４００にバッファメモリを備えたＰＣ（パーソナルコンピュータ）を接続し、画像を形成するためのパターンデータをすべてＰＣのバッファメモリに一時保存する。そして、ＦＰＧＡは、ＰＣ内部のバッファメモリからパターンデータを読み出して、ヘッドモジュール４３０に画像のパターンデータを印刷出力させる構成としてもよい。
【０１４１】
以上説明したように、この発明の実施の形態にかかる画像データ処理方法によれば、読み込んだ簡易パターンファイル１００を簡易パターンファイル格納用内部ＲＡＭである複数の内部ＲＡＭに、連続的に読み出すことができる状態で再配置して保存し、この保存した簡易パターンファイル１００を画像を形成するための順序にしたがって読み出すことができる。そして、読み出した画像データを画像のラインごとに連続的に出力することができるため、ヘッドモジュール４３０の画質評価をおこなう際に、出力された画像が途中で途切れてしまうなどの不具合を防ぐことができ、適切な画質評価をおこなうことができる。
【０１４２】
さらに、この画像データ処理方法によれば、連続して出力されるラインとラインとの間に、つぎのラインの先頭画素にアクセスするまでの待ちクロックを設定することができるため、ヘッドモジュール４３０の画質評価をおこなう際に、１つのラインの出力が終了してつぎのラインの先頭画素にアクセスするまでのクロックによって先頭画素の読み出しが間に合わず、ラインとラインとの間で画像が途切れてしまうなどの不具合を防ぐことができ、適切な画質評価をおこなうことができる。
【０１４３】
また、この画像データ処理方法によれば、読み出された簡易パターンファイル１００にターミネータ情報が含まれているか否かをあらかじめ判断することができ、この判断結果に応じて簡易パターンファイル１００を連続的に出力することができるため、ヘッドモジュール４３０の画質評価をおこなう際に、出力された画像が途中で途切れてしまうなどの不具合を防ぐことができ、適切な画質評価をおこなうことができる。
【０１４４】
さらに、この画像データ処理方法によれば、読み出された簡易パターンファイル１００に含まれるターミネータ情報のつぎに読み出される簡易パターンファイル１００の内容をあらかじめ判断し、この判断結果に応じて第１の記憶領域または第２の記憶領域から簡易パターンファイル１００を読み出して簡易パターンファイル１００を連続的に出力することができるため、ヘッドモジュール４３０の画質評価をおこなう際に、出力された画像が途中で途切れてしまうなどの不具合を防ぐことができ、適切な画質評価をおこなうことができる。
【０１４５】
なお、本実施の形態で説明した開発・メンテナンス方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【図面の簡単な説明】
【０１４６】
【図１】簡易パターンファイルのデータ構造の一例を示す説明図。
【図２−１】簡易パターンファイルのライン定義の一例を示す図。
【図２−２】図２−１に示すライン定義の内容を示す説明図。
【図３】簡易パターンファイルのライン配置の一例を示す図。
【図４】本発明の実施の形態に係る画像形成装置の開発・メンテナンス用ツールにおけるインデックステーブルを示す図。
【図５】インデックステーブルを利用して表された簡易パターンファイルのデータ構造の一例を示す説明図。
【図６】画像データ処理システムのシステム構成の一例を示すブロック図。
【図７】簡易パターンファイル格納用内部ＲＡＭの概要を説明するための説明図。
【図８−１】簡易パターンファイルのサンプルの一例を示す説明図。
【図８−２】簡易パターンファイル格納用内部ＲＡＭ状態を示すテーブル。
【図９】ＦＰＧＡの機能的構成を示すブロック図。
【図１０】ＦＰＧＡの処理の手順を示すフローチャート。
【図１１−１】モジュール内メモリがおこなう処理の手順を示すフローチャート。
【図１１−２】モジュール内メモリがおこなう処理の手順を示すフローチャート。
【図１２−１】画像サイズ算出部がおこなう処理の手順を示すフローチャート。
【図１２−２】画像サイズ算出部がおこなう処理の手順を示すフローチャート。
【図１３】デコーダがおこなう処理の手順を示すフローチャート。
【図１４】ラインの先頭の画素値を読み出すまでのクロック数を示す説明図。
【図１５】画素値を読み出すことができない場合の一例を示す説明図。
【図１６】アドレス更新方法フラグの内容を示す説明図。
【図１７】簡易パターンファイルのライン定義の一例を示す図。
【図１８】画素値を読み出すことができない場合の一例を示す説明図
【符号の説明】
【０１４７】
１００・・・簡易パターンファイル、１０１・・・ライン定義部、１０２・・・ライン配置部、１１０〜１１６・・・ライン定義部１〜ライン定義部７、１２０〜１２３・・・ゾーン０〜ゾーン３、１２４・・・色情報、４００・・・開発・メンテナンス用ツール、４１０・・・簡易パターンメモリ、４１１・・・簡易パターンデータファイル、４１２・・・インデックステーブル、４２０・・・デコードモジュール、４２１・・・デコーダ、４２２・・・モジュール内メモリ、４２３・・・出力制御部、４２４・・・画像サイズ算出部、４３０・・・ヘッドモジュール
【図１】
2008017163.tif 000003
【図２−１】
2008017163.tif 000004
【図２−２】
2008017163.tif 000005
【図３】
2008017163.tif 000006
【図４】
2008017163.tif 000007
【図５】
2008017163.tif 000008
【図６】
2008017163.tif 000009
【図７】
2008017163.tif 000010
【図８−１】
2008017163.tif 000011
【図８−２】
2008017163.tif 000012
【図９】
2008017163.tif 000013
【図１０】
2008017163.tif 000014
【図１１−１】
2008017163.tif 000015
【図１１−２】
2008017163.tif 000016
【図１２−１】
2008017163.tif 000017
【図１２−２】
2008017163.tif 000018
【図１３】
2008017163.tif 000019
【図１４】
2008017163.tif 000020
【図１５】
2008017163.tif 000021
【図１６】
2008017163.tif 000022
【図１７】
2008017163.tif 000023
【図１８】
2008017163.tif 000024