以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるので、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明によって不当に限定されるものではなく、また、本実施の形態で説明される構成の全てが本発明の必須の構成要件ではない。
図1〜図7は、本発明の画像処理装置、画像処理方法、画像処理プログラム及び記録媒体の第1実施例を示す図であり、図1は、本発明の画像処理装置、画像処理方法、画像処理プログラム及び記録媒体の第1実施例を適用した複合装置1の要部ブロック構成図である。
図1において、複合装置1は、コントローラ2とエンジン部3を備えており、コントローラ2とエンジン部3とは、ビデオI/Fにより接続されている。
エンジン部3は、スキャナ11とプロッタ12を備えており、原稿の画像を読み取って、コントローラ2で画像処理された画像データに基づいてプロッタ12で用紙に画像を印刷出力する。スキャナ11は、例えば、CCD(Charge Coupled Device )やCMOS(Complementary Metal Oxide Semiconductor; 相補型金属酸化膜半導体)を利用したイメージスキャナ等が利用されており、一般に、ADF(自動原稿送り装置)を備えている。ADFには、複数枚の原稿がセットされ、ADFは、セットされた原稿を1枚ずつスキャナ11の原稿読み取り位置に送給する。スキャナ11は、ADFから搬送されてきた原稿を走査し、原稿の画像を所定の解像度で読み取って、RGBの画像信号をデジタル変換した後、コントローラ2に出力する。
プロッタ12は、所定の印刷方式、例えば、電子写真方式、インク噴射方式のプロッタが用いられており、カラー、または、モノクロで用紙に画像を印刷出力する。
なお、複合装置1は、画像データの入力機能としては、スキャナ11に限るものではなく、例えば、ファクシミリ通信によってファクシミリデータを受信したり、ネットワークに接続されたコンピュータ等の情報処理装置から送られてきた画像データを受信したりして、入力画像データとしてもよい。また、複合装置1は、画像データの出力機能としても、プロッタ12で用紙に印刷出力するだけでなく、ファクシミリ機能によってファクシミリ送信出力したり、ネットワークに接続された情報処理装置や他の複合装置等に画像データを送信出力してもよい。
コントローラ2は、ASIC(Application Specific Integrated Circuit)21、ASIC22、ハードディスク23、CPU(Central Processing Unit )24、操作部25及びメモリ26等を備えており、複合装置1の制御と描画及び通信を制御するとともに、操作部25からの操作入力を制御する。
ASIC21は、画像圧縮/伸長及び画像処理のハードウェア要素を有する画像処理用のIC(Integrated Circuit:集積回路)であり、ハードディスク23、メモリ26及びCPU24を接続するブリッジの役割も有している。ASIC21は、内部レジスタ31、スキャナI/F32、画像伸長器33及び画像処理器34等を備えており、内部レジスタ31は、CPU24によって処理パラメータ等のデータが設定される。
スキャナI/F32は、圧縮器(圧縮手段)41及びWDMAC(Write Direct Memory Access Controller)42等を備えており、スキャナ11から入力される画像データを所定のデータ量(圧縮単位)毎に圧縮器41によってJPEG等の可変長圧縮方式で可変長圧縮して、WDMAC42によってCPU24を介することなく、メモリ26にDMA転送して圧縮データとしてデータ量を少なくして書き込む。WDMAC42は、CPU24がメモリ26上に書き込んだディスクリプタ(DPR)を参照して、メモリ26に書き込む圧縮データ(符号データ)のデータ量、書き込むアドレスを管理し、CPU24の制御を介することなく、メモリ26にメモリアクセスを行って、圧縮データを書き込む。
画像伸長器33は、伸長器43及びRDMAC(Read Direct Memory Access Controller)44等を備えており、RDMAC44は、CPU24がメモリ26上に書き込んだディスクリプタを参照して、CPU24を介することなく、メモリ26上の圧縮データをリードして、伸長器43に渡す。伸長器(伸長手段)43は、RDMAC44のリードした圧縮データを元の画像データに伸長(復号)し、伸長後の画像データを、画像処理器34へ出力する。そして、RDMAC44は、メモリ26上のデータを読み込む際、メモリ26にリードコマンドを発行した後、該リードコマンドに対するリードデータ応答を待たずに次のリードコマンドを発行するリードコマンド先投げを行うことで、メモリリード時間を短縮させる。
画像処理器34は、画像処理部45及びWDMAC46等を備えており、画像処理部45は、画像伸長器33で伸長された画像データに対して、印刷出力するのに必要な所定の画像処理、例えば、誤差拡散やガンマ変換等の画像処理を行う。WDMAC46は、CPU24がメモリ26上に書き込んだディスクリプタを参照して、画像処理部45が画像処理したメモリ26に書き込む画像データのデータ量、書き込むアドレスを管理し、CPU24の制御を介することなく、メモリ26にメモリアクセスを行って、画像データを書き込む。
ASIC22は、メモリ26上にある画像データをプロッタ12へ転送する際のプロッタ12との印刷タイミングを制御する機能を有したICであり、メモリ26やCPU24を接続するブリッジの役割も持っている。ASIC22は、内部レジスタ47及びプロッタI/F48を有しており、プロッタI/F48は、RDMAC49を有している。内部レジスタ47は、CPU24によって処理パラメータ等のデータが設定される。プロッタI/F48のRDMAC49は、メモリ26上の画像データを読み込む際に、リードコマンド発行後、リードデータ応答を待たずに次のリードコマンドを発行するリードコマンド先投げを行うことで、メモリリード時間の短縮を行う。
操作部25は、ユーザからの入力操作を受け付けてユーザに対して報知する情報を表示する機能を有し、メカニカルキーやタッチパネルキー等からなるテンキー、文字入力キー、スタートキー、ストップキー等の操作キーを有するとともに、操作キーから操作入力される情報や複合装置1の動作状態及び時刻等を表示する液晶ディスプレイ(LCD)等の表示部を有している。
ハードディスク23は、画像データ、プログラム、フォントデータ及びフォームデータ等をCPU24の制御下で保存するが、記憶手段としては、ハードディスク23に限るものではなく、これらの情報を記憶することができる不揮発性の記憶手段、例えば、光ディスク等であってもよい。
メモリ(記憶手段)26は、RAM(Random Access Memory)等で構成され、画像データバッファ、圧縮データバッファとして用いられる。
CPU24は、図示しないROM(Read Only Memory)やハードディスク23に記憶されているプログラムに従ってASIC21、ASIC22の内部レジスタ31、47等へのデータ設定を行って、エンジン部3とともにコントローラ2の動作を制御し、複合装置1としての基本処理を実行するとともに、本発明の画像処理方法を実行する。また、CPU24は、ASIC21とASIC22のメモリアクセスのアービトレーションも行う。
上記画像伸長器33のRDMAC(リードDMA制御手段)44は、図2に示すようにブロック構成されており、DPRリード制御部51、メモリI/F52、ライトトグル制御部53、リードトグル制御部54、2つのバッファ55a、55b及びレジスタ56等を備えている。
DPRリード制御部(ディスクリプタリード制御手段)51は、メモリ26上にCPU24によって書き込まれたディスクリプタ(DPR)をリードして、ディスクリプタ情報(SA/SIZE)をリードトグル制御部54、ライトトグル制御部53、メモリI/F52へ分配し、また、後述するように、ライトトグル制御部53のライトカウント終了通知または伸長器43からの次バンド転送許可信号(次データ転送許可信号)NEXTが通知されると、ディスクリプタのNDPに記載されているアドレスをリードアクセスする。また、DPRリード制御部51は、バッファ55a、55bの空き状況に基づいてディスクリプタのDPRリードコマンドの先投げ個数を制御する。すなわち、伸長器43は、可変長圧縮データの終端を示す終端符号EOIを検知すると、次バンド転送許可信号NEXTをRDMAC44のリードトグル制御部54及びDPRリード制御部51に出力する。
なお、ディスクリプタは、図3に示すようにフォーマット構成されており、各4byte(バイト)のNDP(Next Descriptor Pointer)、SA(Start Address)、SIZE、Option等で構成されていて、CPU24によってメモリ26上に書き込まれる。SAは、RDMAC44がリードする圧縮データの先頭アドレスが記載され、SIZEは、転送する圧縮データのデータ量が記載される。なお、本実施例の複合装置1では、圧縮データが可変長圧縮データであるため、データ量は、不明であるが、圧縮器41の最悪圧縮率分のデータサイズがSIZEに記載される。NDPは、次ディスクリプタのアドレスが記載され、NDP=0の場合は、次のディスクリプタが無いことを示している。MODEは、DMACのモード設定が記載される。
メモリI/F(読み出し手段)52は、アドレス生成部52aを備えており、アドレス生成部52aは、DPRリード制御部51からのDPRアドレス(ディスクリプタアドレス)またはライトトグル制御部53からのラインカウント値に基づいてメモリアクセスするメモリ26のアドレスを生成する。メモリI/F52は、アドレス生成部52aの生成したアドレスを用いてリードコマンドを発行する。また、メモリI/F52は、発行したリードコマンドに応答するリードデータを、DPRリード制御部51またはライトトグル制御部53へ転送する。
ライトトグル制御部(バッファライト制御手段)53は、ライトカウンタ53aを備えており、ライトカウンタ(ライトカウント手段)53aは、バッファ55a、55bに書き込む圧縮データをカウントする。ライトトグル制御部53は、ライトカウンタ53aのカウント結果であるライトカウント値に基づいて、圧縮データを書き込むバッファ55a、55bをトグルに制御して圧縮データのバッファ55a、55bの書き込みを行うとともに、バッファ55a、55bの空き状況をDPRリード制御部51へ通知する。ライトカウンタ53aは、初期値をSIZEとしてバッファ55a、55bへ書き込んだデータ量だけダウンカウントし、カウンタ値が「0」になると、DPRリード制御部51へライトカウント終了通知を出力(アサート)する。
リードトグル制御部54は、バッファ55a、55bの読み込み制御及びバッファ55a、55bから読み込む圧縮データをカウントするリードカウンタ54aを備えており、リードカウンタ54aは、初期値をSIZEとして、バッファ55a、55bから読み込んだ圧縮データのデータ量だけダウンカウントする。リードトグル制御部54は、カウント中は、伸長器43に出力しているデータ有効信号dma_aliveをアサートし、カウンタ値が「0」になると、データ有効信号dma_aliveをネゲートするとともに、EOB(End of Block)パルスを後段の伸長器43に通知する。また、リードトグル制御部54は、次バンド転送許可信号NEXTがアサートされると、データ有効信号dma_aliveをネゲートし、リードカウンタ54aのリードカウントが「0」になる。この際、EOBパルスは後段へ出力しない。
バッファ55a、55bは、1リードコマンド分のバッファ容量を有しており、リードコマンドの先投げ個数と同じ個数のバッファ55a、55bを有する。本実施例の複合装置1は、2個のバッファ55a、55bを有しており、リードコマンド先投げ個数は2個である。
そして、本実施例の複合装置1は、ROM、EEPROM(Electrically Erasable and Programmable Read Only Memory )、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory )、CD−RW(Compact Disc Rewritable )、DVD(Digital Versatile Disk)、SD(Secure Digital)カード、MO(Magneto-Optical Disc)等のコンピュータが読み取り可能な記録媒体に記録されている本発明の画像処理方法を実行する画像処理プログラムを読み込んでROM等に導入することで、後述するメモリ26に書き込まれた圧縮データの読み出し時間を短縮して、画像を圧縮してメモリ26に転送する圧縮転送から該メモリ26の圧縮データを伸長器43に転送する伸長転送の連携を適切に行い、転送処理時間を短縮する画像処理方法を実行する画像処理装置として構築されている。この画像処理プログラムは、アセンブラ、C、C++、C#、Java(登録商標)等のレガシープログラミング言語やオブジェクト指向ブログラミング言語等で記述されたコンピュータ実行可能なプログラムであり、上記記録媒体に格納して頒布することができる。
次に、本実施例の作用を説明する。本実施例の複合装置1は、メモリ26からのダミーデータの読み込みを防止しつつ圧縮データの読み出しを高速に行って、画像データを圧縮してメモリ26に転送する圧縮転送からメモリ26の圧縮データを伸長器43に転送する伸長転送の連携を適切に行って、転送処理時間を短縮する。
すなわち、一定の速度で入力される入力画像データを可変長圧縮してメモリ26に転送保管し、メモリ26上の可変長圧縮データを読み出して伸長して出力する場合、入力画像データを可変長圧縮してメモリ26へ転送する圧縮転送処理に対して、メモリ26内の可変長圧縮データを読み出して伸長する伸長転送処理よりもバスの使用権を優先的に与えてデータ転送を行う。したがって、圧縮転送が伸長転送を追い抜いて適切な後段の処理を行うことができなくなるおそれがある。また、RDMAC44は、終端符号EOI以降のディスクリプタで指定されているメモリ領域に空きがあるときには、該空き領域のダミーデータ(冗長データ)を読み込んでしまうが、このダミーデータの読み込みを防止して、処理速度を向上させることが、上記転送速度の向上に有効である。
そこで、本実施例の複合装置1は、RDMAC44によるメモリ26の可変長圧縮データの読み出しにおいて、ダミーデータの読み込みを防止して圧縮データの読み出し時間を短縮して、圧縮転送処理と伸長転送処理を適切に連携させ、転送処理全体の処理速度の向上を図っている。
すなわち、画像伸長器33は、RDMAC44が、メモリ26上のディスクリプタ(DPR)を参照して、リードコマンドを発行することで、メモリ26上の圧縮データの読み込みを行って伸長器43に出力して、伸長器43で圧縮データの伸長を行う。そして、このRDMAC44は、メモリ26のリード処理をDPRリード制御部51が行っており、図4に示すようにディスクリプタリード制御処理を行う。すなわち、DPRリード制御部51は、RDMAC44が起動されると、レジスタ56にCPU24によって設定された先頭のディスクリプタのアドレスである初期値のディスクリプタポインタ(DPRポインタ)をレジスタ56からロードし(ステップS101)、メモリ26の該初期値のディスクリプタポインタ(DPRポインタ)に設定されているバンドのアドレスを読み取って内部レジスタに設定する(ステップS102)。
次に、DPRリード制御部51は、初期値のディスクリプタポインタ(DPRポインタ)に記載されているアドレスをディスクリプタアドレスバス(DPRアドレスバス)に設定し、メモリI/F52にディスクリプタリードトリガ(DPRリードトリガ)を発行する(ステップS104)。メモリI/F52は、ステップS103で設定されたディスクリプタアドレスのリードコマンドをメモリ52に発行し、DPRリード制御部51は、発行したリードコマンドに対応するディスクリプタリードデータ(DPRリードデータ)の応答を待つ(ステップS105)。
DPRリード制御部51は、ディスクリプタリードデータを受け取ると、ディスクリプタ情報をRDMAC44の必要な内部制御部に分配する(ステップS106)。すなわち、DPRリード制御部51は、ディスクリプタ情報のうち、SA情報をメモリI/F52へ転送し、SIZE情報をライトトグル制御部53とリードトグル制御部54へ転送する。
DPRリード制御部51は、ディスクリプタ情報(SA1/SIZE1/NDP1/MODE1)をDPRリード制御部51内部で保持(ラッチ)し(ステップS107)、ライトカウント終了通知または次バンド転送許可信号NEXTの通知を待つ(ステップS108)。
DPRリード制御部51は、ライトカウント終了通知または次バンド転送許可信号NEXTの通知を受け取ると、ディスクリプタ情報のNDPを確認する(ステップS109)。
DPRリード制御部51は、ステップS109で、ディスクリプタ情報のNDPが「0」以外であると、全ての圧縮ディスクリプタの終端ではないと判断して、NDPが示しているアドレスを内部レジスタに設定し(ステップS110)、ステップS104に戻って、ディスクリプタリードトリガ(DPRリードトリガ)のメモリI/F52への発行から上記同様に処理する(ステップS104〜S109)。
そして、ステップS109で、ディスクリプタ情報のNDPが「0」であると、DPRリード制御部51は、全圧縮データの終了であると判断して、処理を終了する。
すなわち、図5に示すようにメモリ26に圧縮データとディスクリプタ(DPR)が記録されている場合、すなわち、ディスクリプタで指定されているデータサイズよりも、可変長圧縮データのデータサイズが小さく、終端符号EOI以降にDPRサイズまでに冗長データが存在する場合、図6にRDMAC44のタイミング図を示すように、DPRリード制御部51は、タイミングTaにおいて、伸長器43が終端符号EOIを検知して次バンド転送許可信号NEXTをRDMAC44のリードトグル制御部54とDPRリード制御部51に出力して、DPRリード制御部51がこの次バンド転送許可信号NEXTを受信すると、矢印で示すように、次バンドのディスクリプタをリード(DPRリード)する。なお、図6において、A_Dataは、RDMAC44がメモリ26から読み取るデータを示しており、B_Dataは、RDMAC44から伸長器43に出力するデータを示している。
したがって、RDMAC44は、終端符号EOI以降のダミーデータのリードを防止することができ、リード処理のパフォーマンスを向上させることができる。このとき、リードトグル制御部54は、データ有効信号dma_aliveをネゲートするとともに、EOBパルスを後段の伸長器43に通知する。
なお、従来は、ディスクリプタリード制御部が、ライトトグル制御部からのライトカウント終了通知のみを検知していたため、RDMACは、図7に示すように、終端符号EOI以降のダミーデータ(冗長データ)をリードしてしまい、可変長圧縮の効果が希薄なものとなっていた。
このように、本実施例の複合装置1は、所定データ量を圧縮単位として可変長圧縮されてメモリ26に記憶された圧縮データを、伸長器43からの次バンド転送許可信号(次データ転送許可信号)NEXTに応じてディスクリプタに基づいてメモリ26からバンド(圧縮単位)毎に読み出して伸長器43に転送する場合に、RDMAC44のライトトグル制御部53が、メモリ26から読み出したバンドの圧縮データをバッファ55a、55bに書き込み、ライトカウンタ53aが、該圧縮データのバッファ55a、55bへの書き込みを完了すると書き込み完了通知をDPRリード制御部51に発行して、ディスクリプタリード制御部51が、バッファ55a、55bに書き込まれた圧縮データを読み出して伸長器43へ出力するとともに、バッファ55a、55bに書き込んだ圧縮データをライトカウンタ53aによってカウントして、ライトカウンタ53aのカウントした圧縮データサイズがディスクリプタで指定されている指定データサイズになると、ライトカウント終了通知をDPRリード制御部51に出力し、DPRリード制御部51が、このライトカウント終了通知と伸長器43からの次バンド転送許可信号NEXTのいずれかが入力されると、次のDPRリードトリガをメモリI/F52に発行して、次のバンドのディスクリプタと圧縮データのメモリ26からの読み出しを行っている。
したがって、メモリ26から読み出した圧縮データのデータ量を監視することで、メモリ26に書き込まれた圧縮データの読み出し時間を短縮することができ、画像データを圧縮してメモリ26に転送する圧縮転送からメモリ26の圧縮データを伸長器43に転送する伸長転送の連携を適切に行って、転送処理時間を短縮することができる。
また、本実施例の複合装置1は、伸長器43が、圧縮単位毎の圧縮データの終端に付加されている終端符号EOIに基づいて次データ転送許可信号を生成している。
したがって、終端符号EOI以降に付加されているダミーデータ(冗長データ)を読み取ることを防止することができ、圧縮データの読み取り速度をより一層向上させることができる。
図8〜図13は、本発明の画像処理装置、画像処理方法、画像処理プログラム及び記録媒体の第2実施例を示す図であり、図8は、本発明の画像処理装置、画像処理方法、画像処理プログラム及び記録媒体の第2実施例を適用した複合装置1の要部ブロック構成図である。
なお、本実施例は、上記第1実施例の複合装置1と同様の複合装置に適用したものであり、本実施例の説明においては、第1実施例の複合装置1と同様の構成部分には、同一の符号を付して、その説明を省略または簡略化するとともに、図示しない部分についても、第1実施例の説明で用いた符号をそのまま用いて説明する。
図8において、RDMAC(リードDMA制御手段)60は、第1実施例のRDMAC44と同様のメモリI/F52、ライトトグル制御部53、リードトグル制御部54、バッファ55a、55b及びレジスタ56等を備えているとともに、DPRリード制御部(ディスクリプタリード制御手段)61を備えている。
リードトグル制御部54は、第1実施例と同様に、リードカウンタ54aを備えており、リードカウンタ54aは、上述のように、初期値をディレクトリのSIZEに設定されているデータサイズとして、バッファ55a、55bから読み込んだ圧縮データのデータ量だけダウンカウントする。リードトグル制御部54は、リードカウンタ54aがカウント中は、伸長器43に出力しているデータ有効信号dma_aliveをアサートし、カウンタ値が「0」になると、データ有効信号dma_aliveをネゲートするとともに、EOBパルスを後段の伸長器43に通知する。また、リードトグル制御部54は、次バンド転送許可信号NEXTがアサートされると、データ有効信号dma_aliveをネゲートし、リードカウンタ54aのリードカウントが「0」になる。この際、EOBパルスは後段へ出力しない。
そして、リードカウンタ54aは、カウンタ値が「0」になってカウントを終了すると、リードカウント終了通知をDPRリード制御部61に出力する。
DPRリード制御部61は、第1実施例のDPRリード制御部51と同様に、メモリ26上にCPU24によって書き込まれたディスクリプタをリードして、ディスクリプタ情報(SA/SIZE)をリードトグル制御部54、ライトトグル制御部53、メモリI/F52へ分配し、また、ライトトグル制御部53のライトカウント終了通知、上記リードトグル制御部54のリードカウンタ54aからのリードカウント終了通知または伸長器43からの次バンド転送許可信号NEXTが通知されると、ディスクリプタのNDPに記載されているアドレスをリードアクセスする。また、DPRリード制御部61は、バッファ55a、55bの空き状況に基づいてディスクリプタのDPRリードコマンドの先投げ個数を制御する。
また、メモリI/F52は、第1実施例と同様に、アドレス生成部52aが、DPRリード制御部61のDPRアドレス、または、ライトトグル制御部53のライトカウント値を元にメモリアクセスするアドレスを生成し、該生成したアドレスを用いてリードコマンドを発行する。また、メモリI/F52は、リードコマンドの応答するメモリ26からのリードデータをDPRリード制御部61またはライトトグル制御部53へ転送する。
ライトトグル制御部53は、第1実施例と同様に、バッファ55a、55bの書き込み制御及びバッファに書き込むデータをカウントするライトカウンタ53aを有し、ライトカウンタ53aのカウント結果であるライトカウント値に基づいて、圧縮データを書き込むバッファ55a、55bをトグルに制御して圧縮データのバッファ55a、55bの書き込みを行うとともに、バッファ55a、55bの空き状況をDPRリード制御部51へ通知する。ライトカウンタ53aは、初期値をSIZEとしてバッファ55a、55bへ書き込んだデータ量だけダウンカウントし、カウンタ値が「0」になると、DPRリード制御部51へライトカウント終了通知を出力(アサート)する。
次に、本実施例の作用を説明する。本実施例の複合装置1は、リードトグル制御部54のリードカウンタ54aからのリードカウント終了通知を用いて、DPRリード制御部61がディスクリプタのリードアクセスを制御することで、メモリ26の圧縮データのデータサイズとディスクリプタの指定データサイズが一致する場合にも、適切に圧縮ディスクリプタの読み取りを行う。
すなわち、DPRリード制御部61は、図9及び図10に示すように、ディスクリプタリード処理を実行する。なお、図9及び図10において、第1実施例の図4に示したディスクリプタリード処理と同様の処理ステップには、同一のステップナンバを付与して、その説明を簡略化する。DPRリード制御部61は、RDMAC60が起動されると、図9に示すように、レジスタ56にCPU24によって設定された先頭のディスクリプタのアドレスである初期値のディスクリプタポインタ(DPRポインタ)をレジスタ56からロードし(ステップS101)、メモリ26の該初期値のディスクリプタポインタ(DPRポインタ)に設定されているバンドのアドレスを読み取って内部レジスタに設定する(ステップS102)。次に、DPRリード制御部61は、初期値のディスクリプタポインタ(DPRポインタ)に記載されているアドレスをディスクリプタアドレスバス(DPRアドレスバス)に設定し、メモリI/F52にディスクリプタリードトリガ(DPRリードトリガ)を発行する(ステップS104)。メモリI/F52は、ステップS103で設定されたディスクリプタアドレスのリードコマンドをメモリ52に発行し、DPRリード制御部61は、発行したリードコマンドに対応するディスクリプタリードデータ(DPRリードデータ)の応答を待つ(ステップS105)。DPRリード制御部61は、ディスクリプタリードデータを受け取ると、ディスクリプタ情報をRDMAC60の必要な内部制御部に分配し(ステップS106)、ディスクリプタ情報(SA1/SIZE1/NDP1/MODE1)をDPRリード制御部61内部で保持(ラッチ)する(ステップS107)。
DPRリード制御部61は、ディスクリプタ情報をラッチすると、図10に示すように、ライトカウント終了通知と次バンド転送許可信号NEXTの通知のいずれかを受け取るまで待ち(ステップS201)、次バンド転送許可信号NEXTの通知があると、ディスクリプタ情報のNDPを確認する(ステップS109)。
ステップS201で、ライトカウント終了通知があると、DPRリード制御部61は、SIZE分の圧縮データ、すなわち、ディスクリプタで指定されている指定データサイズ分の圧縮データをメモリ26からメモリリードしたと判断して、リードカウンタ54aからのリードカウント終了通知を待ち(ステップS202)、リードカウント終了通知を受け取ると、バッファ55a、55bは空になったと判断して、次のバンドの圧縮データをリードするために、ディスクリプタ情報のNDPを確認する(ステップS109)。
ステップS109で、ディスクリプタ情報のNDPが「0」以外であると、DPRリード制御部51は、全ての圧縮ディスクリプタの終端ではないと判断して、NDPが示しているアドレスを内部レジスタに設定し(ステップS110)、図9のステップS104に戻って、ディスクリプタリードトリガ(DPRリードトリガ)のメモリI/F52への発行から上記同様に処理する(ステップS104〜S107、S201、S202、S109)。
そして、ステップS109で、ディスクリプタ情報のNDPが「0」であると、DPRリード制御部51は、全圧縮データの終了であると判断して、処理を終了する。
すなわち、図11に示すようにメモリ26に圧縮データとディスクリプタ(DPR)が記録されている場合、すなわち、ディスクリプタで指定されているデータサイズと、可変長圧縮データのデータサイズが同じで、終端符号EOI以降に冗長データが存在しない場合、図12に示すように、圧縮データの終端符号EOI以降のダミーデータ(冗長データ)をリードしないだけであると、ファーストコピーの時間を短縮することはできるが、圧縮データのバンド1の最終データが終端符号EOIであると、バンド2のリード途中で次バンド(バンド3)へ飛んでしまうおそれがある。
ところが、上述のように、DPRリード制御部61が、ステップS201で、リードトグル制御部54のリードカウンタ54aからのライトカウント終了通知があったときに、図13に示すように、次バンド転送許可信号NEXTがアサートされない場合、ステップS202で、リードカウント終了通知を待つことで、バッファ55a、55bが空になるまで、次バンドのディスクリプタをリードしない。したがって、圧縮データの各バンドの最終データが終端符号EOIであっても、圧縮データのメモリ26からの読み取り速度を向上させることができるとともに、リード途中で次のバンドに飛んでしまうことを防止することができ、ファーストコピー時間を短縮しつつ、適切な圧縮データの読み取りを行うことができる。
このように、本実施例の複合装置1は、リードトグル制御部54が、バッファ55a、55bから読み出した圧縮データをカウントして該カウント値がディスクリプタで指定されている指定データサイズ(SIZE)になると、リードカウント終了信号をDPRリード制御部61に出力するリードカウンタ54aを備えており、DPRリード制御部61が、ライトカウント終了通知が入力されると、リードカウント終了信号が入力されるのを待って、次のディスクリプタと圧縮データの読み出しを行っている。
したがって、圧縮単位の圧縮データの各バンドの最終データが終端符号EOIである場合に、圧縮データの読み取り途中に次のバンドに飛んでしまうことを適切に防止することができ、ファーストコピー時間を短縮しつつ、適切な圧縮データの読み取りを行って、異常画像が発生することができる。
図14〜図18は、本発明の画像処理装置、画像処理方法、画像処理プログラム及び記録媒体の第3実施例を示す図であり、図14は、本発明の画像処理装置、画像処理方法、画像処理プログラム及び記録媒体の第3実施例を適用した複合装置1の要部ブロック構成図である。
なお、本実施例は、上記第1実施例の複合装置1と同様の複合装置に適用したものであり、本実施例の説明においては、第1実施例の複合装置1と同様の構成部分には、同一の符号を付して、その説明を省略または簡略化するとともに、図示しない部分についても、第1実施例の説明で用いた符号をそのまま用いて説明する。
図14において、RDMAC(リードDMA制御手段)70は、第1実施例のRDMAC44と同様のメモリI/F52、ライトトグル制御部53、バッファ55a、55b及びレジスタ56等を備えているとともに、DPRリード制御部(ディスクリプタリード制御手段)71及びリードトグル制御部(バッファリード制御手段)72を備えている。
DPRリード制御部71及びリードトグル制御部72には、伸長器43からbusy信号が入力され、このbusy信号は、伸長器43の内部バッファの空き状態を示すバッファエンプティ信号であって、伸長器43の内部バッファが空になると、「0」になる。また、このDPRリード制御部71及びリードトグル制御部72には、第1実施例の場合と同様に、伸長器43から次バンド転送許可信号NEXTが入力される。なお、伸長器43が出力する次データ転送許可信号としては、busy信号に限るものではなく、伸長器43の動作の終了を示す動作終了信号であってもよい。
DPRリード制御部71は、ディスクリプタのリードを行い、ディスクリプタ情報(SA/SIZE)をリードトグル制御部54、ライトトグル制御部53、メモリI/F52へ分配する。また、DPRリード制御部71は、ライトトグル制御部53のライトカウント終了通知、busy信号、または、次バンド転送許可信号NEXTが通知されると、ディスクリプタのNDPに記載されているアドレスをリードアクセスする。さらに、DPRリード制御部71は、バッファ55a、55bの空き状況を元にディスクリプタのDPRリードコマンドの先投げ個数を制御する。
メモリI/F52及びライトトグル制御部53は、第1実施例と同様である。
リードトグル制御部72は、第1実施例と同様に、リードカウンタ54aを備えており、リードカウンタ54aは、上述のように、初期値をディレクトリのSIZEに設定されているデータサイズとして、バッファ55a、55bから読み込んだ圧縮データのデータ量だけダウンカウントする。リードトグル制御部54は、リードカウンタ54aがカウント中は、伸長器43に出力しているデータ有効信号dma_aliveをアサートし、カウンタ値が「0」になると、データ有効信号dma_aliveをネゲートするとともに、EOBパルスを後段の伸長器43に通知する。また、リードトグル制御部54は、次バンド転送許可信号NEXTがアサートされると、データ有効信号dma_aliveをネゲートし、リードカウンタ54aのリードカウントが「0」になる。この際、EOBパルスは後段へ出力しない。
次に、本実施例の作用を説明する。本実施例の複合装置1は、伸長器43からのbusy信号に基づいて次バンドのリード制御を行う。
すなわち、DPRリード制御部71は、図15及び図16に示すように、ディスクリプタリード処理を実行する。なお、図15及び図16において、第1実施例の図4に示したディスクリプタリード処理と同様の処理ステップには、同一のステップナンバを付与して、その説明を簡略化する。DPRリード制御部71は、RDMAC70が起動されると、図15に示すように、レジスタ56にCPU24によって設定された先頭のディスクリプタのアドレスである初期値のディスクリプタポインタ(DPRポインタ)をレジスタ56からロードし(ステップS101)、メモリ26の該初期値のディスクリプタポインタ(DPRポインタ)に設定されているバンドのアドレスを読み取って内部レジスタに設定する(ステップS102)。次に、DPRリード制御部71は、初期値のディスクリプタポインタ(DPRポインタ)に記載されているアドレスをディスクリプタアドレスバス(DPRアドレスバス)に設定し、メモリI/F52にディスクリプタリードトリガ(DPRリードトリガ)を発行する(ステップS104)。メモリI/F52は、ステップS103で設定されたディスクリプタアドレスのリードコマンドをメモリ52に発行し、DPRリード制御部71は、発行したリードコマンドに対応するディスクリプタリードデータ(DPRリードデータ)の応答を待つ(ステップS105)。DPRリード制御部71は、ディスクリプタリードデータを受け取ると、ディスクリプタ情報をRDMAC70の必要な内部制御部に分配し(ステップS106)、ディスクリプタ情報(SA1/SIZE1/NDP1/MODE1)をDPRリード制御部71内部で保持(ラッチ)する(ステップS107)。
DPRリード制御部71は、ディスクリプタ情報をラッチすると、図16に示すように、ライトカウント終了通知と次バンド転送許可信号NEXTの通知のいずれかを受け取るのを待ち(ステップS301)、次バンド転送許可信号NEXTの通知があると、ディスクリプタ情報のNDPを確認する(ステップS109)。
ステップS301で、ライトカウント終了通知があると、DPRリード制御部71は、busy信号が「0」になるのを待ち(ステップS302)、busy信号が「0」になると、伸長器43の内部バッファが空になったと判断して、次のバンドの圧縮データをリードするために、ディスクリプタ情報のNDPを確認する(ステップS109)。
ステップS109で、ディスクリプタ情報のNDPが「0」以外であると、DPRリード制御部51は、全ての圧縮ディスクリプタの終端ではないと判断して、NDPが示しているアドレスを内部レジスタに設定し(ステップS110)、図15のステップS104に戻って、ディスクリプタリードトリガ(DPRリードトリガ)のメモリI/F52への発行から上記同様に処理する(ステップS104〜S107、S301、S302、S109)。
そして、ステップS109で、ディスクリプタ情報のNDPが「0」であると、DPRリード制御部51は、全圧縮データの終了であると判断して、処理を終了する。
すなわち、図11に示したように、メモリ26に圧縮データとディスクリプタ(DPR)が記録されていて、ディスクリプタで指定されているデータサイズと、可変長圧縮データのデータサイズが同じで、終端符号EOI以降に冗長データが存在しない場合、図17に示すように、圧縮データの終端符号EOI以降のダミーデータ(冗長データ)をリードしないだけであると、ファーストコピーの時間を短縮することはできるが、圧縮データのバンド1の最終データが終端符号EOIであって、バッファ遅延によって終端符号EOIの検知が遅れると、バンド2のリード途中で次バンド(バンド3)へ飛んでしまうおそれがある。
ところが、上述のように、DPRリード制御部71が、ステップS301で、図18に示すように、ライトカウント終了通知がライトトグル制御部53から入っても、ステップS302で、伸長器43からのbusy信号が「0」になるのを待つことで、伸長器43の内部バッファが空になるまで、次バンドのディスクリプタをリードすることを防止する。したがって、分割圧縮データの各バンドの最終データが終端符号EOIであって、図18に示すように、終端符号EOIの検出タイミングに誤差が発生しても、圧縮データのメモリ26からの読み取り速度を向上させることができるとともに、リード途中で次のバンドに飛んでしまうことを防止することができ、ファーストコピー時間を短縮しつつ、適切な圧縮データの読み取りを行うことができる。
このように、本実施例の複合装置1は、DPRリード制御部61が、ライトトグル制御部53のライトカウンタ53aからライトカウント終了通知が入力されると、伸長器43から次データ転送許可信号が入力されるのを待って、次のディスクリプタと圧縮データの読み出しを行っている。
したがって、伸長器43の動作確認を行ってから次のバンドのディスクリプタのリードを行うことができ、圧縮データが最終バンドの最終データが終端符号EOIである場合にも、異常画像が発生することを適切に防止することができる。
また、本実施例の複合装置1は、伸長器43が、次データ転送許可信号として、リードトグル制御部54から送られてきた圧縮データを一時保管する内部バッファが空になったことを示すbusy(バッファエンプティ)信号、または/及び、圧縮データの伸長処理が終了したことを示す動作終了信号を出力している。
したがって、伸長器43が次の圧縮データの処理を行うことができるか否かを適切に判断して、次のバンドのディスクリプタをリードすることができ、圧縮データが最終バンドの最終データが終端符号EOIである場合にも、異常画像が発生することを適切に防止することができる。
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記実施例で説明したものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。