(57)【要約】【課題】本発明はデータの圧縮処理を行うデータ圧縮装置に関し、特に圧縮フラグを追加することによる高速なデータ圧縮処理を行うことができるデータ圧縮装置を提供するものである。【解決手段】連続するバイト単位のデータを圧縮するデータ圧縮装置であって、圧縮対象の１バイトの基準データが直前の１バイトのデータと一致するとき、上記基準データの更新に従って直前の１バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録する第１の圧縮データ作成手段と、圧縮対象の連続するバイトデータが前の連続するバイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録する第２の圧縮データ作成手段と、前記圧縮データの情報を記録するフラグデータ記憶手段とを有することを特徴とする。【選択図】  図１
2010154156.tif 000002
【特許請求の範囲】
【請求項１】
連続するバイト単位のデータを圧縮するデータ圧縮装置において、
圧縮対象の１バイトの基準データが直前の１バイトのデータと一致するとき、前記基準データの更新に従って直前の１バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録する第１の圧縮データ作成手段と、
圧縮対象の連続するバイトデータが前の連続するバイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録する第２の圧縮データ作成手段と、
前記圧縮データの情報を記録するフラグデータ記憶手段と、
を有することを特徴とするデータ圧縮装置。
【請求項２】
前記フラグデータは前記圧縮データより前に記録され、圧縮又は非圧縮であることを示す情報であることを特徴とする請求項１記載のデータ圧縮装置。
【請求項３】
前記第１の圧縮データ作成手段は、圧縮対象の４バイトの基準データが直前の４バイトのデータと一致するとき、前記基準データの更新に従って直前の４バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録することを特徴とする請求項１、又は２に記載のデータ圧縮装置。
【請求項４】
前記第２の圧縮データ作成手段は、圧縮対象の連続する４バイトデータが前の連続する４バイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録することを特徴とする請求項１、又は２に記載のデータ圧縮装置。
【請求項５】
連続するバイト単位のデータを圧縮するデータ圧縮装置に使用されるプログラムであって、
圧縮対象の１バイトの基準データが直前の１バイトのデータと一致するとき、前記基準データの更新に従って直前の１バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録する第１の圧縮データ作成処理と、
圧縮対象の連続するバイトデータが前の連続するバイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録する第２の圧縮データ作成処理と、
前記圧縮データの情報を記録するフラグデータ記録処理と、
を行なうことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの圧縮処理を行うデータ圧縮装置に関する。
【背景技術】
【０００２】
例えば、プリンタ装置等の印刷装置において、メモリを有効利用するため、データ圧縮装置を使用し、画像データの圧縮処理を行い、メモリに圧縮データを記憶した後、メモリからデータを読み出し、伸長処理を行い印字ヘッドにデータを転送している。
このようなデータの圧縮方法としては、例えば特許文献１、及び２が提案されている。特許文献１は文字列検索回路においてデータ圧縮方法を提案するものであり、パイプライン処理により圧縮動作を高速に行う圧縮方法であり、一致したデータを検出し、その後クロック毎に、一致するデータ列の長さを検出し、圧縮処理を行う。
【０００３】
また、特許文献２は、複数データを一度に比較する方法であり、過去のデータ列の中から現在の入力データ列との一致をコンパレータによって比較し、最大一致長と最大一致位置を検出し、圧縮処理を行う発明である。
【特許文献１】特開２００６−３３２７７５号公報
【特許文献２】特開２０００−３３９１３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１の圧縮方法の場合、一致したデータを検出し、その後クロック毎に、一致するデータ列の長さを検出する方法であり、データの圧縮処理速度を向上することができない。
また、特許文献２では、データ比較をハードウェアで実現するため複雑な組合せ回路が必要になり、動作クロックも増加し、高速化には不向きである。
【０００５】
そこで、本発明は圧縮データ中に必要なパラメータの保持を行うことにより、高速なデータ圧縮処理を行うことができるデータ圧縮装置を提供するものである。
【課題を解決するための手段】
【０００６】
上記課題は第１の発明によれば、連続するバイト単位のデータを圧縮するデータ圧縮装置において、圧縮対象の１バイトの基準データが直前の１バイトのデータと一致するとき、前記基準データの更新に従って直前の１バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録する第１の圧縮データ作成手段と、圧縮対象の連続するバイトデータが前の連続するバイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録する第２の圧縮データ作成手段と、前記圧縮データの情報を記録するフラグデータ記憶手段とを有するデータ圧縮装置を提供することによって達成できる。
【０００７】
また、上記課題は第２の発明によれば、前記フラグデータは前記圧縮データより前に記録され、圧縮又は非圧縮であることを示す情報であるデータ圧縮装置を提供することによって達成できる。
【０００８】
また、上記課題は第３の発明によれば、前記第１の圧縮データ作成手段は、圧縮対象の４バイトの基準データが直前の４バイトのデータと一致するとき、前記基準データの更新に従って直前の４バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録するデータ圧縮装置を提供することによって達成できる。
【０００９】
また、上記課題は第４の発明によれば、前記第２の圧縮データ作成手段は、圧縮対象の連続する４バイトデータが前の連続する４バイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録するデータ圧縮装置を提供することによって達成できる。
【００１０】
また、上記課題は第５の発明によれば、連続するバイト単位のデータを圧縮するデータ圧縮装置に使用されるプログラムであって、圧縮対象の１バイトの基準データが直前の１バイトのデータと一致するとき、前記基準データの更新に従って直前の１バイトのデータが一致する回数を計数し、該計数値を同一データの連続回数として圧縮データに記録する第１の圧縮データ作成処理と、圧縮対象の連続するバイトデータが前の連続するバイトデータに一致するバイト長と、最先のバイトデータの位置を検出し、該一致するバイト長と最先のバイトデータの位置の情報を圧縮データに記録する第２の圧縮データ作成処理と、前記圧縮データの情報を記録するフラグデータ記録処理とを行なうプログラムを提供することによって達成できる。
【発明の効果】
【００１１】
本発明によれば、同一データの連続する情報や、一致位置と一致長さの情報を圧縮データ中にパラメータとして含めることにより、ハードウェアによる複雑な組合せ回路を使用することなく、データ圧縮処理を高速に行なうことができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて説明する。
（実施形態1）
図１は、本実施形態のデータ圧縮装置の回路ブロック図である。尚、本例のデータ圧縮装置は、ＰＣＩバスを介して不図示のメモリに接続されており、メモリからＰＣＩバスを介して、例えば画像データを読み出し、本例のデータ圧縮回路に送信する構成である。また、本例のデータ圧縮回路によって処理された圧縮データは、ＰＣＩバスを介して再び、メモリに書き込まれる。
【００１３】
データ圧縮回路１は入力段ＦＩＦＯ（First-In First-Out）２、スライド窓＆圧縮データ生成部３、フラグ生成ＦＩＦＯ４、ビット変換ＦＩＦＯ５で構成され、入力段ＦＩＦＯ２には入力データ制御部６が接続され、入力データ制御部６にはバイト数カウンタ７が接続されている。
また、スライド窓＆圧縮データ生成部３には、リピートカウンタ８が接続され、リピートカウンタ８には、後述する処理によって同じバイトデータが連続する回数がカウントされる。
さらに、ビット幅変換ＦＩＦＯ５には出力データ制御部９が接続され、出力データ制御部９にはバイト数カウンタ１０が接続されている。
【００１４】
図２は上記スライド窓＆圧縮データ生成部３の構成を説明する図であり、前述の入力段ＦＩＦＯ２、及びフラグ生成ＦＩＦＯ４の構成を一部に含む回路ブロック図である。スライド窓＆圧縮データ生成部３は、スライド窓１２、過去データとの一致検出回路１３、一致位置及び一致長さの検出回路１４、一致長さ一致位置を基に圧縮データ生成回路（以下、単に圧縮データ生成回路で示す）１５、スライド窓制御部１６、圧縮データ生成制御部１７で構成されている。また、スライド窓制御部１６には初期値カウンタ１８が接続され、圧縮データ生成制御部１７にはリピートカウンタ８が接続されている。
【００１５】
スライド窓１２は８ｂｉｔ幅のシフトレジスタで構成され、入力段ＦＩＦＯ２から供給されるデータを順次パラレルにシフトし、複数バイト（２３＋９バイト）分のデータを保持する。スライド窓制御部１６は、スライド窓１２へのデータ入力、及びシフト処理を制御する。スライド窓制御部１６は初期値カウンタ８を使用し、スライド窓１２に最初の８バイト分のデータを入力させる。
【００１６】
過去データとの一致検出回路１３はスライド窓１２に順次スライドするデータと過去のデータとを比較し、その一致を検出する回路である。また、一致位置及び一致長さの検出回路１４は過去データとの一致検出回路１３から出力される検出結果に基づいて、データの一致位置、及び一致データの長さを検出する。さらに、圧縮データ生成回路１５は上記データの一致位置情報、及び一致データ長情報から、圧縮データを生成する。尚、上記過去データとの一致検出回路１３、一致位置及び一致長さの検出回路１４、圧縮データ生成回路１５の制御は、スライド窓制御部１６によって実行される。また、圧縮データ生成回路１５による圧縮データの生成処理は、圧縮データ生成制御部１７の制御によって実行される。
【００１７】
また、圧縮データ生成制御部１７は圧縮データ生成回路１５の制御を行うと共に、フラグ生成ＦＩＦＯ４のデータの入出力制御も行う。
図３は、フラグ生成ＦＩＦＯ４の回路ブロック図である。フラグ生成ＦＩＦＯ４はフラグラッチ２１、セレクタ２２、デュアルポートメモリ２３、９進カウンタ２４、ライトアドレスカウンタ２５、及びリードアドレスカウンタ２６で構成されている。フラグラッチ２１には８ビット（１バイト）のフラグ情報が入力し、セレクタ２２による選択処理に従ってフラグラッチ２１にラッチされたラッチデータ、又は圧縮処理されたデータがデュアルポートメモリ２３に転送される。
【００１８】
セレクタ２２は９進カウンタ２４から出力される選択信号に従って上記フラグデータ、又は圧縮データの選択を行う。また、ライトアドレスカウンタ２５は上記デュアルポートメモリ２３へのデータの書き込みを計数し、リードアドレスカウンタ２６はデュアルポートメモリ２３からのデータの読み出しを計数する。
【００１９】
以上の構成において、以下に本例のデータ圧縮回路の処理動作を説明する。
先ず、図４に示すフローチャートに従って、圧縮処理の開始指示があるまで初期状態を維持する（ステップ（以下、Ｓで示す）１、２がＮＯ）。次に、圧縮処理の開始指示があると（Ｓ２がＹＥＳ）、入力段ＦＩＦＯ２にデータが満たされていない限り（Fullでない限り）、不図示のＰＣＩ制御部にリクエスト信号を出力し、ＰＣＩバスのアクセスを要求する。そして、ＰＣＩ制御部がＰＣＩバスをアクセスして、応答を示すアクノーリッ信号(acknowledge信号)が入力すると、メモリからのデータを入力段ＦＩＦＯ２に書き込む（Ｓ３）。
【００２０】
次に、バイト数カウンタ７が“０”であるか判断する（Ｓ４）。入力データ制御部６は入力段ＦＩＦＯ２にデータを書き込む際の制御を行い、入力段ＦＩＦＯ２にデータを書き込む毎にバイト数カウンタ７のカウント値を減算し、１バンド分のデータ数をカウントしている。例えば、３２ｂｉｔ幅の入力段ＦＩＦＯ２であれば、１回のデータ書き込みによってバイト数カウンタ７を−４ずつカウントダウンする。
【００２１】
したがって、上記処理（Ｓ３）を繰り返し、入力段ＦＩＦＯ２に例えば１バンド分のデータが入力すると（Ｓ４がＹＥＳ）、初期状態に戻る。
入力段ＦＩＦＯ２に１バンド分のデータが入力すると、スライド窓１２にデータを転送する。図５はスライド窓１２の構成を示す図であり、バイト幅（８ビット）で動作するシフトレジスタを、前述のように３２バイト（２３＋９バイト）分保持する。スライド窓１２には、圧縮データ生成制御部１７からのシフト指示により、入力段ＦＩＦＯ２から読み出されたデータが、スライド窓１２（シフトレジスタ）に供給される。
【００２２】
図６はスライド窓制御部１６の処理動作を説明するフローチャートであり、図７は圧縮データ生成制御部１７の処理動作を説明するフローチャートである。
先ず、図６に示す圧縮データ生成制御部１７の処理動作において、初期状態から圧縮処理の指示を待つ（ステップ（以下、ＳＴで示す）１、State10、ＳＴ２がＮＯ）。次に、圧縮処理の指示があると（ＳＴ２がＹＥＳ）、初期設定処理を行う（ＳＴ３）。この初期設定処理は、圧縮対象データより前の数バイトについて、予めスライド窓（シフトレジスタ）に入力させる処理である。例えば、本例ではスライド窓１２の上記構成から予め入力させるデータは８バイト分のデータである（State11）。
【００２３】
この処理は、入力段ＦＩＦＯ２がEmptyであるか判断し（ＳＴ４）、入力段ＦＩＦＯ２がEmptyでなければ（ＳＴ４がＮＯ）、前述の初期値カウンタ１８のカウント処理が完了するまで初期データをスライド窓１２に入力する（ＳＴ５）。すなわち、初期数カウンタ１８には前述の８バイトに対応する“８”のカウント値が設定されており、８バイト分のデータがスライド窓１２（シフトレジスタ）に入力すると（ＳＴ５がＹＥＳ）、待機状態となる（ＳＴ６、State12）。
【００２４】
次に、スライド窓制御部１６の制御によって入力段ＦＩＦＯ２にデータが供給され、入力段ＦＩＦＯ２にデータが存在すると（ＳＴ７がＮＯ）、圧縮データ生成制御部１７が待機状態（Wait）であることを確認して（ＳＴ８がＹＥＳ）、通常シフト動作を行う（ＳＴ９）。したがって、この処理によって入力段ＦＩＦＯ２から１バイト分のデータがシフトレジスタに転送され、図５に示すスライド窓１２（シフトレジスタ）内を１バイトのデータがシフトする。
【００２５】
その後、入力段ＦＩＦＯ２のリード回数が終了したか判断し（ＳＴ１０）、入力段ＦＩＦＯ２のリード回数が所定回数に達するまで上記処理を繰り返す。例えば、入力段ＦＩＦＯ２には１回のデータ書き込みによって３２ビット（４バイト分）のデータがメモリから書き込まれ、従ってスライド窓１２への４回のデータ読み出しに対して１回のデータ書き込みが行われる。この間、スライド窓１２には８ビット（１バイト）のデータが順次入力し、スライド窓１２内をシフトする。
【００２６】
一方、圧縮データ生成制御部１７は、図７に示すフローチャートに従って処理を実行し、先ず初期状態から入力段ＦＩＦＯ２がEmptyであるか判断し（ステップ（以下、ＳＴＰで示す）１、State00、ＳＴＰ２）、入力段ＦＩＦＯ２にデータが存在すると（ＳＴＰ２がＮＯ）、スライド窓制御部１６が待機状態（Wait）を確認して（ＳＴＰ３がＹＥＳ）、一旦待機状態とする（ＳＴＰ４、State01）。
【００２７】
次に、圧縮データ生成制御部１７は入力段ＦＩＦＯ２がEmptyではなく、またフラグ生成ＦＩＦＯ４がFullでなければ（ＳＴＰ５がＹＥＳ）、スライド窓制御部１６がアクティブになったことを確認して（ＳＴＰ６がＹＥＳ）、圧縮処理のタイプを判断する。ここで、圧縮処理のタイプは、リピートタイプの圧縮か、ポインタタイプの圧縮か、圧縮不可能なタイプであるかの３択により圧縮データの生成を開始する。尚、どの圧縮タイプであるかは、過去データとの一致検出回路１３からの出力に従って判断する（ＳＴＰ７以降）。
【００２８】
例えば、圧縮対象のデータが直前のデータを含め３バイトの一致があると、リピートタイプの圧縮と判断する。また、一致位置情報が自分自身のデータのみを指す場合には過去のデータとの一致は存在しないとして圧縮不可能なタイプであると判断する。さらに、上記何れの場合でもない場合、ポインタタイプの圧縮と判断する。
【００２９】
図８は、過去データとの一致検出回路１３の回路動作を説明する図である。レジスタ１３ａにスライド窓１２に保持されたデータが入力し、比較器１３ｂは最新の８ビットのデータ（Table00〜Table-8に保持されたデータ）と、以前に入力した２３個のデータ（Table01〜Table23に保持されたデータ）との比較処理を行う。例えば、基準データを保持するTable00に保持されたデータは、table02 から２３個前のTable23に保持されたデータまでのそれぞれのデータに対して比較処理が行われる。また、例えば基準データの１個あとのTable-1に保持されたデータは、Table01 から、２３個前のTable22に保持されたデータまでのそれぞれのデータに対して比較処理が行われる。以下、同様に比較処理が行われ、最後にTable00に保持された基準データと直前のTable01に保持されたデータとの比較処理が行われる。
【００３０】
尚、上記比較結果は一致位置及び一致長さの検出回路１４に出力され、図８に示す比較器１３ｂの出力が“１”の時、対応するテーブルのデータが一致していることを示し、比較器１３ｂの出力が“０”の時、対応するテーブルのデータが不一致していることを示す。
【００３１】
上記処理によって、最近入力した８バイトのデータに対して、一致するデータの情報を得ることができ、この情報は一致位置及び一致長さの検出回路１４に出力される。一致位置及び一致長さの検出回路１４は過去データとの一致検出回路１３から供給された情報に基づき、解析処理を行う。
【００３２】
先ず、一致するバイトデータが存在しない場合、一致位置情報が自分自身を指すのみであり、過去データの何れとも不一致なので圧縮不可能なタイプであり、非圧縮タイプのデータであると判断する（ＳＴＰ７〜ＳＴＰ１０がＹＥＳ）。すなわち、スライド窓１２のシフトがイネーブルになり（ＳＴＰ８がＮＯ、ＳＴＰ９がＹＥＳ）、一致位置が“０”であるか判断する（ＳＴＰ１０）。そして、一致位置が“０”であれば（ＳＴＰ１０がＹＥＳ）、上記のように基準データは非圧縮タイプと判断する。この場合、後述するように対応する基準データのフラグビットは“０”に設定され、圧縮データとして生データが記録される。
【００３３】
一方、一致位置が“０”ではない場合（ＳＴＰ１０がＮＯ）、更に一致位置が“１”であるか判断する（ＳＴＰ１１）。ここで、一致位置が“１”である場合（ＳＴＰ１１がＹＥＳ）、前述のリピートカウンタ８をクリアして“０”とし、リピートタイプ処理を行う（ＳＴＰ１２、State03）。
【００３４】
この処理は、スライド窓１２のシフトがイネーブルであることを判断し（ＳＴＰ１３がＹＥＳ）、リピートカウンタ８をカウントアップし、リピートカウンタ８のカウント値が０ｘ３Ｆであるか判断する（ＳＴＰ１４）。最初の上記処理では、リピートカウンタ８のカウント値は“１”であり、０ｘ３Ｆではなく（ＳＴＰ１４がＮＯ）、更に一致位置が“１”であるか判断する（ＳＴＰ１５）。ここで、更に一致位置が“１”であれば（ＳＴＰ１５がＹＥＳ）、リピートタイプの処理を繰り返し、リピートカウンタ８を順次カウントアップする（ＳＴＰ１２〜ＳＴＰ１５）。
【００３５】
その後、一致位置が“１”でなくなると（ＳＴＰ１５がＮＯ）、リピート処理の継続は終了するものとし、対応する基準データのフラグビットを“１”に設定し、圧縮データの上位２ビットに“１１”を記録し、下位６ビットにリピートカウンタ８のカウント値を記録する。
【００３６】
一方、前述の判断（ＳＴＰ１１）において、一致位置が“１”ではない場合（ＳＴＰ１１がＮＯ）、フラグビットをアクティブ“１”に設定し、レングス（Length）を不図示の一致長カウンタに取り込み、ポインタタイプの圧縮処理を行う（ＳＴＰ１６）。
図９は一致位置及び一致長さの検出回路１４が行う処理を説明する図であり、前述の比較処理によって８バイトのデータに一致するデータのレングス（Length）を説明する図である。例えば、レングス（Length）９は９バイトのデータ全てが過去の連続するバイトデータの中に存在する場合であり、図９に示すTable23とTable00のデータが一致し、Table22とTable-1のデータが一致し、・・・Table15とTable-8のデータが一致する場合であり、またTable22とTable00のデータが一致し、Table21とTable-1のデータが一致し、・・・Table14とTable-8のデータが一致する場合であり、以下同図にａで示す場合である。
【００３７】
また、レングス（Length）８は９バイトのデータの中の連続する８バイトのデータが一致する場合であり、図９に示すTable23とTable00のデータが一致し、Table22とTable-1のデータが一致し、・・・Table16とTable-8のデータが一致する場合であり、またTable22とTable00のデータが一致し、Table21とTable-1のデータが一致し、・・・Table15とTable-8のデータが一致する場合であり、以下同図にbで示す場合である。
【００３８】
また、レングス（Length）７は９バイトのデータの中の連続する７バイトのデータが一致する場合であり、図９に示すｃの場合であり、更にレングス（Length）６は９バイトのデータの中の連続する６バイトのデータが一致する場合であり、更にレングス（Length）５は９バイトのデータの中の連続する５バイトのデータが一致する場合であり、以下同様にして、レングス（Length）は９バイトのデータの中の連続する２バイトのデータが一致する場合であり、図９に示すｄの場合である。
【００３９】
上記検出結果は、一致位置及び一致長さの検出回路１４から出力される。例えば、図９に示す一致位置及び一致長さの検出回路１４の出力として、“１”又は“０”のデータが出力される。また、上記処理はスライド窓１２のシフトがイネーブルになることを確認し、一致長カウンタを−１する処理を行いながら実行される（ＳＴＰ１７、ＳＴＰ１８）。
【００４０】
図１０は一致位置及び一致長さの検出回路１４からの出力を基に、連続するデータの長さと一致位置を解析する処理を説明する図である。“１”又は“０”のデータとしてレングス（Length）の情報が入力し、スライド窓１２の処理が停止中上記情報を保持し、一番長く一致しているバイト数から２を差し引いた出力（０〜７）を一致長情報としてフラグ生成ＦＩＦＯ４に出力する。また、一番長く一致しているバイト数の中で基準データから一番遠いテーブルの位置を一致位置としてフラグ生成ＦＩＦＯ４に出力する。
【００４１】
フラグ生成ＦＩＦＯ４では、前述の図３に示すフラグラッチ２１にフラグデータをラッチし、９進カウンタ２４のカウント処理を行う。図１１はフラグ生成ＦＩＦＯ４の処理動作を説明するタイムチャートであり、９進カウンタ２４が「７」〜「０」のカウントを行う間、セレクタ２２は圧縮データを選択し、デュアルポートメモリ２３に送信する（図１１に示すａ）。この間、フラグラッチ２１には次に転送する８バイトのラッチデータを記録する。例えば、対応するデータが圧縮データであれば“１”を記録し、非圧縮データであれば“０”を記録する。
【００４２】
次に、９進カウンタ２４が「８」をカウントすると、セレクタ２２はフラグラッチ２１に記録されたラッチデータをデュアルポートメモリ２３に転送する（図１１に示すｂ）。またこの間、ライトアドレスカウンタ２５は同図に示すタイミングで動作する。
このように処理することによって、フラグ生成ＦＩＦＯ４（デュアルポートメモリ２３）に圧縮データが記録され、更にリードアドレスカウンタ２６の制御によって圧縮データがビット変換ＦＩＦＯ５に出力され、更に出力データ制御部９の制御によって圧縮データがメモリに転送される。
【００４３】
図１２は、上記処理によってメモリに転送された圧縮データの構成を示す図である。例えば、圧縮データはメモリの００番地にフラグ情報を記録した８ビット（１バイト）のデータが記録され、００〜０８番地に上記フラグ情報に対応した圧縮データが記録される。以下、９バイト毎にフラグデータと圧縮データを繰り返して記録する構成である。したがって、００番地の００に記録されたフラグ情報は０１番地の圧縮データの情報であり、００番地の０１に記録されたフラグ情報は０２番地の圧縮データの情報であり、以下同様に圧縮データの情報を記録する。
【００４４】
以上のように処理することによって、一致位置と一致長さの情報に基づいて効率よくデータの圧縮処理を行なうことができ、ハードウェアによる複雑な組合せ回路が不要であり、データ圧縮処理を高速に行なうことができる。
尚、本例のデータ圧縮装置の説明において、圧縮処理後のデータを再びメモリに書き込む構成としたが、メモリに再び書き込む場合に限らず、メモリ以外に転送し、又は他の装置に圧縮データを転送する構成としてもよい。
【００４５】
また、本例は印刷装置に限らず、他の装置においてデータ圧縮処理を行う際にも適用することができる。さらに、本例で説明したスライド窓は８ｂｉｔ幅のシフトレジスタで構成され、３２バイト（２３＋９バイト）分のデータを保持する構成で説明したが、上記構成に限定されるものではない。
（実施形態２）
【００４６】
次に、本発明の実施形態２について説明する。
図１３は本実施形態のデータ圧縮装置の回路ブロック図である。尚、本例のデータ圧縮装置は、基本的に前述の図１、及び図２において説明した実施形態１のデータ圧縮装置の回路ブロック図と同じである。但し、本例のデータ圧縮装置では、連続同一データの検出部１１が設けられている。この連続同一データの検出部１１は過去データとの一致検出回路１３に接続される構成であり、連続する同一データの検出を特に行う回路である。
【００４７】
本例では、リピートタイプにおいて、同一データが規定バイト数以上連続している場合、入力段ＦＩＦＯ２の出力幅に合致するバイト数分を１クロックでカウントする論理を追加するものである。また、スライド窓１２を入力段ＦＩＦＯ２の出力幅に合致するバイト数分だけバレルシフトを行う構成である。また、ポインタタイプにおいて、一定バイト数の長さ以上の分だけのデータ一致長が検出された場合、入力段ＦＩＦＯ２の出力幅に合致するバイト数分を１クロックでカウントする論理を追加するものである。
尚、図１３において、スライド窓＆圧縮データ生成部３や、フラグ生成ＦＩＦＯ４、ビット変換ＦＩＦＯ５等の回路説明については説明を省略する。
【００４８】
図１４は一定数以上の同一データを検出する処理動作を示す図であり、同一データが規定バイト数以上連続している場合、スライド窓１２のデータを同図に示すように比較する必要がある。図１４は前述の図５に示す圧縮対象のデータと過去データとを比較する処理に対して、更に同一データ検出処理を行う回路を加えた構成である。したがって、本例では前述の過去データとの一致検出回路１３に図１５に示す処理を行う回路である連続同一データの検出部１１を接続した構成としている。
【００４９】
また、スライド窓１２には、図１６に示すように、入力段ＦＩＦＯ２の出力幅に合致するバイト数分（入力段ＦＩＦＯ２の出力幅である４バイト分）を１クロックでバレルシフト可能な構成としている。例えば、Table22のレジスタについて注目すると、前述の図５ではクロックが変化する度に、Table21のレジスタ出力がTable22に引き継がれていた。
【００５０】
しかし、本例では図１６に示すように、高速シフト指示信号を受けていない時には前述の図５と同様、クロックが変化する度に、Table21のレジスタ出力がTable22に引き継ぐが、高速シフト指示信号を受けている時には、クロックが変化する度に、Table18のレジスタ出力がTable22に引き継ぐように、Table22のレジスタ入力のセレクタが変化する構成である。
【００５１】
図１７、及び図１８は本例の処理を説明するタイムチャートであり、図１７は圧縮データ生成制御部１７の処理を示し、図１８はスライド窓制御部１６の処理を説明する。尚、図１７は前述の図６に示すタイムチャートに対応し、図１８は前述の図７に示すタイムチャートに対応し、以下本例に関連する処理のみについて説明する。
【００５２】
先ず、リピートタイプの圧縮時において、図１７のようにスライド窓における過去データの比較に連続する同一データ列が一定値以上検出されるか判断し（ＳＴＰ１３´）、連続する同一データ列が一定値以上検出される場合（ＳＴＰ１３´がＹＥＳ）、リピートタイプの圧縮時におけるリピートカウンタの値に４を加算する。
【００５３】
また、同時に図１８に示すように入力段ＦＩＦＯ２をリードすることにより、次の４バイトのデータを入力段ＦＩＦＯ２に準備させる（ＳＴ９´がＹＥＳ）。また、スライド窓１２も同時に４バイト分バレルシフトさせる。この動作によりリピートタイプ４バイト分の処理が従来の４クロックから１クロックに短縮できる。
【００５４】
次に、ポインタタイプの圧縮時においても、図１７に示すようにスライド窓１２における過去データの比較に連続する同一データ列が一定値以上検出されると、ポインタタイプの圧縮時における一致長カウンタの値を−４する（ＳＴ１７´がＹＥＳ）。また、同時に図１８に示すように入力段ＦＩＦＯ２をリードすることにより、次の４バイトを準備させる（ＳＴ９´がＹＥＳ）。また、スライド窓も同時に４バイト分バレルシフトさせる。
【００５５】
したがって、リピートタイプ、及びポインタタイプの何れにおいても、１クロックで４バイト分のデータをシフトすると共に、同一データの圧縮処理をより高速に行うことができる。
【図面の簡単な説明】
【００５６】
【図１】本実施形態のデータ圧縮装置の回路ブロック図である。
【図２】スライド窓＆圧縮データ生成部の構成を示す図である。
【図３】フラグ生成ＦＩＦＯの回路ブロック図である。
【図４】実施形態１のデータ圧縮装置において、データ入力処理を説明するフローチャートである。
【図５】スライド窓の構成を示す図である。
【図６】圧縮データ生成制御部の処理動作を説明するフローチャートである。
【図７】スライド窓制御部の処理動作を説明するフローチャートである。
【図８】過去データとの一致検出回路の回路動作を説明する図である。
【図９】一致位置及び一致長さの検出回路が行う処理を説明する図である。
【図１０】一致位置及び一致長さの検出回路からの出力を基にして、連続するデータの長さと一致位置を解析する処理を説明する図である。
【図１１】フラグ生成ＦＩＦＯの処理動作を説明するタイムチャートである。
【図１２】メモリに転送された圧縮データの構成を示す図である。
【図１３】実施形態２のスライド窓＆圧縮データ生成部の構成を示す図である。
【図１４】連続同一データの検出部の回路動作を説明する図である。
【図１５】４バイトシフトの動作を説明する図である。
【図１６】スライド窓の構成を示す図である。
【図１７】圧縮データ生成制御部の処理動作を説明するフローチャートである。
【図１８】スライド窓制御部の処理動作を説明するフローチャートである。
【符号の説明】
【００５７】
１・・・データ圧縮回路
２・・・入力段ＦＩＦＯ
３・・・スライド窓＆圧縮データ生成部
４・・・フラグ生成ＦＩＦＯ
５・・・ビット変換ＦＩＦＯ
６・・・入力データ制御部
７・・・バイト数カウンタ
８・・・リピートカウンタ
９・・・出力データ制御部
１０・・バイト数カウンタ
１１・・連続同一データの検出部
１２・・スライド窓
１３・・過去データとの一致検出回路
１４・・一致位置及び一致長さの検出回路
１５・・圧縮データ生成回路
１６・・スライド窓制御部
１７・・圧縮データ生成制御部
１８・・初期値カウンタ
２１・・フラグラッチ
２２・・セレクタ
２３・・デュアルポートメモリ
２４・・９進カウンタ
２５・・ライトアドレスカウンタ
２６・・リードアドレスカウンタ
【図１】
2010154156.tif 000003
【図２】
2010154156.tif 000004
【図３】
2010154156.tif 000005
【図４】
2010154156.tif 000006
【図５】
2010154156.tif 000007
【図６】
2010154156.tif 000008
【図７】
2010154156.tif 000009
【図８】
2010154156.tif 000010
【図９】
2010154156.tif 000011
【図１０】
2010154156.tif 000012
【図１１】
2010154156.tif 000013
【図１２】
2010154156.tif 000014
【図１３】
2010154156.tif 000015
【図１４】
2010154156.tif 000016
【図１５】
2010154156.tif 000017
【図１６】
2010154156.tif 000018
【図１７】
2010154156.tif 000019
【図１８】
2010154156.tif 000020