(57)【要約】【課題】  中間バッファを利用することなくリアルタイムでのデータ伸張処理を行うこと。【解決手段】  ランレングス符号データを入力する符号入力手段と、ランレングス符号を伸張する第一、第二の符号伸張手段と、第一の符号伸張手段の出力と第二の符号伸張手段の出力とを結合して出力する伸張データ出力手段と、第一の符号伸張手段の出力スループットと第二の符号伸張手段の出力スループットを監視するスループット監視手段と、第一の符号伸張手段の動作中に、スループット監視手段によって観測される第一の符号伸張手段の出力スループットが、既定の閾値を下回るときに第二の符号伸張手段を動作させ、第二の符号伸張手段の動作中にスループット監視手段によって観測される第二の符号伸張手段の出力スループットが、既定の閾値を下回るときに第一の符号伸張手段を動作させる制御手段とを備える。【選択図】  図６
2008109196.tif 000002
【特許請求の範囲】
【請求項１】
ランレングス符号データを入力する符号入力手段と、
前記符号入力手段から入力されたランレングス符号を伸張する第一の符号伸張手段と、
前記符号入力手段から入力されたランレングス符号を伸張する第二の符号伸張手段と、
前記第一の符号伸張手段の出力と前記第二の符号伸張手段の出力とを結合して出力する伸張データ出力手段と、
前記第一の符号伸張手段の出力スループットと前記第二の符号伸張手段の出力スループットを監視するスループット監視手段と、
前記第一の符号伸張手段が動作しているときに前記スループット監視手段によって観測される前記第一の符号伸張手段の出力スループットが既定の閾値を下回るときに、前記第二の符号伸張手段を動作させ、前記第二の符号伸張手段が動作しているときに前記スループット監視手段によって観測される前記第二の符号伸張手段の出力スループットが既定の閾値を下回るときには、前記第一の符号伸張手段を動作させる制御手段とを備えることを特徴とする符号伸張装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の符号伸張手段を用いたリアルタイム符号伸張装置に関するものである。
【背景技術】
【０００２】
データ列を扱うシステムにおいて、データ転送に必要なバス帯域やデータ記憶に必要な領域を削減するために、データの転送や記憶を行う前に符号化（エンコード処理）によるデータ圧縮を行って転送・記憶するデータ量を削減し、データの内容が必要となったときに復号化（デコード処理）によるデータ伸張を行うという技術がある。
【０００３】
圧縮形式は様々な種類が存在するが、同じ値を持つデータが連続することの多い文書画像データに関しては、単純かつ低コストなハードウェア構成で実現が可能なランレングス圧縮形式が採用されることがある。このとき、一つのデータが１バイトから成る場合、レングス情報も１バイトを使用したバイト単位でのランレングス圧縮を行うことが一般的である。
【０００４】
一方、プリンタでの印刷動作に利用される画像データにおいても上記のデータ圧縮・伸張処理によるデータ量削減が行われており、この場合、データ圧縮された画像データはプリンタがデータを要求するタイミングに間に合うようにデータ伸張されて順次プリンタに転送されるというリアルタイム処理が行われるため、プリンタ動作で利用するデータに欠損を発生させないためには、データ伸張の処理速度はプリンタがデータを要求する速度よりも常に上回っている必要がある。
【０００５】
ここで、ランレングス圧縮された圧縮データをデータ伸張する処理は、圧縮データ単位毎の逐次処理となる。その理由は、ランレングス圧縮の圧縮データはレングス情報とデータ情報の組が複数連続したもので、レングス情報の内容によりそれに続くデータ情報のデータ数が決定する可変長の圧縮方式であるために、次のレングス情報を見つけるためには前のレングス情報を評価する必要があるからである。一つのレングス情報の評価によって出力できるデータ数は可変であるが、通常、最小の場合で１になる。従って、クロック同期で動作するデータ伸張処理回路の処理速度は最小の場合で１データ／サイクル、例えば１バイト単位でランレングス圧縮された圧縮データを伸張処理する場合には最小の場合で１バイト／サイクル、となるのが一般的である。スループット（単位時間内に処理可能なデータ量）で表現すれば、最低スループットが１となる。
【０００６】
近年、プリンタ技術が向上することによって、従来より高解像なプリントが可能なプリンタが登場してきている。解像度が高まるとプリントに必要となるデータ量も多くなり、必然的にプリンタに転送するデータ量が多くなる。高解像プリンタの中には、１サイクルの内に２データのデータ転送を要求するものもあり、この場合、ランレングス伸張の処理速度（スループット１）が、プリンタがデータを要求する速度（スループット２）を下回るために、リアルタイムでのデータ伸張処理が行えなくなる。そのため、あらかじめ圧縮データはデータ伸張して中間バッファに蓄えておき、プリンタの要求に応じて中間バッファからの読み出しとデータ転送を行うことでデータ欠損を防ぐ手法が開示されている。または、データ伸張処理回路をデータ転送回路に対して２倍の周波数を持つクロック信号で駆動して、データ転送１サイクルあたり２データの伸張が可能となるように回路を構成する手法が開示されている。
【０００７】
従来例としては、例えば、通常のデコーダと短いラン専用デコーダとを持ち高速化する画像復号化装置がある（特許文献１参照）。
【特許文献１】特開平１１−２８４８６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の技術における中間バッファは、プリンタが一度のプリント動作に必要とするデータ量を記憶するページメモリ装置により実現されるために、大幅なコスト増加となってしまう。また、上述した従来の技術における２倍の周波数を持つクロック信号による駆動は、データ転送回路自体が高速なクロックで駆動されている場合に、さらにその２倍の周波数を利用することは技術的には非常に難しく、半導体物理設計と製造技術および製造の面において非常にコストの高いものとなってしまう。
【０００９】
本発明は上記問題を鑑みてなされたものであって、中間バッファを利用することなくリアルタイムでのデータ伸張処理を行うことができるデータ伸張処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明に係る符号伸張装置は、ランレングス符号データを入力する符号入力手段と、前記符号入力手段から入力されたランレングス符号を伸張する第一の符号伸張手段と、前記符号入力手段から入力されたランレングス符号を伸張する第二の符号伸張手段と、前記第一の符号伸張手段の出力と前記第二の符号伸張手段の出力とを結合して出力する伸張データ出力手段と、前記第一の符号伸張手段の出力スループットと前記第二の符号伸張手段の出力スループットを監視するスループット監視手段と、前記第一の符号伸張手段が動作しているときに前記スループット監視手段によって観測される前記第一の符号伸張手段の出力スループットが既定の閾値を下回るときに、前記第二の符号伸張手段を動作させ、前記第二の符号伸張手段が動作しているときに前記スループット監視手段によって観測される前記第二の符号伸張手段の出力スループットが既定の閾値を下回るときには、前記第一の符号伸張手段を動作させる制御手段とを備えることを特徴とする。
【発明の効果】
【００１１】
中間バッファを利用することなくリアルタイムでのデータ伸張処理を行うことで、システムのコスト増加を防ぐことが可能になる。
【発明を実施するための最良の形態】
【００１２】
（実施例１）
以下、本発明の符号伸張装置の一実施の形態を図面に基づき説明する。
【００１３】
図１は本実施の形態に係る符号伸張装置の接続を示すブロック図である。同図において１は符号伸張装置であり、２は符号データ記憶装置であり、３はデータ利用装置であり、４は符号データ転送バスであり、５はデータ転送バスである。
【００１４】
符号データ記憶装置２は符号データ出力端子および符号データ転送要求入力端子を持ち、それらは符号データ転送バス４を介して符号伸張装置１と接続されている。そして、符号データ記憶装置２はランレングス符号データを記憶しており、符号伸張装置１の送信する符号データ要求信号に応じて、符号データ出力端子から間断なく４バイトずつ出力する。
【００１５】
符号伸張装置１は符号データ入力端子および符号データ転送要求出力端子を持ち、それらは符号データ転送バス４を介して符号データ記憶装置２と接続されている。符号伸張装置１は符号伸張処理が可能な状態となると符号データ要求出力端子から符号データ要求信号を出力し、接続先の符号データ記憶装置２から転送される符号データを符号データ入力端子を介して受信し、符号伸張処理を行う。この符号伸張処理の詳細は後述する。
【００１６】
また、符号伸張装置１はデータ出力端子およびデータ要求信号入力端子を持ち、それらはデータ転送バス５を介してデータ利用装置３と接続されている。符号伸張装置１はデータ利用装置３からのデータ要求信号を応じて符号伸張処理されたデータをデータ出力端子から間断なく２バイトずつ出力する。
【００１７】
データ利用装置３はデータ入力端子およびデータ転送要求出力端子を持ち、それらはデータ転送バス５を介して符号伸張装置１と接続されている。データ利用装置３はデータを利用する状態になるとデータ要求出力端子からデータ要求信号を出力し、接続先の符号伸張装置１から転送されるデータをデータ入力端子を介して受信する。
【００１８】
図２は本実施の形態に係る符号伸張装置の符号に含まれるレングスコードに関する仕様表である。符号伸張装置１は入力された符号データの伸張処理を本仕様表に従って行い、伸張されたデータを出力する。ここで、符号伸張装置１が扱う符号データはバイト単位のデータをランレングス圧縮したものであり、そのランレングス符号はレングスコード（１バイト）とその直後に続くデータ（可変長バイト）とを一組としてその組が複数個連続したものである。符号伸張装置１は、レングスコードを図２に示すレングスコード仕様表を用いて解釈してレングスコードの直後に続くデータのバイト長を求め、レングスコードで示された回数だけデータを出力し、まだ符号データが残っていれば次のレングスコードの解釈を行う、といった手順で符号データの伸張処理とデータ出力を行う。ここまで示したように、ランレングス符号により圧縮された符号データは、データの先頭から順にレングスコードを解釈して可変長のデータを処理していくことで、一意に伸張処理を行うことができるものである。
【００１９】
図３は本実施の形態に係る符号データ記憶装置に記憶されている符号データである。図中の四角は１バイトの符号データを表しており、記載されている数字は１６進数で符号データの内容を示している。符号データ記憶装置２は前述の通り、符号データ要求信号を受信したときに図３に示す符号データを左側から順に４バイトずつ出力する。
【００２０】
図４は図３に示す符号データのレングスコードに太線で囲みを付けた図である。符号データ記憶装置２および符号データ伸張装置１はこのレングスコードの情報をあらかじめ持っているわけではない。符号データ中のどのバイトがレングスコードになるかについては、前述した通り、符号データの先頭バイトから順に処理していくことにより判別することが可能である。
【００２１】
図５は図３に示す符号データを伸張処置して得られるデータを示した図である。図中の四角は１バイトのデータを表しており、記載されている数字は１６進数でデータの内容を示している。
【００２２】
図６は本実施の形態に係る符号伸張装置の内部構成を示すブロック図である。１０１は符号データ入力部であり、１０２はランレングス符号伸張部Ａであり、１０３はランレングス符号伸張部Ｂであり、１０４はデータ出力部である。
【００２３】
符号データ入力部１０１は内部に図示しない符号データバッファを持ち、符号データ記憶装置２から受信した符号データを８バイト記憶することができる。符号データバッファに記憶された符号データはランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３から参照することが可能な構成となっており、符号データ入力部１０１はランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂによって参照された符号データのバイト数だけ符号データバッファをシフトして、まだ参照されていない符号データをバッファの先頭に移動する機能、および、バッファの空き領域が４バイト以上になる見込みのときに符号データ要求信号を符号データ記憶装置２に対して送信する機能とを持つ。
【００２４】
ランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３は、一般的なランレングス符号伸張器と同様に、内部に図示しないカウンタおよびデータバッファを持っており、１つのランレングス符号に対する伸張処理を行うことが可能で、その出力は１バイトあるいは２バイトずつに分割して行うことができる。
【００２５】
ランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３は、動作状態がアクティブである間、符号データ入力部１０１内部の符号データバッファに記憶されている符号データを参照し、図２に示した表に従ってレングスコードの解釈結果に応じてデータ出力部１０４に対してデータを出力する。このとき、データが３バイト以上となる場合には１サイクルに２バイトまでの出力を行い、残りのデータは次のサイクル以降に出力する。なお、データ出力のために新たな符号データの参照が必要な場合には、必要に応じて符号データバッファの符号データを参照して出力する。１つのレングスコードに対する最後のデータを出力するときに２バイトの出力となる場合は、次のサイクルに読み込む符号データを新たなレングスコードとする伸張処理が開始できるよう内部状態を初期化する。一方、１つのレングスコードに対する最後のデータを出力するときに１バイトの出力となる場合は、もう一方のランレングス符号伸張部に対して動作要求信号および符号データバッファの読み出し位置情報を送信し、次のサイクルからは動作状態を非アクティブに切り換えて伸張処理動作を休止する。
【００２６】
ランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３は、動作状態が非アクティブである間、もう一方のランレングス符号伸張部からの動作要求信号を受信するまで待機する。動作要求信号を受信した場合、動作状態をアクティブに切り換え、動作要求信号と共に受信した符号データバッファの読み出し位置情報で示される位置から符号データバッファに記憶されている符号データを参照し、図２に示した表に従ってレングスコードの解釈結果に応じてデータ出力部１０４に対してデータを出力する。このとき、出力するデータが１バイトだけとなる場合には、その１バイトを出力した後、次のサイクルに読み込む符号データを新たなレングスコードとする伸張処理が開始できるよう内部状態を初期化する。一方、出力するデータが２バイト以上となる場合には最初の１サイクルには１バイトのみ出力し、残りのデータは次のサイクル以降に出力を行う。なお、データ出力のために新たな符号データの参照が必要な場合には、必要に応じて符号データバッファの符号データを参照して出力する。そして、残りのデータの最後のデータを出力するときに２バイトの出力となる場合は、次のサイクルに読み込む符号データを新たなレングスコードとする伸張処理が開始できるよう内部状態を初期化する。一方、残りのデータの最後のデータを出力するときに１バイトの出力となる場合は、もう一方のランレングス符号伸張部に対して動作要求信号および符号データバッファの読み出し位置情報を送信し、次のサイクルからは動作状態を非アクティブに切り換えて伸張処理動作を休止する。
【００２７】
ランレングス符号伸張部Ａ１０２の動作状態は、符号伸張装置１が初期化されたときアクティブであり、ランレングス符号伸張部Ｂ１０３の動作状態は、符号伸張装置１が初期化されたとき非アクティブである。ただし、データ出力部１０４からデータ要求信号を受信していないときには、２つのランレングス符号伸張部は共に一時的に非アクティブとなり、伸張動作を行わない。この場合は次にデータ出力部１０４からデータ要求信号を受信したときに以前の状態に復帰する。
【００２８】
データ出力部１０４は、データ利用装置３から受信するデータ要求信号をランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３に転送する。また、このデータ要求信号を受信している間は、ランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３が出力するデータをデータ利用装置３に対して出力する。このとき、ランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３のどちらかだけから２バイトのデータが出力されている場合には、その２バイトのデータを出力する。また、それ以外の場合、すなわちランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３の両方から１バイトずつデータが出力されている場合には、それらのうち先にアクティブ状態であったランレングス符号伸張部が出力する１バイトを先頭の１バイトとして、残りのランレングス符号伸張部が出力する１バイトを最後の１バイトとして結合し、２バイトを出力する。
【００２９】
図７は本実施の形態に係る符号伸張装置の接続を示すブロック図における符号データ転送バス４およびデータ転送バス５の転送手順を示すタイミングチャートである。符号伸張装置１はリセット信号が解除されてすぐに符号データ要求信号を送信し、内部の符号データバッファへの符号データ読み込みを開始する。また、データ利用装置３からのデータ要求信号を受信すると、符号伸張処理を開始して伸張したデータをデータ利用装置３に対して出力する。処理する符号データがなくなったことを検知すると動作を停止する。この動作停止に関しては一般的な制御であるためにここでは詳細な説明は省略する。また、データ利用装置３はあらかじめ決まった量（３２バイト）のデータ信号を受信した後は、データ要求信号を送信しない。なお、チャート中のクロック信号およびリセット信号は、符号伸張装置１に対して入力されており、これらの信号に同期して内部の同期動作および初期化動作が行われる。
【００３０】
図８は図７に示すタイミングチャートにおける符号伸張装置１の内部動作を示した模式図である。図７のタイミングチャートにおけるサイクル１からサイクル２１までの状態を図示してある。
【００３１】
図の左側に、符号伸張装置１の符号データ入力部１０１内部の符号データバッファに記憶された符号データを示している。ここで、符号データバッファ符号データ記憶装置２から転送された符号データをクロックに同期して記憶するため、符号データ転送バス４上で転送された符号データは転送の次のサイクルにおいて符号データバッファに記憶されている。図中の太枠で示した符号データはランレングス符号伸張部Ａ１０２によって参照されている符号データを示し、また、太破線枠で示した符号データはランレングス符号伸張部Ｂ１０３によって参照されている符号データを示す。符号データ入力部１０１は、符号データバッファに記憶された符号データのうち、ランレングス符号伸張部Ａ１０２またはランレングス符号伸張部Ｂ１０３によって参照された符号データが次のサイクルには破棄されるように、符号データバッファ全体のバイトシフトを行い、また、記憶されている符号データのうちまだ参照されていないものが４バイト以下の場合には次のサイクルにおいて符号データ要求信号が符号データ記憶装置２に対して送信されるように制御して、符号データバッファ内に４バイト以上の符号データが記憶されているように管理している。
【００３２】
図の中央に、符号伸張装置１のランレングス符号伸張部Ａ１０２およびランレングス符号伸張部Ｂ１０３のうち動作状態がアクティブなものをそれぞれＡおよびＢの表記で示している。データ出力部１０４は前述した通り、データ利用装置３からのデータ要求信号をランレングス符号伸張部に対して転送するため、データ出力部１０４からデータ要求信号を受信していないサイクル４までは２つのランレングス符号伸張部は非アクティブ状態となり動作を停止している。サイクル５からサイクル２０まではデータ出力部１０４からデータ要求信号を受信しているため、ＡとＢのうち少なくともどちらかが上述した手順によってアクティブ状態となりデータ出力が行われている。
【００３３】
図の右側に、符号伸張装置１のデータ出力部１０４が出力するデータを示している。太枠で示したデータはランレングス符号伸張部Ａ１０２によって出力されたデータを示し、また、太破線枠で示したデータはランレングス符号伸張部Ｂ１０３によって出力されたデータを示す。前述した通り、アクティブなランレングス符号伸張部のみデータ出力を行い、先にアクティブであったランレングス符号伸張部の出力が１バイトのみとなる場合に限り、もう一方のランレングス符号伸張部もアクティブとなりデータ出力を補って常に２バイトのデータ出力となるように制御されている。
【００３４】
以下、図７と図８における符号伸張装置１、符号データ記憶装置２、および、データ利用装置３の各サイクルでの動作を説明する。
【００３５】
サイクル１では、リセットが解除されて動作が開始される。符号データバッファには４バイト以上の空きがあるため、符号伸張装置１は符号データ要求信号を出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００３６】
サイクル２では、前サイクルにおいて符号データバッファに転送された符号データが符号データバッファに記憶される。符号データバッファには４バイト以上の空きがあるため、符号伸張装置１は符号データ要求信号を出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００３７】
サイクル３では、前サイクルにおいて符号データバッファに転送された符号データが符号データバッファに記憶される。符号データバッファには４バイト以上の空きがないため、符号伸張装置１は符号データ要求信号を出力しない。
【００３８】
サイクル４では、なにも変化がない。
【００３９】
サイクル５では、データ利用装置３がデータ要求信号を送信する。データ要求信号を受信した符号伸張装置１はランレングス符号伸張部Ａ１０２をアクティブにして、ランレングス符号伸張部Ａ１０２は符号データバッファに記憶されている符号データの伸張処理を行う。符号データのレングスコードは０４ｈであり、「続く５バイトを１回出力する」という意味であるため、ランレングス符号伸張部Ａ１０２は続く５バイトの符号データを参照して出力する。ただこのとき、上述の通り、一度に処理するバイト数は２バイトまでなので本サイクルにおいては２バイトの符号データ０１ｈと０２ｈのみ参照して出力する。残りの３バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ａ１０２が出力した２バイトのデータをデータ利用部３に対して出力する。
【００４０】
サイクル６では、ランレングス符号伸張部Ａ１０２は残りの３バイトのうち２バイトの符号データ０３ｈと０４ｈの参照と出力を行い、残りの１バイトは次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ａ１０２が出力した２バイトのデータをデータ利用部３に対して出力する。本サイクルの符号データ参照によって、符号データバッファには４バイト以上の空きができることが確定するため、符号伸張装置１は符号データ要求信号を出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００４１】
サイクル７では、前サイクルにおいて符号データバッファに転送された符号データが符号データバッファに記憶される。ランレングス符号伸張部Ａ１０２は残りの１バイトの符号データ０５ｈの参照と出力を行う。この出力によってレングスコードで指示されたバイト数の出力が終了するため、ランレングス符号伸張部Ａ１０２は次サイクル以降のアクティブ時の動作においては再度レングスコード評価の処理を行う。ここで、ランレングス符号伸張部Ａ１０２は、その出力が１バイトのみとなるため、前述の通り、もう一方のランレングス符号伸張部に対して動作要求信号および符号データバッファの読み出し位置情報として１を送信する。動作要求信号を受信したランレングス符号伸張部Ｂ１０３は前述の通り、動作状態をアクティブにして、指定されたバイト位置からの符号データバッファの参照と出力を行う。参照する符号データのレングスコードはＦＥｈであり、「続く１バイトを３回出力する」という意味であるため、ランレングス符号伸張部Ｂ１０３は続く１バイトの符号データを参照して出力する。ただこのとき、上述の通り、最初の１サイクルには１バイトのみ出力し、残りのデータは次のサイクル以降に出力を行うため、符号データ０６ｈを参照して内部に記憶して、本サイクルでは１バイトの出力を行い、残りの２バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ａ１０２が出力した１バイトのデータとランレングス符号伸張部Ｂ１０３が出力した１バイトのデータとを結合してデータ利用部３に対して出力する。本サイクルの符号データ参照によって、符号データバッファには４バイト以上の空きができることが確定するため、符号伸張装置１は符号データ要求信号を出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００４２】
サイクル８では、前サイクルにおいて符号データバッファに転送された符号データが符号データバッファに記憶される。ランレングス符号伸張部Ａ１０２は前サイクルにおいてもう一方のランレングス符号伸張部に対して動作要求信号を送信したので、前述の通り本サイクルにおいて動作状態を非アクティブにする。ランレングス符号伸張部Ｂ１０３は残りの２バイトの出力を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した０６ｈを２バイト出力する。この出力によってレングスコードで指示されたバイト数の出力が終了するため、ランレングス符号伸張部Ｂ１０３は次サイクル以降のアクティブ時の動作においては再度レングスコード評価の処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００４３】
サイクル９では、ランレングス符号伸張部Ｂ１０３は符号データバッファに記憶されている符号データの伸張処理を行う。符号データのレングスコードは０３ｈであり、「続く４バイトを１回出力する」という意味であるため、ランレングス符号伸張部Ｂ１０３は続く４バイトの符号データを参照して出力する。ただこのとき、上述の通り、一度に処理するバイト数は２バイトまでなので本サイクルにおいては２バイトの符号データ０７ｈと０８ｈのみ参照して出力する。残りの２バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００４４】
サイクル１０では、ランレングス符号伸張部Ｂ１０３は残りの２バイトの符号データ０９ｈと０Ａｈの参照と出力を行う。この出力によってレングスコードで指示されたバイト数の出力が終了するため、ランレングス符号伸張部Ｂ１０３は次サイクル以降のアクティブ時の動作においては再度レングスコード評価の処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。本サイクルの符号データ参照によって、符号データバッファには４バイト以上の空きができることが確定するため、符号伸張装置１は符号データ要求信号を出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００４５】
サイクル１１では、前サイクルにおいて符号データバッファに転送された符号データが符号データバッファに記憶される。ランレングス符号伸張部Ｂ１０３は符号データバッファに記憶されている符号データの伸張処理を行う。符号データのレングスコードはＦＡｈであり、「続く１バイトを７回出力する」という意味であるため、ランレングス符号伸張部Ｂ１０３は続く１バイトの符号データを参照して出力する。ただこのとき、上述の通り、一度に処理するバイト数は２バイトまでなので１バイトの符号データ０Ｂｈを参照して内部に記憶して、本サイクルでは２バイトの出力を行い、残りの５バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００４６】
サイクル１２では、ランレングス符号伸張部Ｂ１０３は残りの５バイトのうち２バイトのデータの出力を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した０Ｂｈを２バイト出力する。残りの３バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００４７】
サイクル１３では、ランレングス符号伸張部Ｂ１０３は残りの３バイトのうち２バイトのデータの出力を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した０Ｂｈを２バイト出力する。残りの１バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００４８】
サイクル１４では、ランレングス符号伸張部Ｂ１０３は残りの１バイトのデータの出力を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した０Ｂｈを１バイト出力する。この出力によってレングスコードで指示されたバイト数の出力が終了するため、ランレングス符号伸張部Ｂ１０３は次サイクル以降のアクティブ時の動作においては再度レングスコード評価の処理を行う。ここで、ランレングス符号伸張部Ｂ１０３は、その出力が１バイトのみとなるため、前述の通り、もう一方のランレングス符号伸張部に対して動作要求信号および符号データバッファの読み出し位置情報として０を送信する。動作要求信号を受信したランレングス符号伸張部Ａ１０２は前述の通り、動作状態をアクティブにして、指定されたバイト位置からの符号データバッファの参照と出力を行う。参照する符号データのレングスコードは０５ｈであり、「続く６バイトを１回出力する」という意味であるため、ランレングス符号伸張部Ａ１０２は続く６バイトの符号データを参照して出力する。ただこのとき、上述の通り、最初の１サイクルには１バイトのみ出力し、残りのデータは次のサイクル以降に出力を行うため、符号データ０Ｃｈを参照して、本サイクルでは１バイトの出力を行い、残りの５バイトについては次サイクル以降に処理を行う。本サイクルの符号データ参照によって、符号データバッファには４バイト以上の空きができることが確定するため、符号伸張装置１は符号データ要求信号を出力する。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した１バイトのデータとランレングス符号伸張部Ａ１０２が出力した１バイトのデータとを結合してデータ利用部３に対して出力する。
【００４９】
サイクル１５では、前サイクルにおいて符号データバッファに転送された符号データが符号データバッファに記憶される。ランレングス符号伸張部Ｂ１０３は前サイクルにおいてもう一方のランレングス符号伸張部に対して動作要求信号を送信したので、前述の通り本サイクルにおいて動作状態を非アクティブにする。ランレングス符号伸張部Ａ１０２は残りの５バイトのうち２バイトの符号データ０Ｄｈと０Ｅｈの参照と出力を行い、残りの３バイトは次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ａ１０２が出力した２バイトのデータをデータ利用部３に対して出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００５０】
サイクル１６では、ランレングス符号伸張部Ａ１０２は残りの３バイトのうち２バイトの符号データ０Ｆｈと１０ｈの参照と出力を行い、残りの１バイトは次サイクル以降に処理を行う。本サイクルの符号データ参照によって、符号データバッファには４バイト以上の空きができることが確定するが、一般的であるため図示していない符号データ終了信号の制御によって符号伸張装置１は符号データ要求信号の出力を行わない。データ出力部１０４はランレングス符号伸張部Ａ１０２が出力した２バイトのデータをデータ利用部３に対して出力する。符号データ記憶装置２は符号データ要求信号に応じて符号データを転送する。
【００５１】
サイクル１７では、ランレングス符号伸張部Ａ１０２は残りの１バイトの符号データ１１ｈの参照と出力を行う。この出力によってレングスコードで指示されたバイト数の出力が終了するため、ランレングス符号伸張部Ａ１０２は次サイクル以降のアクティブ時の動作においては再度レングスコード評価の処理を行う。ここで、ランレングス符号伸張部Ａ１０２は、その出力が１バイトのみとなるため、前述の通り、もう一方のランレングス符号伸張部に対して動作要求信号および符号データバッファの読み出し位置情報として１を送信する。動作要求信号を受信したランレングス符号伸張部Ｂ１０３は前述の通り、動作状態をアクティブにして、指定されたバイト位置からの符号データバッファの参照と出力を行う。参照する符号データのレングスコードはＦＡｈであり、「続く１バイトを７回出力する」という意味であるため、ランレングス符号伸張部Ｂ１０３は続く１バイトの符号データを参照して出力する。ただこのとき、上述の通り、最初の１サイクルには１バイトのみ出力し、残りのデータは次のサイクル以降に出力を行うため、符号データ１２ｈを参照して内部に記憶して、本サイクルでは１バイトの出力を行い、残りの６バイトについては次サイクル以降に処理を行う。データ出力部１０４はランレングス符号伸張部Ａ１０２が出力した１バイトのデータとランレングス符号伸張部Ｂ１０３が出力した１バイトのデータとを結合してデータ利用部３に対して出力する。
【００５２】
サイクル１８では、ランレングス符号伸張部Ａ１０２は前サイクルにおいてもう一方のランレングス符号伸張部に対して動作要求信号を送信したので、前述の通り本サイクルにおいて動作状態を非アクティブにする。ランレングス符号伸張部Ｂ１０３は残りの６バイトのうち２バイトの出力を行い、残りの４バイトは次サイクル以降に処理を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した１２ｈを２バイト出力する。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００５３】
サイクル１９では、ランレングス符号伸張部Ｂ１０３は残りの４バイトのうち２バイトの出力を行い、残りの２バイトは次サイクル以降に処理を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した１２ｈを２バイト出力する。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００５４】
サイクル２０では、ランレングス符号伸張部Ｂ１０３は残りの２バイトの出力を行う。繰り返しの出力なので符号データバッファへの参照は行わずに内部に記憶した１２ｈを２バイト出力する。この出力によってレングスコードで指示されたバイト数の出力が終了するため、ランレングス符号伸張部Ｂ１０３は次サイクル以降のアクティブ時の動作においては再度レングスコード評価の処理を行う。データ出力部１０４はランレングス符号伸張部Ｂ１０３が出力した２バイトのデータをデータ利用部３に対して出力する。
【００５５】
サイクル２１では、あらかじめ決まった量（３２バイト）のデータ信号を受信した後であるため、データ要求信号を送信しない。
【００５６】
以上説明したように、一方のランレングス符号伸張部の出力が１バイトのみとなる場合にもう一方のランレングス符号伸張部を動作させることによって、データ利用部３の要求信号に応じて常に２バイトのデータ出力を行うことが可能になる。
【図面の簡単な説明】
【００５７】
【図１】本実施の形態に係る符号伸張装置の接続を示すブロック図である。
【図２】本実施の形態に係る符号伸張装置の符号に含まれるレングスコードに関する仕様表である。
【図３】本実施の形態に係る符号データ記憶装置に記憶されている符号データである。
【図４】図３に示す符号データのレングスコードに太線で囲みを付けた図である。
【図５】図３に示す符号データを伸張処置して得られるデータを示した図である。
【図６】本実施の形態に係る符号伸張装置の内部構成を示すブロック図である。
【図７】本実施の形態に係る符号伸張装置の接続を示すブロック図における符号データ転送バス４およびデータ転送バス５の転送手順を示すタイミングチャートである。
【図８】図７に示すタイミングチャートにおける符号伸張装置１の内部動作を示した模式図である。
【符号の説明】
【００５８】
１  符号伸張装置
２  符号データ記憶装置
３  データ利用装置
４  符号データ転送バス
５  データ転送バス
１０１  符号データ入力部
１０２  ランレングス符号伸張部Ａ
１０３  ランレングス符号伸張部Ｂ
１０４  データ出力部
【図１】
2008109196.tif 000003
【図２】
2008109196.tif 000004
【図３】
2008109196.tif 000005
【図４】
2008109196.tif 000006
【図５】
2008109196.tif 000007
【図６】
2008109196.tif 000008
【図７】
2008109196.tif 000009
【図８】
2008109196.tif 000010