複写装置、プリンタ装置、ファクシミリ装置、複合装置等の画像形成装置においては、入力された画像を可変長圧縮して、メモリに出力用として保存し、該メモリ上の符号を伸長して、印刷出力したり、ハードディスク等に保管することが行われている。そして、画像形成装置は、近年、複合化及びデジタル化に伴って、RAM(Random Access Memory)等の半導体メモリを利用した画像制御が種々行われるようになってきている。例えば、複数枚の画像を読み込んでメモリに蓄積した後、指示された順番に並べ換えて出力するいわゆる電子ソート処理等が行われるようになってきている。
このような画像制御処理を画像形成装置で行う場合、大容量のメモリを搭載すると、種々の画像制御処理を高速に処理することはできるが、コストが高くなるという問題がある。
各種画像制御処理を安価にかつ高速に行うには、例えば、ハードディスク等の安価で大容量の2次蓄積メモリを設ける方法、データを圧縮してメモリ容量を有効利用する方法及び画像を複数に分割してメモリ領域も画像1面分ではなく分割したサイズの数倍程度のみを確保しメモリをリングバッファで使用したりトグルバッファで使用する方法等が従来から用いられている。
そして、画像を圧縮する圧縮方式についても様々な方式が提案されているが、大きく分けて固定長圧縮方式と可変長圧縮方式があり、一般的に、可変長圧縮方式の方が圧縮率が高いため、省メモリには有効であるが、生成される符号量が生成されるまで不明であるため、画像制御がやや複雑になる。
また、メモリにあるデータを高速に転送する技術としては、DMA(Direct Memory Access)コントローラ(以下、単に、DMAという。)があり、DMAでは、一般的に、メモリアドレスと転送量を指定することで、データ転送を行う。
そして、上記画像を分割する方式を用いる場合やメモリ上に点在するデータに対して転送を行う場合には、ディスクリプタ方式を用いる。ディスクリプタ方式では、DMAはディスクリプタと呼ばれるメモリ上の識別子を読み込み、ディスクリプタに示されているスタートアドレスや転送量に基づいてデータ転送を行い、また、点在したデータを連続してアクセスできるように、ディスクリプタの中に次のディスクリプタが存在するポインタを格納して、一連の動作が終ると、次のディスクリプタへのポインタへアクセスを行い、そのポインタのディスクリプタからディスクリプタ情報を取得して、再び転送を行うという動作を繰り返す。
ところが、ディスクリプタ方式で、可変長符号のDMA転送を行おうとすると、処理が複雑になる。すなわち、可変長符号をメモリへライトするライトDMAのディスクリプタの中のデータ量に厳密にデータ量を設定することができないため、データ量を最大のデータ量等で設定することとなる。そして、符号が完成する前、すなわち、所望のサイズ分の画像を読み出す前に、ライトDMAのディスクリプタに設定されたデータ量を転送してしまった場合、ライトDMAは、新しいディスクリプタを読み、そのデータ量情報に基づいたメモリ領域に、前の符号の続きをライトする。その後、所望のサイズ分の画像を読み出し、それに対応した符号が完成すると、ライトDMAのディスクリプタに設定したデータ量を転送していなくても、転送を中断するのがのぞましいため、ハードウェアにそのような仕組みが必要である。また、ソフトウェアは、符号量を読み出す必要があるため、符号量を監視保持するハードウェアが必要になってくる。
上記説明は、画像から1つの完結した符号を生成するときの動作であり、連続して複数の完結した符号を生成する場合の具体的な処理方法は従来なかった。
そして、データを圧縮する場合、データ圧縮の速度が、複写装置等の画像形成装置の生産性に影響し、また、データの転送が完了してから次の転送を開始するまでの間に、ソフトウェアが、各種設定を行ったり、メモリ確保を行うが、このソフトウェアによる処理時間も生産性に影響する。
上記画像を複数に分割してメモリ領域も画像1面分ではなく分割したサイズの数倍程度のみを確保しメモリをリングバッファで使用したりトグルバッファで使用する方法と可変長圧縮を組み合わせた場合、分割したサイズ毎の処理を終了するたびに生成された符号の符号量を読み出し、次の圧縮動作の設定を行っていると、圧縮器の性能が高くても、結局は生産性を向上させることができない。
そして、従来の画像形成装置においては、図17に示す動作タイミングで画像入力処理及び画像圧縮処理動作を行う。すなわち、従来、複写装置等の画像形成装置では、一般的に、スキャナ部からの画像入力が終了すると、リードDMAによって画像を画像処理部に取り込んで画像処理を行い、C画像、M画像、Y画像、K画像の画像が同時に画像処理されて生成される。画像が生成されると、画像圧縮処理部で、1色ずつ圧縮処理を行い、圧縮が完了すると、出力を順次行う。画像形成装置は、画像処理や圧縮処理を行っている最中に次のページの画像が入力されてくるので、同様に、画像処理及び圧縮処理を順次行う。なお、図17では、2つの画像圧縮処理部を利用して、パフォーマンスを落とすことなく、処理を行っている状態が示されている。
図17から分かるように、各画像のハードウェアによる圧縮処理の間には、ソフトウェア(ソフト)による処理時間が存在する。例えば、画像処理が完了してから圧縮処理を開始するまでのソフト処理時間A、圧縮処理と圧縮処理の間のソフト処理時間B等である。このソフト処理時間が多くまた長く発生すると、画像形成装置におけるファーストコピータイムが長くなる。
そして、画像圧縮処理部は、リードDMA、ライトDMA及び圧縮器等で構成されていて、各場所にレイテンシが存在する。したがって、画像圧縮処理部においては、図18に示すように、C画像をリードしてから圧縮処理が開始されるまでの間に、taで示すレイテンシが存在し、該C画像の圧縮処理が開始されてから圧縮データであるC符号がでてくるまでに、tbで示すレイテンシがある。また、C符号のライトが完了してから、次のM画像のリードの開始までの間に、ソフトの処理時間tcがあり、画像圧縮処理部としては、ta、tb、tcの総和からtdの遊び時間が生じている。
そして、従来、1枚の画像を複数のブロックに分割した各ブロック毎に異なる形式に画像データを変換しても、1枚の画像の画像データを1度のコマンドでDMA転送する技術が提案されている(特許文献1参照)。
また、従来、1次記憶部と該1次記憶部の画像データを保持する2次記憶部を有し、データ変換形式にかかわらず、固定容量の記憶領域を用いて、1次記憶部に記憶された画像データの形式を変換し、変換後の画像データを2次記憶部に転送する技術が提案されている(特許文献2参照)。
特開2002−108801号公報
特開2003−18336号公報
図1〜図16は、本発明の画像形成装置の一実施例を示す図であり、図1は、本発明の画像形成装置の一実施例を適用した複写装置1のブロック構成図である。
図1において、複写装置(画像形成装置)1は、大きく分けて、スキャナ部2、画像処理本体部3、メモリ4及びプリンタ部5を備え、画像処理本体部3は、画像入力制御部11、ライトDMA(Direct Memory Access)12、リードDMA13、ライトDMA14、画像処理部15、圧縮伸長処理部16、メモリコントローラ17、複数(図1では、4つ)のリードDMA18a〜18d、該リードDMA18a〜18dに対応する数(図1では、4つ)の画像出力制御部19a〜19d等を備えていて、主要各部は、バス20により接続されている。
圧縮伸長処理部16は、圧縮伸長器(圧縮手段)21、圧縮器制御部(圧縮制御手段)22、リードDMA23及びライトDMA24を備え、圧縮器制御部22は、バッファ(画像保管手段)25と符号量カウント部26を備えている。
スキャナ部2は、原稿を主走査及び副走査して該原稿の画像を読み取って画像処理本体部3の画像入力制御部11にデジタルの画像データとして渡し、画像入力制御部11は、スキャナ部2からの画像データをライトDMA12へ渡す。
画像処理部15は、メモリ4に格納された画像をリードDMA13で読み出して、出力用の画像処理を行って、ライトDMA14によって、メモリ4に転送して格納する。
圧縮伸長処理部16は、そのリードDMA23が、出力用に処理された圧縮用の画像データをメモリ4から読み出し、圧縮器制御部22は、リードDMA23の読み取った画像を圧縮伸長器21に渡す。圧縮伸長器21は、圧縮器制御部22から受け取った画像を順次可変長圧縮して圧縮器制御部22に渡す。圧縮器制御部22は、圧縮伸長器21の圧縮した符号をライトDMA24に渡し、ライトDMA24は圧縮器制御部22から受け取った符号をメモリ4に転送する。すなわち、圧縮器制御部22は、リードDMA23及びライトDMA24と圧縮伸長器21との間に設けられて、バッファ25と符号量カウント部26を備えおり、バッファ25を使用してリードDMA23から受け取った画像をタイミング調整して圧縮伸長器21に渡し、また、圧縮伸長器21の生成した符号の符号量を符号量カウント部26でカウントする。また、圧縮伸長処理部16は、メモリ4上の符号をリードDMA23で読み出して、圧縮伸長器21で伸長し、該伸長した画像データをライトDMA24でメモリ4に転送して格納する。
リードDMA18a〜18dは、圧縮伸長部16で伸長された画像をメモリ4から読み出して画像出力制御部19a〜19dに渡し、画像出力制御部19a〜19dは、リードDMA18a〜18dから受け取った画像をプリンタ部5に転送する。プリンタ部5は、所定の画像形成方式、例えば、電子写真方式、インク噴射方式等により画像を用紙に記録出力する。
メモリコントローラ17は、メモリ4へのクセスを制御して、メモリ4へのアクセスの調停を行う。
次に、本実施例の作用を説明する。本実施例の複写装置1は、スキャナ部2で読み取られ画像処理部15で出力用の画像処理が行われてメモリ4に格納された画像を圧縮伸長処理部16のリードDMA23で読み取って、圧縮伸長処理部16の圧縮伸長器21で圧縮してライトDMA24でメモリ4に格納する際に、圧縮伸長処理部16がその圧縮伸長器21で圧縮する画像を圧縮器制御部25のバッファ25に事前読み込みすることで、ソフトウェア処理を省いて、圧縮伸長器21で圧縮処理を連続して行って、処理速度を向上している。また、圧縮伸長処理部16は、その圧縮伸長器21が可変長圧縮を行うため、圧縮器制御部25の符号量カウント部26で符号量をカウントして、符号量を管理する。
すなわち、複写装置1は、スキャナ部2が、原稿の画像データを読み取ると、画像入力制御部11にデジタルの画像データとして渡し、ライトDMA12及びメモリコントローラ17を介してメモリ4に書き込む。スキャナ部2からの画像入力が終了すると、複写装置1は、リードDMA13によって画像を画像処理部15に取り込んで画像処理を行い、画像処理部15で、C画像、M画像、Y画像、K画像の画像を同時に画像処理して生成する。画像が生成されると、画像圧縮処理部15で、1色ずつ圧縮処理を行い、圧縮が完了すると、出力を順次行う。複写装置1は、画像処理や圧縮処理を行っている最中に次のページの画像が入力されてくるので、同様に、画像処理及び圧縮処理を順次行う。
そして、圧縮伸長処理部16は、画像処理部15での画像処理が完了してメモリ4に格納された画像を、リードDMA23及び圧縮器制御部22を介して圧縮伸長器21に送り、圧縮伸長器21で所定の可変長圧縮方法で該画像を圧縮して符号を生成し、該符号を圧縮制御部22及びライトDMA24を介してメモリ4に書き込む。
このときのメモリ4上のディスクリプタとリードDMA23及び画像データとの関係は、図2のように示され、ディスクリプタは、転送スタートアドレス(Start Address)とネクストディスクリプタポインタ(Next Pointer)と転送サイズ(Size)及びその他の情報(Etc)から構成されている。まず、リードDMA23は、始めに、「A1」で示すように、ディスクリプタポインタ設定(Descripter Pointer)に示されるメモリ4上のディスクリプタの存在するアドレスへアクセスし、「A2」に示すように、該ディスクリプタからディスクリプタ情報を取得する。次に、リードDMA23は、「A3」で示すように、取得したディスクリプタに記載されているスタートアドレスへアクセスして該スタートアドレスからデータ転送(画像転送)を行う。リードDMA23は、一連のデータ転送が終了し、ネクストディスクリプタポインタが設定されていれば、「A4」や「A5」に示すように、新たなディスクリプタを取得して、[A6」に示すように、新たなデータ転送を行うという処理を繰り返し行う。
そして、上記動作をタイミングチャートとして示すと、図3のように示され、ソフトウェアが、ディスクリプタポインタへの設定やディスクリプタのメモリ4上へ用意を行い、また、DMA転送に必要なレジスタ設定を行うと、図3に矢印で示すように、DMAに起動をかけて、ハードウェアによる処理が開始される。ハードウェア、すなわち、リードDMA23は、まず、メモリ4のディスクリプタ情報を読み、その後、メモリ4から圧縮器制御部25へのデータ転送を行い、以降ディスクリプタの読み込みとデータ転送を繰り返す。一連の転送動作が終了すると、リードDMA23からソフトウェアに終了通知を行い、ソフトウェアが終了処理を行う。この時点で、次の転送を行う必要がある場合は、再び上記設定を行うことになる。
ところが、従来技術で説明したように、ハードウェア処理の間にソフトウェア処理が入ることで、複写装置1におけるファーストコピータイムが長くなる。
すなわち、例えば、図4に示すように、1つの画像が2つのブロック(例えば、K−imag−1、K−img−2)で構成されていて、この2つのブロックで構成されている1つ画像を圧縮した結果、3つの小さなメモリ領域に分割して配置される1つの符号(例えば、K−code−1、K−code−2、K−code−3)になる場合、圧縮伸長処理部16のリード側の画像処理は、従来の処理方法では、図5に示すように、ハードウェア処理Haとハードウェア処理Hbとの間にソフトウェア処理が入る。なお、このような現象は、画像側と符号側で1つのバンドで確保するサイズが異なる場合に発生することがある。
すなわち、図5において、圧縮伸長処理部16は、始めに、ソフトウェアによるディスクリプタ設定(ステップS101a)、レジスタ設定(ステップS102a)を行うと、ハードウェアによる処理に移行して、リードDMA23が、ディスクリプタを読み込んで(ステップS103a)、画像のバンド転送を行って、圧縮伸長器21で圧縮処理を行い(ステップS104a)、1バンドの転送が終了すると、ディスクリプタのポイントが無くなったか(NDPが「0」であるか)をチェックする(ステップS105a)。
ステップS105aで、NDPが「0」でないときには、ステップS103aに戻って、再びディスクリプタの読み込みと画像データのバンド転送及び画像圧縮を同様に行って、NDPが「0」であるかチェックする(ステップS103a〜S105a)。
ステップS105aで、NDPが「0」になると、いま、画像は、2つのバンドで構成されているものとしているので、ソフトウェア側に割込み等を用いて終了を通知する終了割り込み処理を行い(ステップS106)、ソフトウェアは、終了割り込みがあると、次のジョブがあるかチェックする(ステップS107)。ステップS107で、次のジョブがあると、ソフトウェアは、上記同様に、ディスクリプタの設定(ステップS101b)及びレジスタの設定(ステップS102b)を行って、処理をハードウェアに渡す。
ハードウェアが上記同様に画像データ転送処理及び画像圧縮処理をブロック分行い(ステップS103b〜S105b)、画像データの転送及び画像圧縮処理が終了すると、いま、画像は、2つのバンドで構成されているので、最初の画像についての処理を完了することになる。
このように、図5から分かるように、添え字aの付与された1回目のハードウェア処理Haと添え字bの付与された2回目のハードウェア処理Hbとの間に、ソフトウェア処理が介在し、このソフトウェア処理時間だけ、圧縮伸長処理部16における処理時間が長くかかることになる。
そこで、本実施例の複写装置1は、ディスクリプタのフォーマットを、図6に示すように、ディスクリプタのその他の様々な情報(Etc)を格納するエリアに、画像の終了を示す画像終了情報である画像終了信号(FEND)を設け、例えば、画像終了信号(FEND)が「1」のとき、画像の終了を示し、画像終了信号(FEND)が「0」のとき、画像終了ではないことを示すものとの約束事を予め決めておくことで、圧縮器制御部22がリードDMA23から画像を事前読み込みを行ってバッファ25に蓄え、圧縮伸長器21の処理に合わせてバッファ25内の画像を圧縮伸長器21に転送するパイプライン動作を行って、ハードウェアである圧縮伸長器21の処理を連続して行い、処理速度を向上させている。
すなわち、データ転送においては、ディスクリプタのネクストディスクリプタポインタ(Next Pointer)に設定値があれば、次の転送があることを示し、設定値がなければ、そのディスクリプタの転送分だけ転送を行った後転送を終了する。そこで、このディスクリプタのその他の様々な情報(Etc)を格納するエリアに、画像の終了を示す画像終了信号(FEND)を設け、例えば、画像終了信号(FEND)が「1」のとき、画像を終了を示し、画像終了信号(FEND)が「0」のとき、画像終了ではないことを示すものとの約束事を予め決めておくことで、圧縮器制御部22がリードDMA23を介して画像データをバッファ25に事前読み込みして、圧縮伸長器21に渡し、圧縮伸長器21での画像圧縮処理を、ソフトウェア処理を挟むことなく、連続して行う。
すなわち、圧縮伸長処理部16の信号関係は、図7に示すようになっており、圧縮器制御部22が、リードDMA23及びライトDMA26と圧縮伸長器21との中間に位置して、符号を完結させる処理を行ったり、ライトDMA24へ前の符号のライト処理を行いながら、リードDMA23から画像のリードを行う等の制御を行う。
図7において、圧縮器制御部22は、リードDMA23との画像の終了情報は、リードDMA23からのrfend_u信号でやりとりを行い、符合を完結させるか否かは、圧縮伸長器21への画像に最後であることを示すフラグreod_cdを付加して通知することにより行う。すなわち、圧縮器制御部22は、リードDMA23からの信号rfend_uがアサートされたときか、転送動作を表す信号rkick_uがリセットされた場合に、画像の最後を示すフラグreod_cdを圧縮伸長器21に出力する。
また、圧縮伸長処理部16は、圧縮伸長器21で、可変長符号を行うので、符号の最後は、圧縮伸長器21だけが分かっており、圧縮伸長器21は、符号の最後にフラグを付けて送信することによって符号の最後を通知する。すなわち、圧縮伸長器21は、符号データwdat_cdの最後に、最終フラグweoc_cdを付けて圧縮器制御部22に送信する。圧縮器制御部22は、内部の符号量カウント部26で、最終フラグweoc_cdとデータ(符号)を受け取ったことを示す信号wack_cdを用いて符号量カウント部26で符号量を計測し、計測した符号量を、ライトDMA24に信号wsize_uで渡す。ライトDMA24は、この符号量情報をメモリ4のディスクリプタ領域へライトする(書き込む)。
いま、図8に示すように、1つの画像が2つのブロックで構成されていて、各画像を2枚連続(図8中のY−imageとM−image)で処理を行う場合を例として、上記パイプライン動作処理を伴う画像圧縮処理について説明する。なお、各画像から生成される符号は、画像側のバンドとは無関係であり、いま、図8に示すように、最初のY−imageからは、3つのバンドから構成される符号が生成され、次のM−imageからは、1つのバンドから構成される符号が生成されるものとする。
上記条件において、圧縮伸長処理部16は、上記その圧縮器制御部22がリードDMA23から画像の事前読み込みを行ってバッファ25に蓄え、圧縮伸長器21の処理に合わせてバッファ25内の画像を圧縮伸長器21に転送するパイプライン動作処理を伴う画像圧縮処理を、図9に示すように行う。
すなわち、図9において、圧縮伸長処理部16は、いま、Y画像とM画像の2枚を連続して行うので、まず、最初に、ソフトウェアによるディスクリプタ設定を該2枚の画像に対してそれぞれ行い(ステップS301)、(ステップS302)、次に、必要なレジスタ設定を行う(ステップS303)。
圧縮伸長処理部16は、ソフトウェアによるレジスタ設定を行うと、Y画像に対するハードウェアによる処理Hyに移行して、リードDMA23がディスクリプタを読み込んで(ステップS304)、画像のバンド転送と該画像の圧縮器制御部22のバッファ25を利用した圧縮伸長器21への転送及び圧縮伸長器21での該画像の圧縮処理を開始し(ステップS305)、1バンドの転送が終了すると、Y画像の転送が終了したか(FENDが「1」であるか)チェックする(ステップS306)。ステップS306で、Y画像の転送が終了していない(FEND=0)ときには、圧縮伸長処理部16は、ステップS304に戻って、そのリードDMA23による再びディスクリプタの読み込みと画像のバンド転送及び画像圧縮を同様に行って、画像転送の終了かチェックする(ステップS304〜S306)。
いま、Y画像は、2つのバンドで構成されているので、圧縮伸長処理部16は、2回このハードウェア処理Hyを繰り返し行い、ステップS306で、画像転送の終了であると判断すると、符号終了か(NDPが「0」であるか)チェックする(ステップS307)。
ステップS307で、NDP=0であると、処理を終了するが、まだ、Y画像を処理し終わったところであり、M画像の処理が残っているので、NDPは「0」ではなく、圧縮伸長処理部16は、次のM画像の処理に移行するが、既に、ディスクリプタの設定を行っているので、ソフトウェア処理を行うことなく、M画像に対するハードウェア処理Hmに移行する。圧縮伸長処理部16は、ハードウェア処理で、上記Y画像の場合と同様に、ディスクリプタを読み込んで(ステップS308)、データのバンド転送及び画像圧縮処理を行い(ステップS309)、1バンドの画像転送が終了すると、M画像の転送が終了したか(FENDが「1」であるか)チェックする(ステップS310)。ステップS310で、M画像の転送が終了していない(FEND=0)ときには、圧縮伸長処理部16は、ステップS308に戻って、再びディスクリプタの読み込みと画像データのバンド転送及び画像圧縮を同様に行って、画像転送の終了かチェックする(ステップS308〜S310)。
いま、M画像は、2つのバンドで構成されているので、圧縮伸長処理部16は、2回このハードウェア処理Hmを繰り返し行い、ステップS310で、画像転送の終了であると判断すると、符号終了か(NDPが「0」であるか)チェックする(ステップS311)。
ステップS311で、NDP=0であると、圧縮伸長処理部16は、処理を終了するが、まだ、M画像を処理し終わったところであり、K画像以下の処理が残っているので、ステップS311でNDPは「0」ではなく、次のK画像の処理に移行して、上記同様に処理する。
そして、圧縮器制御部22は、上記画像転送処理において、図10に示すように、バッファ25を利用して、画像の事前読み込みを行う。すなわち、圧縮器制御部22は、前のバンドの画像の圧縮伸長器21への転送処理が終了すると(ステップS401)、該バンドが最終バンドであるかチェックし(ステップS402)、最終バンドのときには、処理を終了する。
ステップS402で、最終バンドでないときには、圧縮器制御部22は、前のバンドの処理の符号を終了させて新しい画像を読み込むのか、符号は終結させずに続きの画像を読み込むのか、すなわち、画像終了(FEND=1)であるかをチェックし(ステップS403)、符号を終結させて新しい画像を読み込む場合には、前のバンドの符号が全て出力されるのを待って(ステップS404)、圧縮伸長器21の初期化を行う(ステップS405)。
圧縮伸長器21の初期化が完了すると、圧縮器制御部22は、バッファ25に空きがあるか確認して(ステップS406)、空きがないときには、空きができるまで待ち、バッファ25に空きがあると、リードDMA23から画像を受け取ってバッファ25に格納する処理をバッファ25に空きがなくなるまで行う(ステップS407、S408)。
圧縮器制御部22は、ステップS408で、バッファ25の空きがなくなると、空きができるのを待って、上記同様に処理する。
また、圧縮器制御部22は、ステップS403で、符号は終結させずに続きの画像を読み込む場合には、前のバンドの符号が出力されることの確認や圧縮伸長器21の初期化は必要ないので、すぐに次のバンド転送に移り、まず、バッファ25に空きがあるか確認して(ステップS409)、空きがないときには、空きができるまで待ち、バッファ25に空きがあると、リードDMA23から画像を受け取ってバッファ25に格納する処理をバッファ25に空きがなくなるまで行う(ステップS410、S411)。
圧縮器制御部22は、ステップS411で、バッファ25の空きがなくなると、空きができるのを待って、上記同様に処理する。
このように、符号の終了を示す画像終了信号(FEND)をディスクリプタに設定することで、リードDMA23から画像データの事前読み込みを行って、バッファ25に保管し、圧縮伸長器21の処理に合わせて該画像データを圧縮伸長器21に渡しているので、図11に示すように、Y画像(Y−img−2)に続いて、Y画像とM画像の圧縮処理を、ソフトウェア処理を間に挟むことなく、連続してM画像の事前読み込みを行って、ソフトウェアの動作処理の分だけ処理時間を短縮することができる。
そして、本実施例の圧縮伸長器21は、可変長符号を行うが、可変長符号の場合、生成される符号量が画像によって異なるため、伸長時に符号量情報が必要であり、画像(符号)と一緒に保存しておく必要がある。また、可変長符号においては、連続して画像を圧縮した場合、符号量をどこかに保存しておく必要がある。
そこで、本実施例の圧縮伸長処理部16においては、圧縮器制御部22の符号量カウント部26でカウントして、ディスクリプタ情報に符号量を書き込んでいる。このようにすると、ハードウェアのレジスタ等に符号量を保存させる場合等のように、符号量の数に関わらず、符号量を適切に保存することができる。
すなわち、圧縮器制御部22の符号量カウント部26は、図12に示すように、圧縮伸長器21からデータ入力があると(ステップS501)、符号の終端子か否かチェックし(ステップS502)、符号の終端子でないときには、符号量をカウントアップして(ステップS503)、ステップS501に戻って、再びデータ入力待ちを行う。
ステップS502で、符号の終端子であると、符号量カウント部26は、符号量をカウントアップし(ステップS504)、ライトDMA24へデータ(符号量データ)を渡す処理へ移行して、ライトDMA24が符号量データを引き取ったかチェックする(ステップS505)。
符号量カウント部26は、ステップS505で、ライトDMA24が符号量データを引き取ると、符号量カウントをクリアして、処理を終了する(ステップS506)。
そして、ライトDMA24は、上述のように、圧縮伸長器21の圧縮した符号を圧縮器制御部25を介して受け取ると、メモリ4のディスクリプタに基づいて符号をメモリコントローラ17を介してメモリ4に格納して、必要なディスクリプタ情報、特に、上記符号量をディスクリプタに書き込む。
ところが、複写装置1は、その圧縮伸長器21で可変長圧縮方法によって画像を圧縮するため、生成される符号量は、符号が生成されるまで分からず、図13に示すように、圧縮伸長器21で圧縮された符号の符号量が、当初ライトDMA24のディスクリプタで設定されていた転送量(符号量)になる前に、符号の終了を示す終端子がくる場合がある。この符号の終端子がくると、ディスクリプタに設定されているデータ量分の符号の転送が未完了であっても、次のディスクリプタ設定の転送を開始する。
すなわち、図14に示すように、ソフトウェアによって、ディスクリプタの設定(ステップS601)とレジスタの設定(S602)が行われると、ハードウェア処理に移行して、ライトDMA24が、ディスクリプタの読み込みを行い(ステップS603)、圧縮器制御部22から受け取った符号のバンド転送を行って(ステップS604)、次のディスクリプタが無くなって終了であるか(NDP=0)、または、符号終端子を受け取ったかチェックする(ステップS605)。
ステップS605で、終了でも符号終端でもないときには、ライトDMA24は、ステップS603に戻って同様に処理する(ステップS603〜S605)。
ステップS605で、終了または符号終端であると、終了割り込みをソフトウェアに発行して(ステップS606)、ソフトウェア処理によって次のジョブがあるかチェックし(ステップS607)、次のジョブがあるときには、ステップS601に戻って、同様に処理する(ステップS601〜S607)。ステップS607で、次の処理がないときには処理を終了する。
したがって、ライトDMA24は、ステップS605で、ディスクリプタに予め設定されている転送量(符号量)まで符号の転送を終了する前に、符号終了を示す符号終端子を受け取ると、次のディスクリプタ設定の転送を開始する。
このように、本実施例の複写装置1は、ディスクリプタに基づいてメモリ4上の画像を読み取るリードDMA23及び符号のメモリ4への書き込みを行うライトDMA24と該読み取られた画像を可変長圧縮処理して符号を生成する圧縮伸長器21との間に、リードDMA23から所定量の画像を事前読み込みして圧縮伸長器21の処理に応じて該事前読み込みした画像を圧縮伸長器21に渡す圧縮器制御部22を設けている。
したがって、圧縮伸長器21に連続して画像を転送して、画像間のソフトウェア処理を省いて、圧縮伸長器21で画像を連続して可変長圧縮方式で効率的に符号化することができ、処理速度を向上させて生産性を向上させることができる。
すなわち、圧縮伸長処理部16は、圧縮器制御部22がリードDMA23を介して画像の事前読み込みを行って、圧縮器制御部22のバッファ25に格納し、圧縮伸長器21とのタイミング調整を行って、圧縮伸長器21にバッファ25内の画像データを圧縮伸長器21に渡し、圧縮伸長処理部16で、C画像、M画像、Y画像、K画像の異なる画像を連続して符号に圧縮処理しているので、図15に示すように、ソフト処理時間Bを無くし、ファーストコピータイムを短縮している。すなわち、図16に示すように、C符号のライトを行っている最中に、M画像のリードを開始することにより、すなわち、C符号のライト中にM画像の事前読み込みを行うことにより、圧縮伸長器21の遊び時間を無くすことができ、圧縮伸長処理部16としては、最初の起動時には、図18に示したta、tbのレイテンシは発生するが、tcのソフト処理時間がなくなり、全体として圧縮伸長処理部16での処理時間を短縮させることができる。
また、本実施例の複写装置1は、圧縮器制御部22が、バッファ25を備え、事前読み込みした所定量の画像をバッファ25に格納した後、圧縮伸長器21に渡している。
したがって、バッファ25を利用してリードDMA13から必要な画像を適切に圧縮伸長器21に渡すことができ、圧縮伸長器21で画像をより適切に連続して符号化することができる。
さらに、本実施例の複写装置1は、リードDMA23のディスクリプタに、画像の終了を示す情報(FEND)を追加して設定し、該画像終了情報に基づいて画像の事前読み込みを行っている。
したがって、ディスクリプタに基づいて適切なタイミングに画像の事前読み込みを行って、転送と画像を個別に管理することができ、自由なタイミングで符号を完結させることができる。
また、本実施例の複写装置1は、リードDMA23のディスクリプタに、画像の1度の転送動作の間に画像終了情報を複数回設定している。したがって、1度の画像転送で、複数個の符号を生成することができる。
さらに、本実施例の複写装置1は、圧縮器制御部22が、圧縮伸長器21の圧縮した符号の符号量をカウントする符号量カウント部26を備えている。したがって、圧縮伸長器21で可変長圧縮された符号の符号量を適切にカウントして、管理することができる。
また、本実施例の複写装置1は、符号量カウント部26が、圧縮伸長器21からの符号の終端毎に符号量をカウントして、該カウントした符号量情報をライトDMA24に転送している。
したがって、符号量をメモリ4へ転送して保存することができ、ハードウェアによる符号量保持機能の実装の必要を無くして、コストを削減することができる。
さらに、本実施例の複写装置1は、ライトDMA24は、符号量情報を受け取ると、該符号量情報をディスクリプタ情報に書き込んでいる。したがって、符号量の管理を容易に行うことができる。
また、本実施例の複写装置1は、ライトDMA24が、符号量情報をディスクリプタ情報へ書き込む時点で、ディスクリプタに設定されているデータ量分の符号の転送が未完了であっても、次のディスクリプタ設定の転送を開始している。
したがって、1つのディスクリプタ内に異なる符合が混在することを防止することができ、符号の管理を容易に行うことができる。
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記のものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。