(57)【要約】【課題】参照用データのメインメモリからのリードアクセスを不要にすることによって、少ないメモリアクセスで、デコード動作が可能であるプリンタおよびプリンタシステムを提供することを目的とする。【解決手段】プリンタのデコーダブロックは圧縮データをデコードした結果を、内部のバッファメモリへ蓄え、次ラインのデコード時に、参照ラインデータとして、読み出し、デコード動作し、また、前ラインのコピー動作時も、バッファメモリに保持されているデータを読み出し、メインメモリへ書き出す。【選択図】図１
2008097142.tif 000002
【特許請求の範囲】
【請求項１】
印刷データを作成し、印刷データを圧縮してプリンタへ送信するホスト機器と、このホスト機器から送信された印刷データを受信し、圧縮されたデータをデコードし、印刷処理するプリンタとからなるプリンタシステムにおいて、
上記ホスト機器は、
プリンタと通信する通信手段と；
印刷データを圧縮する単位である矩形領域の幅を決定する矩形領域幅決定手段と；
印刷データを圧縮する圧縮手段と；
を有し、
上記プリンタは、
上記ホスト機器と通信する通信手段と；
上記ホスト機器から受信した圧縮データをデコードし、バッファメモリを内蔵し、上記デコードデータを上記バッファメモリへ保持し、次のデコード時に上記バッファメモリに保持したデータを参照しながらデコードするデコード手段と；
上記デコードデータを印刷する印刷手段と；
を有することを特徴とするプリンタシステム。
【請求項２】
請求項１において、
上記ホスト機器の矩形領域幅決定手段は、印刷データを作成する際にプリンタから取得したデコーダのバッファメモリサイズに応じて、矩形領域幅を決定・分割する手段であることを特徴とするプリンタシステム。
【請求項３】
請求項１または請求項２において、
上記ホスト機器の矩形領域幅決定手段は、上記プリンタから取得したデコーダのバッファメモリのサイズに、印刷データとして定義する矩形領域データが１ライン分保持可能であると判断すると、矩形領域を主走査方向に分割しないように動作する手段であることを特徴とするプリンタシステム。
【請求項４】
請求項１または請求項２において、
上記ホスト機器の矩形領域幅決定手段は、上記プリンタから取得したデコーダのバッファメモリのサイズに、印刷データとして定義する矩形領域データが１ライン分保持不可能であると判断すると、上記バッファメモリのサイズに１ライン分保持可能となるように矩形領域を主走査方向に対して複数領域へ分割するように動作する手段であることを特徴とするプリンタシステム。
【請求項５】
請求項１乃至請求項４のいずれか１項において、
上記プリンタシステムで用いる圧縮方式は、前ラインを参照して、ライン単位にデータを圧縮する圧縮方式であることを特徴とするプリンタシステム。
【請求項６】
請求項１乃至請求項４のいずれか１項において、
上記プリンタシステムで用いる圧縮方式は、シードロー圧縮方式であることを特徴とするプリンタシステム。
【請求項７】
印刷データを作成し、印刷データを圧縮してプリンタへ送信するホスト機器と、このホスト機器から送信された印刷データを受信し、圧縮されたデータをデコードし、印刷処理するプリンタとからなるプリンタシステムにおいて、
上記ホスト機器と通信する通信手段と；
上記ホスト機器から受信した圧縮データをデコードし、バッファメモリを内蔵し、上記デコードデータを上記バッファメモリへ保持し、次のデコード時に上記バッファメモリに保持したデータを参照しながらデコードするデコード手段と；
上記デコードデータを印刷する印刷手段と；
を有することを特徴とするプリンタ。
【請求項８】
印刷データを作成し、印刷データを圧縮してプリンタへ送信するホスト機器と、このホスト機器から送信された印刷データを受信し、圧縮されたデータをデコードし、印刷処理するプリンタとからなるプリンタシステムの制御方法において、
上記ホスト機器がプリンタと通信する第１の通信工程と；
印刷データを圧縮する単位である矩形領域の幅を、上記ホスト機器が決定する矩形領域幅決定工程と；
上記ホスト機器が印刷データを圧縮する圧縮工程と；
上記プリンタが上記ホスト機器と通信する第２の通信工程と；
上記ホスト機器が、上記ホスト機器から受信した圧縮データをデコードし、上記デコードデータをバッファメモリへ保持し、次のデコード時に上記バッファメモリに保持したデータを参照しながらデコードするデコード工程と；
上記ホスト機器が、上記デコードデータを印刷する印刷工程と；
を有することを特徴とするプリンタシステムの制御方法。
【請求項９】
印刷データを作成し、印刷データを圧縮してプリンタへ送信するホスト機器と、このホスト機器から送信された印刷データを受信し、圧縮されたデータをデコードし、印刷処理するプリンタとからなるプリンタシステムにおけるプリンタの制御方法において、
上記プリンタが、上記ホスト機器と通信する通信工程と；
上記プリンタが、上記ホスト機器から受信した圧縮データをデコードし、上記デコードデータをバッファメモリへ保持し、次のデコード時に上記バッファメモリに保持したデータを参照しながらデコードするデコード工程と；
上記プリンタが、上記デコードデータを印刷する印刷工程と；
を有することを特徴とするプリンタの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データを紙へ印刷するプリンタおよびプリンタシステムに係り、特に、圧縮された印刷データを復号化するデータ復号化装置を搭載するプリンタおよびプリンタシステムに関する。
【背景技術】
【０００２】
従来、ホストコンピュータが、印刷データを作成し、プリンタへ送信する場合、印刷データは、図形オブジェクトを含む矩形領域を単位として生成されることがある。
【０００３】
図８は、印刷用紙領域７１を示す図である。
【０００４】
たとえば、印刷データを含む図形オブジェクトを含む矩形領域７２を、印刷データの１つの単位とし、ライン毎のデータを矩形領域単位にまとめた形式の印刷データを、ホストコンピュータで生成し、プリンタへ送信する。
【０００５】
矩形領域７２は、三角形や四角形や円形等の図形オブジェクトを含み、矩形領域７３は、楕円形の図形オブジェクトと文字データとを含む。矩形領域７４は、３つの矩形オブジェクト７５、７７、７８が、図８に示すように配置され、矩形オブジェクト７６は、矩形オブジェクト７５と７７とに挟まれた白データ部である。
【０００６】
プリンタへ送信する印刷データが、多値のカラーデータ（ＲＧＢ各色８ｂｉｔ／各色１０ｂｉｔ等）である場合、プリンタは、受信した印刷データを解釈し、色空間変換を行う。その後に、ディザ法または誤差拡散法等を用いて、多値のカラーデータに基づいて、ＣＭＹＫまたはＣＭＹＫｃｍのインク各色のオンオフデータとなる２値のカラーデータを生成する。
【０００７】
ホストコンピュータがプリンタへ送信する印刷データのデータ量を低減するために、種々のデータ圧縮方法が用いられている。ライン単位のデータをバイトランレングス圧縮方式によって圧縮し、また、ｎ行空白行挿入、ｎ行繰り返しコピー等の拡張コマンドを定義することによって、圧縮率を高める。これと同時に、プリンタのＣＰＵ処理負荷を低減することが知られている（たとえば、特許文献１参照。）。
【０００８】
また、他のデータ圧縮法として、２つのラインデータの差分情報を用いて圧縮することによって、送信データ量を削減する圧縮方法がある。この圧縮方法の１つに、「シードロー圧縮」がある。この「シードロー圧縮」は、着目した処理対象ラインデータについて、別のラインデータを参照し、その差分情報を符号化する圧縮方法である。この参照するラインのことを、「参照ライン」と呼ぶ。つまり、シードロー圧縮は、参照ラインと処理対象ラインとをラインの左端から比較し、異なるデータとその位置とを符号化する圧縮方法である。
【０００９】
図９は、図８に示す矩形領域７４を、ライン単位で詳細に表現した図であり、矩形領域が１６本のラインで構成されている例を示す図である。
【００１０】
斜線部８１は、図形オブジェクト７５が存在する部分を示し、空白部８２は、図形オブジェクトが存在しない空白部分７６を示し、斜線部８３は、図形オブジェクト７７を示す。また、斜線部８４は、図形オブジェクト７８を示す。
【００１１】
ホストコンピュータ上で動作するプリンタドライバは、図９に示す矩形領域を、ライン単位でシードロー圧縮処理を順次行う。
【００１２】
次に、この処理手順について、説明する。
【００１３】
まず、ライン１に着目し、参照ラインとして仮想的に白データから構成されるライン０（８７）を想定し、ライン０との差分情報を符号化する。斜線部８１、斜線部８３は、白データではなく、図形オブジェクトデータが存在するので、参照ラインに対して処理対象ラインのデータ８１、８３で置き換える。
【００１４】
白データ８２は、仮想的な参照ラインであるライン０との差分がないので、この部分のデータは、圧縮されず、デコード時に、参照ラインからコピーされる。
【００１５】
次に、ライン２に着目し、ライン１を参照ラインとして、シードロー圧縮を行う。ライン２は、ライン１と同じラインデータであるので、差分情報はなく、圧縮データは生成されず、圧縮データ長が０である圧縮コードが生成される。
【００１６】
ライン２からライン７までは、同じラインデータの繰り返しであるので、上記と同様の圧縮コードが生成される。
【００１７】
次に、ライン８に着目し、ライン７を参照ラインとして圧縮する。ライン８は、斜線部８４の部分が、ライン７との差分になるので、この部分の差分情報が、圧縮コード化される。
【００１８】
ライン９、１０は、ライン８の繰り返しであるので、圧縮データ長が０である圧縮コードが生成される。
【００１９】
次に、ライン１１に着目し、圧縮する。ライン１１は、ライン１０を参照ラインとして用いる。以下、上記と同じラインデータが続くライン１２〜ライン１６は、圧縮データ長が０である圧縮コードが生成される。
【００２０】
ホストコンピュータは、このようにして、ラインデータを１ラインずつ処理し、１ラインの圧縮データの最後に、終端コードを付加する。図８に示す領域７４の１６ライン分のデータを、シードロー圧縮し、プリンタへ送信する。
【００２１】
シードロー圧縮のように、前ラインとの差分情報を符号化する圧縮方式では、同じデータのラインが繰り返される場合、処理対象ラインが前ラインと同じであることを示せば足りる。たとえば、処理対象ラインが前ラインと同じであることを示すコマンドや符号情報を、圧縮データの先頭に付加する方法がある。このように、圧縮データを構成することによって、同じラインデータが繰り返される画像データを、効率良く圧縮することができる。
【００２２】
同じラインがｎ行繰り返されると、拡張コマンドを定義し、符号化時に、ｎ行繰り返しコマンドを、圧縮データの先頭に付加する。そして、デコード時に、拡張コマンドを解読し、同じ行のデータは、デコード処理ではなく、コピー処理する方法が知られている（たとえば、特許文献１参照）。
【００２３】
図１０は、圧縮データ例を示す。
【００２４】
ラインの先頭に、ＣＮＴ部９１を配置し、その次に、圧縮データ部９２が配置されている。ＣＮＴ部９１には、ライン１の圧縮データ部９２のデータ数（カウント値）が収められている。圧縮データ部の９２先頭に、ＣＭＤ（コマンド）があり、このコマンドを拡張する拡張コマンドを定義し、いくつかの拡張コマンドの中に同じラインをｎ行繰り返すｎ行繰り返しコマンドがある。
【００２５】
図９に示すラインデータを、この従来例を参考に考えると、ライン２の先頭のＣＭＤがｎ行繰り返しコマンドで、行数としてライン２からライン７までの行数の「６」を指定し、次に、ライン８のＣＮＴ部と圧縮データ部とが続く構造になる。
【００２６】
また、各ラインの圧縮データの先頭に、圧縮データ長を付加し、特に、コマンドを定義しないようなデータ構造も考えられる。
【００２７】
図１１は、圧縮データ例を示す。
【００２８】
上記例と同様に、ラインの先頭にＣＮＴ部１０１を配置し、次に、圧縮データ部１０２が配置されている。ＣＮＴ部１０１には、ライン１の圧縮データ部１０２のデータ数（カウント値）が収められている。これに続くＣＮＴ部１０３は、ライン２のものである。
【００２９】
図９に示すラインデータを、シードロー圧縮した場合を例にとると、ライン２からライン７までは、ライン１と同じデータであるので、圧縮データはなく、カウント値「０」のＣＮＴ部が続く。ＣＮＴ部１０４は、ライン３のものであり、その後に、図示しないカウント値「０」のＣＮＴ部が続き、ＣＮＴ部１０５には、ライン８の圧縮データ長が格納されている。
【００３０】
プリンタは、受け取った印刷データから、通信プロトコルを処理した後に、図１０や図１１に示す圧縮データを取り出し、圧縮データに応じたデコード処理を行う。シードロー圧縮データの場合、シードローデコード処理を実行し、その他の圧縮方式で圧縮されたデータの場合、対応するデコード処理を行う。
【００３１】
図９に示すデータをシードロー圧縮したデータを、デコードする場合、ライン１の圧縮データ９２を、ＣＮＴ部９１の長さ分メモリから読み出し、これと同時に、参照ラインデータとなる前ラインのデータも、メモリから読み出しながら、デコード処理する。そして、デコードした結果のデコードデータを、メモリへ書き出す。ただし、ライン１は、矩形領域の先頭ラインであるので、参照ラインは、白データで構成される仮想的なラインを用いて、デコード処理されるが、他のラインは、１ライン前のデコード結果を参照ラインとして用いる。
【００３２】
一方、プリンタのエンジン部分の印刷速度の向上と、印刷解像度の向上と、ホストコンピュータとプリンタとの間の通信インタフェースの高速化とによって、プリンタ内部で実行する処理は複雑化し、かつ高速な処理が求められている。
【００３３】
このために、プリンタ内部のハードウェアを構成するＣＰＵ、メモリ、画像処理回路、インタフェース制御回路、プリンタエンジン制御回路も、より一層の高速化が必要になっている。これらのハードウェアブロックは、それぞれがバスマスタとなって、メモリへアクセスする頻度が増加する傾向にあり、メモリ周辺回路の高速化、メモリアクセスの効率化が、高速処理を実現化するための重要な要因の１つである。
【００３４】
また、低コスト化の要求も強く、インタフェース制御系、画像処理系、プリンタエンジン制御系等で、分離独立したメモリ回路を使用する構成から、メモリデバイス数を減らし、全ての制御系が１つであるメモリ回路を使用する構成をとる傾向にある。各処理系からメモリへのアクセスが集中化する方向にある。このように、コスト面からもメモリ周辺回路の高速化、メモリアクセスの効率化が求められている。
【００３５】
また、圧縮されたデータを復号化し、転送する際の処理時間を短縮するために、ライン間の関連性を記憶し、直前のラインと同一のラインの復号化、メモリへの画像データ出力を省略する例が知られている（たとえば、特許文献２参照）。
【特許文献１】特開平８−３００７４４号公報
【特許文献２】特開平２００２−１９８８２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００３６】
従来例におけるデータ圧縮方法によって圧縮されたデータを復号化する場合、同一のラインが続く場合のデコード処理において、同一ラインのデコード処理は省略されるが、デコードされたデータをコピーする処理は発生する。
【００３７】
図１２は、シードローデコードで処理する動作を示すフローチャートである。
【００３８】
図１１に示す圧縮されたデータをデコードするときに、ＣＮＴ部のカウント値から処理対象ラインが前ラインと同一かどうかを判断する（Ｓ３１）。カウント値が「０」でなければ、デコード処理を開始し、圧縮データを読み込み（Ｓ３２）、参照ラインデータを読み込み（Ｓ３３）、デコード処理（Ｓ３４）される。デコードされたデータは、メモリへ書き出され（Ｓ３５）、これら一連の処理（Ｓ３２〜Ｓ３５）が、１ラインの圧縮データのデコードが終わるまで実行される。
【００３９】
カウント値が「０」であれば、前ラインをコピー処理すべきであると判断され、前ラインのコピー処理が行われる。前ラインのデータを読み込み（Ｓ３６）、処理対象ラインの書き込みアドレスへ、データを書き出す（Ｓ３７）。これら一連の処理（Ｓ３６とＳ３７）が、１ラインのデータ分、実行される。
【００４０】
図１３は、特許文献１記載の拡張コマンドによって、ｎ行コピーが指定された場合における動作を示すフローチャートである。
【００４１】
図１０に示すＣＭＤを解釈し、ｎ行コピーコマンドでなければ、デコード処理を開始し、圧縮データを読み込み（Ｓ４２）、参照ラインデータを読み込み（Ｓ４３）、デコード処理（Ｓ４４）される。デコードされたデータは、メモリへ書き出され（Ｓ４５）、これら一連の処理（Ｓ４２〜Ｓ４５）が、１ラインの圧縮データのデコードが終わるまで実行される。
【００４２】
ｎ行コピーコマンドであれば、前ラインのデータをｎ行コピーする。前ラインのデータを読み込み（Ｓ４６）、処理対象ラインの書き込みアドレスへ、データを書き出す（Ｓ４７）。これら一連の処理（Ｓ４６とＳ４７）が、１ラインのデータ分実行され、ｎ行コピー終了かどうかを判定し（Ｓ４８）、ｎ行コピーが終了するまで、ラインコピー動作を繰り返す。
【００４３】
上記従来例によれば、同一ラインが連続する場合、デコード処理を行わないので、デコード処理に要する処理時間が省略され、デコーダ回路として高速化できるが、コピー処理のためのリードとライトとのメモリアクセスは必要である。
【００４４】
背景技術でも示したように、さらなる処理の高速化のためには、メモリアクセスの効率化等、改善が必要である。
【００４５】
また、シードローでコード化されていれば、デコード時に必要な参照ラインデータは、前ラインのデコード結果である。言い換えると、現在のラインのデコード結果が、次ラインの参照データになる。
【００４６】
現在のラインのデコード結果をメモリへ書き出す一方、デコーダ内部にローカルメモリを備え、ローカルメモリにデコード結果を保持し、次ラインのデコード時に、参照ラインをメインメモリから読み出すのではなく、ローカルメモリから読み出して使用する。このようにすれば、メインメモリへの参照ラインデータのリードアクセスを省略することができる。
【００４７】
一方、このようなローカルメモリを備える場合、プリンタがサポートする紙幅一杯のサイズが１ラインの最大サイズであり、このサイズのデコードデータを保持できるローカルメモリ容量を用意することが必要となる。しかし、印刷パターンによっては、紙幅一杯のサイズを使うことが稀にしか発生しない場合もあり、ローカルメモリを備えるコストをかける割には効果が少ない。さらに、Ａ０やＢ０以上のいわゆる大判サイズをサポートする大判プリンタにおいて、紙幅をサポートするローカルメモリをデコーダに備えることは、メモリ容量が大きくなり過ぎて、現実的ではない。
【００４８】
特許文献２記載の発明では、前ラインと同一のデータを持つラインデータは、メモリへ書き出さずに、各ラインデータの属性を示す属性情報に、前ラインであることを示すマークを付ける。そして、ラインデータを読み込む際には、まず、ライン属性情報を参照し、マーク付きのラインであることが判明すれば、メモリ読み出し手段が読み出しアクセスを行うアドレスを切替え、メモリ上に存在するラインデータを読み出す構成を有する。
【００４９】
この従来例を構成するためには、ラインデータの属性を管理し、かつラインデータの読み出しの際に、アドレスを切り替える等の制御機構が必要であり、これを実現するためには、複雑なハードウェアが必要であるという問題がある。
【００５０】
本発明は、参照用データのメインメモリからのリードアクセスを不要にすることによって、少ないメモリアクセスで、デコード動作が可能であるプリンタを提供することを目的とする。
【００５１】
また、本発明は、プリンタのデコーダに実装されているバッファメモリ容量が限られた大きさであっても、紙幅に関係なく、参照ラインデータのメインメモリへのリードアクセスの削減効果を維持でき、高速なプリンタを提供することを目的とする。
【課題を解決するための手段】
【００５２】
本発明は、プリンタのデコーダブロックは圧縮データをデコードした結果を、内部のバッファメモリへ蓄え、次ラインのデコード時に、参照ラインデータとして、読み出し、デコード動作し、また、前ラインのコピー動作時も、バッファメモリに保持されているデータを読み出し、メインメモリへ書き出す。
【発明の効果】
【００５３】
本発明によれば、従来例のように参照ラインデータの読み込みのためのメモリリードアクセスと、前ラインデータのコピーのためのメモリリードアクセスとを省略することができるという効果を奏する。
【００５４】
また、本発明によれば、ホストＰＣは、プリンタ内部のバッファメモリ容量に格納できるように矩形領域幅を決定して圧縮するので、紙幅が大きくなっても、上記メモリアクセス削減効果を維持することができるという効果を奏する。
【発明を実施するための最良の形態】
【００５５】
発明を実施するための最良の形態は、次の実施例である。
【実施例１】
【００５６】
図１は、本発明の実施例１であるプリンタシステム１００の概略ブロック図である。
【００５７】
プリンタシステム１００において、プリンタ本体Ｐ１は、ホストＰＣ１０と接続されている。
【００５８】
プリンタ本体Ｐ１は、ネットワーク（有線ＬＡＮ、無線ＬＡＮ）やＵＳＢ、ＩＥＥＥ１３９４等を介して、ホストＰＣとに接続されている。プリンタ本体Ｐ１は、コントローラ２０とプリンタエンジン５０とによって構成されている。
【００５９】
コントローラ２０は、ホストＰＣ１０とのインタフェース機能を持ち、ホストＰＣから受信した印刷データを解釈し、圧縮された印刷データをデコードし、画像処理し、２値データへ変換し、プリンタエンジンへ渡す。プリンタエンジン５０は、２値化された印字データを、コントローラ２０から受け取り、インクジェットプリンタの場合、プリントヘッドのスキャン制御、インク吐出制御、紙送り制御等を行い、印刷する。
【００６０】
図２は、コントローラ２０のブロックを示す図である。
【００６１】
コントローラ２０は、ＵＳＢインタフェースを介して、ホストＰＣ１０と接続され、ＩＥＥＥ１３９４インタフェース２４を介して、ホストＰＣ１１と接続され、またＬＡＮインタフェースを介して、複数のホストＰＣと接続されている。また、エンジンインタフェースを介して、プリンタエンジン５０と接続されている。
【００６２】
コントローラ２０は、コントローラチップ３０と、ＲＯＭ２１と、ＲＡＭ２２と、操作パネル２３と、ＩＥＥＥ１３９４インタフェース２４と、ＬＡＮコントローラ２５と、拡張インタフェース２６とを有する。コントローラチップ３０と、ＬＡＮコントローラ２５と、ＩＥＥＥ１３９４インタフェース２４と、拡張インタフェース２６とは、拡張バスを介して、互いに接続されている。
【００６３】
コントローラチップ３０は、いわゆるＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）であり、ＣＰＵ３１と、ＲＯＭコントローラ３２と、ＲＡＭコントローラ３３と、操作パネルインタフェース３４と、バスインタフェース３８とを有する。また、コントローラチップ３０は、デコーダ４０と、画像データ処理ブロック３５と、ＵＳＢインタフェース３７と、エンジンインタフェース３６とを有する。コントローラチップ３０は、ＬＳＩであり、各ブロックは、内部バスによって相互に接続されている。
【００６４】
ＣＰＵ３１は、ＲＯＭ２１に格納されているプログラムに従って動作し、各種インタフェースを通じて、ホストＰＣ１０とプリンタエンジン５０との通信や各部の制御を行う。
【００６５】
ＲＯＭコントローラ３２は、接続されたＲＯＭ２１との間で、インタフェースを行う。
【００６６】
ＲＡＭコントローラ３３は、接続されているＲＡＭ２２との間で、インタフェースを行い、ＲＡＭアクセスタイミングを制御しながら、ＣＰＵ３１や他のブロックからの要求に従い、ＲＡＭへデータを入出力する。
【００６７】
操作パネルインタフェース３４は、操作キーやＬＥＤ、ＬＣＤを実装した操作パネル２３との間でインタフェースし、ユーザからの操作キー入力を、ＣＰＵ３１へ伝え、また、ＣＰＵ３１からの命令によって、ＬＥＤ、ＬＣＤの表示を制御する。
【００６８】
バスインタフェース３８は、拡張バスを制御するブロックであり、拡張バスに接続された各コントローラとの間で、通信制御を行う。
【００６９】
デコーダ４０は、ホストＰＣから受信し、圧縮符号化された印刷データを、ＲＡＭ２２から読み出し、デコードしてＲＡＭへ書き戻す。
【００７０】
画像データ処理ブロック３５は、デコーダによってデコードされたデータを、ＲＡＭ２２から読み出し、各インク色のドットデータに変換し、ＲＡＭ２２へ書き戻すブロックである。
【００７１】
エンジンインタフェース３６は、各インク色のドットデータを、ＲＡＭ２２から読み出し、プリンタエンジン５０へ送信する制御を行う。
【００７２】
ホストＰＣから送信された印刷データは、コントローラの各インタフェースを介して、入力される。ＩＥＥＥ１３９４インタフェース２４またはＬＡＮコントローラ２５を経由して入力された印刷データは、拡張バスを通じて、コントローラチップ３０のバスインタフェース３８を経由し、ＲＡＭコントローラ３３の制御に従って、ＲＡＭ２２へ書き込まれる。ＵＳＢインタフェース３７は、コントローラチップ３０に内蔵され、ホストＰＣ１０から入力された印刷データは、内部バスを通じて、ＲＡＭコントローラ３３の制御に従って、ＲＡＭ２２へ書き込まれる。
【００７３】
ＲＡＭ２２へ書き込まれた印刷データは、ＣＰＵ３１によって、その通信プロトコルが解釈された後に、デコーダ４０へ渡され、デコードされる。デコードされた印刷データは、画像データ処理ブロックによって、各インク色のドットデータに変換された後に、エンジンインタフェース３６を通じて、プリンタエンジン５０へ送信され、紙へ印刷される。
【００７４】
図３は、図２に示すデコーダ４０の内部を示すブロック図である。
【００７５】
デコーダ４０は、データ読み出し制御部４１と、データ書き込み制御部４２と、図示しない各種動作設定レジスタを備え、デコーダ内部の各ブロックを制御する制御部４３と、デコーダブロック４４と、バッファメモリ４５とを有する。
【００７６】
データ読み出し制御部４１は、内部バスとインタフェースし、メモリからデータを読み込み、後段のブロックへ出力し、レジスタ設定用データと圧縮データのコマンドとを、制御部４３へ渡す。
【００７７】
制御部４３は、ＣＰＵ３１から設定されるＤＭＡソースアドレス、ＤＭＡデスティネーションアドレス、読み込みデータ長、動作モード等、各種設定情報であるコマンドを、図示しない内部レジスタに保持する。上記ＤＭＡソースアドレスレジスタには、圧縮データの先頭アドレスを設定する。上記ＤＭＡデスティネーションアドレスレジスタには、デコードしたデータを書き出す領域の先頭アドレスを設定する。上記読み込むデータ長（圧縮データ長）を設定するレジスタを備えている。
【００７８】
デコーダブロック４４は、データ読み出し制御部４１から渡された圧縮データをデコードし、データ書き込み制御部４２へ渡す。シードロー圧縮されたデータを、デコードする場合、圧縮データをデータ読み出し部４１から取得し、バッファメモリ４５に保持されている前ラインのデコードデータを読み出し、参照ラインデータとして扱い、デコード処理を行う。
【００７９】
シードロー圧縮されたラインデータの１行目をデコードする場合、デコーダブロック内部の図示しない参照ラインデータ生成部が、参照ラインデータを生成し、デコード時に、参照ラインデータとして使用する。
【００８０】
制御部４３は、図１１に示す圧縮データのＣＮＴ部（以降、「コマンド」と呼ぶ）を解釈し、デコーダを構成する各種ブロックを制御する。
【００８１】
データ書き込み制御部４２は、内部バスとインタフェースし、メモリへデータを書き込むとともに、デコーダブロック４４から受け取ったデータを、バッファメモリ４５へ書き込む。
【００８２】
コマンドが参照ラインのコピー時（ＣＮＴ部のカウント値が「０」であるときに）は、データ書き込み制御部４２は、バッファメモリ４５からデータを読み出し、処理対象ラインの書き込みアドレスへデータを出力する。
【００８３】
次に、実施例１であるホストＰＣ１０での処理動作の流れについて説明ずる。
【００８４】
図４は、ホストＰＣ１０の処理動作を示すフローチャートである。
【００８５】
ホストＰＣ１０の使用者から印刷開始指示が与えられると、指定されたプリンタに対して、プリンタ内蔵のデコーダが備えるバッファメモリ容量を問い合わせ（Ｓ１）、プリンタからの応答を受信する（Ｓ２）。
【００８６】
Ｓ２で受信したバッファメモリ容量と、印刷対象の図形オブジェクトを含む矩形領域幅から算出した印刷対象データの矩形領域の１ラインのデータ量とから、バッファメモリに保持可能な印刷データの矩形領域幅を、決定・分割する処理を行う（Ｓ３）。
【００８７】
図５は、矩形領域６０を、矩形領域６１、６２、６３に分割した状態を示す図である。
【００８８】
たとえば、図８に示す図形オブジェクト領域７２に着目した場合、Ｓ２でプリンタから得たデコーダのバッファメモリ容量に、図形オブジェクト領域７２の１ラインのデータを保持できないと判断したとする。この場合、図形オブジェクト領域７２を、図５に示すように矩形領域６１、６２、６３に分割する。
【００８９】
矩形領域６１、６２、６３は、各々の１ラインの幅が、デコーダ内部のバッファメモリ４５へ格納することができる幅になるように分割する。
【００９０】
次に、矩形領域のデータ圧縮を行う。図５に示すように、複数の矩形領域に分割した場合、矩形領域を順に選択し、圧縮処理を行う。
【００９１】
まず、矩形領域６１を選択し、シードロー圧縮方式によって圧縮処理を行う（Ｓ４）。次に、圧縮した矩形領域６１のデータを、プリンタへ送信する（Ｓ５）。ここでは、ホストＰＣとプリンタとの間の通信路で必要な通信プロトコルに基づいた通信処理を行う。
【００９２】
分割した矩形領域全てを、プリンタへ送信したかどうかを、判定し（Ｓ６）、まだ送信していない矩形領域があれば、Ｓ７へ進み、次の矩形領域を選択する。図５に示す例では、矩形領域６２を選択し、Ｓ４の処理へ戻る。矩形領域６１と同様の処理を行い、図５に示す矩形領域６３の圧縮データを送信すると、Ｓ６の判定処理でＹＥＳとなり、処理を終了する。
【００９３】
次に、図４に示すホストＰＣの処理動作に対応するプリンタ側での処理について、説明する。
【００９４】
図６は、ホストＰＣからのバッファメモリ容量の問い合わせに対する返信処理を示すフローチャートである。
【００９５】
まず、ホストＰＣからのバッファメモリ容量の問い合わせ処理Ｓ１によって発行された問い合わせを受信する（Ｓ１１）。プリンタ本体Ｐ１のＣＰＵ３１は、デコーダ４０が備えるバッファメモリ容量情報を、デコーダ４０のレジスタから読み出し、ホストＰＣへ返信する（Ｓ１２）。ここでは、デコーダ４０のバッファメモリ容量情報が、デコーダのレジスタに記憶されている。なお、デコーダ内蔵のバッファメモリ４５の容量情報を、ＲＯＭ２１に記憶し、ＣＰＵ３１がＲＯＭ２１から読み出し、ホストＰＣへ返信するようにしてもよい。
【００９６】
図７は、ホストＰＣから受信した矩形領域の圧縮データを、１ラインデコードする処理のフローチャートである。
【００９７】
本処理よりも前に、通信プロトコル処理を行い、圧縮データを受信し、ＲＡＭ２２に格納してある。また、この処理の対象は、図５に示す分割された各矩形領域６１、６２、６３である。
【００９８】
デコーダ４０は、圧縮データをＲＡＭ２２から読み込む（Ｓ２１）。このデコード処理が、矩形領域データの１ライン目であるかどうかを判定する（Ｓ２２）。具体的には、デコーダ４０内の制御部４３に、１ライン目であるかどうかを判定する図示しないレジスタビットを設け、１ライン目のデコード処理が終了すると、レジスタビットを変化させ、各ライン処理の判定処理Ｓ２２において参照すればよい。
【００９９】
１ライン目のデコード処理であれば、参照ラインデータは、図１０に示すライン０に示すように、実際には、ＲＡＭ２２には存在しない参照ラインデータを使用してデコード処理を行う。デコード処理が、１ライン目である場合、制御部４３は、デコーダブロック４４に、１ライン目であることを通知し、通知を受けたデコーダブロックは、内部で白のデータを、暗黙の参照ラインデータとして使う（Ｓ２３）。
【０１００】
デコード処理が１ライン目ではなく、２ライン目以降のラインであれば、参照ラインデータを、メインメモリであるＲＡＭ２２から読み込まず、バッファメモリ４５に保持されている前ラインのデータを、デコーダブロック４４が読み出す（Ｓ２４）。
【０１０１】
次に、ＲＡＭ２２から読み込んだ圧縮データと参照ラインデータとを用いて、シードローデコード処理を行う（Ｓ２５）。次に、デコードしたデータを、デコーダ内部のバッファメモリ４５へ格納し（Ｓ２６）、メインメモリであるＲＡＭ２２へ、データ書込み制御部４２の制御によって書き込み処理を行う（Ｓ２７）。
【０１０２】
１ラインのデコード処理が終了したかどうかを判定し（Ｓ２８）、まだ終了していなければ、Ｓ２１へ戻り、デコード処理を続ける。
【０１０３】
１ラインのデコード処理が終了すると本処理を終了し、２ライン目以降の処理が開始されるときに、図７に示す処理が起動される。
【０１０４】
また、同じラインデータが繰り返される場合、コピーコマンドを認識すると、制御部４３は、データ読み出し制御部４１を動作させない。そして、データ書込み制御部４２が、バッファメモリ４５に保持されている前ラインのデータを読み出し、ＲＡＭ２２へ書き込み動作を行うように制御する。
【０１０５】
上記のように、上記実施例では、デコーダブロック４４が、圧縮データをデコードした結果を、内部のバッファメモリへ蓄え、次ラインのデコード時に、参照ラインデータとして読み出し、デコード動作する。また、前ラインのコピー動作時も、バッファメモリに保持されているデータを読み出し、メインメモリへ書き出す。
【０１０６】
したがって、上記実施例では、従来例のように参照ラインデータの読み込みのためのリードアクセスと、前ラインデータのコピーのためのリードアクセスとを、省略することができる。また、ホストＰＣは、プリンタ内部のバッファメモリ容量に格納できるように矩形領域幅を決定し、圧縮を行うので、上記メモリアクセス削減効果は、紙幅が大きくなっても維持することができる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の実施例１であるプリンタシステム１００の概略ブロック図である。
【図２】コントローラ２０のブロックを示す図である。
【図３】図２に示すデコーダ４０の内部を示すブロック図である。
【図４】ホストＰＣ１０の処理動作を示すフローチャートである。
【図５】矩形領域６０を、矩形領域６１、６２、６３に分割した状態を示す図である。
【図６】ホストＰＣからのバッファメモリ容量の問い合わせに対する返信処理を示すフローチャートである。
【図７】ホストＰＣから受信した矩形領域の圧縮データを、１ラインデコードする処理のフローチャートである。
【図８】印刷用紙領域７１を示す図である。
【図９】図８に示す矩形領域７４を、ライン単位で詳細に表現した図であり、矩形領域が１６本のラインで構成されている例を示す図である。
【図１０】圧縮データ例を示す。
【図１１】圧縮データ例を示す。
【図１２】シードローデコードで処理する動作を示すフローチャートである。
【図１３】図１３は、従来例において、拡張コマンドによって、ｎ行コピーが指定された場合における動作を示すフローチャートである。
【符号の説明】
【０１０８】
１００…プリンタシステム、
Ｐ１…プリンタ本体、
１０、１１…ホストＰＣ、
２０…コントローラ、
２１…ＲＯＭ、
２２…ＲＡＭ、
３０…コントローラチップ、
４０…デコーダ、
４１…データ読み出し制御部、
４２…データ書き込み制御部、
４３…制御部、
４４…デコーダブロック、
４５…バッファメモリ、
５０…プリンタエンジン、
６０…矩形領域、
７１…印刷用紙領域。
【図１】
2008097142.tif 000003
【図２】
2008097142.tif 000004
【図３】
2008097142.tif 000005
【図４】
2008097142.tif 000006
【図５】
2008097142.tif 000007
【図６】
2008097142.tif 000008
【図７】
2008097142.tif 000009
【図８】
2008097142.tif 000010
【図９】
2008097142.tif 000011
【図１０】
2008097142.tif 000012
【図１１】
2008097142.tif 000013
【図１２】
2008097142.tif 000014
【図１３】
2008097142.tif 000015