(57)【特許請求の範囲】
【請求項１】
レジスタと、
プログラムに記述された複数の命令を実行することによって、描画するパターン画像の始点及び大きさを描画パラメータとして前記レジスタに格納させるＣＰＵと、
前記レジスタに格納された描画パラメータを読み出し、読み出した描画パラメータにより示される描画範囲において、パターン画像を生成するパターン生成部と、を備え、
前記ＣＰＵは、複数のパターン画像を生成する場合、前記パターン生成部により前記レジスタに格納された描画パラメータが読み出された後、前記レジスタに格納されたパターン画像の描画パラメータを、他のパターン画像の描画パラメータに更新することを繰り返して、各パターン画像の描画パラメータを前記レジスタに格納させ、
前記パターン生成部は、前記レジスタに格納された描画パラメータが更新されるごとに前記レジスタから描画パラメータを読み出し、読み出した各描画パラメータにより示される描画範囲においてパターン画像の生成を繰り返すことにより、複数のパターン画像を生成することを特徴とする画像生成装置。
【請求項２】
前記パターン生成部は、前記描画パラメータにより示される主走査方向の描画範囲内においてパターン画像の主走査方向の１ラインを生成することを、前記描画パラメータにより示される副走査方向の描画範囲内で繰り返すことを特徴とする請求項１に記載の画像生成装置。
【請求項３】
前記ＣＰＵは、複数のパターン画像を生成する場合、１つのパターン画像の描画パラメータを前記レジスタに格納し、前記パターン生成部が当該描画パラメータによりパターン画像の主走査方向の１ラインを生成し終えるまで、前記レジスタに格納された前記描画パラメータの更新を停止し、生成が終了すると、前記レジスタに格納された描画パラメータを他のパターン画像の描画パラメータに更新することを繰り返すことを特徴とする請求項２に記載の画像生成装置。
【請求項４】
前記プログラムは、前記複数のパターン画像のそれぞれの生成を指示するＬｏａｄ命令と、１又は複数のＬｏａｄ命令を反復して実行し、指定された副走査方向の位置に至ると、次の命令の読み出しを指示するＪｕｍｐ命令と、次の命令の読み出しを待機して実行中の命令を継続し、指定された副走査方向の位置に至ると次の命令の読み出しを指示するＷａｉｔ命令との組み合わせによって記述されていることを特徴とする請求項１から３のいずれか一項に記載の画像生成装置。
【請求項５】
プログラムに記述された複数の命令を実行することによって、描画するパターン画像の始点及び大きさを描画パラメータとしてレジスタに格納させる第１工程と、
前記レジスタに格納された描画パラメータを読み出し、読み出した描画パラメータにより示される描画範囲において、パターン画像を生成する第２工程と、を含み、
複数のパターン画像を生成する場合、前記第１工程では、前記レジスタに格納された描画パラメータが読み出された後、前記レジスタに格納されたパターン画像の描画パラメータを、他のパターン画像の描画パラメータに更新することを繰り返して、各パターン画像の描画パラメータを前記レジスタに格納させ、
前記第２工程では、前記レジスタに格納されたパターン画像の描画パラメータが更新されるごとに、更新された描画パラメータに基づくパターン画像の生成を繰り返すことにより、複数のパターン画像を生成することを特徴とする画像生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成装置及び画像生成方法に関する。
【背景技術】
【０００２】
従来より、画像形成装置に、テストパターンを形成させる機能が備えられている。テストパターンとは、例えば所定の領域内（例えば用紙１ページ等）に複数のパターン画像（例えば矩形画像等）を配置した画像であり、用紙に形成されたテストパターンを確認することにより画像形成装置の状態を確認することができる。
【０００３】
テストパターンを生成する方法として、複数の矩形描画範囲の各々を形成するための回路を個別に設ける方法がある（例えば特許文献１）。
また、テストパターンを生成する別の方法として、１ページ分の画像データを生成するための記憶領域を確保した上で、テストパターンとして機能する画像データをソフトウェア処理により生成する方法が知られている（例えば特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１５８７７１号公報
【特許文献２】特開２００５−４３６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のテストパターン生成方法では、描画範囲を格納するレジスタの個数や、描画範囲を示す信号線の本数などの回路構成により、テストパターンに含まれる矩形画像の数の上限が決定してしまう。このため、テストパターンに含まれる矩形画像の領域数を増やす場合、矩形画像の数に比例して回路規模が増大する問題がある。また、回路が決定された後では、もはや、それ以上に矩形画像の数を増やすことはできなくなる。
また、特許文献２のテストパターン生成方法では、１ページの画素数分の画像データをＲＡＭに書き込む処理の負担が大きくなり、また処理時間も長大となる。仮に、予め定められたテストパターンをＲＯＭに記憶させておく方法を取る場合、ソフトウェアの負担を幾分軽減することができる可能性があるが、ＲＯＭに記憶されたテストパターンは固定パターンとなるため、事後にテストパターンの内容を変更することができない。加えて、専用のＲＯＭを設けるコストもかかる。
【０００６】
本発明の課題は、回路規模によるパターン画像の数の制約を生じさせず、廉価かつ容易に、任意の位置、寸法、数のパターン画像を含むテストパターンを生成することができる画像生成装置及び画像生成方法を提供することである。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、画像形成装置であって、レジスタと、プログラムに記述された複数の命令を実行することによって、描画するパターン画像の始点及び大きさを描画パラメータとして前記レジスタに格納させるＣＰＵと、前記レジスタに格納された描画パラメータを読み出し、読み出した描画パラメータにより示される描画範囲において、パターン画像を生成するパターン生成部と、を備え、前記ＣＰＵは、複数のパターン画像を生成する場合、前記パターン生成部により前記レジスタに格納された描画パラメータが読み出された後、前記レジスタに格納されたパターン画像の描画パラメータを、他のパターン画像の描画パラメータに更新することを繰り返して、各パターン画像の描画パラメータを前記レジスタに格納させ、前記パターン生成部は、前記レジスタに格納された描画パラメータが更新されるごとに前記レジスタから描画パラメータを読み出し、読み出した各描画パラメータにより示される描画範囲においてパターン画像の生成を繰り返すことにより、複数のパターン画像を生成することを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の画像生成装置であって、前記パターン生成部は、前記描画パラメータにより示される主走査方向の描画範囲内においてパターン画像の主走査方向の１ラインを生成することを、前記描画パラメータにより示される副走査方向の描画範囲内で繰り返すことを特徴とする。
【０００９】
請求項３に記載の発明は、請求項２に記載の画像生成装置であって、前記ＣＰＵは、複数のパターン画像を生成する場合、１つのパターン画像の描画パラメータを前記レジスタに格納し、前記パターン生成部が当該描画パラメータによりパターン画像の主走査方向の１ラインを生成し終えるまで、前記レジスタに格納された前記描画パラメータの更新を停止し、生成が終了すると、前記レジスタに格納された描画パラメータを他のパターン画像の描画パラメータに更新することを繰り返すことを特徴とする。
【００１０】
請求項４に記載の発明は、請求項１から３のいずれか一項に記載の画像生成装置であって、前記プログラムは、前記複数のパターン画像のそれぞれの生成を指示するＬｏａｄ命令と、１又は複数のＬｏａｄ命令を反復して実行し、指定された副走査方向の位置に至ると、次の命令の読み出しを指示するＪｕｍｐ命令と、次の命令の読み出しを待機して実行中の命令を継続し、指定された副走査方向の位置に至ると次の命令の読み出しを指示するＷａｉｔ命令との組み合わせによって記述されていることを特徴とする。
【００１１】
請求項５に記載の発明は、画像生成方法であって、プログラムに記述された複数の命令を実行することによって、描画するパターン画像の始点及び大きさを描画パラメータとしてレジスタに格納させる第１工程と、前記レジスタに格納された描画パラメータを読み出し、読み出した描画パラメータにより示される描画範囲において、パターン画像を生成する第２工程と、を含み、複数のパターン画像を生成する場合、前記第１工程では、前記レジスタに格納された描画パラメータが読み出された後、前記レジスタに格納されたパターン画像の描画パラメータを、他のパターン画像の描画パラメータに更新することを繰り返して、各パターン画像の描画パラメータを前記レジスタに格納させ、前記第２工程では、前記レジスタに格納されたパターン画像の描画パラメータが更新されるごとに、更新された描画パラメータに基づくパターン画像の生成を繰り返すことにより、複数のパターン画像を生成することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、回路規模によるパターン画像の数の制約を生じさせず、廉価かつ容易に、任意の位置、寸法、数のパターン画像を含むテストパターンを生成することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明に係る画像形成装置の構成例を示すブロック図である。
【図２】画像形成部の要部構成を示す図である。
【図３】テストパターン生成部の主要構成を示すブロック図である。
【図４】ＲＡＭに記憶されるプログラムの一例を示す図である。
【図５】図４のプログラムに基づいてテストパターン生成部により生成される１ページの生成内容を示す図である。
【図６】パターン生成部２４０の構成及びデータの入出力の一例を示すブロック図である。
【図７】CPU_STATUSの状態遷移パターンの一例を示す図である。
【図８】レジスタ２５０に格納される各種のパラメータと、ＣＰＵ２２０の処理内容との対応関係の一例を示す図である。
【図９】Ｊｕｍｐ命令による命令のループの一例を示す図である。
【図１０】Ｗａｉｔ命令によるＣＰＵの待機処理の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図を参照して本発明の実施の形態の例を詳細に説明する。
【００１５】
図１に、本発明に係る画像形成装置１の構成例を示す。
画像形成装置１は、例えば、電子写真方式のカラー複写機であり、図１に示すように、制御部１０１、操作表示部１０２、スキャナ部１０３、画像処理部１０４、画像形成部１０５、センサ１０６、記憶部１０７、送受信部１０８等により構成され、各部はバス１０９により接続されている。
【００１６】
制御部１０１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等により構成される。制御部１０１のＣＰＵは、操作表示部１０２の操作により、ＲＯＭに記憶されているシステムプログラムや各種処理プログラムを読み出してＲＡＭに展開し、展開されたプログラムに従って、画像形成装置１各部の動作を集中制御する。
【００１７】
操作表示部１０２は、ＬＣＤ（Liquid Crystal Display）により構成され、制御部１０１から入力される表示信号の指示に従って表示画面上に各種操作ボタンや装置の状態表示、各機能の動作状況等の表示を行う。ＬＣＤの表示画面上は、透明電極を格子状に配置して構成された感圧式（抵抗膜圧式）のタッチパネルに覆われており、手指やタッチペン等で押下された力点のＸＹ座標を電圧値で検出し、検出された位置信号を操作信号として制御部１０１に出力する。また、操作表示部１０２は、数字ボタン、スタートボタン等の各種操作ボタンを備え、ボタン操作による操作信号を制御部１０１に出力する。
【００１８】
スキャナ部１０３は、原稿を載置するコンタクトガラスの下部にスキャナを備えて構成され、原稿の画像を読み取る。スキャナは、光源、ＣＣＤ（Charge Coupled Device）、Ａ／Ｄ変換器等により構成され、光源から原稿へ照明走査した光の反射光を結像して光電変換することにより原稿の画像をＲ、Ｇ、Ｂ信号として読み取り、読み取った画像をＡ／Ｄ変換して画像処理部１０４に出力する。ここで、画像は、図形や写真等のイメージデータに限らず、文字や記号等のテキストデータ等も含む。
【００１９】
画像処理部１０４は、スキャナ部１０３により読み取って得られたＲＧＢデータや、送受信部１０８から送信されたＲＧＢデータ等に対して所定の色変換処理（ＹＭＣＫデータ生成処理）、ＹＭＣＫデータのγ補正処理、中間調処理等の画像処理を施して画像形成部１０５に出力する。
また、画像処理部１０４は、テストパターン生成部２００を有する（詳細後述）。
【００２０】
画像形成部１０５は、電子写真方式により、画像処理部１０４から出力されたＹＭＣＫの画像データに基づいて、転写紙上に画像を形成して出力する。
図２に、画像形成部１０５の要部構成を示す。図２に示すように、画像形成部１０５は、Ｙ、Ｍ、Ｃ、Ｋの各色のトナー像を形成する感光体ユニット５０Ｙ、５０Ｍ、５０Ｃ、５０Ｋと、ローラ５７の回転自在に感光体ユニット５０Ｙ、５０Ｍ、５０Ｃ、５０Ｋで形成されたトナー像を転写紙に搬送する中間転写体としての中間転写ベルト５６と、転写紙を搬送するレジストローラ５８と、転写紙に中間転写ベルト５６上に形成されたトナー像を転写する２次転写ローラ５９と、転写紙にトナー像を定着させる定着ユニット６０と、転写紙を排紙する排紙ローラ６１とを備えて構成されている。
【００２１】
感光体ユニット５０Ｙは、感光体ドラム５１Ｙと、現像器５２Ｙと、帯電器５３Ｙと、クリーナ５４Ｙと、１次転写ローラ５５Ｙとを備えて構成されている。感光体ユニット５０Ｍ、５０Ｃ、５０Ｋも同様である。
【００２２】
ここで、画像形成部１０５における画像形成について説明する。まず、感光体ユニット５０Ｙにおいて、感光体ドラム５１Ｙが回転し、その表面が帯電器５３Ｙにより帯電され、図示しないレーザ光源などの露光手段の露光によりその帯電部分に画像処理部１０４から入力されたＹデータの画像の潜像が形成される。そして、現像器５２Ｙによりその潜像部分にイエローのトナー像が形成される。そのトナー像は第１転写ローラ５５Ｙの圧接により中間転写ベルト５６に転写される。トナー像は、出力対象の画像データに対応するイエローの像となる。転写されなかったトナーは、クリーナ５４Ｙにより除去される。
【００２３】
感光体ユニット５０Ｍ，５０Ｃ，５０Ｋについても同様に、マゼンダのトナー像、シアンのトナー像、黒のトナー像がそれぞれ同様に形成及び転写される。ローラ５７、１次転写ローラ５５Ｙ、５５Ｍ、５５Ｃ、５５Ｋ、２次転写ローラ５９の回転により、中間転写ベルト５６も回動され、ＹＭＣＫのトナー像が中間転写ベルト５６上に順に重ねられて転写される。また、図示しない給紙トレイからレジストローラ５８の回転により転写紙が２次転写ローラ５９に搬送される。
【００２４】
２次転写ローラ５９の圧接部を転写紙が通過することにより、中間転写ベルト５６上のＹＭＣＫのトナー像が転写紙に転写される。ＹＭＣＫのトナー像が転写された転写紙は、定着ユニット６０を通過する。定着ユニット６０の加圧及び加熱により、ＹＭＣＫのトナー像が転写紙上に定着されてカラー画像が形成される。画像形成された転写紙は、排紙ローラ６１により、図示しない排紙トレイなどに搬送される。また、両面印刷をする場合には、片面に画像形成された転写紙が、図示しない両面搬送ユニットにより面が反転され、画像形成されていない面に再び画像形成するようにレジストローラ５８により、２次転写ローラ５９に搬送される。
【００２５】
図１のセンサ１０６は、画像形成部１０５において中間転写ベルト５６上に形成された階調パッチパターン画像の各パッチに光を照射し、その反射光を受光して、反射率をセンサの出力値として制御部１０１に出力する。制御部１０１は、センサの出力値に基づいて画像の色の測定を行うことができる。
【００２６】
記憶部１０７は、フラッシュメモリ等により構成され、画像形成装置１の各部により用いられる各種のプログラムやデータ等を記憶する。
【００２７】
送受信部１０８は、モデム、ＬＡＮアダプタやルータやＴＡ（Terminal Adapter）等によって構成され、専用線、或いはＩＳＤＮ回線等の通信回線を介してネットワークＮに接続された各装置との通信制御を行う。
【００２８】
次に、テストパターン生成部２００について説明する。
テストパターン生成部２００は、スキャナ部１０３により読み取って得られたＲＧＢデータや、送受信部１０８から送信されたＲＧＢデータ等に基づく画像形成とは別の、独立で１ページの画像イメージを生成する構成である。
具体的には、テストパターン生成部２００は、複数のパターン画像を含む画像イメージ（テストパターン）を生成する。テストパターンは、生成された部分から逐次画像形成部１０５へ入力される。画像形成部１０５は、入力されたテストパターンに応じた画像を用紙に形成する。以下、本実施形態では、テストパターンのパターン画像として矩形画像を生成する例について説明する。
【００２９】
図３に、テストパターン生成部２００の主要構成を示す。
図３に示すように、テストパターン生成部２００は、走査位置カウンタ２１０、ＣＰＵ２２０、ＲＡＭ２３０、レジスタ２５０及びパターン生成部２４０を備える。図３に示すレジスタ２５０は、説明の便宜上、ＣＰＵ２２０と分離して描いているが、ＣＰＵ２２０と協働して演算装置を構成する。本実施形態の記載において、ＣＰＵ２２０は演算装置の制御機能を示し、レジスタ２５０は演算装置記憶機能を示し、両者一体で演算装置として機能する。レジスタ２５０はＩ／Ｏボートのように、テストパターン生成部２４０側の描画パラメータを格納しているレジスタに直接接続されている。
【００３０】
走査位置カウンタ２１０は、所定の領域（例えば用紙１ページ分の生成領域）における一方向（主走査方向）及び当該一方向に直行する他方向（副走査方向）に係る位置をカウントアップし、主走査方向及び副走査方向に係る値（ＨＶＩ、ＶＶＩ、ＨＶＣＮＴ、ＶＶＣＮＴ）を出力する。
なお、主走査方向は画像形成装置１の画像形成部１０５による画像形成の進行方向に対応し、副走査方向は中間転写ベルト５６の駆動方向及び用紙の搬送方向に対応する。つまり、画像形成部１０５は、用紙の幅に応じて主走査方向に沿った１ライン分の画像形成を副走査方向について繰り返すことにより画像を形成する。
【００３１】
具体的には、走査位置カウンタ２１０は、ＨＶＩ、ＶＶＩの入力を受けて、ＨＶＩ、ＶＶＩ、ＨＶＣＮＴ、ＶＶＣＮＴをパターン生成部２４０に対して出力する。また、走査位置カウンタ２１０は、ＶＶＣＮＴをＣＰＵ２２０に対して出力する。
ＨＶＩ、ＶＶＩは、用紙に対する画像形成と同期をとるためのパラメータであり、画像形成部１０５の用紙搬送に係る各部の駆動制御を行う図示しない駆動制御部から入力される。ＨＶＩ、ＶＶＩの入力に応じてテストパターン生成部２００がテストパターンを生成することにより、用紙の搬送、テストパターンの生成及びテストパターンに応じた画像形成部１０５による画像形成を同期させることができる。なお、ＨＶＣＮＴが用紙の主走査方向の位置に係るパラメータであり、ＶＶＣＮＴが副走査方向の位置に係るパラメータである。
ＨＶＣＮＴは、ＨＶＩのオン期間について主走査方向にカウントアップされるカウンタである。主走査方向に沿った１回の画像形成（１ライン分の画像形成）に係るＨＶＣＮＴのカウントアップ回数は、用紙の大きさと所定の関係を有する。つまり、ＨＶＣＮＴのカウントアップ回数に応じて、主走査方向について用紙のどの位置に対して画像形成部１０５による画像形成が行われるのかを管理することができる。
ＶＶＣＮＴは、VVIオン期間中HVIのオン回数を副走査方向にカウントアップされるカウンタである。副走査方向に沿った画像形成の回数（ライン数）は、用紙の大きさと所定の関係を有する。つまり、ＶＶＣＮＴのカウントアップ回数に応じて、副走査方向について用紙のどの位置に対して画像形成部１０５による画像形成が行われるのかを管理することができる。
より具体的に言えば、ＨＶＩはＨ−Ｖａｌｉｄの入力信号（Ｈ−Ｖａｌｉｄ  ＩＮＰＵＴ）、ＶＶＩはＶ−Ｖａｌｉｄの入力信号（Ｖ−Ｖａｌｉｄ  ＩＮＰＵＴ）を意味し、ＨＶＩ、ＶＶＩの入力が行われている期間が１ページ分の描画中における主走査方向、副走査方向の描画有効期間を示す。この両者の入力信号が在る期間（オン期間）において所定の時間間隔（インターバル）でそれぞれの入力信号を主走査方向、副走査方向に計数した値が、ＨＶＣＮＴ、ＶＶＣＮＴである。
【００３２】
ＣＰＵ２２０は、ＲＡＭ２３０に格納されたプログラムの内容に応じて、矩形画像を生成するための各種のパラメータをレジスタ２５０へ書き込む。本実施形態のＣＰＵ２２０は、８ビット命令を処理するマイクロプロセッサである。
ＲＡＭ２３０は、ＣＰＵ２２０により処理されるデータ（プログラム）を一時的に記憶する（図４参照）。ＲＡＭ２３０に記憶されるデータ（プログラム）は、テストパターン生成部２００により所定の領域内に複数の矩形画像を生成するためのプログラムである。
【００３３】
ＲＡＭ２３０へのプログラムの書き込みは、制御部１０１により行われる。制御部１０１は、用紙に生成する矩形画像の配置、形状（大きさ）及び色に応じたプログラムをＲＡＭ２３０に書き込む。さらに、制御部１０１は、ＣＰＵ２２０の起動制御をＣＰＵ２２０に対して実行する。ＣＰＵ２２０は、当該起動制御に応じてＲＡＭ２３０の読み出し、実行処理を開始する。
【００３４】
図４に、ＲＡＭ２３０に記憶されるプログラムの一例を示す。
本実施形態において、ＲＡＭ２３０に記憶されるプログラムは、複数の命令と各々の命令を構成する複数のパラメータを含む。図４に示す横一列に並んだコンマ（，）に区切られた複数の文字列が一つの命令及びその命令を構成する複数のパラメータに対応する。各命令及びパラメータは、８ビット単位のデータである。
【００３５】
図４では、プログラムを構成するマシン語のイメージと、当該プログラムをアセンブラ形式で記載した場合の記載例を併記している。以下の記載では、必要に応じてアセンブラ言語での記載を用いてプログラムの内容を説明する。なお、図４及び図４を用いて示す命令を処理するＣＰＵ２２０は、この用途に特化した専用のＣＰＵであり、他の命令形態による処理も行うことが可能な一般的なマイコンより簡素な回路にて実現することができる。
【００３６】
以下、プログラムの内容について、図５を参照して説明する。
図５に、図４のプログラムに基づいてテストパターン生成部２００により生成される１ページの生成内容を示す。
図５は用紙１ページの生成内容を示し、図５の横方向が主走査方向に対応し、図５の縦方向が副走査方向に対応する。画像形成部１０５は、主走査方向に沿って１ラインの順次画像を形成する。そして、用紙が副走査方向に沿って搬送されることにより、次のラインの主走査方向の画像形成が行われる。
【００３７】
横一行に示される一つの命令は、その先頭の８ビットのデータ（図４の最も左に位置する４文字）により、命令の種類を示す。具体的には、先頭の８ビットのデータは、Ｌｏａｄ命令、Ｊｕｍｐ命令、Ｗａｉｔ命令又はＨＡＬＴ命令のいずれかに対応するデータである。図４に示す例では、「0x10」のデータがＬｏａｄ命令を示し、「0xC0」のデータがＪｕｍｐ命令を示し、「0xD0」のデータがＷａｉｔ命令を示し、「0x00」のデータがＨＡＬＴ命令を示す。
【００３８】
Ｌｏａｄ命令は、パターン生成部２４０に矩形画像描画パラメータを指示する為の命令である。一つのＬｏａｄ命令及びそのオペランドが、一つの矩形画像を生成させる命令として機能する。後で示すように、待ち合わせ機能も備えたLoad命令兼Wait命令であって、パターン生成部２４０とで、描画パラメータの更新要求および更新完了を伴う、待ち合わせ機能も受け持っている。図４、図５に示す例では、「命令１」のＬｏａｄ命令が矩形Ａの生成命令として機能し、「命令２」のＬｏａｄ命令が矩形Ｂの生成命令として機能し、「命令４」のＬｏａｄ命令が矩形Ｃの生成命令として機能し、「命令６」のＬｏａｄ命令が矩形Ｄの生成命令として機能し、「命令７」のＬｏａｄ命令が矩形Ｅの生成命令として機能する。
【００３９】
Ｌｏａｄ命令は、そのオペランドとして、HStart、VStart、Hsize、Vsize、Colorを含む。このうち、HStart、VStart、Hsize、Vsizeは所定の領域（例えば用紙１ページ分の生成領域）における一方向（主走査方向）及び当該一方向に直行する他方向（副走査方向）に基づいて矩形の生成位置ならびに矩形の一方向及び他方向に沿った大きさを決定するパラメータであり、Colorは矩形の色を決定するパラメータである。
【００４０】
HStart、VStartは、生成される矩形の始点を示す。具体的には、HStartは矩形の主走査方向における始点を示し、VStartは副走査方向における始点を示す。
Hsize、Vsizeは、生成される矩形の大きさを示す。具体的には、Hsizeは、Hstarｔとの加算回路の出力で主走査方向における終点を示し、同様にVsizeはVstartとの加算により副走査方向の終点を示すことにより、始点と協働して矩形の大きさを定めることとなる。HStart、VStart、Hsize、Vsizeは所定の原点（例えば図５に示す原点Ｏ）に対する主走査方向、副走査方向に係る位置を座標により示す。
図５に示す矩形Ａの場合、原点Ｏに対し、HStart、VStartにより決定される始点は点Ｐであり、Hsize、Vsizeにより決定される終点は点Ｑである。
【００４１】
HStart、VStart、Hsize、Vsizeの値はそれぞれ、１６ビット（２バイト）のデータであり、二つの８ビットのデータを組み合わせた値により構成される。そして、二つの８ビットデータは、その一方が対応する１６ビットデータの上位バイトの値となり、他方が下位バイトの値となる。
例えば、図４に示す「命令１」のHStartAの値は、プログラムに含まれるα１、α２の二つの8ビットデータにより構成される。そして、α１がHStartAの上位バイトであり、α２がHStartの下位バイトである。同様に、VStartAはα３、α４により構成され、HsizeAはα５、α６により構成され、VsizeAはα７、α８により構成される。他の矩形（矩形Ｂ、Ｃ、Ｄ、Ｅ）と、その生成命令（命令２、４、６、７）も同様の関係を有する。
【００４２】
Colorは矩形の色を決定する。具体的には、ColorはＹ(Yellow)、Ｍ(Magenta)、Ｃ(Cyan)、Ｋ(black)の各色の濃度値を８ビットの値で示す。これによって、Ｙ、Ｍ、Ｃ、Ｋの各色の組み合わせにより構成される矩形の色を決定する。
【００４３】
Colorは、四つの8ビットのデータを組み合わせた値により構成される。そして、四つの８ビットのデータはそれぞれが、Ｙ、Ｍ、Ｃ、Ｋの各色の濃度値を８ビットの値で示す。
例えば、図４に示す「命令１」のColorAの値は、プログラムに含まれるα９〜α１２の四つの8ビットデータにより構成される。そして、α９がＹの濃度値を示し、α１０がＭの濃度値を示し、α１１がＣの濃度値を示し、α１２がＫの濃度値を示す。他の矩形（矩形Ｂ、Ｃ、Ｄ、Ｅ）と、その生成命令（命令２、４、６、７）も同様の関係を有する。
【００４４】
Ｊｕｍｐ命令は、所定の条件を満たすか否かの判定結果に基づいて次に実行する命令を分岐させる。本実施形態では、第１の条件の判定として、現在処理している副走査方向の位置と「副走査方向の所定の位置」との大小関係に基づいて、「副走査方向の所定の位置」まで生成を完了しているか否かを判定する。そして、生成を完了していない場合、「遷移先として指定されたアドレス」から始まる命令を行い、生成を完了している場合、当該Ｊｕｍｐ命令の次の命令を実行する。「副走査方向の所定の位置」及び「遷移先として指定されたアドレス」は、Ｊｕｍｐ命令に含まれるオペランドによって示される。
【００４５】
具体的には、図４に示すプログラムにおいて、Ｊｕｍｐ命令を示す「0xC0」の直後に続く二つの８ビットデータが「遷移先として指定されたアドレス」を示す。また、「遷移先として指定されたアドレス」の直後に続く二つの８ビットデータが「副走査方向の所定の位置」を示す。「遷移先として指定されたアドレス」、「副走査方向の所定の位置」は１６ビットの値であり、それぞれの値を構成する二つの８ビットデータの一方が上位バイトの値となり、他方が下位バイトの値となる。
【００４６】
例えば、「命令３」のＪｕｍｐ命令の場合、「0xC0」の直後に続く二つの８ビットデータである「00，00」が「遷移先として指定されたアドレス（”Label1”を付加された命令（命令１）の先頭アドレス）」を示す。また、「00，00」の直後に続く二つの８ビットデータである「V1H，V1L」が「副走査方向の所定の位置（Ｖ１）」を示す。
「命令３」のＪｕｍｐ命令の場合、ＣＰＵ２２０は、図５に示すＶ１の範囲の生成を完了したか否かについて、現在処理している副走査方向の位置（ＶＶＣＮＴ）と「副走査方向の所定の位置」の値（Ｖ１）との大小関係に基づいて判定する。ＶＶＣＮＴの値がＶ１を下回る場合、ＣＰＵ２２０は「遷移先として指定されたアドレス（”Label1”を付加された命令（命令１）の先頭アドレス）」から始まる命令即ち命令１を読み出す。一方、ＶＶＣＮＴの値がＶ１以上である場合、ＣＰＵ２２０は当該Ｊｕｍｐ命令（命令３）の次の命令（命令４）を読み出す。
他のＪｕｍｐ命令（「命令８」のＪｕｍｐ命令）と、そのパラメータ（「0xC0，00，46，V3H，V3L」）も同様の関係を有する。
【００４７】
Ｊｕｍｐ命令の判定は、現在処理している副走査方向の位置（ＶＶＣＮＴ）が変わるたびに行われる。つまり、主走査方向について１回の生成を完了するたび、Ｊｕｍｐ命令は実行される。また、Ｊｕｍｐ命令の前に複数のＬｏａｄ命令が連続する場合、１回の主走査方向の生成を行うにあたり、ＣＰＵ２２０は当該複数のＬｏａｄ命令を読み出して実行する。
【００４８】
例えば、図４に示す命令１（矩形Ａを生成するＬｏａｄ命令）、命令２（矩形Ｂを生成するＬｏａｄ命令）及び命令３（分岐先として命令１を指定されたＪｕｍｐ命令）を例にとって説明する。
ＣＰＵ２２０は、命令１、命令２を順次読み出して実行する。これにより、矩形Ａ、矩形Ｂを生成するための複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）が順次レジスタ２５０へ書き込まれる。パターン生成部２４０は、レジスタ２５０に保持されているパラメータを読み出し、当該パラメータの内容に応じた矩形画像（矩形Ａ、矩形Ｂ）を生成する。
【００４９】
ただしパターン生成部２４０は、１領域分の矩形描画パラメータによる主走査方向の描画範囲の期間中は、ＣＰＵ２２０からの後続のLoad命令による矩形描画パラメータの更新指示をうけても、主走査描画範囲の最終画素に至るまで描画パラメータを更新しない。ＣＰＵ２２０は、先行するLoad命令による描画パラメータに、パターン生成部２４０が更新を済ませない間は、後続命令の実行を一時停止し、プログラムカウンタのカウントアップを止める。パターン生成部が、先行するLoad命令による描画パラメータの更新指示を受理したタイミングで、一時停止状態を解除しプログラムカウンタのカウントアップと、後続命令をフェッチする動作を開始する。
この一時停止、続行を伴いながら、ＣＰＵ２２０は、Ｊｕｍｐ命令の前に連続する複数のＬｏａｄ命令を１回ずつ読み出して実行処理することで１回の主走査方向の生成に係る処理を完了する。その後、副走査方向についての条件分岐命令であるＪｕｍｐ命令を読み出して実行し、ＶＶＣＮＴの値がＶ１より小さいか否か判定する。ＶＶＣＮＴの値がＶ１より小さい場合、ＣＰＵ２２０は再度命令１を読み出して実行し、その後に連続するＬｏａｄ命令（命令２）を実行し、再度命令３を実行する。この繰り返し処理は、ＶＶＣＮＴの値がＶ１以上となるまで行われる。これによって、図５に示すＶ１の範囲において、二つのＬｏａｄ命令（命令１、命令２）に対応する二つの矩形（矩形Ａ、矩形Ｂ）が主走査方向に並んで生成されることとなる。
【００５０】
図６に、パターン生成部２４０の構成及びデータの入出力の一例を示す。
図６に示すように、パターン生成部２４０は、加算部３０１、３０２、減算部３１１、比較部３２１〜３２５、セレクタ（ＳＥＬ）３３１、論理積判定部３４１、更新タイミング制御部３５１を備えている。なお、図６に示すように、パターン生成部２４０は、走査位置カウンタ２１０から出力されたＨＶＣＮＴ及びＶＶＣＮＴの値や、レジスタ２５０に記憶されたHStart、VStart、Hsize、Vsize、Color等の各種パラメータを取得して出力（ＳＧＵＯＵＴ）を行う。
【００５１】
加算部３０１は、HStartとHsizeとを加算した値（加算値Ａ１）を減算部３１１及び比較部３２２に対して出力する。加算部３０２は、VStartとVsizeとを加算した値（加算値Ａ２）を比較部３２４に対して出力する。
減算部３１１は、加算部３０１によるHStartとHsizeとの加算値（加算値Ａ１）から１を減算した値（減算値Ｍ１）比較部３２５に対して出力する。
【００５２】
比較部３２１は、ＨＶＣＮＴと、HStartとを比較し、ＨＶＣＮＴの値がHStartの値以上（ＨＶＣＮＴ≧HStart）であるか否かを示す出力を論理積判定部３４１に対して行う。
比較部３２２は、ＨＶＣＮＴと、HStartとHsizeとの加算値（加算値Ａ１）とを比較し、ＨＶＣＮＴの値が加算値Ａ１未満（ＨＶＣＮＴ＜Ａ１）であるか否かを示す出力を論理積判定部３４１に対して行う。
比較部３２３は、ＶＶＣＮＴと、VStartとを比較し、ＶＶＣＮＴの値がVStartの値以上（ＶＶＣＮＴ≧VStart）であるか否かを示す出力を論理積判定部３４１に対して行う。
比較部３２４は、ＶＶＣＮＴと、VStartとVsizeとの加算値（加算値Ａ２）とを比較し、ＶＶＣＮＴの値が加算値Ａ２未満（ＶＶＣＮＴ＜Ａ２）であるか否かを示す出力を論理積判定部３４１に対して行う。
比較部３２５は、ＨＶＣＮＴと、加算部３０１によるHStartとHsizeとの加算値（加算値Ａ１）から１を減算した値（減算値Ｍ１）とを比較し、ＨＶＣＮＴの値が減算値Ｍ１と等しい（ＶＶＣＮＴ＝Ａ２）か否かを示す出力を更新タイミング制御部３５１に対して行う。
【００５３】
セレクタ３３１は、予め設定された色の無い出力（例えば、図６に示すall 0）又はColorの値に応じた出力のいずれかを行う（ＳＧＵＯＵＴ）。
論理積判定部３４１は、比較部３２１〜３２４による出力の内容を取得して、セレクタ３３１による出力（ＳＧＵＯＵＴ）を制御する。具体的には、論理積判定部３４１は、ＨＶＣＮＴの値がHStartの値以上（ＨＶＣＮＴ≧HStart）であり、ＨＶＣＮＴの値が加算値Ａ１未満（ＨＶＣＮＴ＜Ａ１）であり、ＶＶＣＮＴの値がVStartの値以上（ＶＶＣＮＴ≧VStart）であり、かつ、ＶＶＣＮＴの値が加算値Ａ２未満（ＶＶＣＮＴ＜Ａ２）である場合、Colorの値に応じた出力をセレクタ３３１に行わせる出力制御を行う。
即ち、論理積判定部３４１は、ＨＶＣＮＴが、HStart以上かつ加算値Ａ１未満であり、かつ、ＶＶＣＮＴが、VStart以上かつ加算値Ａ２未満である場合に、セレクタ３３１にColorの値に応じた出力（ＳＧＵＯＵＴ）をさせる。ここで、ＨＶＣＮＴが、HStart以上かつ加算値Ａ１未満であることは、ＨＶＣＮＴにより示される描画位置が、HStart及びHsizeにより示される矩形の主走査方向の範囲内であることを示す。また、ＶＶＣＮＴが、VStart以上かつ加算値Ａ２未満であることは、ＶＶＣＮＴにより示される描画位置が、VStart及びVsizeにより示される矩形の副走査方向の範囲内であることを示す。つまり、論理積判定部３４１は、ＨＶＣＮＴ及びＶＶＣＮＴが共に、HStart、VStart、Hsize、Vsizeにより示される矩形の描画範囲内である場合に、セレクタ３３１にColorの値に応じた出力（ＳＧＵＯＵＴ）をさせる。これによって、矩形の色（Color）に応じた矩形の描画出力が行われる。
一方、論理積判定部３４１は、ＨＶＣＮＴの値がHStartの値以上（ＨＶＣＮＴ≧HStart）でないか、ＨＶＣＮＴの値が加算値Ａ１未満（ＨＶＣＮＴ＜Ａ１）でないか、ＶＶＣＮＴの値がVStartの値以上（ＶＶＣＮＴ≧VStart）でないか、又は、ＶＶＣＮＴの値が加算値Ａ２未満（ＶＶＣＮＴ＜Ａ２）でない場合、セレクタ３３１に、Colorを構成するＹ、Ｍ、Ｃ、Ｋの全ての色について出力を行わない（例えば、図６に示すall 0）内容の出力（ＳＧＵＯＵＴ）をさせる。つまり、ＨＶＣＮＴ及びＶＶＣＮＴにより示される描画位置が、HStart、VStart、Hsize、Vsizeにより示される矩形の描画範囲内でない場合、セレクタ３３１に空出力をさせる。これによって、ＨＶＣＮＴ及びＶＶＣＮＴが共に、HStart、VStart、Hsize、Vsizeにより示される矩形の描画範囲内である間のみ、矩形の色（Color）に応じた矩形の描画出力が行われる。
【００５４】
更新タイミング制御部３５１は、比較部３２５からの出力と、レジスタ２５０の更新フラグ（FLAG_UPDATE）の値に基づいて、パターン生成部２４０に保持されたHStart、VStart、Hsize、Vsize及びColorの値を更新させる制御を行う。その詳細は後述するが、更新タイミング制御部３５１は、例えば、各ＬＯＡＤ命令に応じたHStart、VStart、Hsize、Vsize及びColorの値の切替制御を行う。つまり、更新タイミング制御部３５１により各ＬＯＡＤ命令に応じたHStart、VStart、Hsize、Vsize及びColorの値の切替制御が行われることで、一のパターン画像（例えば、矩形画像）を生成するパターン生成部２４０は、複数のＬＯＡＤ命令に応じた複数のパターン画像を切り替えながら生成することができる。
【００５５】
このように１矩形領域の描画パラメータによって１描画領域を描画するに足りるだけの回路規模のパターン生成部２４０においても、その描画パラメータを、外部より、更新させる機能と、変更指示を受け付ける機能を備えることにより、複数領域のパターンを描くことができる。副走査方向で所定位置に到達するまでの期間、ループさせる条件分岐命令と、待合わせ機能を持たせたLOAD命令とによる簡易なプログラムで、複数領域のパターンを描くことができる。パターン生成部２４０は、主走査方向の矩形終端で、一度に複数バイト分の情報からなる描画パラメータを一度に更新する機能をもつことで矩形描画領域が隣接する場合においても、遅滞なく描画パラメータの更新が行われる。パターン生成部が矩形描画中にプログラムが実行されることと、その描画パラメータを、CPU側が控えておくこととにより、描画パラメータを一度に更新できることから、ことさら描画範囲について隙間を設けたりする必要がなくなり描画パラメータ全部を転送するプログラム実行時間に関るタイムラグを気にせずに済む点でCPU側のプログラミングの負担も軽くなる。
その後、ＶＶＣＮＴの値がＶ１以上となった場合、ＣＰＵ２２０は命令４を読み出して実行する。これによって、Ｖ１より後の領域において、命令４に対応する矩形Ｃの生成が行われる。
【００５６】
上記は、命令１〜３のＬｏａｄ命令及びＪｕｍｐ命令について例示しているが、命令６〜８ののＬｏａｄ命令及びＪｕｍｐ命令についても同様である。
なお、Ｌｏａｄ命令に含まれる矩形を生成するための複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）に対応する主走査位置及び副走査位置に至らない間も、パターン生成部２４０は命令１、命令２に応じたパラメータの読み出しを逐次行うが、この間、パターン生成部２４０は矩形画像の生成を行わない。つまり、矩形のパラメータ（HStart、VStart、Hsize、Vsize、Color）に対応しない範囲、すなわち、主走査方向には描画範囲にあっても、副走査位置が描画範囲にない場合では空ループ処理となる。
また、図４では、Ｊｕｍｐ命令の前に連続するＬｏａｄ命令の数が二つであるため、図５において主走査方向に並んでいる矩形の数も二つであるが、Ｌｏａｄ命令の数即ち主走査方向に並べて生成する矩形の数は三つ以上にすることもできる。
また、ここで、示すように、矩形A矩形C矩形Ｄは各色の出力濃度値を等しい矩形として、プログラム上では、副走査範囲を等しくして複数の矩形を主走査方向に並べて描画しつつ、見た目上は、他と副走査サイズの異なる大きさの１個の矩形として描くことができる。
これにより、任意サイズの矩形領域を、任意の配置においた図形も、副走査方向に細分することにより、副走査幅の等しい矩形を、主走査方向に任意個、並べた配置として表現できることとなり、結果的に、任意の寸法の矩形を任意の位置に配置して描画することができる。矩形に分割することができれば、L字型や凸凹状の図形も描くことができる。プログラム規模が増大してしまうが、三角形を描くことをも、副走査１ライン毎に、主走査方向の幅を変化させることで可能となる。例えば  ｎライン目の副走査位置では、高さ：1ライン × 主走査幅n画素の 矩形の並びとしてLoad命令を並べることにより、三角形を描画するプログラムを記述することもできる。
【００５７】
Ｗａｉｔ命令は、所定の条件を満たすか否かの判定結果に基づいて当該Ｗａｉｔ命令の次の命令へ移行するか否か分岐させる。本実施形態では、第１の条件の判定として、現在処理している副走査方向の位置と「副走査方向の所定の位置」との大小関係に基づいて、「副走査方向の所定の位置」まで生成を完了しているか否かを判定する。そして、生成を完了していない場合、当該Ｗａｉｔ命令の次の命令へ移行せず待機し、生成を完了している場合、当該Ｗａｉｔ命令の次の命令へ移行する。「副走査方向の所定の位置」は、Ｗａｉｔ命令に含まれるパラメータによって示される。
【００５８】
具体的には、図４に示すプログラムにおいて、Ｗａｉｔ命令を示す「0xD0」の直後に続く二つの８ビットデータが「副走査方向の所定の位置」を示す。「副走査方向の所定の位置」は１６ビットの値であり、それぞれの値を構成する二つの８ビットデータの一方が「副走査方向の所定の位置」の上位バイトの値となり、他方が下位バイトの値となる。
【００５９】
例えば、「命令５」のＷａｉｔ命令の場合、「0xD0」の直後に続く二つの８ビットデータである「V2H，V2L」が「副走査方向の所定の位置（Ｖ２）」を示す。
「命令５」のＷａｉｔ命令の場合、ＣＰＵ２２０は、図５に示すＶ２の範囲の生成を完了したか否かについて、現在処理している副走査方向の位置（ＶＶＣＮＴ）と「副走査方向の所定の位置」の値（Ｖ２）との大小関係に基づいて判定する。ＶＶＣＮＴの値がＶ２を下回る場合、ＣＰＵ２２０は当該Ｗａｉｔ命令（命令５）の次の命令（命令６）へ移行せず待機し、ＶＶＣＮＴの値がＶ２以上である場合、次の命令を読み出す。
【００６０】
Ｗａｉｔ命令による待機中は、ＣＰＵ２２０は後続のプログラムを実行しない。
図４、図５に示す例の場合、ＶＶＣＮＴの値がＶ１以上かつＶ２より小さい間、パターン生成部２４０により命令４による生成が継続され、命令４に対応する矩形Ｃの生成が行われる。
【００６１】
ＨＡＬＴ命令は、プログラムの実行を停止させる。ＨＡＬＴ命令を読み込んだＣＰＵ２２０は、その後、制御部１０１から新たな命令を受けるまでＲＡＭ２３０に対するアクセスを行わない。
ＨＡＬＴ命令によるプログラムの実行停止中は、ＣＰＵ２２０の処理及びパターン生成部２４０による生成処理は行われない。復帰は制御部からの指示による。
【００６２】
パターン生成部２４０は、レジスタ２５０に保持されているパラメータを読み出し、当該パラメータの内容に応じた矩形画像を生成する。
具体的には、パターン生成部２４０は、走査位置カウンタ２１０から入力される主走査方向及び副走査方向に係る各種の値（ＨＶＩ、ＶＶＩ、ＨＶＣＮＴ、ＶＶＣＮＴ）と、レジスタ２５０に書き込まれた複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）とに基づいて、単一の描画範囲の矩形を描画するための出力（ＳＧＵＯＵＴ）を行うテストパターン信号発生回路（Signal Generator Unit：ＳＧＵ）である。
ここで、パターン生成部２４０は、単一の描画範囲のパターン画像を生成する回路である。
また、所定の領域内に複数の矩形を描画するためのプログラムを記憶するＲＡＭ２３０と、ＲＡＭ２３０に格納されたプログラムに含まれるＬｏａｄ命令に基づいてレジスタ２５０に矩形を描画するための複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）を書き込むＣＰＵ２２０とは協働により、パターン生成部２４０にパターン画像を生成させる命令を実行する。
また、ＲＡＭ２３０は、複数のＬｏａｄ命令を含むプログラムを記憶することで、複数回の矩形生成を行うためのデータを記憶する。
また、ＣＰＵ２２０は、ＲＡＭ２３０に記憶されたデータ（プログラム）に基づいて矩形を生成するための命令を構成するパラメータ（HStart、VStart、Hsize、Vsize、Color）を生成する。
【００６３】
また、パターン生成部２４０は、レジスタ２５０に保持されているパラメータの読み出しを完了した後、レジスタ２５０の更新フラグ（FLAG_UPDATE）の値を変更する。更新フラグ（FLAG_UPDATE）に係る処理については後述する。
【００６４】
レジスタ２５０は、ＣＰＵ２２０により書き込まれる各種のパラメータを書き換え可能に記憶、保持する。CPUに付属する専用の値を格納するレジスタ群である。
図３に示すように、レジスタ２５０は、矩形生成パラメータ格納領域２５１、アドレス(ADDRESS)格納領域２５２、プログラムカウンタ増分(PC_INC)格納領域２５３、遷移状態(CPU_STATUS)格納領域２５４、更新フラグ（FLAG_UPDATE）格納領域２５５、戻り番地(JMPADR)格納領域２５６、副走査方向待ち位置(VV_WAIT)格納領域２５７等を有する。
ＣＰＵ２２０やパターン生成部２４０が矩形生成パラメータ、ADDRESS、PC_INC、CPU_STATUS、VV_WAIT、JMPADRの値を設定、変更する処理を行った場合、その処理後の値はそれぞれのパラメータに対応するレジスタ２５０の格納領域に保持される。
【００６５】
矩形生成パラメータ格納領域２５１は、矩形画像を構成するための複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）を格納する。
ここで、矩形生成パラメータ格納領域２５１は、ＣＰＵ２２０により生成されたパラメータ（HStart、VStart、Hsize、Vsize、Color）を記憶する。
本実施形態の矩形生成パラメータ格納領域２５１は、単一の描画範囲の矩形画像を構成するためのパラメータを格納し、既に複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）を格納している矩形生成パラメータ格納領域２５１に対してさらにＣＰＵ２２０によりこれらのパラメータの格納が行われた場合、パラメータが上書きされて更新されることとなる。
【００６６】
アドレス(ADDRESS)格納領域２５２は、ＣＰＵ２２０により読み出されるプログラムのＲＡＭ２３０におけるメモリアドレス（ADDRESS）を格納するプログラムカウンタである。。ADDRESSの初期値は０又は制御部１０１によるＣＰＵ２１０の起動処理に伴い設定される所定の値である。
プログラムカウンタの増分(PC_INC)格納領域２５３は、プログラムカウンタを意味するアドレス(ADDRESS)格納領域２５２の値の加算値(PC_INC)を格納する。PC_INCの値は、通常の場合１の値を取り、ＣＰＵ２２０がプログラム続行を休止または復帰した場合に変更後の値（０又は１）を取る。
ＣＰＵ２２０は、PC_INCの値に応じたADDRESSのカウントアップを行う。
【００６７】
遷移状態(CPU_STATUS)格納領域２５４は、ＣＰＵ２２０の状態を示すパラメータ(CPU_STATUS)を格納する。
【００６８】
図７に、CPU_STATUSの状態遷移パターンの一例を示す。
CPU_STATUSに格納されるＣＰＵ２２０の状態として、上述のプログラムの各種命令の実行状態（ＬＯＡＤ、ＪＵＭＰ、ＷＡＩＴ、ＨＡＬＴ）がある。
また、これらの命令に対応する実行状態の他に、CPU_STATUSに格納されるＣＰＵ２２０の状態として、ＲＥＳＥＴ、ＦＥＴＣＨ、ＥＲＲＯＲがある。ＲＥＳＥＴは、初期化状態を示す。制御部１０１から起動命令を受ける前のＣＰＵ２２０の状態は、ＲＥＳＥＴである。制御部から起動の指示を受けると、CPU_STATUSは、ＲＥＳＥＴからR1を経て、ここでR１ではPC_INC=1となり、その後ＦＥＴＣＨとなる。ＦＥＴＣＨは、その後に別の命令に対応する状態へ遷移することを示す。ＥＲＲＯＲは、他のいずれの状態でもなく、プログラムに規定された状態でもないエラー状態であることを示す。ＨＡＬＴ又はＥＲＲＯＲとなった後は、制御部１０１からの処理によりCPU_STATUSがＲＥＳＥＴとなる。
また、上述のプログラムの各種命令の実行状態のうち、Ｌｏａｄ命令、Ｊｕｍｐ命令、Ｗａｉｔ命令に対応する状態は、各命令に含まれる処理内容に応じて細分化された状態を示す。具体的には、Ｌｏａｄ命令に含まれる状態として、ＬＯＡＤ及びＬ１〜Ｌ１３の計１４種類の状態がある。また、Ｊｕｍｐ命令に含まれる状態として、ＪＵＭＰ及びＪ１〜Ｊ４の計５種類の状態がある。また、Ｗａｉｔ命令に含まれる状態として、ＷＡＩＴ、Ｗ１及びＷ２の計３種類の状態がある。図７に示すように、各命令に対応する状態は、その命令の内容を示す状態の後、番号順に遷移する。例えば、Ｌｏａｄ命令に対応する状態の場合、ＬＯＡＤ、Ｌ１、Ｌ２…の順でCPU_STATUSが遷移し、L13まで遷移した後、ＦＥＴＣＨへ遷移する。Ｊｕｍｐ命令、Ｗａｉｔ命令についても同様である。
【００６９】
各命令に対応する状態の遷移は、ＣＰＵ２２０が処理している内容の遷移に対応する。
以下、図８を用いて、レジスタ２５０に格納される各種のパラメータと、ＣＰＵ２２０の処理内容との対応関係について説明する。
【００７０】
まず、制御部１０１からＲＡＭ２３０へプログラムが書き込まれ、起動の指示がＣＰＵ２２０へ入力される。これにより図８に示す負論理のリセット信号に相当する「CPU CONTROL」が立ち上がり、ＣＰＵ２２０が処理を開始することとなる。また、この後、PC_INCの値に応じてADDRESSの値がカウントアップされる。
【００７１】
起動後、ＣＰＵ２２０は、ＲＡＭ２３０の先頭アドレス（0）を読み出し、読み出した内容に応じた処理を行う。
例えば、図４に示すプログラムの場合、先頭アドレスにはＬｏａｄ命令を示す「0x10」が書き込まれているので、当該「0x10」を読み出すことにより、ＣＰＵ２２０は、以降の処理としてＬｏａｄ命令を実行する。具体的には、ＣＰＵ２２０は、ＲＡＭ２３０のその後のアドレスに書き込まれているα１〜α１２の値に基づいて単一の描画範囲の矩形画像を構成するための複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）を決定し、レジスタ２５０の矩形生成パラメータ格納領域２５１へ書き込む処理を行う。
【００７２】
以降、ＣＰＵ２２０は、ADDRESSの値に基づいてＲＡＭ２３０のアドレスを指定し、指定したアドレスに書き込まれているプログラムの内容を読み出す。そして、読み出した内容に応じた値を、レジスタ２５０へ格納する。
ここで、ＣＰＵ２２０は、ADDRESSの値に基づいてＲＡＭ２３０のアドレスを指定する処理順序を経ることから、図８に示すように、ADDRESSの値と、ＣＰＵ２２０によるＲＡＭ２３０の読み出しタイミングとは１クロック分のずれを生じる。また、ＣＰＵ２２０は、ＲＡＭ２３０からプログラムを読み出した、その内容に応じた値をレジスタ２５０へ格納する処理順序を経ることから、ＣＰＵ２２０によるＲＡＭ２３０の読み出しタイミングと、当該内容に対応する値のレジスタ２５０の格納のタイミングとは１クロック分のずれを生じる。
【００７３】
図４に示すプログラム及び図８の例示に基づいて説明をすると、ADDRESSの値が０である１クロック後、ＣＰＵ２２０がADDRESS(０)の値に対応するＲＡＭ２３０のアドレス（0000）の内容である「0x10」を読み出し、Ｌｏａｄ命令を開始する。ここで、ＣＰＵ２２０は、レジスタ２５０の遷移状態(CPU_STATUS)格納領域２５４に「ＬＯＡＤ」を示す値を格納する。図８では図示しないが、ＣＰＵ２２０が「0x10」を読み出したクロックの１クロック後、CPU_STATUSに「ＬＯＡＤ」を示す値が格納される。
また、ADDRESSの値が１となった１クロック後の時点でCPU_STATUSは「ＬＯＡＤ」である。このとき、ＣＰＵ２２０がADDRESS(１)の値に対応するＲＡＭ２３０のアドレス（0001）の内容である「α１」を読み出し、HStartの上位バイトの値とてレジスタ２５０の矩形生成パラメータ格納領域２５１へ格納する。また、ＣＰＵ２２０は、CPU_STATUSを「Ｌ１」とする。ＣＰＵ２２０が「α１」を読み出したクロックの１クロック後、「α１」の値がHStartの上位バイトの値としてレジスタ２５０の矩形生成パラメータ格納領域２５１に格納されると共に、CPU_STATUSに「Ｌ１」を示す値が格納される。
以降、同様に、ADDRESSの値と、ＣＰＵ２２０の読み出し処理と、レジスタ２５０への書き込み処理と、はそれぞれ１クロックずつずれて進行する。
【００７４】
以下、Ｌｏａｄ命令中のＣＰＵ２２０の処理について記載する。ここでは、命令１のＬｏａｄ命令に含まれるα１〜α１２を例として記載するが、他のＬｏａｄ命令でも同様である。ＣＰＵ２２０は、プログラムカウンタであるADDRESSの値に応じて順次読み出すＲＡＭ２３０のアドレスを進める。
CPU_STATUSが「Ｌ１」であるとき、ＣＰＵ２２０が「α２」を読み出してHStartの下位バイトの値として記憶し、CPU_STATUSを「Ｌ２」とする。
CPU_STATUSが「Ｌ２」であるとき、ＣＰＵ２２０が「α３」を読み出してVStartの上位バイトの値として記憶、CPU_STATUSを「Ｌ３」とする。
CPU_STATUSが「Ｌ３」であるとき、ＣＰＵ２２０が「α４」を読み出してVStartの下位バイトの値として記憶し、CPU_STATUSを「Ｌ４」とする。
CPU_STATUSが「Ｌ４」であるとき、ＣＰＵ２２０が「α５」を読み出してHsizeの上位バイトの値として記憶し、CPU_STATUSを「Ｌ５」とする。
CPU_STATUSが「Ｌ５」であるとき、ＣＰＵ２２０が「α６」を読み出してHsizeの下位バイトの値として記憶し、CPU_STATUSを「Ｌ６」とする。
CPU_STATUSが「Ｌ６」であるとき、ＣＰＵ２２０が「α７」を読み出してVsizeの上位バイトの値として記憶し、CPU_STATUSを「Ｌ７」とする。
CPU_STATUSが「Ｌ７」であるとき、ＣＰＵ２２０が「α８」を読み出してVsizeの下位バイトの値として記憶し、CPU_STATUSを「Ｌ８」とする。
CPU_STATUSが「Ｌ８」であるとき、ＣＰＵ２２０が「α９」を読み出してColorに含まれるＹの濃度値として記憶し、CPU_STATUSを「Ｌ９」とする。
CPU_STATUSが「Ｌ９」であるとき、ＣＰＵ２２０が「α１０」を読み出してColorに含まれるＭの濃度値として記憶し、CPU_STATUSを「Ｌ１０」とする。
【００７５】
CPU_STATUSが「Ｌ１０」であるとき、ＣＰＵ２２０が「α１１」を読み出してColorに含まれるＣの濃度値として記憶し、CPU_STATUSを「Ｌ１１」とする。さらに、このとき、ＣＰＵ２２０は、プログラムカウンタ増分(PC_INC)格納領域２５３の値(PC_INC)を０に設定する。これによって、その１クロック後にPC_INCの値が０となる。つまり、それまでADDRESSに加算されていたPC_INCの値（１）が０になることによってADDRESSの値が変化しなくなり、ADDRESSの値によるカウントアップが一時停止する。これは１クロック後に起こる。
【００７６】
CPU_STATUSが「Ｌ１１」であるとき、ＣＰＵ２２０が「α１２」を読み出してColorに含まれるＫの濃度値として記憶し、CPU_STATUSを「Ｌ１２」とする。さらに、このとき、ＣＰＵ２２０は、レジスタ２５０の更新フラグ（FLAG_UPDATE）格納領域２５５に１をセットする。
【００７７】
更新フラグ（FLAG_UPDATE）格納領域２５５は、更新フラグ（FLAG_UPDATE）を格納する。FLAG_UPDATEは、ＣＰＵ２２０がパターン生成部２４０に対してレジスタ２５０の矩形生成パラメータ格納領域２５１の読み出しを要求することを示す値であると共に、パターン生成部２４０が矩形生成パラメータ格納領域２５１に保持されているパラメータの読み出しを完了したか否かを示すためのフラグである。
FLAG_UPDATEの値は、所定の二値（例えば１又は０）を取る。本実施形態では、FLAG_UPDATEの値が二値の一方の値（例えば１）である場合、ＣＰＵ２２０がレジスタ２５０の矩形生成パラメータ格納領域２５１に、一つのＬｏａｄ命令に対応する、一つの矩形を構成する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の格納処理を完了し、パターン生成部２４０に対してレジスタ２５０の矩形生成パラメータ格納領域２５１の読み出しを要求していることを示す。また、FLAG_UPDATEの値が二値の他方の値（例えば０）である場合、その時点ではＣＰＵ２２０が矩形生成パラメータ格納領域２５１の読み出しを要求していないことを示す。本実施形態では、FLAG_UPDATEの初期値は０である。
【００７８】
パターン生成部２４０は、矩形の生成を開始していない場合又は直前に読み出した矩形の生成の一主走査分の描画完了の最終画素に達した場合であって、FLAG_UPDATEの値が１である場合、レジスタ２５０の矩形生成パラメータ格納領域２５１から一つの矩形を構成する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）を読み出す。この読み出しは、パターン生成部の描画パラメータを納めたレジスタ群を構成するフリップフロップに対して、画像生成パラメータ格納領域２５１からの出力を入力値として、フリップフロップの出力値を更新させるトリガを与えることにより１クロックで実現される。後に示すように、矩形描画領域が隣接する場合においても、これにより１画素の遅滞なく、描画パラメータの更新が行われ、主走査方向に隣接する後続のパターン画像を描画することができる。
一つの矩形を構成する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の読み出しを完了すると、走査位置カウンタ２１０から入力された走査位置に基づいて、読み出した矩形の走査位置に係るパラメータ（HStart、VStart、Hsize、Vsize）に対応する位置で当該矩形の色（Color）を有する矩形画像を生成する。これによって、単一の描画範囲のＬｏａｄ命令に応じた矩形画像が用紙に生成される。
また、パターン生成部２４０は、一つの矩形を構成する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の更新を完了すると、FLAG_UPDATEの値を０とする。つまり、パターン生成部２４０は、レジスタ２５０の矩形生成パラメータ格納領域２５１に格納された新たな命令に対応する矩形のパラメータの読み出しを完了した後、ＣＰＵ２２０により１を設定されたFLAG_UPDATEの値を元の値に戻す。その後、再度Ｌｏａｄ命令の読み出しに伴いFLAG_UPDATEの値が１となると、パターン生成部２４０は、その直前に読み出したパラメータに対応する矩形の一主走査分の画像生成を完了する時点で、再度、矩形生成パラメータ格納領域２５１から一つの矩形を構成する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）を読み出し、読み出したパラメータに対応する矩形の生成を行う。これによって、複数のＬｏａｄ命令に対応する複数の種類の矩形画像が生成される。
【００７９】
ここで、FLAG_UPDATEの値に応じた一つの矩形を構成する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の更新の制御について、図６を用いて説明する。
パターン生成部２４０の更新タイミング制御部３５１は、比較部３２５からの出力と、レジスタ２５０の更新フラグ（FLAG_UPDATE）の値に基づいて、パターン生成部２４０に保持されたHStart、VStart、Hsize、Vsize及びColorの値を更新させる制御を行う。具体的には、比較部３２５により、ＨＶＣＮＴの値が加算部３０１によるHStartとHsizeとの加算値（加算値Ａ１）から１を減算した値（減算値Ｍ１）と等しい（ＶＶＣＮＴ＝Ａ２）ことを示す出力がなされ、かつ、FLAG_UPDATEの値が１である場合、更新タイミング制御部３５１は、パターン生成部２４０に保持されたHStart、VStart、Hsize、Vsize及びColorの値を、そのときレジスタ２５０の矩形生成パラメータ格納領域２５１に格納された新たな命令に対応する矩形のパラメータ（HStart、VStart、Hsize、Vsize及びColor）により更新させ（図６のＲＥＡＤ  ＴＩＭＩＮＧ）、その後、FLAG_UPDATEの値を0とする（図６のＲＥＳＥＴ）。ここで、ＨＶＣＮＴの値が加算部３０１によるHStartとHsizeとの加算値（加算値Ａ１）から１を減算した値（減算値Ｍ１）と等しいことは、主走査方向について、そのときパターン生成部２４０に保持されたHStart、VStart、Hsize、Vsize及びColorの値に応じたパターン画像の描画が終了する１クロック前であることを示す。この時点でFLAG_UPDATEの値が１である即ち次のパターン画像の生成命令が控えていることが示されている場合、更新タイミング制御部３５１は、次のパターン画像を生成するための矩形のパラメータ（HStart、VStart、Hsize、Vsize及びColor）をパターン生成部２４０に取得させる制御を行う。そして、FLAG_UPDATEの値を0とすることにより、ＣＰＵ２２０の処理の一時停止を解除させる。
これによって、その1クロック後、即ちＨＶＣＮＴの値が加算部３０１によるHStartとHsizeとの加算値（加算値Ａ１）と等しくなるタイミングで、パターン生成部２４０は、次のパターン画像を生成するための矩形のパラメータ（HStart、VStart、Hsize、Vsize及びColor）の取得を完了することができる。そしてその後、パターン生成部２４０は、取得されたパラメータに応じたパターン画像の生成を行うことができる。
【００８０】
このように、ＣＰＵ２２０は、パターン生成部２４０に格納されている単一の描画範囲のパターン画像の生成に対応する描画パラメータを、別のパターン画像の生成に対応する描画パラメータと切り替えるためのフラグ値（FLAG_UPDATEの１の値）を設定する。
また、更新フラグ格納領域２５５は、フラグ値（FLAG_UPDATE）を記憶する。
また、パターン生成部２４０は、読出しを完了した描画パラメータに基く一主走査分の最終画素描画位置でフラグ値（FLAG_UPDATE）をリセットする。そして、ＣＰＵ２２０は、フラグ値（FLAG_UPDATE）のリセットが入るたびにＣＰＵ２２０自身に後続の命令を続行させる。
【００８１】
CPU_STATUSが「Ｌ１２」であるとき、ＣＰＵ２２０は、FLAG_UPDATEの値が0になるまで待機する。このとき、上述のように、PC_INCの値は0であるので、図８に示すように、ADDRESSの値のカウントアップは停止している。FLAG_UPDATEの値が0になると、ＣＰＵ２２０は、PC_INCの値を１に戻し、CPU_STATUSを「Ｌ１３」とする。つまり、ＣＰＵ２２０は、FLAG_UPDATEの値を１に設定してパターン生成部２４０に命令の更新要求即ち複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の更新の要求をした後、パターン生成部２４０が更新された複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の読み出しを完了してFLAG_UPDATEの値を０に戻すまで、以後の処理を行わずに待機する。
CPU_STATUSが「Ｌ１３」であるとき、ＣＰＵ２２０は、CPU_STATUSを「ＦＥＴＣＨ」とする。なお、CPU_STATUSが「Ｌ１２」となったとき、PC_INCの値は１に戻るが、PC_INCの値が１に戻ったことによるADDRESSのカウントアップ再開はさらにその1クロック後となる。
【００８２】
CPU_STATUSが「ＦＥＴＣＨ」であるとき、ＣＰＵ２２０は、ADDRESSの値に応じて新たな命令を読み出す。例えば、図４に示す命令１のＬｏａｄ命令の読み出しを完了した後に迎えた「ＦＥＴＣＨ」の場合、図８に示すように、カウントアップが再開されたADDRESSの値（14）に応じたＲＡＭ２３０のアドレス（0014）の内容を読み出す。これによって、命令２のＬｏａｄ命令の先頭（「0x10」）が読み出されるので、ＣＰＵ２２０は、命令２のＬｏａｄ命令を開始する。以後、上述の命令１のＬｏａｄ命令と同様の処理が繰り返される。
図４に示す命令１のＬｏａｄ命令の読み出しを完了した後に迎えた「ＦＥＴＣＨ」の場合、その後に読み出されるＲＡＭ２３０の内容は命令３のＪｕｍｐ命令の先頭（「0xC0」）であるので、ＣＰＵ２２０は、CPU_STATUSを「ＪＵＭＰ」とし、命令３のＪｕｍｐ命令を開始する。
【００８３】
CPU_STATUSが「ＪＵＭＰ」であるとき、ＣＰＵ２２０がＲＡＭ２３０における「0xC0」の直後のアドレスの値（例えば命令３の「0xC0」の直後の「00」）を読み出してレジスタ２５０の戻り番地(JMPADR)格納領域２５６の値(JMPADR)の上位バイトとして格納し、CPU_STATUSを「Ｊ１」とする。
CPU_STATUSが「Ｊ１」であるとき、ＣＰＵ２２０がＲＡＭ２３０における「0xC0」の２つ後のアドレスの値（例えば命令３の「0xC0」の２つ後の「00」）を読み出してJMPADRの下位バイトとして格納し、CPU_STATUSを「Ｊ２」とする。
【００８４】
戻り番地(JMPADR)格納領域２５６は、戻り番地(JMPADR)を格納する。JUMPADRは、Ｊｕｍｐ命令における「遷移先として指定されたアドレス」を示す。
【００８５】
CPU_STATUSが「Ｊ２」であるとき、ＣＰＵ２２０がＲＡＭ２３０における「0xC0」の３つ後のアドレスの値（例えば命令３の「0xC0」の３つ後の「Ｖ１Ｈ」）を読み出してレジスタ２５０の副走査方向待ち位置(VV_WAIT)格納領域２５７の値(VV_WAIT) の上位バイトとして格納し、CPU_STATUSを「Ｊ３」とする。
副走査方向待ち位置(VV_WAIT)格納領域２５７は、副走査方向待ち位置(VV_WAIT)を格納する。VV_WAITは、「副走査方向の所定の位置」を示す。
【００８６】
CPU_STATUSが「Ｊ３」であるとき、ＣＰＵ２２０は、ＲＡＭ２３０における「0xC0」の４つ後のアドレスの値（例えば命令３の「0xC0」の４つ後の「Ｖ１Ｌ」）を読み出して先に格納されたVV_WAITの上位バイトと合わせて副走査方向待ち位置(VV_WAIT)を特定し、走査位置カウンタ２１０から入力された副走査方向の位置を示す値(ＶＶＣＮＴ)と比較する。ＶＶＣＮＴの値がVV_WAITの値を下回る場合、ＣＰＵ２２０はJMPADRに格納された値をADDRESSに設定し、CPU_STATUSを「Ｊ４」とする。一方、ＶＶＣＮＴの値がVV_WAITの値以上である場合、ＣＰＵ２２０は、ADDRESSの値を変更する処理を行わずにCPU_STATUSを「Ｊ４」とする。
CPU_STATUSが「Ｊ４」であるとき、ＣＰＵ２２０が、CPU_STATUSを「ＦＥＴＣＨ」とする。
Ｊｕｍｐ命令の完了によりCPU_STATUSが「ＦＥＴＣＨ」となったとき、上述と同様、ＣＰＵ２２０は、ADDRESSの値に応じて新たな命令を読み出す。
【００８７】
例えば、図４の命令３のＪｕｍｐ命令の場合、JMPADRに「0000」即ち命令１の先頭アドレスが設定される。また、VV_WAITに「Ｖ１Ｈ」、「Ｖ１Ｌ」によって構成される値（Ｖ１）が設定される。そして、ＣＰＵ２２０は、走査位置カウンタ２１０から入力されたＶＶＣＮＴの値即ち現在処理している副走査方向の位置と、VV_WAITの値（Ｖ１）とを比較し、ＶＶＣＮＴの値がVV_WAITの値（Ｖ１）を下回る場合、ＣＰＵ２２０はJMPADRに格納された値（0000）をADDRESSに設定する。
よって、ＶＶＣＮＴの値がVV_WAITの値（Ｖ１）を下回る間、ＣＰＵ２２０は命令３のＪｕｍｐ命令の完了後、命令１のＬｏａｄ命令を再度読み出す。つまり、ＶＶＣＮＴの値がVV_WAITの値（Ｖ１）を下回る間、命令１、命令２、命令３、命令１…のように、命令１〜３の処理がループする。
【００８８】
図９を用いて、Ｊｕｍｐ命令による命令のループについて説明する。
なお、図９及び後述する図１０において、「ＨＶ」は画像生成（画像形成）の方向が主走査方向に沿って進行しているか副走査方向に沿って進行しているかを示す。ＨＶのシグナルが立ち上がっているときは主走査方向に沿って画像生成（画像形成）が進行し、立ち下がっているときは副走査方向に沿って画像生成（画像形成）が進行即ち主走査方向に沿った１ラインの画像生成（画像形成）が終了してラインが切り替わっていることを示す。
【００８９】
ＣＰＵ２２０は、ＶＶＣＮＴの値がVV_WAITの値（Ｖ１）の値以上となるまで、命令１〜３の処理を繰り返す。これによって、副走査方向についてＶ１の位置までの生成を完了するまで、更新フラグ（FLAG_UPDATE）が０になるたびに命令１のＬｏａｄ命令に対応する矩形（矩形Ａ）の複数のパラメータと命令２のＬｏａｄ命令に対応する矩形（矩形Ｂ）の複数のパラメータとが交互にレジスタ２５０の矩形生成パラメータ格納領域２５１に格納される。そして、更新フラグ（FLAG_UPDATE）が１になり、かつ、直前に読み出したパラメータに対応する矩形の生成を完了するたびに、パターン生成部２４０が矩形生成パラメータ格納領域２５１を読み出して、読み出したパラメータに対応する矩形を生成する。これによって、１回の主走査方向について、複数のＬｏａｄ命令（命令１、命令２）に対応する複数の矩形（矩形Ａ、矩形Ｂ）の生成が行われる。
このように、ＣＰＵ２２０は、ＲＡＭ２３０に格納されたプログラムの内容に応じて、主走査方向について複数の矩形画像（例えば矩形Ａ、矩形Ｂ等）を生成させる場合、所定の領域内における主走査方向に沿った画像生成を一回行う間に、複数の矩形画像の各々を生成させる命令（命令１、命令２）を切り替えて実行する。ここで、図９に示すように、パターン生成部２４０が矩形Ａを描画している間にＣＰＵ２２０は命令２を実行して矩形Ｂのパラメータを矩形生成パラメータ格納領域２５１に格納し、パターン生成部２４０が矩形Ｂを描画している間にＣＰＵ２２０は命令１を実行して矩形Ａのパラメータを矩形生成パラメータ格納領域２５１に格納することを繰り返す。つまり、ＣＰＵ２２０は、パターン生成部２４０が次に描画する矩形画像の命令を実行する処理を繰り返す。
また、ＣＰＵ２２０は、所定の領域（例えば用紙１ページ）内に対する複数の矩形画像の生成の開始から終了までの間に、パターン生成部２４０に単一の描画範囲の矩形画像を生成させる命令としての「矩形生成パラメータ格納領域２５１に対する複数のパラメータ（HStart、VStart、Hsize、Vsize、Color）の格納及び更新フラグ（FLAG_UPDATE）の設定」を複数回行う。例えば、矩形Ａの生成を完了するための複数ラインに渡る処理中において、ＣＰＵ２２０は、矩形Ｂに対応する命令２及びＪｕｍｐ命令である命令３を挟んで、矩形Ａに対応する命令１の実行を複数回行っている。矩形Ｂに対応する命令２、矩形Ｄに対応する命令７、矩形Ｅに対応する命令８についても同様である。
【００９０】
その後、ＶＶＣＮＴの値がVV_WAITの値（Ｖ１）の値以上となると、ADDRESSの値はJump命令で指示する分岐先には更新されず、PC_INCの値に基く通常のADDRESSのカウントアップに応じ、ＣＰＵ２２０は命令４の先頭アドレスを読み出すこととなる。命令４のＬｏａｄ命令の処理は、上述したＬｏａｄ命令の処理と同様である。
命令４のＬｏａｄ命令の完了によりCPU_STATUSが「ＦＥＴＣＨ」となったとき、上述と同様、ＣＰＵ２２０は、ADDRESSの値に応じて新たな命令を読み出す。ＣＰＵ２２０は、「0xD0」を読み出し、命令５のＷａｉｔ命令を開始する。ここで、ＣＰＵ２２０は、レジスタ２５０の遷移状態(CPU_STATUS)格納領域２５４に「ＷＡＩＴ」を示す値を格納する。
【００９１】
CPU_STATUSが「ＷＡＩＴ」であるとき、ＣＰＵ２２０がＲＡＭ２３０における「0xC0」の直後のアドレスの値（例えば命令５の「0xD0」の直後の「Ｖ２Ｈ」）を読み出してレジスタ２５０の副走査方向待ち位置(VV_WAIT)格納領域２５７の値(VV_WAIT) の上位バイトとして格納し、CPU_STATUSを「Ｗ１」とする。
CPU_STATUSが「Ｗ１」であるとき、ＣＰＵ２２０は、ＲＡＭ２３０における「0xC0」の２つ後のアドレスの値（例えば命令５の「0xD0」の２つ後の「Ｖ２Ｌ」）を読み出して先に格納されたVV_WAITの上位バイトと合わせて副走査方向待ち位置(VV_WAIT)を特定し、走査位置カウンタ２１０から入力された副走査方向の位置を示す値(ＶＶＣＮＴ)と比較する。ＶＶＣＮＴの値がVV_WAITの値を下回る場合、PC_INCの値を０に設定し、CPU_STATUSを「Ｗ２」とする。
CPU_STATUSが「Ｗ２」であるとき、ＶＶＣＮＴの値とVV_WAITの値とを比較し、ＶＶＣＮＴの値がVV_WAITの値を下回る間、待機する。
一方、CPU_STATUSが「Ｗ１」又は「Ｗ２」であって、ＶＶＣＮＴの値がVV_WAITの値以上である場合、ＣＰＵ２２０は、CPU_STATUSを「ＦＥＴＣＨ」とする。
【００９２】
つまり、Ｗａｉｔ命令の実行後、ＶＶＣＮＴの値がVV_WAITの値以上となるまで、ＣＰＵ２２０はレジスタ２５０の矩形生成パラメータ格納領域２５１に対するパラメータの更新が行われない。このため、図１０に示すように、命令５のＷａｉｔ命令の直前のＬｏａｄ命令である命令４に対応する矩形（矩形Ｃ）の生成が継続される。
【００９３】
ＶＶＣＮＴの値がVV_WAITの値以上となってＷａｉｔ命令が完了し、CPU_STATUSが「ＦＥＴＣＨ」となったとき、上述と同様、ＣＰＵ２２０は、ADDRESSの値に応じて新たな命令を読み出す。
図４に示すプログラムの場合、命令５のＷａｉｔ命令の完了後、命令６〜８に含まれる２つのＬｏａｄ命令及びＪｕｍｐ命令によるループ処理が行われて矩形Ｄ、矩形Ｅが生成された後、命令９のＨＡＬＴ命令に致ることにより１ページの生成処理が終了する。命令６〜命令８に含まれる２つのＬｏａｄ命令及びＪｕｍｐ命令によるループ処理は、上述の命令１〜３のループ処理と同様である。
【００９４】
ここで、矩形Ａ及び矩形Ｂと、矩形Ｃと、矩形Ｄ及び矩形Ｅとは、それぞれ、副走査方向に沿って生成された複数の矩形画像となっている。副走査方向に沿って生成される複数の矩形画像は、矩形Ａ、矩形Ｃ、矩形Dのように連続させることもできるし、矩形Ｂと矩形Eのように個別の矩形画像とすることもできる。また、矩形Ｃの生成の間の処理のように、複数の矩形画像を生成する処理中に、副走査方向の一部又は全部について、主走査方向について単一の描画範囲の矩形画像のみが存在する範囲を設けることもできる。
このように、ＣＰＵ２２０は、ＲＡＭ２３０に格納されたプログラムの内容に応じて、副走査方向について複数の矩形画像を生成させる場合、所定の領域内における主走査方向に沿った複数の矩形画像の各々を生成させる命令を主走査方向で反復実行するプログラムを１組とし、副走査方向での複数画像分だけ、複数組実行する。
【００９５】
なお、上述の記載では図４のプログラムの内容に基づいて各種の命令及びその処理の流れについて説明しているが、ＲＡＭ２３０に書き込まれるプログラムのＬｏａｄ命令、Ｊａｍｐ命令、Ｗａｉｔ命令等の組み合わせ方及びそのパラメータの具体的内容は任意に決定することができる。
【００９６】
以上、本実施形態の画像形成装置１によれば、テストパターン生成部２００のＣＰＵ２２０が、所定の領域（例えば用紙１ページ）内に対する複数の矩形画像の生成の開始から終了までの間に、パターン生成部２４０に単一領域での矩形画像を生成させる命令の実行を複数回行う。つまり、ＣＰＵ２２０は、プログラムの内容に応じて、単一の矩形画像を生成する描画パラメータを伝達するLoad命令を複数回繰り返して実行することにより、パターン生成部２４０に複数の矩形画像を生成させることができる。
さらに、パターン生成部２４０は、単一の矩形画像を生成する機能と、矩形描画パラメータを更新できる機能があれば足りる回路で、ＣＰＵ２２０によるプログラム処理の内容も簡易な命令の組み合わせで十分であり、レジスタ２５０に求められる記憶容量も小さく収めることができるので、より廉価に所定の領域内に任意の数のパターン画像を生成することができる。
【００９７】
さらに、ＣＰＵ２２０は、プログラムの内容に応じて、１回の主走査方向に沿った矩形画像の生成において、複数の矩形画像を生成する場合に、矩形画像の数に応じた描画パラメータをパターン生成部２４０に複数回伝達することで主走査方向について、任意の数の矩形画像を形成することができる。この描画パラメータの更新が、主走査での１矩形描画終了毎に行われる機構と、それまでCPU側の後続のLoad命令実行を一時停止させる機構を伴うことにより、ここでのプログラムは実際の主走査の画像形成タイミングを意識することのない簡潔で平易な記述ができる。この待ち合わせ機構なしに、CPUが直接的に、主走査方向の計数をしながら画像形成途中に描画パラメータの更新を実時間処理で行うようなプログラミングをするのは甚だ困難であり、もし実現できても著しく難解なプログラムとなろう。
【００９８】
さらに、ＣＰＵ２２０は、プログラムの内容に応じて、副走査方向について複数の矩形画像を生成する場合に、副走査方向に沿った矩形画像の描画単位で、プログラムを切り替えてパターン生成部２４０に矩形画像を生成させることで、副走査方向について、任意の数の矩形画像を形成することができる。
【００９９】
さらに、ＣＰＵ２２０は、更新フラグ（FLAG_UPDATE）の値の値を設定することによりパターン生成部２４０に対してパラメータの更新要求を行い、パターン生成部２４０はパラメータの更新完了時に更新フラグの値を戻すことにより更新完了を通知する。この単純な値の設定、更新により、ＣＰＵ２２０とパターン生成部２４０とで命令実行・停止タイミングを制御することができて、プログラム構成も単純になる。
【０１００】
また、図６に示すように単一の矩形描画領域でだけテストパターン画像を描ける回路であっても、その回路に納められている描画領域の情報を、画像形成中に逐次更新させていく回路を図３のように付加することにより、任意個数の描画領域でテストパターンが描けることと、その描画領域の情報の更新のタイミングを制御する機能を備えることで、付加回路側に設けたソフトウェア手段についてもプログラミングが容易になる。
【０１０１】
さらに、本実施形態のＣＰＵ２２０は、Ｌｏａｄ命令、Ｊｕｍｐ命令、Ｗａｉｔ命令、ＨＡＬＴ命令等の単純な命令を含むプログラムに基づいてパターン生成部２４０に矩形画像を生成させる仕組みである。上で示したように、この４種類に限られた命令実行に要する状態遷移に基く制御内容を実現する順序回路をハードウェア記述言語により記述することで、市販の汎用マイコンなどよりも遥かに小さい回路規模で、このＣＰＵを構築することができる。この事は画像生成装置内の画像形成の回路上のFPGAやASIC等の同一チップ内に、容易に組み込むことが可能となり、これらの画像形成と同期したクロックでＣＰＵを駆動することができる。これにより、１ページ描画中でのパターン生成回路のレジスタ書換えを実時間で制御することが、この専用CPUにて可能となる。そして、これらの命令は最長でも１３バイトである。よって、読み出しやレジスタ２５０に値を格納する処理に伴う遅延を含めても、単一のＬｏａｄ命令に対応する値をレジスタ２５０に格納するのに要するクロック数は十数クロックであり、これは例えば600dpi画像では1mm中の画素数より少ない点で、１ｍｍ角以上の矩形サイズのパターン描画に充分間に合うよう極めて高速に命令の実行ができる。よって、所定領域内で複数の矩形画像が主走査方向に極めて近接して並ぶようなパターンであっても、高速な描画パラメータ切り替えに十分対応することができるので、複数の矩形画像の配置に係る制約が極めて少ない。つまり、画像形成装置１は、ＲＡＭ２３０に記憶させるプログラムの内容に応じて、複数の矩形画像の配置について極めて自由度の高い画像生成を行うことができる。そして、そのプログラムサイズは高々数キロバイトで何百個もの矩形パターンを描くことができる点で、制御部から、プログラム書き換えに要する時間も少なくて済む。複数ページ記録途中の頁間で実時間で書き換えることも可能となり、１ページ毎に異なったレイアウトのテストパターン画像を連続印刷することも可能となる。このことは、従来方式の一つである数十メガバイト以上の画素値データで画像メモリを埋めるようなテストパターン印刷方式では、時間もかかり困難な事であった。また、Load命令については、タイミング制御機能（更新要求フラグのセットと、リセットまでのウェイト処理）をも含めた専用命令としたことで、プログラムの記述がすっきりとして、矩形描画パラメータとの対応の付けやすい容易で平易なプログラミングができるメリットが、この専用の簡易CPUではでてくる。このように、単一描画領域を指定できるパターン生成回路と、描画パラメータを格納するバッファーレジスタと更新フラグとでの描画パラネータの更新情報の伝達手段と、専用の命令を備えたCPUとを組み合わせて協働させることにより、ソフトウェアの負担も軽くなり、また、パターン生成回路側も、単一の描画領域を指定できるだけの回路規模で済む点で、ハード、ソフト両面からテストパターン画像生成が容易となる効果が生まれる。
【０１０２】
なお、本発明の実施の形態は、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１０３】
本発明は、電子写真式画像形成装置以外のものにも適用することができる。例えば、ディスプレイ装置の表示内容を生成する装置として本発明の画像生成装置を用いても良い。即ち、走査により所定の周期（リフレッシュレート）で書き換えられる表示装置の表示内容について、走査に応じてその表示領域内に複数の矩形を描画する装置として本発明の画像生成装置を適用することで、プログラムの内容に応じて任意の個数の矩形描画領域でテストパターンを表示させることができる。
【０１０４】
また、上述の実施形態では、パターン画像として矩形画像を生成する場合について示しているが、所定の一方向（例えば主走査方向）の画像生成と当該一方向に直交する他方向（例えば副走査方向）の画像生成との組み合わせにより、矩形以外の形状を有する任意のパターン画像を生成することも可能である。
【０１０５】
また、テストパターンに限らず、複数のパターン画像を所定の領域内に生成することを伴う処理であれば、本発明を適用することができる。
また、上述の実施形態では、単一のテストパターン生成部２００に設けられた単一の描画領域パターン生成部２４０が所定の領域内に複数のパターン画像を生成しているが、複数のテストパターン生成部２００を協働させて所定の領域内に複数のパターン画像を生成することは差し支えない。また、単一のテストパターン生成部２００に複数のパターン生成部２４０を設けてＣＰＵ２２０や専用の統括制御部等に複数のパターン生成部２４０を統括制御させる仕組みとしても差し支えない。ここでは、更新フラグの１または０の１ビットの情報伝達を行う例を示したが、描画パラメータを格納するバッファーを複数段分、FIFO構成で設けることにより、更新すべき描画パラメータがバッファー内に何段分溜ったか更新を済ませたかで、カウントアップ／カウントダウンする複数ビットの情報伝達にしても差し支えない。
【符号の説明】
【０１０６】
１０１  制御部
１０２  操作表示部
１０３  スキャナ部
１０４  画像処理部
１０５  画像形成部
１０６  センサ
１０７  記憶部
１０８  送受信部
１０９  バス
２００  テストパターン生成部
２１０  走査位置カウンタ
２２０  ＣＰＵ
２３０  ＲＡＭ
２４０  パターン生成部
２５０  レジスタ
【図１】
0005664281.tif 000002
【図２】
0005664281.tif 000003
【図３】
0005664281.tif 000004
【図４】
0005664281.tif 000005
【図５】
0005664281.tif 000006
【図６】
0005664281.tif 000007
【図７】
0005664281.tif 000008
【図８】
0005664281.tif 000009
【図９】
0005664281.tif 000010
【図１０】
0005664281.tif 000011