(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-04
(45)【発行日】2022-07-12
(54)【発明の名称】コントローラ、および画像形成装置
(51)【国際特許分類】
G06F 13/362 20060101AFI20220705BHJP
G06F 13/28 20060101ALI20220705BHJP
B41J 5/30 20060101ALI20220705BHJP
H04N 1/41 20060101ALI20220705BHJP
H04N 1/21 20060101ALI20220705BHJP
【FI】
G06F13/362 510C
G06F13/28 310B
G06F13/28 310G
G06F13/28 310J
G06F13/28 310Y
B41J5/30 Z
H04N1/41
H04N1/21
(21)【出願番号】P 2018030707
(22)【出願日】2018-02-23
【審査請求日】2020-10-23
(73)【特許権者】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100090527
【氏名又は名称】舘野 千惠子
(72)【発明者】
【氏名】嵯峨 嘉孝
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2005-327044(JP,A)
【文献】特開2009-043089(JP,A)
【文献】特開2014-206336(JP,A)
【文献】特開2014-160341(JP,A)
【文献】特開2005-119059(JP,A)
【文献】特開2004-229066(JP,A)
【文献】特開2004-345260(JP,A)
【文献】特開2001-218060(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/20-13/378
B41J 5/30
H04N 1/21
H04N 1/41
(57)【特許請求の範囲】
【請求項1】
ライン毎の圧縮率が保障されていない圧縮器と、
前記圧縮器のライン毎の圧縮画像が
所定の圧縮率の最悪値を満たさずに膨張していることを検出する膨張検出手段と、
前記圧縮器で圧縮したデータを伸張する伸張器と、
バス優先順位の切り替え機能を備えたバスアービタと、
前記伸張器の出力データを、バスを介さずに受信可能な画像データ出力器と、を備え、
前記画像データ出力器は、受信したデータをライン毎に記憶するラインバッファを備え、
前記バスアービタは、前記膨張検出手段がライン単位に前記圧縮画像の膨張を検出した場合に、
前記膨張を検出したラインの次のラインについての前記伸張器のバス優先順位を変更して、前記伸長器のリード帯域を増加させることを特徴とするコントローラ。
【請求項2】
請求項1記載のコントローラにおいて、
前記膨張検出手段は、前記伸張器のラインあたりのリードデータ量と、画像形成装置の仕様上の最大のラインデータ量を比較し、前記伸張器ラインあたりのリードデータ量の方が多い場合に膨張していると判断することを特徴とするコントローラ。
【請求項3】
請求項1記載のコントローラにおいて、
前記伸張器は、1つのリードコマンドでリードする画像データの量が一定であり、
前記膨張検出手段は、前記伸張器のラインあたりのリードコマンド発行数と、画像形成装置の仕様上の最大のラインデータ量をリードコマンド数で数えた値を比較し、前記リードコマンド発行数の方が多い場合に膨張していると判断することを特徴とするコントローラ。
【請求項4】
請求項1~3のいずれか1項記載のコントローラにおいて、
前記画像データ出力器のラインバッファは、1ライン分のデータを記憶する複数の記憶装置を有して構成されることを特徴とするコントローラ。
【請求項5】
請求項4記載のコントローラにおいて、
前記画像データ出力器のラインバッファは、3ライン分のデータを記憶することが可能であり、前記画像データ出力器のラインバッファを構成する、前記1ライン分のデータを記憶する記憶装置は、リードとライトを同時に実行することができない構造であることを特徴とするコントローラ。
【請求項6】
請求項4記載のコントローラにおいて、
前記画像データ出力器のラインバッファは、2ライン分のデータを記憶することが可能であり、前記画像データ出力器のラインバッファを構成する、前記1ライン分のデータを記憶する記憶装置は、リードとライトを同時に実行することが可能なFIFO構造であることを特徴とするコントローラ。
【請求項7】
請求項1~6のいずれか1項記載のコントローラにおいて、
前記伸張器と、前記膨張検出手段と、前記画像データ出力器とを、色版毎にそれぞれ1つ備え、色版毎に、前記膨張検出手段がライン単位に前記圧縮画像の膨張を検出した場合に、前記伸張器のバス優先順位を変更して、前記伸長器のリード帯域を増加させることを特徴とするコントローラ。
【請求項8】
請求項1~7のいずれか1項記載のコントローラを備えたことを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置に搭載されるコントローラ、および画像形成装置に関する。
【背景技術】
【0002】
プリンタやMFP(Multifunction Peripheral)等の印刷装置においては、用紙搬送速度に合わせて、印刷データを出力する必要がある。そのため、印刷データを処理するコントローラは、印刷データ出力用に、常に一定以上のバス帯域を確保する仕組みが必要である。また、印刷データは圧縮して記憶されており、一度メモリに伸張してから、印刷データを出力することとなる。しかし、搭載メモリ量を少なくする目的で、圧縮データを伸張し、伸張したデータを、メモリを介さずに出力する場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
特許文献1には、画像形成装置の生産性(ppm)を達成する目的で、ライン等時性が必要なモジュール(最優先モジュール)の転送帯域を制限することで、他のモジュールの転送帯域を確保する方法が開示されている。しかし、今までのように、伸張データを、メモリを介さずに出力する方法では、圧縮率が保障されていない(圧縮処理によって、逆に膨張してしまう場合がある)圧縮方式を採用した場合に、1ページ単位で見た場合には圧縮が成功していても、1ライン単位で見た場合には、圧縮が失敗し、膨張している場合がある。このため、見た目上の圧縮率(1ページ毎の圧縮率)に関わらずに、伸張器のバス帯域を、膨張率を考慮して、余分に確保しておく必要があり、バスアービタの回路規模が大きくなるという問題があった。
本発明は、圧縮率が保障されない圧縮方式を採用した場合にも、余分なバス帯域を確保することなく、バス帯域を最適化することを目的とする。
【課題を解決するための手段】
【0004】
本発明に係るコントローラは、ライン毎の圧縮率が保障されていない圧縮器と、前記圧縮器のライン毎の圧縮結果が膨張していることを検出する膨張検出手段と、前記圧縮器で圧縮したデータを伸張する伸張器と、バス優先順位の切り替え機能を備えたバスアービタと、前記伸張器の出力データを、バスを介さずに受信可能な画像データ出力器と、を備え、前記画像データ出力器は、受信したデータをライン毎に記憶するラインバッファを備え、前記バスアービタは、前記膨張検出手段の出力に従って、前記伸張器のバス優先順位を変更することを特徴とするコントローラである。
【発明の効果】
【0005】
本発明によれば、圧縮率が保障されない圧縮方式を採用した場合にも、余分なバス帯域を確保することなく、バス帯域を最適化することができる。
【図面の簡単な説明】
【0006】
【
図1】圧縮率が保障されない圧縮方式を採用した画像形成装置のコントローラについて説明する図である。
【
図3】バスアービタのスレーブIFの優先順位について説明する図である。
【
図4】伸張器の出力をラインバッファに直接ライトする場合に、ライン単位の膨張がない場合の、ラインバッファのデータ入出力について説明する図である。
【
図5】伸張器の出力をラインバッファに直接ライトする場合に、ライン単位の膨張が継続するにも関わらず、バス優先順位を「中」のままに維持したときの、ラインバッファのデータ入出力について説明する図である。
【
図6】伸張器の出力をラインバッファに直接ライトする場合に、ライン単位の膨張を検出してバス優先順位を「中」→「高」に変化させるときの、ラインバッファのデータ入出力について説明する図である。
【
図7】圧縮率が保障されない圧縮方式を採用した画像形成装置の4色対応のコントローラについて説明する図である。
【発明を実施するための形態】
【0007】
本実施例では、圧縮率の最悪値が保障されない(膨張する場合がある)圧縮方式を採用した場合にも、余分なバス帯域を確保することなく、バス帯域を最適化するに際して、以下の特徴を有する。すなわち、ライン毎のデータ膨張を検出し、データが膨張した場合には、伸張器のバス優先順位を高く設定することで、1ライン目のバッファへの転送が間に合わなかった場合にも、次ラインの転送を高速で実行することで、データ転送を間に合わせる ことが特徴になっている。上記特徴について、以下の図面を用いて詳細に解説する。
【0008】
図1は、圧縮率が保障されない圧縮方式を採用した画像形成装置のコントローラ100について説明する図である。
図1において、コントローラ100は、エンジン4以外の各機器により構成される。
メモリ1は、CPU12のワーク領域、画像データの処理等に使用される。
メモリコントローラ2は、バスアービタ3から発行されるリードコマンド/ライトコマンドに従い、メモリ1とのデータ転送を実行する。
【0009】
バスアービタ3は、スレーブIF(interface)を9個(S1~S9)、マスターIFを1個(M)備えており、各スレーブIFに接続された複数のバスマスターからの転送要求が競合した場合に、各スレーブIFに設定された優先順位に従って、マスターIFに接続されたメモリコントローラ2へアクセスするモジュールを決定している。本実施例では、優先順位は「低」「中」「高」の3段階で設定可能とする。また、伸張器6のメモリリード用IFを接続したスレーブIF(S7)は、膨張検出器7が出力する優先度切替信号に従って、優先順位の切り替えが可能であり、信号レベルがLowの場合は優先順位が「中」、信号レベルがHighの場合は優先順位が「高」となる。
エンジン4は、ビデオ出力モジュール5が出力する画像データを、紙媒体に印刷するための装置である。エンジン4が用紙搬送を実施している間は、ビデオ出力モジュール5のデータ転送が遅れることは許されず、もし、遅れた場合には異常画像が発生してしまう。このため、通常は、最低でも1ページ分のエンジン4用出力画像データをメモリ1に展開しておく。
【0010】
HDD11の遅延、描画器9処理遅延等で、エンジン4用出力用の1ページデータの展開が遅れた場合には、エンジン4は用紙搬送の開始を遅らせるため、ページ間隔が空き、装置の生産性は落ちるが、異常画像になることはない。
CPU12は、画像形成装置の各種制御を実行する。
SATAコントローラ10は、HDD11の制御を実行する。
HDD11は、OS(Operation system)、アプリケーション等の各種プログラム、及び、画像データの格納に使用される。
【0011】
描画器9は、抽象度の高い言語で記述された画像データから、印刷用の画像データを生成する。バスアービタ3のIF(S3)と接続したIFで、メモリ1に記憶してある抽象度の高い言語で記述した画像データをリードし、描画器9の処理で生成した画像を、バスアービタ3のIF(S4)と接続したIF経由で、メモリ1にライトする。
圧縮器8は、描画器9で生成した印刷用画像データを、バスアービタ3のIF(S5)と接続したIF経由で、メモリ1からリードし、圧縮処理後、圧縮データをバスアービタ3のIF(S6)経由でメモリ1にライトする。本実施例の圧縮方式は、圧縮率が保障されておらず、画像によっては膨張する場合がある。画像1ページ単位で圧縮を実施するが、圧縮が失敗し、膨張した場合には、圧縮画像は使用せずに、元の画像を使用する。しかし、1ページ単位では圧縮が成功している場合にも、1ライン単位では、圧縮が失敗し、膨張している可能性がある。
【0012】
膨張検出器7は、伸張器6がリードする1ラインあたりのデータ量から、圧縮器8で圧縮した画像が、ライン単位で膨張していることを検出する。また、バスアービタ3に対して、優先度設定切替信号を出力しており、膨張を検出した場合には、スレーブIF(S7)の優先順位を「中」→「高」になるように、切替信号を制御する。詳細は
図2で説明する。
伸張器6は、圧縮器8で圧縮した画像を伸張する。バスアービタ3のIF(S7)と接続したIF経由で、メモリ1から圧縮データをリードし、伸張処理を実行する。伸張処理後のデータは、バスアービタ3のIF(S8)と接続したIF経由で、メモリ1にライトする場合と、ビデオ出力モジュール5内部のラインバッファ50にライトする場合の、2通りがある。
ビデオ出力モジュール5は、エンジン4へのデータ転送を実行する。エンジン4に転送するデータは、用紙搬送速度に遅れないように転送する必要があり、数ライン分のデータをラインバッファ50に溜めることで、エンジン4へのデータ転送速度を安定させている。ラインバッファ50を設けることで、バス帯域が、一瞬、エンジン4の要求転送帯域よりも低下した場合にも、ラインバッファ分の平均データ転送速度が、エンジン4の要求転送帯域を上回っていれば、正常に画像データの転送を実行できるようになる。
【0013】
本実施例では、ラインバッファは3ライン分のデータを記憶できるものとする。ラインバッファ50にデータをライトする方法は2通りある。一つは、バスアービタ3のIF(S9)と接続したIF経由で、メモリ1からリードしたデータをライトする方法、もう一つは、伸張器6の出力を、直接、ラインバッファ50にライトする方法である。バスアービタ3のIF(S9)経由で、メモリ1からデータをリードする場合は、常に伸張後のデータを扱うため、圧縮処理時のデータ膨張を考慮する必要はない。しかし、伸張器6の出力をラインバッファ50に直接ライトする場合には、ライン単位の膨張を考慮する必要があるため、膨張データをリードする伸張器6のIF(S7)と接続したIF)に要求される帯域が、膨張率の分だけ、余分に必要になる。このとき、余分に必要になる帯域は、伸張器6を接続したバスアービタ3のIF(S7)のバス優先順位を「中」→「高」に上げることで確保することができる。
【0014】
図2は、膨張検出器7について説明する図である。
リードコマンドカウンタ74は、伸張器6とバスアービタ3のIF(S7)を通過するリードコマンドの数をカウントする。また、リードコマンドカウンタ74は、ライン毎のデータ転送開始時にアサートするライン切り替え信号でクリアされる。本実施例では、リードコマンド一つあたりのデータ転送量は128Byteとする。
ラインあたりのデータ量最大値記憶領域73は、画像形成装置の仕様上の最大値を設定しており、その単位は、伸張器6のリードコマンド数であるものとする。例えば、画像形成装置の仕様が、1200dpi、2bit/dot、A4(210mm)の場合は、[ラインあたりのデータ量最大値]={(1200[dot/inch]÷25.4[mm/inch])×210[mm]×2bit/dot}÷128Byte/コマンド=155.02コマンドとなるので、小数点以下を切り上げて、156コマンドを設定する。
比較器72は、リードコマンドカウンタ74の出力値と、ラインあたりのデータ量最大値記憶領域73の値を比較し、リードコマンドカウンタ74の値の方が大きい場合に、Highレベルを出力する。
優先度出力レジスタ71は、ライン切り替え信号がアサートするタイミングで、比較器72の出力値を保持し、保持した値を優先度設定信号として、バスアービタ3に対して出力する。
【0015】
図3は、バスアービタ3のスレーブIFの優先順位について説明する図である。
図3の表中で、「通常時」とは、膨張検出器7が膨張を検出していない状態を示し、「膨張時」とは、膨張検出器7が膨張を検出している状態を示す。伸張器6のリード用IFの(S7)のみ、通常時と膨張時で、バス優先順位が異なる。
本実施例では、通常時のバス保障帯域は、「高」で100MByte/s、「中」で50MByte/s、「低」で20MByte/sとし、膨張時のバス保障帯域は、「高」で100MByte/s、「中」で40MByte/s、「低」で20MByte/sとなるものとする。異常画像を発生させないためには、エンジン4へのデータ転送は50MByte/s以上の速度で実施する必要があるものとする。
【0016】
図4は、伸張器6の出力をラインバッファ50に直接ライトする場合に、ライン単位の膨張がない場合の、ラインバッファ50のデータ入出力について説明する図である。
ラインバッファ50は、1ライン分のデータを記憶することができる記憶装置3個で構成され、それぞれ、ラインバッファ1、ラインバッファ2、ラインバッファ3と呼ぶ。エンジン4への出力は、3個のラインバッファが満杯になった後に開始される。データを入力する順番(ラインバッファへのライト順序)は、ラインバッファ1→ラインバッファ2→ラインバッファ3→ラインバッファ1→ラインバッファ2→・・・・・と循環していくものとする。
図4の”Nライン目出力中”の図では、ラインバッファ1~3にデータが入っているため、伸張器6からラインバッファへのデータ入力はできない状態であり、ラインバッファ1からリードしたデータを、エンジン4へ出力している。ラインバッファ1に記憶していたNライン目の全データのリード(エンジン4への出力)が完了し、ラインバッファ2に記憶している[N+1]ライン目のデータリード(エンジン4へのデータ出力)が開始すると、ラインバッファ50は、
図4の”[N+1]ライン目出力中”に示す状態になる。膨張がない場合には、ラインバッファ1が空になった直後に、伸張器6が[N+3]ライン目のデータ入力を開始するため、常に、ラインバッファ50にデータが入っている状態となるため、異常画像が発生することはない。
【0017】
図5は、伸張器6の出力をラインバッファ50に直接ライトする場合に、ライン単位の膨張が継続するにも関わらず、バス優先順位を「中」のままに維持したときの、ラインバッファ50のデータ入出力について説明する図である。
図5の”Nライン目出力中”の図では、ラインバッファ1~3にデータが入っているため、伸張器からラインバッファへのデータ入力はできない状態であり、ラインバッファ1からリードしたデータを、エンジン4へ出力している。ラインバッファ1に記憶していたNライン目の全データのリード(エンジン4への出力)が完了し、ラインバッファ2に記憶している[N+1]ライン目のデータリード(エンジン4へのデータ出力)が開始すると、ラインバッファ50は、
図5の”[N+1]ライン目出力中”に示す状態になる。ラインバッファ1が空になった直後に、伸張器6が[N+3]ライン目のデータ入力を開始する。
【0018】
ここで、[N+3]ライン目が膨張するデータである場合、ラインバッファ2に記憶した[N+1]ライン目のデータリードが完了し、ラインバッファ3に記憶した[N+2]ライン目のデータリードが開始すると、ラインバッファ50は、
図5の“[N+2]ライン目出力中”に示す状態になっている。このとき、[N+3]ライン目のデータが膨張するデータであるため、伸張器6でリードするデータ量が増加し、リード完了までの時間が長くなる。結果として、ラインバッファ1への[N+3]ライン目のデータライト速度が遅くなり、ラインバッファ3に記憶した[N+2]ライン目のデータリードが開始しても、ラインバッファ2へのデータ入力が開始されず、ラインバッファ2が空の状態が発生する。
【0019】
ラインバッファ2が空の状態は一時的であり、ラインバッファ3に記憶した[N+2]ライン目のデータリードが完了する前に、ラインバッファ1が[N+3]ライン目のデータで満杯となり、続いて、ラインバッファ2への[N+4]ライン目のデータ入力が開始される。しかし、[N+4]ライン目以降のデータも、膨張するデータが連続して継続する場合には、バッファが空の状態である時間が長くなっていく。本実施例では、膨張率を120%とすると、1ラインの転送が完了する毎に、次のライン転送時には、バッファの空き時間が約20%程度の割合で増加していき、最終的には、
図5の”[N+M]ライン目出力中”に示す状態になる。この状態は、伸張器6からのラインバッファへのデータ入力が完了していないにも関わらず、ラインバッファからのリードを開始していることを示しており、リード速度の方が、ライト速度よりも早いため、エンジン4へのデータ出力が滞り、異常画像が発生することとなる。本実施例では、ライン単位の膨張発生時に、伸張器6のリード帯域を増加することで、上記説明したような異常画像の発生を防止することができる。
【0020】
図6は、伸張器6の出力をラインバッファ50に直接ライトする場合に、ライン単位の膨張を検出してバス優先順位を「中」→「高」に変化させるときの、ラインバッファ50のデータ入出力について説明する図である。
図6の”Nライン目出力中”の図では、ラインバッファ1~3にデータが入っているため、伸張器からラインバッファへのデータ入力はできない状態であり、ラインバッファ1からリードしたデータを、エンジンへ出力している。ラインバッファ1に記憶していたNライン目の全データのリード(エンジン4への出力)が完了し、ラインバッファ2に記憶している[N+1]ライン目のデータリード(エンジン4へのデータ出力)が開始すると、ラインバッファ50は、
図6の”[N+1]ライン目出力中/[N+3]ライン目入力中”に示す状態になる。ラインバッファ1が空になった直後に、伸張器6が[N+3]ライン目のデータ入力を開始する。ここで、[N+3]ライン目が膨張するデータである場合、ラインバッファ2に記憶した[N+1]ライン目のデータリードが完了し、ラインバッファ3に記憶した[N+2]ライン目のデータリードが開始すると、ラインバッファ50は、
図6の“[N+2]ライン目出力中/[N+3]ライン目入力中”に示す状態になる。このとき、[N+3]ライン目のデータが膨張するデータであるため、伸張器6でリードするデータ量が増加し、リード完了までの時間が長くなる。結果として、ラインバッファ1への[N+3]ライン目のデータライト速度が遅くなり、ラインバッファ3に記憶した[N+2]ライン目のデータリードが開始しても、ラインバッファ2へのデータ入力が開始されず、ラインバッファ2が空の状態が発生する。ラインバッファ2が空の状態は一時的であり、ラインバッファ3に記憶した[N+2]ライン目のデータリードが完了する前に、ラインバッファ1が[N+3]ライン目のデータで満杯となり、続いて、ラインバッファ2への[N+4]ライン目のデータ入力が開始される。ここで、[N+3]ライン目のデータが膨張するデータであったために、膨張検出器7が、データの膨張を検出し、[N+4]ライン目の転送を開始する前に、伸張器6のリードIFのバス優先順位を「中」→「高」に上げるように、バスアービタ3に対して指示する。
【0021】
[N+4]ライン目の入力が開始すると、ラインバッファ50は、
図6の”[N+2]ライン目出力中/[N+4]ライン目入力中”の状態になる。[N+4]ライン目のデータは、バス優先順位「高」で転送されるため、膨張率120%、バス帯域の向上率が200%(本実施例ではバス優先順位「高」の帯域は、「中」の2倍)である場合は、ラインバッファ3に記憶された[N+2]ライン目のデータリードが完了する前に、ラインバッファ2を[N+4]ライン目のデータで満杯にすることができる。ラインバッファ3に記憶した[N+2]ライン目のデータリードが完了すると、ラインバッファ50は、
図6の”[N+3]ライン目出力中/[N+5]ライン目入力中”に示す状態になる。[N+4]ライン目のデータが膨張するデータではなかったので、膨張検出器7が出力する優先度設定信号は、バス優先順位「中」を示し、[N+4]ライン目のデータ転送は、伸張器6のリード動作はバス優先順位「中」で実行されることになる。ここで、もし、[N+4]ライン目以降のデータが膨張するデータであった場合にも、伸張器6のリード動作はバス優先順位「高」での動作を継続するため、常に、ラインバッファ50にデータを溜めることができ、異常画像が発生することはない。本実施例では、ラインバッファを3ライン分としたが、1ライン分のバッファがFIFO構造であり、リードとライトを同時に実行できる場合は、ラインバッファは2ライン分でも同様に考えることができる。
【0022】
図7は、圧縮率が保障されない圧縮方式を採用した画像形成装置の4色対応のコントローラ200について説明する図である。
図7において、コントローラ200は、エンジン41以外の各機器により構成される。
図1に示した構成に加え、対応色が増えた分(CMY)だけ、膨張検出器、伸張器、ビデオ出力モジュールを増やし、バスアービタ31に、増加分のモジュール用スレーブIFを接続することで、4色対応することができる。また、バスアービタ31は、4色共通で使用するモジュールである、SATAコントローラ10、描画器9、圧縮器8の帯域割り当てを増やしている。
【0023】
バスアービタ31は、スレーブIFを18個(S1~S18)、マスターIFを1個備えており、各スレーブIFに接続された複数バスマスターからの転送要求が競合した場合に、各スレーブIFに設定された優先順位に従って、マスターIFに接続されたメモリコントローラ2へアクセスするモジュールを決定している。本実施例では優先順位は「低」「中」「高」の3段階で設定可能とする。また、伸張器6のメモリリード用IFを接続したスレーブIF(S7)は、膨張検出器7の出力する優先度切替信号に従って、優先順位の切り替えが可能であり、信号レベルがLowの場合は優先順位が「中」、信号レベルがHighの場合は優先順位が「高」となる。同様に、伸張器62のリード用IF(S10)は、膨張検出器72の出力する優先度切替信号に従って優先順位を切替可能であり、伸張器63のリード用IF(S13)は、膨張検出器73の出力する優先度切替信号に従って優先順位を切替可能であり、伸張器64のリード用IF(S16)は、膨張検出器74の出力する優先度切替信号に従って優先順位を切替可能である。
エンジン41は、ビデオ出力モジュール5、ビデオ出力モジュール52、ビデオ出力モジュール53、ビデオ出力モジュール54、が出力する画像データを、紙媒体に印刷するための装置である。膨張検出器72~74は、膨張検出器7と同様の機能を有する。伸張器62~64は、伸張器6と同様の機能を有する。ビデオ出力モジュール52~54は、ビデオ出力モジュール5と同様の機能を有する。
【0024】
このように、本実施例では、画像形成装置のコントローラが上記のような構成を有し、ライン毎のデータ膨張を検出し、データが膨張した場合には、伸張器のバス優先順位を高くする。例えば、3ライン分以上のバッファを設けることで、1ライン目のバッファへの転送が間に合わなかった場合に、次ラインの転送を高速で実行するので、トータル3ラインで考えた場合には、データ転送が間に合うようになる。
すなわち、本実施例において、ライン毎の圧縮率が保障されていない圧縮器9と、圧縮器9のライン毎の圧縮結果が膨張していることを検出する膨張検出器7と、圧縮器9で圧縮したデータを伸張する伸張器6と、バス優先順位の切り替え機能を備えたバスアービタ3と、伸張器6の出力データを、バスを介さずに受信可能なビデオ出力モジュール5と、を備え、ビデオ出力モジュール5は、受信したデータをライン毎に記憶するラインバッファ50を備え、バスアービタ3は、膨張検出器7の出力に従って、伸張器6のバス優先順位を変更するので、圧縮率が保障されない(膨張する場合がある)圧縮方式を採用した場合にも、余分なバス帯域を確保することなく、バス帯域を最適化することができる。
【0025】
また、膨張検出器7は、伸張器6のラインあたりのリードデータ量と、画像形成装置の仕様上の最大のラインデータ量を比較し、伸張器6ラインあたりのリードデータ量の方が多い場合に膨張していると判断するので、圧縮後データの膨張を検出できる。
【0026】
また、伸張器6は、1つのリードコマンドでリードする画像データの量が一定であり、膨張検出器7は、伸張器6のラインあたりのリードコマンド発行数と、画像形成装置の仕様上の最大のラインデータ量をリードコマンド数で数えた値を比較し、リードコマンド発行数の方が多い場合に膨張していると判断するので、転送データ量を直接カウントする場合と比較して、膨張検出器7の回路規模を小さくできる。
【0027】
また、ビデオ出力モジュール5のラインバッファ50は、1ライン分のデータを記憶する複数の記憶装置を有して構成されるので、ラインバッファの制御を単純化できる。
【0028】
また、ビデオ出力モジュール5のラインバッファ50は、3ライン分のデータを記憶することが可能であり、ビデオ出力モジュール5のラインバッファを構成する、1ライン分のデータを記憶する記憶装置は、リードとライトを同時に実行することができない構造であるので、記憶装置の構成が単純であり、例えば、3ライン分のバッファを設けることで、実用的なシステムを構築することが可能となり、バッファの構成を最適化できる。
【0029】
また、ビデオ出力モジュール5のラインバッファ50は、2ライン分のデータを記憶することが可能であり、ビデオ出力モジュール5のラインバッファを構成する、1ライン分のデータを記憶する記憶装置は、リードとライトを同時に実行することが可能なFIFO構造であるので、例えば、2ライン分のバッファを設けることで、実用的なシステムを構築することが可能となり、バッファの構成を最適化できる。
【0030】
また、伸張器6と、膨張検出器7と、ビデオ出力モジュール5とを、色版毎にそれぞれ1つ備え、色版毎に、膨張検出器7の出力に従って、伸張器6のバス優先順位を変更するので、フルカラーの装置にも対応できる。
【符号の説明】
【0031】
100,200 コントローラ
1 メモリ
2 メモリコントローラ
3 バスアービタ
4 エンジン
5 ビデオ出力モジュール
50 ラインバッファ
6 伸張器
7 膨張検出器
8 圧縮器
9 描画器
10 SATAコントローラ
11 HDD
12 CPU
【先行技術文献】
【特許文献】
【0032】