(57)【要約】【課題】ディザ処理における処理速度の向上、高画質化を図る。【解決手段】マトリクス格納用メモリ１０８内の閾値の並べ替えにより、主走査方向について連続する閾値を偶数番目のグループと奇数番目のグループとに対称的に分けておき、各グループから同じアドレス計算により２つの連続する閾値をそれぞれ読み出せるようにする。これにより、主走査方向に隣り合う複数閾値を第２，第３レジスタ１０６，１０７に同時に読み出す。そして、第０，第１レジスタにそれぞれ格納された各多値データ０，１について第０，第１比較回路１０９，１１０において並列してディザ処理を行う。その結果、主走査方向に連続する２値データ０，１を同時に出力し、画像処理を行う。【選択図】        図１
2004222035.tif 000002
【特許請求の範囲】
【請求項１】
画像のディザ処理を行う場合において、
閾値マトリクスの列数が偶数の場合、偶数列だけで１個の閾値マトリクスを作り、さらに奇数列だけでもう１つの閾値マトリクスを作ることにより、合計２個の閾値マトリクスに編成し直して順番に１個のメモリに格納し、
前記編成し直された２個の対称的な閾値マトリクスから各閾値をそれぞれ読み出して並列的にディザ処理を行う画像処理方法。
【請求項２】
画像のディザ処理を行う場合において、
閾値マトリクスの列数が奇数の場合、偶数列だけを抜き取り、それらの偶数列を列番号の若い順番に並べ、残った奇数列をそれらの偶数列の後に列番号の若い順に並べることにより、１個の閾値マトリクスを新たに編成し、その閾値マトリクスをメモリに格納し、
前記新たに編成された偶数列奇数列の閾値マトリクスと、これと周期的に対称的な奇数列偶数列の閾値マトリクスとからそれぞれ各閾値を読み出して並列的にディザ処理を行う画像処理方法。
【請求項３】
前記請求項１の方法でメモリに格納された閾値マトリクスを用いてディザ処理を行う画像処理装置。
【請求項４】
前記請求項２の方法でメモリに格納された閾値マトリクスを用いてディザ処理を行う画像処理装置。
【請求項５】
請求項３に記載の画像処理装置において、
主走査方向に連続する複数個の多値データに対応する閾値マトリクスデータをメモリから読み出すために当該メモリ内の該当するアドレスを各多値データについてそれぞれ計算する複数のアドレス回路と、
当該複数のアドレス回路から出力される複数個のアドレスのうちどちらか１つを選択して前記メモリに出力するアドレス調停回路と、
前記メモリから読み出される閾値マトリクスのデータをそれぞれ一時的に格納するための複数のレジスタと、
それらの複数のレジスタの出力と複数個の多値データとを各々比較するための比較回路とを備え、
これらの比較処理を同時に実行することにより、主走査方向に連続する２個の多値データを並列にディザ処理する画像処理装置。
【請求項６】
請求項５の画像処理装置に対して、複数個ある比較回路のうちの１個の入力を、並列に処理される多値データのうちのいずれかが入力されるように選択できるようにした画像処理装置。
【請求項７】
請求項６記載の画像処理装置に対して、同一解像度でディザ処理を行う場合は、主走査方向に連続する複数個の多値データを並列に入力してディザ処理し、
副走査方向の解像度を複数倍にしてディザ処理する場合は、１画素分ずつの多値データを入力してディザ処理するようにした画像処理装置。
【請求項８】
請求項７記載の画像処理装置において、副走査方向の解像度を２倍にしてディザ処理する場合は、閾値マトリクスの並べ替えを行わずにメモリに格納するようにした画像処理装置。
【請求項９】
請求項７記載の画像処理装置において、
副走査方向の解像度を２倍にしてディザ処理する場合は、２個のアドレス回路の一方の初期アドレス設定を他方のアドレス回路の初期アドレス設定の１ライン後に設定することにより、メモリから行軸方向に連続する２個の閾値マトリクスデータを読み出し、それぞれ２個のレジスタに格納するとともに、
入力された１画素分の多値データと２個のレジスタの出力を２個の比較回路を使用して同時にディザ処理することにより、副走査方向に連続する２値データを同時に生成することを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタや複写機におけるディザ処理を実行する画像処理装置に関するものである。
【０００２】
【従来の技術】
一般に、プリンタや複写機などの画像処理装置においては、いわゆるディザ処理が行われるものがある。これは、よく知られた画像処理技術であり、写真などの多値画像を印刷する場合に用いられる。その手法を、ここで簡単に述べると、画像内の注目領域における複数行＊複数列の画素群に対し、所定パターンで配列された閾値のマトリクスを当てはめて、画素の多値濃度が対応する閾値以上か否かの判定によって求めた２値データで画像表現するというものである。その場合、マトリクスを構成している各閾値は、ディザ処理の順番に従ってマトリクス格納用メモリ内にアドレス順に格納されている（例えば、特許文献１参照）。
このようなディザ処理については、高画質化に伴い、ますます処理速度の向上が求められるようになっている。
【０００３】
ところで、従来、プリンタや複写機などでのディザ処理の回路においてマトリクスから閾値を読み出す際には、マトリクスのアドレス計算のための回路を簡単にするため、多値データに対応する閾値を１個ずつマトリクスから読み出すようにしていた。そして、読み出した各閾値毎に画像内の各画素に対する多値データのディザ処理を行っていた。従って、ディザ処理回路の処理速度については、これを１秒間にディザ処理できる多値データ量（ｂｙｔｅ）と定義すると、
ディザ処理回路の処理速度（ｂｙｔｅ／ｓｅｃ）  ＝  回路の動作周波数（Ｈｚ）＊１（ｂｙｔｅ）となる。
そこで、ディザ処理回路の性能を向上させるには、動作周波数（Ｈｚ）を向上させるか、または１クロックで処理できる多値データ量（ｂｙｔｅ）を増やすことが考えられる。
【０００４】
【特許文献１】
特開平０５−０８３５３６号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、動作周波数の向上には限界があるとともに、その時代の最速のプロセッサを搭載することはコストアップにもつながる。よって、動作周波数の向上は不可欠であるが、単純にそれだけに頼らずに処理速度を上げることが望まれる。
【０００６】
一方、１クロックで処理できる多値データ量を増やすためには並列処理をすることが必要である。そのためには、マトリクスから複数個の閾値を１クロックで同時に読み出して、それらの各閾値を別々のプロセッサに供給しなければならない。その場合、並列処理に使用したい各閾値をそれぞれ読み出すために別々にアドレス計算をしなければならない。そして、マトリクス格納用メモリにはディザ処理する順序に従って閾値が格納されているので、並列処理に使用する双方の閾値についてのアドレス計算式が異なることになる。よって、並列処理のためには、複数のアドレス計算が必要となり、これはディザ処理回路を複数個持つことに相当した。その結果、装置のコストアップにつながった。
【０００７】
また、高画質化の要請により、副走査方向の解像度を２倍にしてディザ処理する場合、たとえば、６００＊６００ｄｐｉの多値データをディザ処理して６００＊１２００ｄｐｉの２値データを生成する場合、従来は２回同一ラインの多値データをディザ処理回路に入力して２回ディザ処理しなければならなかった。よって、この方法では、主記憶メモリから多値データを読み出す量が２倍になり、ディザ処理以外の回路が主記憶メモリにアクセスすることが制限される可能性がある。その結果としてディザ処理回路を含むシステム全体の処理能力が低下してしまった。
【０００８】
【課題を解決するための手段】
本発明は以上の点を解決するため次の構成を採用する。
〈構成１〉
マトリクスへの閾値の格納順を工夫し、１個のマトリクス格納用メモリから並列処理に使用する各閾値を同様のアドレス計算によって読み出せるようにして、１つのディザ処理回路で主走査方向に連続する複数の多値データを並列処理する。つまり、従来のマトリクスのアドレス計算回路とマトリクス上への閾値の格納順では、閾値マトリクスを含めたディザ処理回路自体を複数個持たない限り、１クロックで複数の多値データをディザ処理することはできなかったのであるが、並列処理に使用すべき複数閾値をそれぞれ１つのメモリ内の同時読み出し可能な領域に格納したものである。これにより、マトリクス格納用のメモリをアクセスするためのアドレス計算式を単一化し、コストアップを避けたものである。
【０００９】
〈構成２〉
同解像度でディザ処理を行う場合は主走査方向に連続する２個の多値データを並列にディザ処理する一方、副走査方向の解像度を２倍にしてディザ処理する場合は、多値データを１個ずつディザ処理回路に入力して１度に２個の閾値を読み出し、２個の閾値と１個の多値データから２個の２値データを生成する。これにより、副走査方向の解像度を２倍にする場合にも、１回のディザ処理で対応可能としたものである。その結果、高画質化を行っても通常の画質でのディザ処理の処理速度が維持される。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態を具体的な実施例を用いて説明する。
（１−１）第１の実施例の構成
図１は、本発明のディザ処理回路の第１実施例の構成図であり、図２は、図１のデータフロー図である。
図示のディザ処理回路には、多値データ０、多値データ１の２つが入力される。
そして、ディザ処理後の２値データ０、２値データ１がこのディザ処理回路から同時に出力される。
多値データ０、多値データ１は、主走査方向に連続する２画素である。本実施例では、多値データ０、多値データ１は、８ｂｉｔ（２５６階調）のデータとし、２値データ０、２値データ１は１ｂｉｔ（２階調）のデータとして説明する。
【００１１】
多値データ０、多値データ１は、それぞれ先入れ先出し型の第０レジスタ（ＦＩＦＯ＿０）１０４、同様の第１レジスタ（ＦＩＦＯ＿１）１０５にそれぞれ格納される。
第０アドレス回路１００は、多値データ０に対応する閾値をマトリクス格納用メモリ１０８から読み出すためのアドレスを計算する回路である。
第１アドレス回路１０１は、多値データ１に対応する閾値をマトリクス格納用メモリ１０８から読み出すためのアドレスを計算する回路である。
マトリクス格納用メモリ１０８は、マトリクスの閾値を格納するためのメモリである。本実施例ではマトリクス格納用メモリ１０８は、６４ｂｉｔ幅の同期式のＳＲＡＭとして説明する。
第２レジスタ（ＦＩＦＯ＿２）１０６、第３レジスタ（ＦＩＦＯ＿３）１０７は、マトリクス格納用メモリ１０８から読み出されるデータｍｅｍ＿ｄｏを格納する。
【００１２】
アドレス調停回路１１２は、第０アドレス回路１００、第１アドレス回路１０１から出力されるａｄｒ０、ａｄｒ１のどちらかを選択してｍｅｍ＿ａｄｒとしてマトリクス格納用メモリ１０８に出力する機能と、第０アドレス回路１００、第１アドレス回路１０１のカウントイネーブル信号ｃｏｕｎｔ＿ｅｎ０、ｃｏｕｎｔ＿ｅｎ１を制御する機能と、マトリクス格納用メモリ１０８から出力されるデータをＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）のどちらかに格納するためのライト信号ｆｉｆｏ＿ｗｒ２、ｆｉｆｏ＿ｗｒ３を制御する機能とを有する回路である。
【００１３】
ｉｎｃ＿ｒｅｑ０信号は、第０アドレス回路１００から出力される信号ａｄｒ０をマトリクス格納用メモリ１０８に出力してデータｍｅｍ＿ｄｏをＦＩＦＯ＿２（１０６）に格納せよという意味の信号である。
ｉｎｃ＿ｒｅｑ１信号は、第１アドレス回路１０１から出力される信号ａｄｒ１をマトリクス格納用メモリ１０８に出力してデータｍｅｍ＿ｄｏをＦＩＦＯ＿３（１０７）に格納せよという意味の信号である。
ｃｏｕｎｔ＿ｅｎ０信号をアサートする条件は、ＦＩＦＯ＿２（１０６）のｆｕｌｌ信号ｆｉｆｏ＿ｆｕｌｌ２信号がディアサートされていて、且つ、ａｄｒ０をｍｅｍ＿ａｄｒに出力できることである。
ｃｏｕｎｔ＿ｅｎ１信号をアサートする条件は、ＦＩＦＯ＿３（１０７）のｆｕｌｌ信号ｆｉｆｏ＿ｆｕｌｌ３信号がディアサートされていて、且つ、ａｄｒ１をｍｅｍ＿ａｄｒに出力できることである。
【００１４】
第２アドレス回路１０２は、ＦＩＦＯ＿２（１０６）に格納された８バイトのデータのうち１バイトを選択し、閾値ｔｈ０を生成するための回路である。このため、第２アドレス回路１０２から出力されるａｄｒ２の下位３ｂｉｔをセレクト信号として使用する。
第３アドレス回路１０３は、ＦＩＦＯ＿３（１０７）に格納された８バイトのデータのうち１バイトを選択し、閾値ｔｈ１を生成するための回路である。このため、第３アドレス回路１０３から出力されるａｄｒ３の下位３ｂｉｔをセレクト信号として使用する。
【００１５】
比較部制御回路１１１は、ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）、ＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）のエンプティー信号ｆｉｆｏ＿０＿ｅｍｐｔｙ、ｆｉｆｏ＿１＿ｅｍｐｔｙ、ｆｉｆｏ＿２＿ｅｍｐｔｙ、ｆｉｆｏ＿３＿ｅｍｐｔｙと、ディザ処理回路の出力データである２値データ０、２値データ１を格納するための図示しない後段のバッファが受信可能かどうかを表す信号を元にｃｏｍｐａｒｅ信号を生成する。このｃｏｍｐａｒｅ信号がアサートされると、２値データ０、２値データ１が図示しない後段のバッファに出力される。そして、ａｄｒ２、ａｄｒ３がカウントアップされ、ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）がリードされる。
第０比較回路１０９は、ｆｉｆｏ＿０＿ｄｏとｔｈ０とを比較して２値データ０を生成するための回路である。
第１比較回路１１０は、ｆｉｆｏ＿１＿ｄｏとｔｈ１とを比較して２値データ１を生成するための回路である。
【００１６】
第０アドレス回路１００、第１アドレス回路１０１、第２アドレス回路１０２、第３アドレス回路１０３は、すべて同じ構成の回路であり、同じアドレス計算式に基づいてアドレスを計算する。これらはいずれも、入力信号としてｓｔａｒｔ、ｒｅｇ＿ｍｓｔｔ、ｒｅｇ＿ｐｏｓｘ、ｒｅｇ＿ｐｏｓｙ、ｒｅｇ＿ｍｓｉｚｅ＿ｘ、ｒｅｇ＿ｍｓｉｚｅ＿ｙ、ｒｅｇ＿ｌｌ、ｒｅｇ＿ｌｎ、ｃｏｕｎｔ＿ｅｎ信号をそれぞれ持ち、出力信号としてａｄｒ、ｉｎｃ＿ｒｅｑ信号をそれぞれ持つ。
ｓｔａｒｔ、ｒｅｇ＿ｍｓｔｔ、ｒｅｇ＿ｐｏｓｘ、ｒｅｇ＿ｐｏｓｙ、ｒｅｇ＿ｍｓｉｚｅ＿ｘ、ｒｅｇ＿ｍｓｉｚｅ＿ｙ、ｒｅｇ＿ｌｌ、ｒｅｇ＿ｌｎは、図示しないレジスタからの信号であり、それぞれ以下の内容を持つ。
【００１７】
ｓｔａｒｔ：  これは、初期ロード信号である。
ｒｅｇ＿ｍｓｔｔ：  これは、最初に入力される多値データに対応するマトリクス格納用メモリ１０８のアドレスである。
ｒｅｇ＿ｐｏｓｘ：  これは、最初に入力される多値データに対応するマトリクスの列方向の座標である。
ｒｅｇ＿ｐｏｓｙ：  これは、最初に入力される多値データに対応するマトリクスの行方向の座標である。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ：  これは、マトリクスの列数−１である。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ：  これは、マトリクスの行数−１である。
【００１８】
ｒｅｇ＿ｌｌ：  これは、多値データのライン長−１である。
ｒｅｇ＿ｌｎ：  これは、多値データのライン数−１である。
ｃｏｕｎｔ＿ｅｎ信号は、カウントイネーブルを表し、ｃｏｕｎｔ＿ｅｎがアサートされている間はａｄｒを更新する。
ｉｎｃ＿ｒｅｑ信号は、ａｄｒ信号が現状の値から次の値に更新される際に連続した値ではない可能性がある場合と８バイトの境界をまたぐ場合に１クロック間アサートされる。
【００１９】
（１−２）第１の実施例の動作
ディザ処理に際して、最初にマトリクスをマトリクス格納用メモリ１０８に格納する。ここで、複数の閾値の読み出しを同じアドレス計算式により統一的に実行可能とすべく、マトリクスの並べ替えを行う。その場合、マトリクスの列数が偶数の場合と、奇数の場合とで異なる方法が採られる。
マトリクスの列数が偶数の場合、偶数列だけで１個のマトリクスを作り、さらに奇数列だけでもう１つのマトリクスを作る。これにより、元のマトリクスを合計２個のマトリクスに編成し直し、順番に１個のメモリに格納する。
マトリクスの列数が奇数の場合、偶数列だけを抜き取り、列番号の若い順番に並べる。そして、残った奇数列を偶数列の後に列番号の若い順に並べる。これにより、新たに編成されたマトリクスを１個のメモリに格納する。
このように、本発明は、マトリクスの列数が偶数の場合に限らず、それが奇数の場合でも、方法ないし方式が異なりつつも、同様に実施できるものである。
【００２０】
まず、マトリクスの列数が偶数の場合の動作を説明する。
図３は、５行＊６列のマトリクスＭ０を表している。マトリクスＭ０の中の数値は閾値である。これらの数値は、本発明の説明の都合上、マトリクスＭ０上のアドレスを１０進で表したものと同じ値としている。これらは、実際には、ディザ処理で採用される方式に従った大きさの順でマトリクス内に配列されるようにメモリに格納されるものである。また、マトリクスの行数列数については、８行＊８列等、通常は２の累乗の数が採用されるが、本発明は、その数に制約されることなく実施できるものである。そこで、特殊な例であるが、５行＊６列の場合について説明しようというものである。以下、本実施例の動作を図３の５行＊６列のマトリクスＭ０を例として説明する。
【００２１】
図４は、マトリクスの列数が偶数の場合の閾値の格納順の変換方法を表したフローチャートである。
マトリクスの列数が偶数の場合には２つのマトリクスに分割する。ここで、元のマトリクスを図３のＭ０とする。Ａ０はマトリクス上のアドレスであり、たとえばＭ０（０）は０、Ｍ０（６）＝６である。そして、格納順の変換後の２つのマトリクスをＭ１（Ａ１）、Ｍ２（Ａ２）とする。
【００２２】
以下は、図４のフローチャートをプログラムの実行過程に沿って極めて詳細に説明したものである。図中Ｓ０〜Ｓ９は、処理ステップを示す。スタートステップＳ０の後に以下の実行順でＳ１以降の各ステップが実行される。
Ｓ１：  初期設定を行う。すなわち、元のマトリクスＭ０のアドレスＡ０＝０とし、変換後のマトリクスＭ１、Ｍ２のアドレスＡ１＝０、Ａ２＝０とする。また、ｍｓｉｚｅ＿ｘ＝マトリクスの列数−１＝５、ｍｓｉｚｅ＿ｙ＝マトリクスの行数−１＝４をセットする。
Ｓ２：  マトリクスＭ１にＭ０を代入する。この場合、Ａ０＝０、Ａ１＝０なので、Ｍ１（０）＝Ｍ０（０）＝０となる。
Ｓ３：  アドレスを更新する。すなわち、Ａ０＝０＋２＝２、Ａ１＝０＋１＝１とする。
Ｓ４：  元のマトリクスの最後の要素まで代入したかどうかをチェックする。初期設定後の最初のループでは、Ａ０＝２＜２９なので、ここでＳ２の処理に移る。
【００２３】
Ｓ２：  Ａ０＝２、Ａ１＝１なので、Ｍ１（１）＝Ｍ０（２）＝２となる。
Ｓ３：  Ａ０＝２＋２＝４、Ａ１＝１＋１＝２となる。
Ｓ４：  Ａ０＝４＜（５＋１）＊（４＋１）−１＝２９なのでＳ２の処理に移る。
以後Ａ０＝２８までＳ２からＳ４を繰り返す。
Ｓ２：  Ａ０＝２８、Ａ１＝１４なので、Ｍ１（１４）＝Ｍ０（２８）＝２８となる。これにより、Ｍ１の格納が終了する。この格納状態を図５の左側に示す。
Ｓ３：  Ａ０＝２８＋２＝３０、Ａ１＝１４＋１＝１５となる。
Ｓ４：  ここで、Ａ０＝３０＞２９となるので、Ｓ５の処理に移る。
【００２４】
Ｓ５：  上記の設定に変えてＡ０＝１に設定する。
Ｓ６：  マトリクスＭ２にＭ０を代入する。この場合、Ａ０＝１、Ａ２＝０なので、Ｍ２（０）＝Ｍ０（１）＝１となる。
Ｓ７：  アドレスを更新する。すなわち、Ａ０＝１＋２＝３、Ａ２＝０＋１＝１とする。
Ｓ８：  元のマトリクスの最後まで代入したかどうかをチェックする。最初のループでは、Ａ０＝３＜２９なのでＳ６の処理に移る。
【００２５】
Ｓ６：  Ａ０＝３、Ａ２＝１なので、Ｍ２（１）＝Ｍ０（３）＝３となる（図５の右側の第２要素を参照）。
Ｓ７：  Ａ０＝３＋２＝５、Ａ２＝１＋１＝２となる。
Ｓ８：  元のマトリクスの最後まで代入したかどうかをチェックする。ここでは、Ａ０＝５＜２９なのでＳ６の処理に移る。
以後Ａ０＝２９までＳ６からＳ８を繰り返す。
Ｓ６：  Ａ０＝２９、Ａ２＝１４なので、Ｍ２（１４）＝Ｍ０（２９）＝２９となる。このとき、図５の右側に示すような状態でＭ２の格納が終了する。
Ｓ７：  Ａ０＝２９＋２＝３１、Ａ２＝１４＋１＝１５となる。
Ｓ８：  元のマトリクスの最後まで代入したかどうかをチェックする。このとき、Ａ０＝３１＞２９となるので、すべての処理を終了する。
以上の処理により、図３のマトリクスＭ０から図５のマトリクスＭ１、Ｍ２が生成される。
【００２６】
図６は、図５のマトリクスＭ１、Ｍ２を６４ｂｉｔ幅のマトリクス格納用メモリ１０８に格納した場合のマトリクス格納用メモリ１０８のアドレスと閾値の対応を表したものである。これは、最初にマトリクスＭ１を格納して、その格納後の次の８バイト境界からマトリクスＭ２を格納したものである。これによって、マトリクスＭ１とマトリクスＭ２とから、従来のマトリクスＭ０において主走査方向に連続する２個の閾値を常に同一のアドレス計算手順により同時に読み出せるようにしている。その結果、連続して実行すべきディザ処理を複雑でない回路で並列処理することを可能としている。
【００２７】
参考までに図７は、従来の方法で図３のマトリクスを６４ｂｉｔ幅のマトリクス格納用メモリ１０８に格納した場合のマトリクス格納用メモリ１０８のアドレスと閾値の対応を表したものである。これは、マトリクス格納用メモリ１０８のアドレス”０”とマトリクスＭ０上のアドレス”０”を合わせて順番に閾値が格納されたものである。
【００２８】
図８は、ライン長＝１２、ライン数＝２の多値データを５行＊６列の従来のマトリクスでディザ処理する場合のイメージである。これは、従来のマトリクス（図３）を周期的に８個敷き詰めた上に多値データに対応する閾値の領域を表したものである。多値データに対応する閾値は、１ライン目と２ライン目の各ラインについて、図９のようになる。すなわち、図９に示すように、１ライン目の閾値は、“０〜１１”の各多値データについて“２４〜２９”の２周期となり、２ライン目の閾値は、“０〜１１”の各多値データについて“０〜５”の２周期となる。
これに対応した本発明に係るディザ処理のイメージを説明する。
【００２９】
図１０は、図５のマトリクスＭ１、Ｍ２をそれぞれ周期的に８個ずつ敷き詰めた上に多値データに対応する閾値の領域を表したものである。多値データは、図１０の上側に示すように、偶数番目と奇数番目に分割されてそれぞれが並列に処理される。このため、分割された各多値データは、それぞれマトリクスＭ１とＭ２に対応される。その結果、多値データに対応する閾値は従来と全く同様になり、図９の対応に従い、偶数番目のグループについては１ライン目が“０，２，４，６，８，１０”に対して“２４，２６，２８，２４，２６，２８”で２ライン目が“１２，１４，１６，１８，２０，２２”に対して“０，２，４，０，２，４”となり、奇数番目のグループについては１ライン目が“１，３，５，７，９，１１”に対して“２５，２７，２９，２５，２７，２９”で２ライン目が“１３，１５，１７，１９，２１，２３”に対して“１，３，５，１，３，５”のようになる。
【００３０】
つまり、多値データの偶数番目のグループは、マトリクスＭ１を使ってディザ処理することができ、それと別個に、多値データの奇数番目のグループは、マトリクスＭ２を使ってディザ処理することができる。この場合に、図３のマトリクスＭ０を図５のマトリクスＭ１、Ｍ２のように閾値の格納順を変換していても多値データと閾値の対応関係は崩れない。すなわち、図８に示す従来の方式では、例えば、多値データ”０”，”１”に対応する閾値は、”２４”，”２５”となっており、図１０に示す本発明の方式でも、多値データ”０”，”１”に対応する閾値は、各グループに分割されつつも、”２４”，”２５”となっているという具合である。
【００３１】
図１１は、図１０の条件における図１のディザ処理回路の動作を説明するフローチャートである。また、図１２〜１７は、図１０の条件における図１のディザ処理回路の動作を説明するタイムチャートである。
ディザ処理開始前に第０アドレス回路１００、第１アドレス回路１０１、第２アドレス回路１０２、第３アドレス回路１０３の各レジスタ信号は以下のように設定済とする。
【００３２】
第０アドレス回路１００、第２アドレス回路１０２で共通する設定値については以下である。
ｒｅｇ＿ｍｓｔｔ＝１２：  これは、最初に入力される多値データ０に対応する従来のマトリクスＭ０上のアドレス”２４”に対応するマトリクスＭ１またはＭ２上のアドレスの閾値が格納されているマトリクス格納用メモリ１０８のアドレスである。
この場合、マトリクスＭ１、Ｍ２のアドレスとマトリクスＭ０のアドレスの対応については、あらかじめ対応表を作成しておくとよい。
【００３３】
ｒｅｇ＿ｐｏｓｘ＝０：  これは、（最初に入力される多値データ０に対応する従来のマトリクスＭ０上のアドレス”２４”に対応するマトリクスＭ１またはＭ２のアドレス）／マトリクスＭ０の列数／２の余りを設定する。
ｒｅｇ＿ｐｏｓｙ＝４：  これは、（最初に入力される多値データ０に対応する従来のマトリクスＭ０上のアドレス”２４”に対応するマトリクスＭ１またはＭ２のアドレス）／マトリクスＭ０の列数／２の整数部を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝２：  これは、マトリクスＭ０の列数／２  −１を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４：  これは、マトリクスＭ０の行数−１を設定する。
【００３４】
ｒｅｇ＿ｌｌ＝５：  これは、多値データのライン長が偶数の場合、多値データのライン長／２−１である。
一方、これは、多値データのライン長が奇数の場合、（多値データのライン長＋１）／２  −１である。
本実施例の条件では多値データのライン長が１２であるため、ｒｅｇ＿ｌｌ＝多値データのライン長／２−１＝１２／２−１＝５となる。
ｒｅｇ＿ｌｎ＝１：  これは、多値データのライン数−１である。
【００３５】
一方、第１アドレス回路１０１、第３アドレス回路１０３には、以下の設定を行う。
ｒｅｇ＿ｍｓｔｔ＝２８：  これは、最初に入力される多値データ１に対応する従来のマトリクスＭ０上のアドレス”２５”に対応するマトリクスＭ１またはＭ２上のアドレスの閾値が格納されているマトリクス格納用メモリ１０８のアドレスである。
上述したように、マトリクスＭ１、Ｍ２のアドレスとマトリクスＭ０のアドレスの対応はあらかじめ対応表を作成しておくとよい。
【００３６】
ｒｅｇ＿ｐｏｓｘ＝０：  これは、（最初に入力される多値データ１に対応する従来のマトリクスＭ０上のアドレス”２５”に対応するマトリクスＭ１またはＭ２のアドレス）／マトリクスＭ０の列数／２の余りを設定する。
ｒｅｇ＿ｐｏｓｙ＝４：  これは、（最初に入力される多値データ１に対応する従来のマトリクスＭ０上のアドレス”２５”に対応するマトリクスＭ１またはＭ２のアドレス）／マトリクスＭ０の列数／２の整数部を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝２：  これは、マトリクスＭ０の列数／２  −１を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４：  これは、マトリクスＭ０の行数−１を設定する。
【００３７】
ｒｅｇ＿ｌｌ＝５：  これは、多値データのライン長が偶数の場合、多値データのライン長／２  −１である。
一方、多値データのライン長が奇数の場合、これは、（多値データのライン長＋１）／２  −１である。
本実施例の動作の説明の条件では多値データのライン長が１２であるため、ｒｅｇ＿ｌｌ＝多値データのライン長／２−１＝１２／２−１＝５となる。
ｒｅｇ＿ｌｎ＝１：  これは、多値データのライン数−１である。
【００３８】
ところで、図１１のフローチャートは、より詳しく言えば、第０アドレス回路１００、第１アドレス回路１０１、第２アドレス回路１０２、第３アドレス回路１０３の動作を説明するものである。また、図１２のタイムチャートは、アドレス調停回路１１２を介在させた第０アドレス回路１００とマトリクス格納用メモリ１０８の動作を説明するものである。さらに、図１３のタイムチャートは、アドレス調停回路１１２を介在させた第１アドレス回路１０１とマトリクス格納用メモリ１０８の動作を説明するものである。そして、図１４のタイムチャートは、マトリクス格納用メモリ１０８と第２、第３レジスタ１０６，１０７の動作を説明するものである。
【００３９】
一方、図１５のタイムチャートは、第２アドレス回路１０２、ＦＩＦＯ＿２（１０６）、比較部制御回路１１１、第０比較回路１０９の動作を説明するものである。また、図１６のタイムチャートは、第３アドレス回路１０３、ＦＩＦＯ＿３（１０７）、比較部制御回路１１１、第１比較回路１１０の動作を説明するものである。さらに、図１７のタイムチャートは、ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）、比較部制御回路１１１、第０比較回路１０９、第１比較回路１１０の動作を説明するものである。
【００４０】
まず、図１２、１３、１４についてクロック“０〜１３”の信号状態を説明する。
クロック０：  ｓｔａｒｔ信号がアサートされ、これによってディザ処理が開始される。
クロック１：  ｓｔａｒｔ信号の立ち下がりに同期して、図１１のフローチャートの処理Ｓ１１に従い、各信号に初期値がロードされる。すなわち、まず、
ａｄｒ＝ｒｅｇ＿ｍｓｔｔとする。これは、第０アドレス回路１００についてはａｄｒ０＝”１２”であり、第１アドレス回路１０１についてはａｄｒ１＝”２８”である。
【００４１】
また、
ｍ＿ｘａｄ＝ｒｅｇ＿ｐｏｓｘとする。これは、いずれの回路でも”０”である。そして、
ｍ＿ｘａｄ＝ｒｅｇ＿ｐｏｓｙとする。これは、いずれの回路でも”４”である。また、
ｌｌ＿ｃｎｔ＝０とする。さらに、
ｌｉｎｅ＿ｃｎｔ＝０とし、
ｉｎｃ＿ｒｅｑ＝１とする。最後に、
ｎｅｘｔ＿ｍｓｔｔ＝ｒｅｇ＿ｍｓｔｔ＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１とする。これは、第０アドレス回路１００についてはｎｅｘｔ＿ｍｓｔｔ０＝”１８”であり、第１アドレス回路１０１についてはｎｅｘｔ＿ｍｓｔｔ１＝”３３”である。
【００４２】
クロック１−２：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０とｉｎｃ＿ｒｅｑ１が同時にアサートされたため、ａｄｒ１をｍｅｍ＿ａｄｒにロードできない。このため、ｃｏｕｎｔ＿ｅｎ１をディアサートする（図１３参照）。
クロック２：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０信号とｉｎｃ＿ｒｅｑ１信号がアサートされているのを認識し、ａｄｒ０を選択する。これによってマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ０の値＝”１２”をロードする（図１２参照）。
この際、第１アドレス回路１０１はカウントイネーブルがディアサートされたので、ａｄｒ１＝”２８”を更新しない（図１３参照）。
【００４３】
クロック２−３：  アドレス調停回路１１２はクロック３でａｄｒ１をｍｅｍ＿ａｄｒにロード可能となる。このため、ｃｏｕｎｔ＿ｅｎ１をアサートする（図１３参照）。
クロック３：  アドレス調停回路１１２はａｄｒ１を選択してマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ１の値＝”２８”をロードする。
この直後、第１アドレス回路１０１はカウントイネーブルがアサートされたので、ａｄｒ１を”２９”に更新する。
マトリクス格納用メモリ１０８は図６のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝”１２”に対応するデータ”１６，１８，２０，２２，２４，２６，２８，ｘ”をｍｅｍ＿ｄｏに出力する（図１４参照）。
この際、アドレス調停回路１１２はクロック２でのａｄｒ０の値に対応したデータ”１６，１８，２０，２２，２４，２６，２８，ｘ”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿２＿ｗｒをアサートする。
【００４４】
クロック４：  第０アドレス回路１００はｍ＿ｘａｄ０＝ｒｅｇ＿ｍｓｉｚｅ＿ｘとなったため、マトリクスの最後の列であると判断する（図１１のＳ１８）。そして、図１１のＳ１９の処理を行う。すなわち、まず、
ａｄｒ０＝ａｄｒ０＿ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝”１２”とする（図１２参照）。また、
ｍ＿ｘａｄ＝０とし、
ｌｌ＿ｃｎｔ＝ｌｌ＿ｃｎｔ＋１＝３とし、
ｉｎｃ＿ｒｅｑ＝１とする。
この際、マトリクス格納用メモリ１０８は図６のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝”２８”に対応するデータ”１７，１９，２１，２３，２５，２７，２９，ｘ”をｍｅｍ＿ｄｏに出力する（図１４参照）。
そして、アドレス調停回路１１２はクロック３でのａｄｒ１の値（図１３参照）に対応したデータ”１７，１９，２１，２３，２５，２７，２９，ｘ”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿３＿ｗｒをアサートする（図１４参照）。
【００４５】
クロック５：  第１アドレス回路１０１はｍ＿ｘａｄ１＝ｒｅｇ＿ｍｓｉｚｅ＿ｘとなったため、マトリクスの最後の列であると判断する（図１１のＳ１８）。そして、図１１のＳ１９の処理を行う。すなわち、まず、
ａｄｒ１＝ａｄｒ１＿ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝”２８”とする（図１３参照）。また、
ｍ＿ｘａｄ＝０とし、
ｌｌ＿ｃｎｔ＝ｌｌ＿ｃｎｔ＋１＝３とし、
ｉｎｃ＿ｒｅｑ＝１とする。
アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０信号がアサートされているのを認識し、ａｄｒ０を選択する。そして、マトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ０の値＝”１２”をロードする。
【００４６】
クロック６：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ１信号がアサートされているのを認識し、ａｄｒ１を選択する。そして、マトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ１の値＝”２８”をロードする。
この際、アドレス調停回路１１２はクロック５でのａｄｒ０の値＝”１２”に対応したデータ”１６，１８，２０，２２，２４，２６，２８，ｘ”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿２＿ｗｒをアサートする。
そして、マトリクス格納用メモリ１０８は図６のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝”１２”に対応するデータをｍｅｍ＿ｄｏに出力する。
【００４７】
クロック７：  アドレス調停回路１１２はクロック６でのａｄｒ１の値＝”２８”に対応したデータ”１７，１９，２１，２３，２５，２７，２９，ｘ”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿３＿ｗｒをアサートする。
そして、マトリクス格納用メモリ１０８は図６のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２８に対応するデータ”１７，１９，２１，２３，２５，２７，２９，ｘ”をｍｅｍ＿ｄｏに出力する。
このとき、第０アドレス回路１００はｌｌ＿ｃｎｔ＝ｒｅｇ＿ｌｌ＝５  ＆  ｌｉｎｅ＿ｃｎｔ＝ｒｅｇ＿ｌｎ＝０であるため、ラインエンド＆マトリクスの最終ラインであると判断する（図１１のＳ１４）。そして、図１１のＳ１５の処理を実行する。
【００４８】
すなわち、
ａｄｒ＝ｒｅｇ＿ｐｏｓｘ＝０とし、
ｍ＿ｘａｄ＝ｒｅｇ＿ｐｏｓｘ＝０とし、
ｍ＿ｙａｄ＝０とし、
ｎｅｘｔ＿ｍｓｔｔ＝ｒｅｇ＿ｐｏｓｘ＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１＝３とし、
ｌｌ＿ｃｎｔ＝０とし、
ｌｉｎｅ＿ｃｎｔ＝ｌｉｎｅ＿ｃｎｔ＋１＝１とし、
ｉｎｃ＿ｒｅｑ＝１とする。
【００４９】
クロック８〜クロック１２まで同様の操作を繰り返す。
クロック１２：  第０アドレス回路１００はｌｉｎｅ＿ｃｎｔ０＝ｒｅｇ＿ｌｎ＝１  ＆  ｌｌ＿ｃｎｔ０＝ｒｅｇ＿ｌｌ＝５（図１１のＳ１２）であるため最後のアドレスであると判断する。そして、アドレスのカウントを終了する。
クロック１３：  第１アドレス回路１０１はｌｉｎｅ＿ｃｎｔ１＝ｒｅｇ＿ｌｎ  ＆  ｌｌ＿ｃｎｔ１＝ｒｅｇ＿ｌｌ（図１１のＳ１２）であるため最後のアドレスであると判断する。そして、アドレスのカウントを終了する。
【００５０】
次に図１５，１６，１７について説明する。
クロック０：  ｓｔａｒｔ信号がアサートされ、これによりディザ処理が開始される。
クロック１：  ｓｔａｒｔ信号の立ち下がりに同期して、図１１のフローチャートの処理Ｓ１１、に従い、第２、第３アドレス回路１０２、１０３の各信号に初期値がロードされる。
クロック２：  多値データ０、多値データ１がＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）に格納される（図１７参照）。
比較部制御回路１１１はｉｎｃ＿ｒｅｑ２、ｉｎｃ＿ｒｅｑ３がアサートされているのを認識するが、クロック２の初期ロードによるものであると判断してＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）へのｒｄ信号ｆｉｆｏ＿２＿ｒｄ、ｆｉｆｏ＿３＿ｒｄをアサートしない（図１５、図１６参照）。
【００５１】
クロック４：  ＦＩＦＯ＿２（１０６）にマトリクス格納用メモリ１０８からのデータが格納される。
同時にａｄｒ２の下位３ｂｉｔによりｆｉｆｏ＿２＿ｄｏが選択されてｔｈ０＝２４となる（図１５参照）。
クロック５：  ＦＩＦＯ＿３（１０７）にマトリクス格納用メモリ１０８からのデータが格納される。
同時にａｄｒ３の下位３ｂｉｔによりｆｉｆｏ＿３＿ｄｏが選択されてｔｈ１＝２５となる（図１６参照）。
【００５２】
比較部制御回路１１１はＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）に多値データが格納され、ＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）にマトリクスの閾値データが格納されたため、ｃｏｍｐａｒｅ信号をアサートして２値データ０、２値データ１を生成する（図１７参照）。しかし、生成した２値データ０、２値データ１を格納する必要があるため、その格納のための図示しない後段のバッファが受信可能かどうかを、まず確認してその後でｃｏｍｐａｒｅ信号をアサートする。
本実施例では説明を簡単にするため、図示しない後段のバッファは常に受信可能であるとする。
ｃｏｍｐａｒｅ信号は第２、第３アドレス回路１０２、１０３のｃｏｕｎｔ＿ｅｎ端子とＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）のリード端子に接続されている。そして、
ｃｍｐａｒｅ＝ｃｏｕｎｔ＿ｅｎ２＝ｃｏｕｎｔ＿ｅｎ３＝ｆｉｆｏ＿０＿ｒｄ＝ｆｉｆｏ＿１＿ｒｄである。
【００５３】
クロック６：  ｃｏｍｐａｒｅ信号がアサートされたため、第２アドレス回路１０２、第３アドレス回路１０３は、ａｄｒ２、ａｄｒ３を更新する。これにより、ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）はリードされてｆｉｆｏ＿０＿ｄｏ、ｆｉｆｏ＿１＿ｄｏが更新される。同時に第０比較回路１０９はｔｈ０とｆｉｆｏ＿０＿ｄｏを比較して２値データ０を出力する。また、第１比較回路１１０はｔｈ１とｆｉｆｏ＿１＿ｄｏを比較して２値データ１を出力する。
クロック８：  第２アドレス回路１０２はｍ＿ｘａｄ２＝ｒｅｇ＿ｍｓｉｚｅ＿ｘであるため、マトリクスの最後の列であると判断（図１１のＳ１８）して図１１のＳ１９の処理を実行する。また、第３アドレス回路１０３はｍ＿ｘａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｘであるため、マトリクスの最後の列であると判断（図１１のＳ１８）して図１１のＳ１９の処理を実行する。
比較部制御回路１１１はｉｎｃ＿ｒｅｑ２とｉｎｃ＿ｒｅｑ３を認識してｆｉｆｏ＿２＿ｒｄ、ｆｉｆｏ＿３＿ｒｄ信号をアサートする。同時にｃｏｍｐａｒｅ信号をディアサートする。
【００５４】
クロック８−９：  比較部制御回路１１１はｉｎｃ＿ｒｅｑ２とｉｎｃ＿ｒｅｑ３を認識してｆｉｆｏ＿２＿ｒｄ、ｆｉｆｏ＿３＿ｒｄ信号をアサートする。同時にｃｏｍｐａｒｅ信号をディアサートする。
クロック９：  ＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）はｆｉｆｏ＿２＿ｒｄ信号、ｆｉｆｏ＿３＿ｒｄ信号によりｆｉｆｏ＿２＿ｄｏ、ｆｉｆｏ＿３＿ｄｏを更新する。そして、比較部制御回路１１１はｃｏｍｐａｒｅ信号をアサートする。
クロック１０からクロック１１までは同様の処理を行う。
クロック１２：  第２アドレス回路１０２はｌｌ＿ｃｎｔ２＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｙａｄ２＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ（図１１のＳ１４）であるため、図１１のＳ１５の処理を行う。
また、第３アドレス回路１０３はｌｌ＿ｃｎｔ３＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｘａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｘ＆ｍ＿ｙａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ（図１１のＳ１４）であるため、図１１のＳ１５の処理を行う。
クロック１３からクロック１９までは同様の処理を行う。
【００５５】
クロック２０：  第２アドレス回路１０２はｌｌ＿ｃｎｔ２＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｙａｄ２＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ＆ｌｉｎｅ＿ｃｎｔ２＝ｒｅｇ＿ｌｎ（図１１のＳ１２）であり、最後のアドレスであると判断してアドレスの更新を停止する。
第３アドレス回路１０３はｌｌ＿ｃｎｔ３＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｙａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ＆ｌｉｎｅ＿ｃｎｔ３＝ｒｅｇ＿ｌｎ（図１１のＳ１２）であり、最後のアドレスであると判断してアドレスの更新を停止する。
ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）から最後のデータが読み出されて最後の２値データ０、２値データ１が生成されて処理を終了する。
以上のようにして、ほぼ１クロック毎に２値データ０、２値データ１が同時に得られる。
【００５６】
次に、マトリクスの列数が奇数の場合の動作を説明する。
図１８は５行＊５列のマトリクスＭ３を表している。マトリクスの中の数値は閾値であり、マトリクス上のアドレスを１０進で表したものと同じ値としている。以下の説明では図１８の５行＊５列のマトリクスＭ３を例にして本実施例の内容を説明する。
【００５７】
図１９はマトリクスの列数が奇数の場合の閾値の格納順の変換方法を表したフローチャートである。
元のマトリクスをＭ３（Ａ３）とする。Ａ３はマトリクスＭ３上のアドレスであり、たとえばＭ３（０）は０、Ｍ３（６）＝６である。
そして、格納順の変換後のマトリクスを図２０に示すＭ４（Ａ４）とする。
以下に図１９のフローチャートを説明する。
Ｓ３１：  初期設定を行う。
すなわち、元のマトリクスＭ３のアドレスＡ３＝０、変換後のマトリクスＭ４のアドレスＡ４＝０とする。
また、行方向の位置を表すｐｏｓ＿ｙ＝０とする。
そして、ｍｓｉｚｅ＿ｘ＝マトリクスの列数−１、ｍｓｉｚｅ＿ｙ＝マトリクスの行数−１とする。
【００５８】
Ｓ３２：  マトリクスＭ４にＭ３を代入する。
この場合、最初のループでは、Ａ３＝０、Ａ４＝０なので、Ｍ４（０）＝Ｍ３（０）＝０となる。
Ｓ３３：  アドレスを更新する。すなわち、
Ａ３＝０＋２＝２、Ａ４＝０＋１＝１とする。
Ｓ３４：  元のマトリクスの最後の列を超えたかどうかをチェックする。最初のループでは、
Ａ３＝２＜（４＋１）＊（０＋１）−１＝４なのでＳ３２の処理に移る。
【００５９】
Ｓ３２：  ２回目のループでは、Ａ３＝２、Ａ４＝１なので、Ｍ（１）＝Ｍ３（２）＝２となる。
Ｓ３３：  ２回目のループでは、Ａ３＝２＋２＝４、Ａ４＝１＋１＝２となる。
Ｓ３４：  ２回目のループでは、Ａ３＝４＝４なのでＳ３２の処理に移る。
Ｓ３２：  ３回目のループでは、Ａ３＝４、Ａ４＝２なので、Ｍ（２）＝Ｍ３（４）＝４となる。
Ｓ３３：  ３回目のループでは、Ａ３＝４＋２＝６、Ａ４＝２＋１＝３となる。
Ｓ３４：  ３回目のループでは、Ａ３＝６＞４なのでＳ３５の処理に移る。
【００６０】
Ｓ３５：  １回目のループでは、Ａ３＝６なので、Ａ３＝６−（４＋１）＝１となる。
Ｓ３６：  １回目のループでは、Ａ３＝１、Ａ４＝３なので、Ｍ４（３）＝Ｍ３（１）＝１となる。
Ｓ３７：  アドレスを更新する。
１回目のループでは、Ａ３＝１＋２＝３、Ａ４＝３＋１＝４となる。
Ｓ３８：  マトリクスＭ４の最後の列を超えたかどうかをチェックする。
１回目のループでは、Ａ４＝４＝４なのでＳ３６の処理に移る。
Ｓ３６：  ２回目のループでは、Ａ３＝３、Ａ４＝４なので、Ｍ４（４）＝Ｍ３（３）＝３となる。
Ｓ３７：  ２回目のループでは、Ａ３＝３＋２＝５、Ａ４＝４＋１＝５となる。
Ｓ３８：  ２回目のループでは、Ａ４＝５＞４なのでＳ３９の処理に移る。
Ｓ３９：  マトリクスＭ３の最終ラインかどうかチェックする。
この場合、ｐｏｓ＿ｙ＝０、ｍｓｉｚｅ＿ｙ＝４なのでＳ４０の処理に移る。
Ｓ４０：  ｐｏｓ＿ｙ＝１となる。
そして、以後ｐｏｓ＿ｙ＝４、Ａ４＝２４、Ａ３＝２３になるまでＳ３２からＳ４０を繰り返す。
【００６１】
ｐｏｓ＿ｙ＝４、Ａ４＝２４、Ａ３＝２３になった後の動作を以下に説明する。
Ｓ３８：  元のマトリクスの最後の列を超えたかどうかをチェックする。
Ａ４＝２４＝（４＋１）＊（４＋１）−１＝２４なのでＳ３６の処理に移る。
Ｓ３６：  この場合、Ｍ４（２４）＝Ｍ３（２３）＝２３となる。
Ｓ３７：  この場合、Ａ３＝２３＋２＝２５、Ａ４＝２４＋１＝２５となる。
Ｓ３８：  この場合、Ａ４＝２５＞２４なのでＳ３９の処理に移る。
Ｓ３９：  ｐｏｓ＿ｙ＝ｍｓｉｚｅ＿ｙ＝４なので処理を終了する。
以上の処理により、図２０のマトリクスが生成される。
【００６２】
図２１は図２０のマトリクスＭ４を６４ｂｉｔ幅のマトリクス格納用メモリ１０８に格納した場合のマトリクス格納用メモリ１０８のアドレスと閾値の対応を表したものである。
参考までに図２２は、従来の方法で図１８のマトリクスＭ３を６４ｂｉｔ幅のマトリクス格納用メモリ１０８に格納した場合のマトリクス格納用メモリ１０８のアドレスと閾値の対応を表したものであり、マトリクス格納用メモリ１０８のアドレス”０”とマトリクスＭ３上のアドレス”０”を合わせて順番に閾値が格納されている。
図２３はライン長＝１０、ライン数＝２の多値データを５行＊５列の従来のマトリクスＭ３で処理する場合のイメージである。これは従来のマトリクスＭ３（図１８）を周期的に８個敷き詰めた上に多値データに対応する閾値の領域を表したものであり、多値データに対応する閾値は図２４のようになる。
【００６３】
図２５は図２０のマトリクスＭ４を周期的に８個敷き詰めた上に多値データに対応する閾値の領域を表したものである。偶数グループの多値データの最初のデータ”０”に対応するマトリクスＭ４のアドレスを”２０”に設定し、奇数グループの多値データの最初のデータ”１”に対応するマトリクスＭ４のアドレスを”２１”に設定することにより多値データに対応する閾値は図２４のようになる。
つまり、図１８のマトリクスＭ３を図２０のマトリクスＭ４ように閾値の格納順を変換しても多値データと閾値の対応関係は崩れない。図２３に示す従来の方式では、”０”，”１”に対応する閾値は”２０”，”２１”であるのに対し、図２５に示す本発明の方式でも、”０”，”１”に対応する閾値は”２０”，”２１”であるという具合である。ここで、多値データの偶数番目のグループ”０，２，４，６，８，１０，１２，１４，１６，１８”は閾値”２０，２２，２４，２１，２３，０，２，４，１，３”に対応し、奇数番目のグループ”１，３，５，７，９，１１，１３，１５，１７，１９”は周期的に対称的な領域に配列された閾値”２１，２３，２０，２２，２４，１，３，０，２，４”に対応していることがわかる。
【００６４】
図２６〜図３１は、図２５の条件における図１のディザ処理回路の動作のタイムチャートである。
ディザ処理開始前に、第０アドレス回路１００、第１アドレス回路１０１、第２アドレス回路１０２、第３アドレス回路１０３の各レジスタ信号は以下のように設定済とする。
【００６５】
第０アドレス回路１００、第２アドレス回路１０２の設定値は以下の値を設定する。ｒｅｇ＿ｍｓｔｔ＝２０：  最初に入力される多値データ０に対応する従来のマトリクスＭ３上のアドレス”２０”に対応するマトリクスＭ４上のアドレスの閾値が格納されているマトリクス格納用メモリ１０８のアドレスである。
前述したように、マトリクスＭ３のアドレスとマトリクスＭ４のアドレスの対応についてはあらかじめ表を作成しておくとよい。
【００６６】
ｒｅｇ＿ｐｏｓｘ＝０：  これは、（最初に入力される多値データ０に対応する従来のマトリクスＭ３上のアドレス”２０”に対応するマトリクスＭ４のアドレス）／マトリクスＭ３の列数における余りである。
ｒｅｇ＿ｐｏｓｙ＝４：  これは、（最初に入力される多値データ０に対応する従来のマトリクスＭ３上のアドレス”２０”に対応するマトリクスＭ４のアドレス）／列数における整数部である。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝４：  これは、マトリクスＭ３の列数−１である。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４：  これは、マトリクスＭ３の行数−１である。
ｒｅｇ＿ｌｌ＝４：  これは、多値データのライン長／２−１＝１０／２−１＝４である。
ｒｅｇ＿ｌｎ＝１：  これは、多値データのライン数−１である。
【００６７】
第１アドレス回路１０１、第３アドレス回路１０３は以下の値を設定する。
ｒｅｇ＿ｍｓｔｔ＝２３：  これは、最初に入力される多値データ１に対応する従来のマトリクスＭ３上のアドレス”２１”に対応するマトリクスＭ４のアドレスの閾値が格納されているマトリクス格納用メモリ１０８のアドレスである。
この場合も、マトリクスＭ３のアドレスとマトリクスＭ４のアドレスの対応についてはあらかじめ表を作成しておくとよい。
【００６８】
ｒｅｇ＿ｐｏｓｘ＝３：  これは、（最初に入力される多値データ１に対応する従来のマトリクスＭ３上のアドレス”２１”に対応するマトリクスＭ４のアドレス）／マトリクスＭ３の列数における余りを設定する。
ｒｅｇ＿ｐｏｓｙ＝４：  これは、（最初に入力される多値データ１に対応する従来のマトリクスＭ３上のアドレス”２１”に対応するマトリクスＭ４のアドレス）／マトリクスＭ３の列数における整数部を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝４：  これは、マトリクスの列数−１である。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４：  これは、マトリクスの行数−１である。
ｒｅｇ＿ｌｌ＝４：  これは、多値データのライン長／２−１＝１０／２−１＝４である。
ｒｅｇ＿ｌｎ＝１：  これは、多値データのライン数−１である。
【００６９】
図２６，２７，２８は、より詳しく言うと、第０アドレス回路１００、第１アドレス回路１０１、アドレス調停回路１１２、マトリクス格納用メモリ１０８の動作を説明するタイムチャートである。また、図２９，３０，３１は、第２アドレス回路１０２、第３アドレス回路１０３、ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）、比較部制御回路１１１、第０比較回路１０９、第１比較回路１１０の動作を説明するタイムチャートである。
【００７０】
まず、図２６〜２８について説明する。
クロック０：  ｓｔａｒｔ信号がアサートされディザ処理が開始される。
クロック１：  ｓｔａｒｔ信号に同期して、図１１のフローチャートの処理Ｓ１１に従い、各信号に初期値がロードされる。すなわち、まず、
ａｄｒ＝ｒｅｇ＿ｍｓｔｔとする。これは、第０アドレス回路１００についてはａｄｒ０＝”２０”であり、第１アドレス回路１０１についてはａｄｒ１＝”２３”である。
【００７１】
また、
ｍ＿ｘａｄ＝ｒｅｇ＿ｐｏｓｘとする。これは、第０アドレス回路１００については”０”であり、第１アドレス回路１０１についてはａｄｒ１＝”３”である。そして、
ｍ＿ｘａｄ＝ｒｅｇ＿ｐｏｓｙとする。これは、いずれの回路でも”４”である。また、
ｌｌ＿ｃｎｔ＝０とする。さらに、
ｌｉｎｅ＿ｃｎｔ＝０とし、
ｉｎｃ＿ｒｅｑ＝１とする。最後に、
ｎｅｘｔ＿ｍｓｔｔ＝ｒｅｇ＿ｍｓｔｔ＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１とする。これは、第０アドレス回路１００についてはｎｅｘｔ＿ｍｓｔｔ０＝”２５”であり、第１アドレス回路１０１についてはｎｅｘｔ＿ｍｓｔｔ１＝”２８”である。
【００７２】
クロック１−２：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０とｉｎｃ＿ｒｅｑ１が同時にアサートされたため、ａｄｒ１をｍｅｍ＿ａｄｒにロードできない。このため、ｃｏｕｎｔ＿ｅｎ１をディアサートする。
クロック２：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０信号とｉｎｃ＿ｒｅｑ１信号がアサートされているのを認識し、ａｄｒ０を選択してマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ０の値をロードする。
この場合、第１アドレス回路１０１はカウントイネーブルがディアサートされたので、ａｄｒ１を更新しない。
【００７３】
クロック２−３：  アドレス調停回路１１２はクロック３でａｄｒ１をｍｅｍ＿ａｄｒにロード可能となったため、ｃｏｕｎｔ＿ｅｎ１をアサートする。
クロック３：  第１アドレス回路１０１はカウントイネーブルがアサートされたのでａｄｒ１を更新し、ａｄｒ１［２：０］＝７なので図１１のＳ２１の処理を行う。すなわち、ａｄｒ，ｍ＿ｘａｄ，ｌｌ＿ｃｎｔをそれぞれ更新（＋１）するとともに、ｉｎｃ＿ｒｅｑ＝１とする。マトリクス格納用メモリ１０８は図２１のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２０に対応するデータをｍｅｍ＿ｄｏに出力する。
アドレス調停回路１１２はクロック２でのａｄｒ０の値に対応したデータがｍｅｍ＿ｄｏに出力されるのでｆｉｆｏ＿２＿ｗｒをアサートする。
【００７４】
クロック４：  第１アドレス回路１０１はｍ＿ｘａｄ１＝ｒｅｇ＿ｍｓｉｚｅ＿ｘとなったためマトリクスの最後の列であると判断して（図１１のＳ１８）図１１のＳ１９の処理を行う。
マトリクス格納用メモリ１０８は図２１のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２３に対応するデータをｍｅｍ＿ｄｏに出力する。
アドレス調停回路１１２はａｄｒ１を選択してマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ１の値をロードする。
また、アドレス調停回路１１２はクロック３でのａｄｒ１の値に対応したデータがｍｅｍ＿ｄｏに出力されるのでｆｉｆｏ＿３＿ｗｒをアサートする。
【００７５】
クロック５：  第０アドレス回路１００はａｄｒ０［２：０］＝７なので図１１のＳ２１の処理を行う。
アドレス調停回路１１２はｉｎｃ＿ｒｅｑ１信号がアサートされているのを認識し、ａｄｒ１を選択してマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ１の値をロードする。
マトリクス格納用メモリ１０８は図２１のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２４に対応するデータをｍｅｍ＿ｄｏに出力する。
アドレス調停回路１１２はクロック４でのａｄｒ１の値に対応したデータがｍｅｍ＿ｄｏに出力されるのでｆｉｆｏ＿３＿ｗｒをアサートする。
【００７６】
クロック６：  第０アドレス回路１００はｌｌ＿ｃｎｔ０＝ｒｅｇ＿ｌｌ  ＆  ｐｏｓ＿ｙ＝ｒｅｇ＿ｍｓｉｚｅ＿ｙとなったため、図１１のＳ１５の処理を行う。
アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０信号がアサートされているのを認識し、ａｄｒ０を選択してマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ０の値をロードする。
アドレス調停回路１１２はクロック５でのａｄｒ１の値に対応したデータがｍｅｍ＿ｄｏに出力されるのでｆｉｆｏ＿３＿ｗｒをアサートする。
マトリクス格納用メモリ１０８は図２１のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２０に対応するデータをｍｅｍ＿ｄｏに出力する。
クロック７〜クロック１０まで同様の操作を繰り返す。
【００７７】
クロック１１：  第０アドレス回路１００はｌｉｎｅ＿ｃｎｔ０＝ｒｅｇ＿ｌｎ  ＆  ｌｌ＿ｃｎｔ０＝ｒｅｇ＿ｌｌ（図１１のＳ１２）であるため最後のアドレスであると判断してアドレスのカウントを終了する。
クロック１２：  第１アドレス回路１０１はｌｉｎｅ＿ｃｎｔ１＝ｒｅｇ＿ｌｎ  ＆  ｌｌ＿ｃｎｔ１＝ｒｅｇ＿ｌｌ（図１１のＳ１２）であるため最後のアドレスであると判断してアドレスのカウントを終了する。
【００７８】
次に図２９，３０，３１について説明する。
クロック０：  ｓｔａｒｔ信号がアサートされ、ディザ処理が開始される。
クロック１：  ｓｔａｒｔ信号に同期して、図１１のフローチャートの処理Ｓ１１に従い第２、第３アドレス回路１０２、１０３の各信号に初期値がロードされる。
クロック２：  多値データ０、多値データ１がＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）に格納される。
比較部制御回路１１１はｉｎｃ＿ｒｅｑ２、ｉｎｃ＿ｒｅｑ３がアサートされているのを認識するがクロック２の初期ロードによるものであると判断してＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）へのｒｄ信号ｆｉｆｏ＿２＿ｒｄ、ｆｉｆｏ＿３＿ｒｄをアサートしない。
【００７９】
クロック４：  ＦＩＦＯ＿２（１０６）にマトリクス格納用メモリ１０８からのデータが格納される。
同時にａｄｒ２の下位３ｂｉｔによりｆｉｆｏ＿２＿ｄｏが選択されてｔｈ０＝２０となる。
クロック５：  ＦｌＦＯ＿３（１０７）にマトリクス格納用メモリ１０８からのデータが格納される。
同時にａｄｒ３の下位３ｂｉｔによりｆｉｆｏ＿３＿ｄｏが選択されてｔｈ１＝２１となる。
比較部制御回路１１１はＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）に多値データが格納され、ＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）にマトリクスの閾値データが格納されたため、２値データ０、２値データ１を格納する。このため、図示しない後段のバッファが受信可能かどうかを確認してｃｏｍｐａｒｅ信号をアサートする。
本実施例では説明を簡単にするため、図示しない後段のバッファは常に受信可能であるとする。
ｃｏｍｐａｒｅ信号は第２、第３アドレス回路１０２、１０３のｃｏｕｎｔ＿ｅｎ端子とＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）のリード端子に接続されている。よって
ｃｏｍｐａｒｅ＝ｃｏｕｎｔ＿ｅｎ２＝ｃｏｕｎｔ＿ｅｎ３＝ｆｉｆｏ＿０＿ｒｄ＝ｆｉｆｏ＿１＿ｒｄである。
【００８０】
クロック６：  ｃｏｍｐａｒｅ信号がアサートされたため、第２アドレス回路１０２は、ａｄｒ２を更新し、第３アドレス回路１０３はａｄｒ３［２：０］＝７なので図１１のＳ２１の処理を行う。
ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）はリードされる。そして、ｆｉｆｏ＿０＿ｄｏ、ｆｉｆｏ＿１＿ｄｏが更新される。
これと同時に、第０比較回路１０９は、ｔｈ０とｆｉｆｏ＿０＿ｄｏを比較して２値データ０を出力する。
一方、第１比較回路１１０は、ｔｈ１とｆｉｆｏ＿１＿ｄｏを比較して２値データ１を出力する。
比較部制御回路１１１は、ｉｎｃ＿ｒｅｑ３を認識してｆｉｆｏ＿３＿ｒｄをアサートし、ｃｏｍｐａｒｅ信号をディアサートする。
【００８１】
クロック７：  ＦＩＦＯ＿３はｆｉｆｏ＿３＿ｒｄ信号によりｆｉｆｏ＿３＿ｄｏを更新する。
ここで、比較部制御回路１１１はｃｏｍｐａｒｅ信号をアサートする。
クロック８：  第３アドレス回路１０３はｍ＿ｘａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｘであるため、マトリクスの最後の列であると判断する（図１１のＳ１８）。そして、図１１のＳ１９の処理を実行する。
比較部制御回路１１１はｉｎｃ＿ｒｅｑ３を認識してｆｉｆｏ＿３＿ｒｄ信号をアサートする。
そして、比較部制御回路１１１は同時にｃｏｍｐａｒｅ信号をディアサートする。
【００８２】
クロック９：  ＦＩＦＯ＿３はｆｉｆｏ＿３＿ｒｄ信号によりｆｉｆｏ＿３＿ｄｏを更新する。
比較部制御回路１１１はｃｏｍｐａｒｅ信号をアサートする。
クロック１０からクロック１２までは同様の処理を行う。
クロック１３：  第２アドレス回路１０２はｌｌ＿ｃｎｔ２＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｘａｄ２＝ｒｅｇ＿ｍｓｉｚｅ＿ｘ  ＆  ｍ＿ｙａｄ２＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ  （図１１のＳ１４）であるため、図１１のＳ１５の処理を行う。
第３アドレス回路１０３はｌｌ＿ｃｎｔ３＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｘａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｘ  ＆  ｍ＿ｙａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ  （図１１のＳ１４）であるため、図１１のＳ１５の処理を行う。
クロック１３からクロック１８までは同様の処理を行う。
【００８３】
クロック２０：  第２アドレス回路１０２はｌｌ＿ｃｎｔ２＝ｒｅｇ＿ｌｌ  ＆  ｌｉｎｅ＿ｃｎｔ２＝ｒｅｇ＿ｌｎ（図１１のＳ１２）であり、最後のアドレスであると判断してアドレスの更新を停止する。
第３アドレス回路１０３はｌｌ＿ｃｎｔ３＝ｒｅｇ＿ｌｌ  ＆  ｌｉｎｅ＿ｃｎｔ３＝ｒｅｇ＿ｌｎ  （図１１のＳ１２）であり、最後のアドレスであると判断してアドレスの更新を停止する。
【００８４】
（１−３）第１の実施例の効果
以上詳述したように、第１の実施例によれば、マトリクスの列数が奇数か偶数かによりマトリクスへの閾値の格納順を入れ替えることにより、マトリクス格納用メモリ１０８の容量を増やさずに、主走査方向に連続する２個の多値データを１クロックで並列に処理できる。このため、ディザ処理回路の処理能力が約２倍向上する。
【００８５】
次に、第２の実施例を説明する。
（２−０）第２の実施例によって解決したい点
副走査方向の解像度を２倍にしてディザ処理する場合、たとえば、６００＊６００ｄｐｉの多値データをディザ処理して６００＊１２００ｄｐｉの２値データを生成する場合、第１の実施例では２回同一ラインの多値データをディザ処理回路に入力して２回ディザ処理しなければならなかった。しかし、この方法では、主記憶メモリから多値データを読み出す量が２倍になるため、ディザ処理以外の回路が主記憶メモリにアクセスすることが制限される可能性がある。この結果としてディザ処理回路を含むシステム全体の処理能力が低下してしまう。
【００８６】
そこで、第１の実施例のように、同解像度でディザ処理を行う場合は主走査方向に連続する２個の多値データを並列にディザ処理し、副走査方向の解像度を２倍にしてディザ処理する場合は、多値データを１個ずつディザ処理回路に入力して１度に２個の閾値を読み出し、２個の閾値と１個の多値データから２個の２値データを生成する。
【００８７】
（２−１）第２の実施例の構成
図３２は第２の実施例のブロックであり、図３３は図３２のデータフロー図である。
第２の実施例が第１の実施例と対比して異なる点は、まず、ｆｉｆｏ＿０＿ｄｏ信号とｆｉｆｏ＿１＿ｄｏ信号を選択するためのマルチプレクサ（ＭＵＸ）２０４が追加されている点である。このマルチプレクサ２０４の出力信号ｆｉｆｏ＿０＿１＿ｄｏは、第１比較回路１１０に入力されている。そして、このマルチプレクサ２０４は同一解像度モードのときはｆｉｆｏ＿１＿ｄｏを選択し、副走査方向の解像度を２倍にして処理する場合はｆｉｆｏ＿０＿ｄｏを選択する。
【００８８】
また、第１の実施例と対比して、次に異なる点は、第１の実施例における第０アドレス回路１００、第１アドレス回路１０１、第２アドレス回路１０２、第３アドレス回路１０３がそれぞれ第０′アドレス回路２００、第１′アドレス回路２０１、第２′アドレス回路２０２、第３′アドレス回路２０３に置き換えられている点である。
図３４，３５は、第０′アドレス回路２００、第１′アドレス回路２０１、第２′アドレス回路２０２、第３′アドレス回路２０３の各動作を説明するフローチャートである。
【００８９】
図３４，３５に示す処理では、第１の実施例で説明した第０アドレス回路１００、第１アドレス回路１０１、第２アドレス回路１０２、第３アドレス回路１０３に対して、図示しないレジスタからの入力信号ｒｅｇ＿ｍｏｄｅが追加されている。これに伴い、処理Ｓ７０と処理Ｓ７１が追加されている。さらに、処理Ｓ５１、Ｓ５５、Ｓ５７が図１１の処理Ｓ１１、Ｓ１５、Ｓ１７に対比して変更されている。そして、その他の処理Ｓ５２〜Ｓ５４、Ｓ５６、Ｓ５８〜Ｓ６３については、第１の実施例における処理Ｓ１２〜Ｓ１４、Ｓ１６、Ｓ１８〜Ｓ２３に対応しており、これらの処理と同一の処理内容となっている。
ここで、入力信号ｒｅｇ＿ｍｏｄｅは、副走査方向の解像度を等倍で処理する場合は”０”を設定し、２倍で処理する場合は”１”を設定する。
【００９０】
（２−２）第２の実施例の動作
同一解像度モードの時は、マルチプレクサ２０４はｆｉｆｏ＿１＿ｄｏを選択し、ｒｅｇ＿ｍｏｄｅ信号＝０が第０′アドレス回路２００、第１′アドレス回路２０１、第２′アドレス回路２０２、第３′アドレス回路２０３に入力される。これによって、第２の実施例の回路は、第１の実施例と全く同じ動作をする。よって、重複する動作説明を省略する。
【００９１】
そこで、以下、副走査方向の解像度を２倍にして処理する場合について説明する。
図１８の５行＊５列のマトリクスＭ３を使用して、図３６のようにライン長４で、２ラインの多値データを処理する例を説明する。図３６の例では、多値データの１ライン目がマトリクスＭ３の４行目、５行目と比較され、２ライン分の２値データが生成される。そして、多値データの２ライン目がマトリクスＭ３の１行目、２行目と比較され、２ライン分の２値データが生成される。
まず、マトリクス格納用メモリ１０８への閾値の格納順は従来と同じく図２２に示すように格納する。
【００９２】
ディザ処理開始前に、第０′アドレス回路２００、第１′アドレス回路２０１、第２′アドレス回路２０２、第３′アドレス回路２０３の各レジスタ信号は以下のように設定済とする。
第０′アドレス回路２００、第２′アドレス回路２０２には以下の値を設定する。
ｒｅｇ＿ｍｓｔｔ＝１７：  最初に入力される多値データ０に対応するマトリクスＭ３の閾値が格納されているマトリクス格納用メモリ１０８のアドレスを指定する。
ｒｅｇ＿ｐｏｓｘ＝２：  最初に入力される多値データ０に対応するマトリクスＭ３の閾値が格納されているマトリクスＭ３の列方向の座標を指定する。すなわち、図３６において、図中の中央にある枠の左上角に位置する要素の座標である。
ｒｅｇ＿ｐｏｓｙ＝３：  最初に入力される多値データ０に対応するマトリクスＭ３の閾値が格納されているマトリクスＭ３の行方向の座標を指定する。すなわち、図３６において、図中の中央にある枠の左上角に位置する要素の座標である。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝４：  これは、マトリクスＭ３の列数−１である。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４：  これは、マトリクスＭ３の行数−１である。
ｒｅｇ＿ｌｌ＝３：  これは、図３６に示す多値データのライン長−１＝４−１＝３である。
ｒｅｇ＿ｌｎ＝１：  これは、多値データのライン数＊２／２  −１＝２−１＝１である。
【００９３】
第１′アドレス回路２０１、第３′アドレス回路２０３には以下の値を設定する。
ｒｅｇ＿ｍｓｔｔ＝２２：  これは、第０′アドレス回路２００に設定した値＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１＝１７＋４＋１＝２２を計算して設定する。ここで、もしも、
第０′アドレス回路２００に設定した値＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１＞（ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１）＊（ｒｅｇ＿ｍｓｉｚｅ＿ｙ＋１）−１
ならば
第０′アドレス回路２００に設定した値＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１−（ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１）＊（ｒｅｇ＿ｍｓｉｚｅ＿ｙ＋１）
を設定する。
今説明している例では、第０′アドレス回路２００に設定した値＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１≦（ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１）＊（ｒｅｇ＿ｍｓｉｚｅ＿ｙ＋１）−１＝５＊５  −１  ＝２４であるので、第０′アドレス回路２００に設定した値＋ｒｅｇ＿ｍｓｉｚｅ＿ｘ＋１＝２２
をそのまま設定する。
【００９４】
ｒｅｇ＿ｐｏｓｘ＝２：  これは、第０′アドレス回路２００と同じ値を設定する。
ｒｅｇ＿ｐｏｓｙ＝４：  これは、第０′アドレス回路２００に設定した値＋１＝３＋１＝４を計算して設定する。ここで、第０′アドレス回路２００に設定した値＋１＞ｒｅｇ＿ｍｓｉｚｅ＿ｙならば
ｒｅｇ＿ｐｏｓｙ＝０
を設定する。一方、
第０′アドレス回路２００に設定した値＋１≦ｒｅｇ＿ｍｓｉｚｅ＿ｙならば
ｒｅｇ＿ｐｏｓｙ＝第０′アドレス回路２００に設定した値＋１
を設定する。
今の説明の例では、後者を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝４：  これは、第０′アドレス回路２００と同じ値を設定する。
ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４：  これは、第０′アドレス回路２００と同じ値を設定する。
ｒｅｇ＿ｌｌ＝３：  これは、第０′アドレス回路２００と同じ値を設定する。
ｒｅｇ＿ｌｎ＝１：  これは、第０′アドレス回路２００と同じ値を設定する。
【００９５】
図３７〜４２は、第２の実施例の動作を説明するタイムチャートである。
このうち、図３７〜３９は、第０′アドレス回路２００、第１′アドレス回路２０１、アドレス調停回路１１２、マトリクス格納用メモリ１０８のタイムチャートである。また、図４０〜４２は、第２′アドレス回路２０２、第３′アドレス回路２０３、ＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）、比較部制御回路１１１、第０比較回路１０９、第１比較回路１１０のタイムチャートである。
【００９６】
まず、図３７〜３９について説明する。
クロック０：  ｓｔａｒｔ信号がアサートされ、ディザ処理が開始される。
クロック１：  ｓｔａｒｔ信号の立ち下がりに同期して、図３４，３５のフローチャートの処理Ｓ５１に従い、各信号ｍ＿ｘａｄ，ｍｙａｄ，ｎｅｘｔ＿ｍｓｔｔ，ｌｌ＿ｃｎｔ，ｌｉｎｅ＿ｃｎｔ，ａｄｒ，ｉｎｃ＿ｒｅｑに初期値がロードされる。図３７では、これらに、”２，３，２７，０，０，１７，１”がロードされる。図３８では、これらに、”２，４，３２，０，０，２２，１”がロードされる。ちなみに、図４０では、これらに、”２，３，２７，０，０，１７，１”がロードされる。図４１では、これらに、”２，０，３２，０，０，２２，１”がロードされる。
【００９７】
クロック１−２：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０とｉｎｃ＿ｒｅｑ１が同時にアサートされたため、ａｄｒ１をｍｅｍ＿ａｄｒにロードできない。このため、このアドレス調停回路１１２はｃｏｕｎｔ＿ｅｎ１をディアサートする。
クロック２：  アドレス調停回路１１２はｉｎｃ＿ｒｅｑ０信号とｉｎｃ＿ｒｅｑ１信号がアサートされているのを認識し、ａｄｒ０を選択する。そして、マトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ０の値をロードする。
ここで、第１′アドレス回路２０１はカウントイネーブルがディアサートされたのでａｄｒ１を更新しない。
クロック２−３：  アドレス調停回路１１２はクロック３でａｄｒ１をｍｅｍ＿ａｄｒにロード可能となったため、ｃｏｕｎｔ＿ｅｎ１をアサートする。
【００９８】
クロック３：  アドレス調停回路１１２はクロック２でａｄｒ１をｍｅｍ＿ａｄｒにロードできなかったので、ａｄｒ１を選択する。そして、マトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ１の値をロードする。
ここで、マトリクス格納用メモリ１０８は、図２２のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝１７に対応するデータすなわちアドレス”１７”に対応する閾値”１７”を含むデータ”１６，１７，１８，１９，２０，２１，２２，２３”をｍｅｍ＿ｄｏに出力する。
そして、アドレス調停回路１１２は、クロック２でのａｄｒ０＝１７の値に対応したデータ”１６，１７，１８，１９，２０，２１，２２，２３”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿２＿ｗｒをアサートする。
【００９９】
クロック４：  第０′アドレス回路２００は、ｍ＿ｘａｄ０＝ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝４なので、マトリクスの最後の列であると判断して図３５のＳ５９の処理を行う。これによって、各信号値をマトリクスの最初の列に対応した値に再設定する。
ここで、第１′アドレス回路２０１は、ａｄｒ１［２：０］＝７なので、図３５のＳ６１の処理を行う。
マトリクス格納用メモリ１０８は図２２のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２２に対応するデータ”１６，１７，１８，１９，２０，２１，２２，２３”をｍｅｍ＿ｄｏに出力する。
そして、アドレス調停回路１１２はクロック３でのａｄｒ１の値に対応したデータ”１６，１７，１８，１９，２０，２１，２２，２３”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿３＿ｗｒをアサートする。クロック４−５：  アドレス調停回路１１２は、ｉｎｃ＿ｒｅｑ０とｉｎｃ＿ｒｅｑ１が同時にアサートされたため、クロック５でａｄｒ１をｍｅｍ＿ａｄｒにロードできない。このため、ｃｏｕｎｔ＿ｅｎ１をディアサートする。
【０１００】
クロック５：  第０′アドレス回路２００は、ｌｌ＿ｃｎｔ０＝ｒｅｇ＿ｌｌ  ＆  ｍ＿ｙａｄ＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ−１＝３となったため、図３４のＳ７１の処理を行う。
ここで、アドレス調停回路１１２は、ｉｎｃ＿ｒｅｑ０信号がアサートされているのを認識し、ａｄｒ０を選択してマトリクス格納用メモリ１０８のアドレス信号ｍｅｍ＿ａｄｒにａｄｒ０の値をロードする。
クロック５−６：  アドレス調停回路１１２は、クロック６でａｄｒ１をｍｅｍ＿ａｄｒにロード可能となったため、ｃｏｕｎｔ＿ｅｎ１をアサートする。
また、アドレス調停回路１１２は、クロック６でａｄｒ０をｍｅｍ＿ａｄｒにロードできないので、ｃｏｕｎｔ＿ｅｎ０をディアサートする。
【０１０１】
クロック６：  第１′アドレス回路２０１は、ｍ＿ｘａｄ１＝ｒｅｇ＿ｍｓｉｚｅ＿ｘ＝４なので、マトリクスの最後の列であると判断して図３５のＳ５９の処理を行う。
ここで、アドレス調停回路１１２は、クロック５でａｄｒ１をｍｅｍ＿ａｄｒにロードできなかったので、ａｄｒ１をｍｅｍ＿ａｄｒにロードする。
また、アドレス調停回路１１２は、クロック５でのａｄｒ０の値に対応したデータがｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿２＿ｗｒをアサートする。
そして、マトリクス格納用メモリ１０８は、図２２のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝１５に対応するデータ”８，９，１０，１１，１２，１３，１４，１５”をｍｅｍ＿ｄｏに出力する。
【０１０２】
クロック６−７：  アドレス調停回路１１２は、クロック７でａｄｒ０をｍｅｍ＿ａｄｒにロード可能となったため、ｃｏｕｎｔ＿ｅｎ０をアサートする。
また、アドレス調停回路１１２は、クロック７でａｄｒ１をｍｅｍ＿ａｄｒにロードできないので、ｃｏｕｎｔ＿ｅｎ１をディアサートする。
クロック７：  アドレス調停回路１１２はクロック６でａｄｒ０をｍｅｍ＿ａｄｒにロードできなかったので、ａｄｒ０をｍｅｍ＿ａｄｒにロードする。
また、アドレス調停回路１１２は、クロック６でのａｄｒ１＝２４の値に対応したデータ”２４，ｘ，ｘ，ｘ，ｘ，ｘ，ｘ，ｘ”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿３＿ｗｒをアサートする。そして、マトリクス格納用メモリ１０８は、図２２のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２４に対応するデータ”２４，ｘ，ｘ，ｘ，ｘ，ｘ，ｘ，ｘ”をｍｅｍ＿ｄｏに出力する。
クロック７−８：  アドレス調停回路１１２は、クロック８でａｄｒ１をｍｅｍ＿ａｄｒにロード可能となったため、ｃｏｕｎｔ＿ｅｎ１をアサートする。
【０１０３】
クロック８：  第１′アドレス回路２０１は、ｌｌ＿ｃｎｔ０＝ｒｅｇ＿ｌｌ＝３  ＆  ｍ＿ｙａｄ＝ｒｅｇ＿ｍｓｉｚｅ＿ｙ＝４となったため、図３５のＳ５５の処理を行う。これによって、各信号値をマトリクスの最初のラインに対応する値に再設定する。
ここで、アドレス調停回路１１２は、クロック７でａｄｒ１をｍｅｍ＿ａｄｒにロードできなかったので、ａｄｒ１をｍｅｍ＿ａｄｒにロードする。
また、アドレス調停回路１１２は、クロック７でのａｄｒ０＝２の値に対応したデータ”０，１，２，３，４，５，６，７”がｍｅｍ＿ｄｏに出力されるので、ｆｉｆｏ＿２＿ｗｒをアサートする。そして、マトリクス格納用メモリ１０８は、図２２のアドレスと格納データの対応表にそってアドレスｍｅｍ＿ａｄｒ＝２に対応するデータ”０，１，２，３，４，５，６，７”をｍｅｍ＿ｄｏに出力する。
以後、クロック９〜クロック１０まで同様の操作を繰り返す。
【０１０４】
クロック１１：  第０′アドレス回路２００は、ｌｉｎｅ＿ｃｎｔ０＝ｒｅｇ＿ｌｎ＝１  ＆  ｌｌ＿ｃｎｔ０＝ｒｅｇ＿ｌｌ＝３（図３４のＳ５２）であるため、最後のアドレスであると判断する。そして、アドレスのカウントを終了する。
クロック１２：  第１′アドレス回路２０１は、ｌｉｎｅ＿ｃｎｔ１＝ｒｅｇ＿ｌｎ＝１  ＆  ｌｌ＿ｃｎｔ１＝ｒｅｇ＿ｌｌ＝３（図３４のＳ５２）であるため、最後のアドレスであると判断してアドレスのカウントを終了する。
【０１０５】
次に図４０〜４２について説明する。
クロック０：  ｓｔａｒｔ信号がアサートされ、ディザ処理が開始される。
クロック１：  ｓｔａｒｔ信号に同期して、図３４のフローチャートの処理Ｓ５１に従い、第２′アドレス回路２０２、第３′アドレス回路２０３の各信号に初期値がロードされる。
クロック２：  多値データ０、多値データ１がＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）に格納される。
ここで、比較部制御回路１１１は、ｉｎｃ＿ｒｅｑ２、ｉｎｃ＿ｒｅｑ３がアサートされているのを認識するが、クロック２の初期ロードによるものであると判断してＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）へのｒｄ信号ｆｉｆｏ＿２＿ｒｄ、ｆｉｆｏ＿３＿ｒｄをアサートしない。
【０１０６】
クロック４：  ＦＩＦＯ＿２（１０６）にマトリクス格納用メモリ１０８からのデータが格納される。
同時にａｄｒ２の下位３ｂｉｔによりｆｉｆｏ＿２＿ｄｏが選択されてｔｈ０＝１７となる。
クロック５：  ＦＩＦＯ＿３（１０７）にマトリクス格納用メモリ１０８からのデータが格納される。
同時にａｄｒ３の下位３ｂｉｔによりｆｉｆｏ＿３＿ｄｏが選択されてｔｈ１＝２２となる。
ここで、副走査方向を２倍に拡大してディザ処理する場合、図示しないディザ処理回路の前段のバッファから多値データ１には常に無効なデータが入力され、ＦＩＦＯ＿１（１０５）にはデータを格納しない。
【０１０７】
クロック５−６：  比較部制御回路１１１は、ＦＩＦＯ＿０（１０４）に多値データが格納され、ＦＩＦＯ＿２（１０６）、ＦＩＦＯ＿３（１０７）にマトリクスの閾値データが格納されたため、２値データ０、２値データ１を格納するための図示しない後段のバッファが受信可能かどうかを確認してｃｏｍｐａｒｅ信号をアサートする。
本実施例では説明を簡単にするため、図示しない後段のバッファは常に受信可能であるとする。
ここで、ｃｏｍｐａｒｅ信号は、第２′アドレス回路２０２のｃｏｕｎｔ＿ｅｎ端子とＦＩＦＯ＿０（１０４）、ＦＩＦＯ＿１（１０５）のリード端子に接続されていて
ｃｍｐａｒｅ＝ｃｏｕｎｔ＿ｅｎ２＝ｃｏｕｎｔ＿ｅｎ３＝ｆｉｆｏ＿０＿ｒｄ＝ｆｉｆｏ＿１＿ｒｄである。
【０１０８】
クロック６：  ｃｏｍｐａｒｅ信号がアサートされたため、第２′アドレス回路２０２はａｄｒ２を更新し、第３′アドレス回路２０３はａｄｒ３を更新する。
ここで、ＦＩＦＯ＿０（１０４）がリードされる。これによってｆｉｆｏ＿０＿ｄｏが更新される。そして、副走査方向を拡大して処理する場合、マルチプレクサ２０４はｆｉｆｏ＿０＿ｄｏを選択して第１比較回路１１０に出力している。
以上のような状態で、第０比較回路１０９はｔｈ０とｆｉｆｏ＿０＿ｄｏを比較して２値データ０を出力する。
一方、第１比較回路１１０はｔｈ１とｆｉｆｏ＿０＿ｄｏを比較して２値データ１を出力する。この場合、２値データ０と２値データ１は副走査方向に連続した２ドットとなる。図４２における２値データ０と２値データ１の値において例えばＶ４１と記述しているが、これは１ライン目の４番目のデータを表す。
【０１０９】
クロック７：  第３′アドレス回路２０３はａｄｒ３［２：０］＝７となったので、図３５のＳ６１の処理を行う。
クロック６−７：  比較部制御回路１１１は、ｉｎｃ＿ｒｅｑ３がアサートされたのを認識してｆｉｆｏ＿３＿ｒｄ信号をアサートし、同時にｃｏｍｐａｒｅ信号をディアサートする。
クロック８：  ｃｏｍｐａｒｅ信号がディアサートされているので、アドレス回路２２、第３′アドレス回路２０３、ＦＩＦＯ＿０（１０４）、第０比較回路１０９、第１比較回路１１０は停止する。ＦＩＦＯ＿３はｆｉｆｏ＿３＿ｒｄ信号によりｆｉｆｏ＿３＿ｄｏを更新する。
クロック８−９：  比較部制御回路１１１は、ｃｏｍｐａｒｅ信号をアサートする。
【０１１０】
クロック９：  第２′アドレス回路２０２は、ｍ＿ｘａｄ２＝ｒｅｇ＿ｍｓｉｚｅ＿ｘとなったので、図３５のＳ５９の処理を行う。
第３′アドレス回路２０３は、ｍ＿ｘａｄ３＝ｒｅｇ＿ｍｓｉｚｅ＿ｘとなったので、図３５のＳ５９の処理を行う。
クロック９−１０：  比較部制御回路１１１は、ｉｎｃ＿ｒｅｑ２とｉｎｃ＿ｒｅｑ３がアサートされたのを認識してｆｉｆｏ＿２＿ｒｄとｆｉｆｏ＿３＿ｒｄ信号をアサートし、同時にｃｏｍｐａｒｅ信号をディアサートする。
クロック１０−１１：  比較部制御回路１１１は、ｃｏｍｐａｒｅ信号をアサートする。
クロック１１からクロック１６までは同様の処理を行う。
【０１１１】
クロック１７：  第２′アドレス回路２０２は、ｌｌ＿ｃｎｔ２＝ｒｅｇ＿ｌｌ  ＆  ｌｉｎｅ＿ｃｎｔ２＝ｒｅｇ＿ｌｎ（図３４のＳ５２）であり、最後のアドレスであると判断してアドレスの更新を停止する。
第３′アドレス回路２０３は、ｌｌ＿ｃｎｔ３＝ｒｅｇ＿ｌｌ  ＆  ｌｉｎｅ＿ｃｎｔ３＝ｒｅｇ＿ｌｎ（図３４のＳ５２）であり、最後のアドレスであると判断してアドレスの更新を停止する。
クロック１８：  ｆｉｆｏ＿０＿ｄｏから最後の多値データ０が読み出され、第０比較回路１０９、第１比較回路１１０により、２値データ０、２値データ１が生成され処理が終了する。
【０１１２】
（２−３）第２の実施例の効果
以上詳述したように、第２の実施例によれば、第１の実施例のように、同解像度でディザ処理を行う場合は主走査方向に連続する複数の多値データを並列にディザ処理し、副走査方向の解像度を２倍にしてディザ処理する場合は、多値データを１画素ずつディザ処理回路に入力して閾値をマトリクスから１度に２個読み出し、２個の閾値と１個の多値データから複数のディザ処理後のデータを生成することができる。これにより、副走査方向の解像度を２倍にしても、第１の実施例の構成において多値データの同一ラインを２回ディザ処理回路に入力する方法とは異なり、主記憶メモリへのアクセス量を増やさずに、且つ、同等の処理時間でディザ処理ができる。
【０１１３】
（３）第１及び第２の実施例の応用例
第１及び第２の実施例では多値データ０、多値データ１は８ｂｉｔ（２５６階調）のデータとして説明したが４ｂｉｔ（１６階調）、または２ｂｉｔ（４値階調）でもよい。また、これらの実施例では２値データ０、２値データ１は１ｂｉｔ（２階調）のデータとして説明したが、４ｂｉｔ（１６階調）、または２ｂｉｔ（４値階調）でもよい。さらに、これらの実施例ではマトリクス格納用メモリ１０８は６４ｂｉｔ幅の同期式のＳＲＡＭとして説明したが、ｂｉｔ幅は６４ｂｉｔでなくてもよいし、ＳＲＡＭでなくＤＲＡＭやＦＬＡＳＨＲＯＭでも良い。
【０１１４】
【発明の効果】
以上説明したように、本発明によれば、１つのメモリ内の複数の領域から複数の閾値を同時に読み出して並列処理によるディザ処理を行うようにしたので、メモリコストを上昇させることなく、ディザ処理における処理速度を向上させることができる。例えば、主走査方向について連続する閾値を偶数番目と奇数番目に分けて各グループから同時に複数閾値を読み出して複数多値データを並列処理し、処理速度を２倍にできる。また、副走査方向に隣り合う複数閾値を同時に読み出して１つの多値データについてのディザ処理を並列に処理し、処理速度を落とさずに副走査方向の解像度を２倍にできる。言い換えれば、副走査方向の解像度の２倍化の場合の処理速度を２倍ぐらい向上できる。
【図面の簡単な説明】
【図１】本発明のディザ処理回路の第１実施例を示すブロック図である。
【図２】図１の回路のデータフロー図である。
【図３】５行＊６列の従来のマトリクスを示す図である。
【図４】マトリクスの並び替え処理を示すフローチャートである。
【図５】並び替え後の５行＊６列のマトリクスを示す図である。
【図６】５行＊６列の並び替え後のマトリクスについてのアドレス対応を示す図である。
【図７】５行＊６列の従来のマトリクスについてのアドレス対応を示す図である。
【図８】従来の順番で格納されたマトリクスを示す図である。
【図９】多値データに対する閾値（その１）を示す図である。
【図１０】本発明の順番で格納されたマトリクスを示す図である。
【図１１】アドレス計算を説明するフローチャートである。
【図１２】第０アドレス回路とマトリクス格納用メモリの動作を説明するタイムチャートである。
【図１３】第１アドレス回路とマトリクス格納用メモリの動作を説明するタイムチャートである。
【図１４】マトリクス格納用メモリと第２，第３レジスタの動作を説明するタイムチャートである。
【図１５】第２アドレス回路と第２レジスタの動作を説明するタイムチャートである。
【図１６】第３アドレス回路と第３レジスタの動作を説明するタイムチャートである。
【図１７】多値データから２値データを生成する動作を説明するタイムチャートである。
【図１８】５行＊５列の従来のマトリクスを示す図である。
【図１９】マトリクスの並び替え処理（奇数列）を示すフローチャートである。
【図２０】並び替え後の５行＊５列のマトリクスを示す図である。
【図２１】５行＊５列の並び替え後のマトリクスについてのアドレス対応を示す図である。
【図２２】５行＊５列の従来のマトリクスについてのアドレス対応を示す図である。
【図２３】従来の順番で格納されたマトリクス（奇数列）を示す図である。
【図２４】多値データに対する閾値（その２）を示す図である。
【図２５】本発明の順番で格納されたマトリクス（奇数列）を示す図である。
【図２６】第０アドレス回路とマトリクス格納用メモリの動作（奇数列）を説明するタイムチャートである。
【図２７】第１アドレス回路とマトリクス格納用メモリの動作（奇数列）を説明するタイムチャートである。
【図２８】マトリクス格納用メモリと第２，第３レジスタの動作（奇数列）を説明するタイムチャートである。
【図２９】第２アドレス回路と第２レジスタの動作（奇数列）を説明するタイムチャートである。
【図３０】第３アドレス回路と第３レジスタの動作（奇数列）を説明するタイムチャートである。
【図３１】多値データから２値データを生成する動作（奇数列）を説明するタイムチャートである。
【図３２】本発明のディザ処理回路の第２実施例を示すブロック図である。
【図３３】図３２の回路のデータフロー図である。
【図３４】倍解像度処理のアドレス計算を説明するフローチャート（その１）である。
【図３５】倍解像度処理のアドレス計算を説明するフローチャート（その２）である。
【図３６】２ラインの多値データの倍解像度処理例を示す図である。
【図３７】第０′アドレス回路の倍解像度処理動作を説明するタイムチャートである。
【図３８】第１′アドレス回路の倍解像度処理動作を説明するタイムチャートである。
【図３９】マトリクス格納用メモリの倍解像度処理動作を説明するタイムチャートである。
【図４０】第２′アドレス回路の倍解像度処理動作を説明するタイムチャートである。
【図４１】第３′アドレス回路の倍解像度処理動作を説明するタイムチャートである。
【図４２】倍解像度処理による２値データの生成動作を説明するタイムチャートである。
【符号の説明】
１００，１０１，１０２，１０３  第０，第１，第２，第３アドレス回路
１０４，１０５，１０６，１０７  第０，第１，第２，第３レジスタ
１０８  マトリクス格納用メモリ
１０９，１１０  第０，第１比較回路
１１１  比較部制御回路
２００，２０１，２０２，２０３  第０′，第１′，第２′，第３′アドレス回路
２０４  マルチプレクサ
【図１】
2004222035.tif 000003
【図２】
2004222035.tif 000004
【図３】
2004222035.tif 000005
【図４】
2004222035.tif 000006
【図５】
2004222035.tif 000007
【図６】
2004222035.tif 000008
【図７】
2004222035.tif 000009
【図８】
2004222035.tif 000010
【図９】
2004222035.tif 000011
【図１０】
2004222035.tif 000012
【図１１】
2004222035.tif 000013
【図１２】
2004222035.tif 000014
【図１３】
2004222035.tif 000015
【図１４】
2004222035.tif 000016
【図１５】
2004222035.tif 000017
【図１６】
2004222035.tif 000018
【図１７】
2004222035.tif 000019
【図１８】
2004222035.tif 000020
【図１９】
2004222035.tif 000021
【図２０】
2004222035.tif 000022
【図２１】
2004222035.tif 000023
【図２２】
2004222035.tif 000024
【図２３】
2004222035.tif 000025
【図２４】
2004222035.tif 000026
【図２５】
2004222035.tif 000027
【図２６】
2004222035.tif 000028
【図２７】
2004222035.tif 000029
【図２８】
2004222035.tif 000030
【図２９】
2004222035.tif 000031
【図３０】
2004222035.tif 000032
【図３１】
2004222035.tif 000033
【図３２】
2004222035.tif 000034
【図３３】
2004222035.tif 000035
【図３４】
2004222035.tif 000036
【図３５】
2004222035.tif 000037
【図３６】
2004222035.tif 000038
【図３７】
2004222035.tif 000039
【図３８】
2004222035.tif 000040
【図３９】
2004222035.tif 000041
【図４０】
2004222035.tif 000042
【図４１】
2004222035.tif 000043
【図４２】
2004222035.tif 000044