以下、本発明の実施の形態を図面に基づいて説明する。
(実施形態1)
図1は、本発明の実施形態1を説明する印刷装置の構成図である。
同図において、本実施形態の印刷装置1はパーソナルコンピュータ(PC)等のホスト機器2に接続され、ホスト機器2から印刷データが供給される。印刷装置1はインターフェイスコントローラ(I/Fコントローラ)3及びエンジン部4で構成され、I/Fコントローラ3には操作パネル5が接続されている。
I/Fコントローラ3は操作パネル5から操作信号を受信し、ホスト機器2から供給された印刷データに基づいて描画データを作成する。また、エンジン部4は、ヘッドコントローラ6、エンジンコントローラ7、モータ8、及び高圧ユニット9で構成されている。
ヘッドコントローラ6はI/Fコントローラ3から供給される印刷データを対応するLEDヘッドY、M、C、Kに出力する。また、LEDヘッドY、M、C、Kへの印刷制御はヘッドコントローラ6によって行われる。また、エンジンコントローラ7はモータ8の駆動制御、及び高圧ユニット9の高圧制御等を行う。
図2は上記I/Fコントローラ3の回路ブロック図である。I/Fコントローラ3はCPU10、SDRAM11、フラッシュメモリ12、ハードディスク(HDD)13等で構成され、フラッシュメモリ12及びハードディスク(HDD)13には制御プログラムが記憶されている。また、CPU10は上記ハードディスク(HDD)13等に記憶された制御プログラムに従って、本例の印刷装置1の制御を行う。
また、I/Fコントローラ3はLAN16を介して前述のホスト機器2と接続され、又USBボード17を介して他のホスト機器に接続されている。また、シリアルバスを介して前述の操作パネル5に接続され、PCIバス及びASIC(application specific integrated circuit)15を介して前述のエンジン部4に接続されている。
図3は上記I/Fコントローラ(RIP)3とエンジン部4間の接続構成を説明する図である。同図において、M Tone numberbit0,1,2,3はマゼンタのビデオデータを示し、4bit16階調のデータで構成されている。同様に、CTone numberbit0,1,2,3はシアンのビデオデータを示し、4bit16階調のデータで構成されている。以下、イエロー、ブラックについても同様の構成であり、これらのデータはI/Fコントローラ3からヘッドコントローラ6に供給される。
また、エンジン部4から、各色の水平同期信号(Horizontal sync M、Horizontal sync C、Horizontal sync Y、Horizontal sync K)がI/Fコントローラ3に供給され、また後述する垂直同期信号(Vertical sync M、Vertical sync C、Vertical sync Y、Vertical sync KがI/Fコントローラ3に供給される。
次に、図4はI/Fコントローラ3のSDRAM11内の描画メモリ上のデータとエンジン部4へのビデオデータ及びLED発光時間との関係を示す。上記図3に示した様に、本例でのビデオデータは各色4bit(4本の信号線)で転送される。この構成は16階調データを転送するためであり、2値或いは4値の場合も常に4bit(4本の信号線)が使用される。
例えば、写真画像等の16値(4bit)の場合、同図(a)の右端に示すようにメモリ上1ドットに相当するデータは4bitであり、エンジン部4へのデータも同じ4bitとなる。一方、文書データ等の2値の場合には、メモリ上の1ドットに相当するデータは1bitであるが、エンジン部4へのデータは4bitであり、図示するようにメモリ上のデータが0の場合はエンジン部4へのデータも0(hex)=0000(bin)、メモリ上のデータが1の場合はエンジン部4へのデータはF(hex)=1111(bin)に変換処理される。このデータ変換については後述する。
尚、本例では詳述しないが、4値の場合においても同図に示す変換処理を行うことができる。
一方、LED発光時間については、全発光時間を16等分してエンジン部4へのデータが0の場合には全発光時間で常に消灯とし、エンジン部4へのデータが1の場合は、16分の2の時間LEDを発光する。また、エンジン部4へのデータが2の場合は16分の3の時間LEDが発光し、同様に3の場合は16分の4、4の場合は16分の5となり、Fの場合は全期間発光する。
尚、エンジン部4へのデータ1が発光時間16分の1に対応しない理由は、LEDの立ち上がり特性を考慮するものである。
以上の構成において、以下に本例の処理動作を説明する。
先ず、本例で使用する印刷データの例を図5に示す。同図に示すように、用紙20に印刷した場合、文字の印字領域21と写真の印刷領域22を有する印刷データを本例では使用する。具体的には図6に示す描画状態である。
すなわち、用紙の情報3分の1は文字の部分であり、2値で描画される部分である。写真部分を含む用紙の中程3分の1位の部分は16値で描画される部分である。ここで、写真部分を含む用紙3分の1位の部分は16値としたが、ここにも、2値の文字部分が含まれている。この部分について2種類の処理方法を図7と図8に分けて説明する。
図7は、上記図6内の16値の部分を拡大したものであり、1ラインの中で文字(2値)の領域と写真(16値)の領域を分け、それぞれ別のバンドとして扱う。すなわち、バンドを細かい単位で扱うことにより、2値及び16値を見かけ上混在させている。但し、この場合、バンドの数が増えることにより、制御テーブルも大きくなり、その分のメモリ消費は増える。
そこで、図8に示すように設定する。すなわち、文字の部分は同図(a)に示すようにほぼ1ページ分のメモリ領域を使用し、文字データのみを描画する。
一方、写真の部分は同図(b)に示すように先の文字のメモリとは別に確保したメモリに写真のみを描画する。この描画は、写真画像に適した16値である。16値の場合は、2値の場合の4倍のメモリを必要とするが、本例では、写真画像はページ内の一部であり、1ページ分のメモリ容量を必要とするわけではない。
本例では、印刷処理に先立ち、先の図8に示した描画メモリを構成する必要がある。そこで、図8(a)の太い点線で示した部分を同図(b)の太い点線で示した部分にコピーする。但し、同図(a)は2値であり、同図(b)は16値なので、2値/16値変換を行う。1バイトのデータを例にとると、図9に示す変換を行う。
以下、上記変換処理を図10に示すフローチャートに従って説明する。尚、同図に示すフローチャートでは、S,D,H,V,A,Bの変数を使用する。
先ず、Sにはソースアドレス:SRCADDRの値をセットする(ステップ(以下、Sで示す)1)。このソースアドレスは、各バンドの先頭アドレスを示し、例えば図8(a)に示すA1、A2、A3、・・・のアドレスである。
また、Dはデスティネーションアドレス:DESTADDRの値を示し、図8(b)に示すD1、D2、D3、・・・のアドレスである。また、Hは横方向のカウンタを示し、Vは縦方向のカウンタを示す。尚、H及びVは初期時0である。
次に、レジスタAにS(SRCADDR)で示されるメモリの内容をロードし、レジスタBは0に初期化する(S2)。具体的には、この時レジスタAに図8(a)に示すアドレスA1の最初の2値データが書き込まれる。
次に、上記処理によって書き込まれた2値データが「1」であるか否か判断する(S3)。例えば、前述の図9の8ビットの2値データの場合、最初の2値データは「0」であり(S3がN)、レジスタBの対応する値を「0」のままとする。尚、最初の2値データが「1」の場合には(S3がY)、レジスタBの対応する値を「F」(1111)に変換する(S4)。
次に、レジスタAに次の2値データを書き込む。具体的には、レジスタAに図8(a)に示すアドレスA1の隣の2値データが書き込む。そして、上記と同様、書き込まれた2値データが「1」であるか否か判断する(S5)。この場合、前述の図9の8ビットの2値データの例では次も「0」であり(S5がN)、レジスタBの対応する値を「0」のままとする。尚、この2値データが「1」の場合には(S5がY)、レジスタBの対応する値を「F」(1111)に変換する(S6)。
以下、同様にして、2値データを順次レジスタAに書き込み、2値データが1であるか否か判断を行い、2値データが「0」であれば、レジスタBの対応する値を「0」のままとし、「1」であればレジスタBの対応する値を「F」(1111)に変換する(S7〜S18)。例えば、図9の8ビットの2値データの例では、000F0F0Fに変換される。
その後、Hの値を+1し、レジスタBの変換データをD(DESTADDR)に書き込み(S19)、Hの値は1バンド終了するまで同じ処理を行う(S2〜S21)。そして、1バンドの上記処理が完了すると、Vの値を+1し、Vの値が写真画像のデータが含まれる領域全てについて同じ変換処理を繰り返す(S2〜S25)。
以上の処理が完了すると、2値データから16値データへの変換処理が完了する。尚、この間、図8(b)に示す写真部分の16値データの処理をバイパスするため、写真画像の水平方向の幅(RSIZE)を読み飛ばす(S25)。
以上の処理によって、SDRAM11には1頁の中に2値データと16値データの両方が含まれる描画データが記録される。したがって、従来のように1頁の中に写真画像等の16値データが一部でも含まれる場合、当該1頁のデータを16値データに変換する必要がない。
図11は上記のように作成された1頁の描画データを記録するSDRAM11内の描画メモリのエリアの構成を示す図であり、描画メモリと共に描画メモリの管理を行うディスクリプタテーブルの構成を説明する図である。
描画メモリは先に説明したとおり、用紙を横方向に短冊形に切ったバンド状の概念を持つものである。また、ディスクリプタテーブル11aはフラグ(FLAG)、DMAアドレス(DMAADDR)、DMAカウンタ(DMACNT)、ネクストテーブルアドレス(NEXTTBLADDR)を1組とし、これを複数(描画メモリのバンドの数分)連結した構成である。フラグ(FLAG)の詳細は、後述する図12に示す。
DMAアドレス(DMAADDR)は、描画メモリの各バンドの先頭アドレスを示し、具体的には図11に示す矢印のアドレスを示す。また、DMAカウンタ(DMACNT)には、バンドのメモリ容量がセットされる。さらに、ネクストテーブルアドレス(NEXTTBLADDR)には、ディスクリプタテーブル11aの次のFLAGの書かれたアドレスがセットされる。尚、上記フラグ(FLAG)、DMAアドレス(DMAADDR)、DMAカウンタ(DMACNT)、ネクストテーブルアドレス(NEXTTBLADDR)は連続している必要があるが、次のブロックのFLAGのアドレスは連続している必要はない。
上記設定動作を描画メモリのバンド数分行い、1つの繋がりのあるディスクリプタテーブル11aが作成される。尚、カラープリンタの場合、同図の描画メモリとディスクリプタテーブル11aが、Y、M、C、Kの4セット設定される。
尚、図12(a)は上記フラグの構成を示す図である。このフラグは、基本的にソフトウェアがライト処理を行い、ハードウェア(ASIC)がリード処理を行う。また、同図のD0に示すEmpty/Fillは、対応するバンドメモリに描画が完了しているか否かを示す。ソフトウェアは描画処理を完了すると、このbitを1=Fillに設定する。また、同図のD1に示すEndは、対応するバンドメモリが有るか無いかを示す。対応するバンドメモリが無い場合、このbitを1に設定する。
さらに、同図のD3に示すThrough/Compは、対応するバンドメモリの内容が、圧縮データか非圧縮データかを示す。バンドメモリに圧縮後のデータが格納されている場合、1をセットする。また、同図のD5及びD6に示すReso1,Reso0の2bitは、対応するバンドの階調を表す。図12(b)には上記2ビットの論理テーブルが示され、2値(1bit/pixel)、4値(2bit/pixel)、16値(4bit/pixel)の3種類の何れかが選択される。
次に、上記のように描画メモリに記憶された階調値の異なる2値及び多値の階調データを記録した情報に基づいて印刷処理を行う場合を説明する。
図13は前述のASIC(application specific integrated circuit)15の構成を示す。ASIC15はPCIバスコントローラ部30、ディスクリプタテーブル・フラグ情報部31、ディスクリプタテーブル・アクセスコントローラ32、ビデオデータアクセスコントローラ33、ディスクリプタテーブル用アドレスカウンタ34、描画メモリアクセス用アドレスカウンタ35、描画メモリリードアクセス数用カウンタ36で構成され、PCIバスコントローラ部30を除く上記構成はマゼンダ(M)に関する回路であり、シアン(C)、イエロー(Y)、ブラック(K)についても同じ構成の回路37〜39が設けられている。
尚、上記ディスクリプタテーブル用アドレスカウンタ34には前述のネクストテーブルアドレス(NEXTTBLADDR)が書き込まれ、描画メモリアクセス用アドレスカウンタ35にはDMAアドレス(DMAADDR)が書き込まれ、描画メモリリードアクセス数用カウンタ36にはDMAカウンタ(DMACNT)のカウント値が書き込まれる。
また、前述のSDRAM11に描画されたデータはCPU10の制御、及び各色に対応するセレクタ40M〜40Kによる選択処理に従って、対応するFIFO41M〜41Kに格納される。尚、セレクタ40M〜40KはSDRAM11に描画されたデータとディスクリプタテーブル11aのフラグ情報の何れかを選択してFIFO41M〜41Kに出力する。また、ビデオデータアクセスコントローラ33の制御に従って、ビデオデータは伸長変換部42M〜42Kに出力され、更に対応するビデオ転送制御回路43M〜43Kに供給される。
図14は上記PCIバスコントローラ部30の具体的な構成を示す図である。PCIバスコントローラ部30は、バースト用カウンタ45、PCIバスコントローラ46、イニシエータアクセスアービタ47で構成されている。尚、PCIバスコントローラ46とイニシエータアクセスアービタ47間の信号の授受については、以下の処理動作の説明において述べる。
先ず、ディスクリプタテーブル・アクセスコントローラ32の制御シーケンスを説明する。図15はこの処理を説明する図である。ディスクリプタテーブル・アクセスコントローラ32はビデオ転送が開始されるまで待機状態を保持し(ステップ(以下、STで示す)1)、ビデオ転送が開始されると、先ず前述のPCIバスコントローラ30に対して、ディスクリプタテーブル11aとして割り当てられている描画メモリのリードアクセスを依頼する(ST1がYES、ST2)。具体的には、イニシエータアクセスアービタ47に対して「Mdt‐req」信号を出力する。
次に、PCIバスコントローラ30からアクセス許可、即ち「Mdt‐ack」がアクテイブになるまでそのままの状態で待機する(ST3がNO)。その後、PCIバスコントローラ30からアクセス許可が出力されると(ST3がYES、「Mdt‐ack」がアクテイブ)、イニシエータアクセスアービタ47はアクセスした第1ワード目のデータ、即ちディスクリプタテーブル11aのフラグ情報をラッチする(ST4)。すなわち、図13に示すディスクリプタテーブル・フラグ情報部31にフラグ情報がラッチされる。
次に、このフラグ情報を解析し、前述のFillのフラグがアクテイブでない場合、当該フラグに関連する情報は無効と看做して新しいディスクリプタテーブル11aのアクセスをイニシエータアクセスアービタ47に依頼する(ST5がNO、ST1)。一方、Fillのフラグがアクテイブであり、更にフラグ情報がEndでなければ(ST5がYES、ST6がYES)、当該フラグに対応する以下の情報は有効であると判断し、第2ワード目以降のデータをラッチする(ST7〜ST9)。
すなわち、第2ワード目から順に、バンドの先頭メモリアドレス、バンドの転送バイト数、次のディスクリプタテーブル11aの先頭メモリアドレスとしてネクストテーブルアドレスをラッチする。その後、前述のディスクリプタテーブル・アクセスコントローラ32は、アクセスを終了し(ST10)、ビデオデータアクセスコントローラ33のアクセス処理が開始されるのを待つ(STP11)。
一方、図16はビデオデータアクセスコントローラ33の制御シーケンスを示す図であり、先ずディスクリプタテーブル・アクセスコントローラ32の処理が前述の処理(ST10)に達するまで待機する(ステップ(以下、STPで示す)0、STP1がNO)。
その後、ディスクリプタテーブル・アクセスコントローラ32の処理が前述の処理(ST10)に達すると(STP1がYES)、ビデオデータアクセスコントローラ33はメモリアクセスを開始し、次のディスクリプタテーブル11aの内容を得るため、イニシエータアクセスアービタ47に対して出力する「Mvd‐req」信号をアクテイブにする。
すなわち、バンドの先頭アドレス(前述のDMAアドレス(DMAADDR))をアドレスカウンタにロードし、バンドの転送バイト数(前述のDMAカウンタ(DMACNT))をアクセス数用カウンタにロードし、ディスクリプタテーブル11aにメモリアクセス開始を知らせるため、処理(STP2)に移行する。
次に、FIFO41(41M〜41Kを代表して41で示す)にデータを書き込むための準備として、FIFO41の空き領域を確認する(STP3、STP4)。ここで、FIFO41に空き領域がなければ、後段のビデオ転送制御回路43がデータを転送することによりFIFO41に空き領域ができるまで待機する(STP4がNO)。
次に、後段の伸長回路やビデオ転送制御回路のため、これからリードするバンドのデータの階調、圧縮の有無、バイト数の情報をFIFO41に書き込む。それらの情報は、前述のディスクリプタテーブル・アクセスコントローラ32が既に用意しており、FIFO41の入力をセレクタ40によりPCIバスからバンドのフラグ情報に切り替え、FIFO41に書き込む(STP5)。
次に、再びFIFO41の空き領域を確認する。そして、FIFO41に空き領域がなければ、FIFO41に空き領域ができるまで待機する(STP6、STP7がNO)。
次に、イニシエータアクセスアービタ47にビデオデータのリードアクセスを依頼する。すなわち、イニシエータアクセスアービタ47に出力する「Mvd‐req」信号をアクテイブにする(STP8)。そして、PCIバスコントローラ30からアクセス許可、即ち「Mvd‐ack」がアクテイブになるまで待機する(STP9)。
その後、PCIバスコントローラ30からアクセス許可が出力されると、即ち「Mvd‐ack」がアクテイブになると、アドレスカウンタを+4バイト(PCIバスで1ワード分)して、描画メモリアクセス用アドレスカウンタ35を−4バイトし、PCIバスコントローラ30がアクセスして得られたデータをFIFO41に書き込む(STP9がYES、STP10)。
その後、上記処理(STP6〜STP10)を、描画メモリアクセス用アドレスカウンタ35がゼロになるまで繰り返す(STP11がNO)。この処理により、ディスクリプタテーブル11aから得たバンドの転送バイト数の分だけのデータを、FIFO41に書き込むことができる。
その後、描画メモリアクセス用アドレスカウンタ35のカウント処理が完了すと、アクセス処理を終了する(STP11がYES、STP12)。
図17は前述のPCIバスコントローラ46の制御シーケンスであり、ディスクリプタテーブル・アクセスコントローラ32、及びビデオデータアクセスコントローラ33が前述の制御を行う際の対応する処理を示す。
先ず、PCIバスコントローラ46はイニシエータアクセスアービタ47が待機状態のステートから移行するまでは待機しており(ステップ(以下、Wで示す)0、W1)、イニシエータアクセスアービタ47が動作を開始すると(W1がYES)、PCIバスに出力しているREQ#をアクテイブにして、PCIバスのアクセス使用権の獲得を要求をする(W2)。
そして、GNT#がアクテイブになりPCIバスのアクセス使用権を獲得すると(W3がYES)、FRAME#をアクテイブにすると共に、イニシエータアクセスアービタ47で選ばれたアドレスをADバスに出力する。また、イニシエータアクセスアービタ47で選ばれたカウント値が「16」以上なるとバーストカウント数を16にセットする。尚、それ未満であればイニシエータアクセスアービタ47で選ばれたカウント値をバースト用カウンタ45にセットする。但し、ディスクリプタテーブル11aのアクセスの場合は、バースト長を4にセットする。
次に、TRDY#がアクテイブになる前にSTOP#がアクテイブになるとリトライ要求であり(W5がYES)、処理(W2)に戻り、再びPCIバスの獲得から再開する。また、TRDY#がアクテイブになると(W6)、バーストカウンタがゼロになるまでデータを取得するため、アクセスを要求してきたコントローラに対してAckを出力、バーストアクセスを終了したら、再び待機状態に戻る(W7〜W9)。
図18はイニシエータアクセスアービタ47の制御シーケンスである。イニシエータアクセスアービタ47は、PCIバスコントローラ46が待機状態の時、各色のディスクリプタテーブル・アクセスコントローラ32、又はビデオデータアクセスコントローラ33からの要求信号(例えば、Mdt‐req, Mvd‐req)に応じて、どの要求に応えるかを決定する。また、決定した結果は前述のようにActiveとしてレジスタに保存する。このActiveの出力状態において、アドレスカウンタとアクセス数用カウンタをセレクトするものである。
また、PCIバスコントーラのAck出力も、このActiveの出力状態に応じて、出力される。ところで、要求信号の識別順序を常に同一にしてしまうと、優先度に差がついてしまい、転送が間に合わない色が生じてしまう可能性がある。そこで、同図に示すように、前回実行した色と内容(ディスクリプタテーブルであるのかビデオデータであるのか)がActiveとしてレジスタで記憶されているので、そのレジスタ内容に従って前回実行した色については、優先順位が下がるように判断することにより、優先度が回転するように制御している(ステップV1〜V30)。
これら一連の動作により、ディスクリプタテーブル11aの内容に従って、描画メモリを順次リードし、各色別にFIFO41にデータを一時保管することができる。FIFO41に保管されたデータは、エンジン部からの垂直同期信号および水平同期信号に従って、前述の図13に示すビデオ転送制御回路43が、順次FIFO41からデータを読み出し、エンジン部にビデオデータとして転送する。
次に、図19は前述の伸長変換部42の回路構成図である。伸長変換部42は伸長回路50、セレクタ51、階調変換回路52、バイト数用カウンタ53、フラグ情報用F/F54、一時保管バッファ55等で構成されている。伸長回路50からのデータ読み出し指示により、FIFO41のデータがリードされ、伸長回路50は必要に応じて圧縮されたデータを伸長し、セレクタ51を介して階調変換回路52に出力する。伸長回路50は階調情報に従ってエンジンに合わせたビット幅に変換し、それを設定されたバイト数の分だけ繰り返す。尚、フラグ情報用F/F54には前述のフラグ情報が書き込まれる。
図20は、上記伸長変換部42の制御シーケンスを示す。先ず、最初にFIFO41をリードするに当たりFIFO41にデータが保管されたか監視する(ステップ(以下、Uで示す)0、U1)。ここで、FIFO41にデータが保管されると、最初のデータはフラグ情報であり、この情報をフラグ情報用F/F54にラッチする(U2)。
次に、フラグ情報によりデータが圧縮されているかどうか判断し(U3)、データが圧縮されている場合(U3がYES)、FIFO41からデータをリードしてバイト数カウンタ53をダウンカウントし(U4)、伸長回路50によりデータを伸長して、後述する階調変換を行ない、一時保管バッファ55にデータを格納する(U5)。その後、上記処理をバイト数カウンタ53がゼロになるまで処理を繰り返す(U6がYES)。
一方、データが圧縮されていなければ、FIFO41からデータをリードし、バイト数カウンタ53をダウンカウントし(U7)、FIFO41からリードしたデータをそのまま階調変換し、一時保管バッファ55にデータを格納する(U8)。その後、上記処理をバイト数カウンタがゼロになるまで処理を繰り返す(U9がYES)。
次に、階調変換回路52の処理を説明する。本例において、印字ヘッドは16階調の表現が可能な4ビットのビデオ信号を要求している。描画データが2値だった場合、データのビット幅は1ビットであり、図21(a)に示す論理に従って変換処理を行う。同様に、描画データが4値である場合、データのビット幅は2ビットであり、図21(b)に示す論理に従って変換処理を行う。
上記図21の説明では、1又は2ビットのデータを4ビットに変換する説明としたが、実際には32ビット幅のPCIバスを経由して入力データを用意するので、ビット位置も選択する必要がある。そこで、図22に示すように1データごとにカウントアップするカウンタと階調情報(Reso1,Reso0)も入力し、図23に示すようなデコード処理を行うことにより、32ビット幅のデータを4ビットのビデオ信号に変換する。
最後に、図24に示す処理に従って、本例の全体動作の流れを説明する。先ず、ディスクリプタテーブル・アクセスコントローラ32が、予めセットされた(ASO)最初のバンドのディスクリプタの先頭アドレスから始まるデータ(最初のバンドのフラグ情報、描画メモリの先頭のアドレス、バイト数、次のディスクリプタテーブル11aの先頭の(アドレス)を、PCIバスアクセスコントローラを介して入手する(AS1)。
次に、ビデオデータアクセスコントローラ33は、先ず最初のバンドのフラグ情報をFIFO41にライトする(AS2)。そして、最初のバンドの内容に従い、描画メモリの最初のバンドの先頭アドレスから、PCIバスアクセスコントローラ30を介してデータを入手してFIFO41にライトする(AS3)。
FIFO41の空きは常に監視されており、FIFO41に保存されたデータ容量が一定量以上になると、書き込みを中断し、ビデオ転送制御回路43からエンジン部にデータが転送することによりFIFO41に空きが生じたら、再びFIFO41へのライト処理を再開する(AS4)。
一方、FIFO41にデータが書き込まれたら、伸長変換部42はFIFO41からデータをリードし、フラグ情報に従って、FIFO41のデータを伸長し、階調変換を実施する(AS5)。更にそのデータは、ビデオ転送制御回路43により、シフトやマスク等の処理が実行され、エンジン部にビデオデータとして転送される(AS6)。
また、ビデオデータアクセスコントローラ33が動作を開始したら、ディスクリプタテーブル・アクセスコントローラ32は、2番目のバンドのディスクリプタテーブル11aの先頭アドレスから始まるデータ(2番目のバンドのフラグ情報、描画メモリの先頭のアドレス、バイト数、3番目のディスクリプタテーブル11aの先頭のアドレス)を、PCIバスアクセスコントローラ30を介して入手する(AS7)。
ビデオデータアクセスコントローラ33による、最初のバンドの描画データのFIFO41への書き込みは、ディスクリプタテーブル11aにて設定されたバイト数分だけ繰り返し実行する(AS8)。
最初のバンドの描画データのFIFO41への書き込みが終了したら、引継2番目のバンドについても同様に、ビデオデータアクセスコントローラ33は、先ずフラグ情報をFIFO41にライトし(AS9)、ディスクリプタテーブル11aにて、設定されたバイト数分だけ繰り返し実行する(AS10〜AS13)。
ディスクリプタテーブル11aをアクセスしたときのフラグ情報にて、ENDフラグを検出したら、ディスクリプタテーブルアクセスコントローラは動作を終了 する(AS17)。また、ビデオデータアクセスコントローラ33も、ディスクリプタテーブル11aにて設定された最後のバンド数分のFIFO41へのライトを行ったら動作を終了する(AS14〜AS18)。
伸長変換部42も、最後のバンドのFIFO41のデータについて、データが無くなるまで、フラグ情報に従った伸長及び階調の変換を行い、そのデータをビデオ転送制御回路43がエンジン部へビデオデータとして最後のデータまで転送することにより、動作を終了する。
以上のように、本例によれば項全体を16値でメモリに描画する場合に比べ、例えば文字情報は2値で描画でき、メモリ容量を小さくすることができ、装置のコストダウンを図ることができる。
また、頁全体を16値で描画する場合に比べ、文字情報は2値で描画処理するので、印刷処理を高速に行うことができる。
尚、本例では描画メモリのデータの入手経路をPCIバス経由としたが、データが入手できれば、どのようなデータバスを使用しても良い。
(実施形態2)
次に、本発明の実施形態2について説明する。尚、本例において、実施形態1と同じ構成部分には同一番号を付し、構成上の説明を省略する。
図25は本例で説明する印刷データを示し、文字と写真が混在した印刷データ例である。前述の実施形態1においては、1,2,6,7番目のバンドを2値で、3〜5番目のバンドを16値で描画メモリを作成し、4番目のバンドに存在する文字データについては、16値に変換してから写真のデータと共に、4番目のバンドとして描画メモリに保管していた。しかし、本例においては、図25に示すように描画メモリに保管する。
図26は本例のメモリ構成を具体的に示す図であり、ディスクリプタテーブル11aと描画メモリの関係を説明する図である。描画メモリの1つのバンドの先頭アドレス及びそのバンドの大きさを示すカウント数については、文字用と写真用としてそれぞれ2個ずつ設定する構成である。文字だけ、写真だけのバンドの場合には、他方の描画メモリを示すアドレス値や大きさは無効であるが、それは後述するフラグにて見分ける。
同図では、4番目のバンドに文字と画像の両方が存在するので、4番目のバンドについては描画メモリAと描画メモリBの両方に存在している。また、3番目、5番目のバンドについては文字のデータが存在しないので、描画メモリAには3番目、5番目のバンドが存在しなく、同様に1,2,6,7番目のバンドについては写真のデータが存在しないので、描画メモリBには1,2,6,7番目のバンドが存在しない。
図27は本例の回路構成を示す図であり、前述の図13に対応する図である。したがって、図13で使用する構成については同じ符号を使用して説明する。本例の回路も前述と同様、PCIバスコントローラ部30、ディスクリプタテーブル・フラグ情報部31、ディスクリプタテーブル・アクセスコントローラ32、ビデオデータアクセスコントローラ33、ディスクリプタテーブル用アドレスカウンタ34、描画メモリアクセス用アドレスカウンタ35、描画メモリリードアクセス数用カウンタ36で構成されている。但し、本例においては、ビデオデータアクセスコントローラ33、描画メモリリードアクセス用アドレスカウンタ35、描画メモリリードアクセス数用カウンタ36、FIFO41がそれぞれAとBの2個ずつの構成である。
さらに、FIFO−A、FIFO−Bは出力を論理和されてからビデオ転送制御回路へと接続している。以下の説明では、Aを文字(2値)用、Bを写真(16値)用として使用する。
また、図28はPCIバスコントローラ部の具体的な構成を示す図であり、前述の図14に対応する図である。上記のようにビデオデータアクセスコントローラ33、描画メモリリードアクセス用アドレスカウンタ35、描画メモリリードアクセス数用カウンタ36がそれぞれ2倍になっているので、対応する入出力が2倍になっている。イニシエータアクセスアービタ47から出力する優先度を示す信号(Active)も、識別可能なビット数の分だけ増加している。即ち、図14では8種類であり3ビットであるが、図28では12種類であり4ビットとしている。
本例は文字と写真が混在する印刷データに対して、前述のように描画メモリを大きく2つに分類し、一方を文字用の2値データ専用の格納エリアとし、他方を写真用の多値(16値)専用の格納エリアに分けてメモリ上に描画する。以下、具体的に説明する。
図29はディスクリプタテーブル・アクセスコントローラ32の制御シーケンスを示す。前述のように、ディスクリプタテーブル・アクセスコントローラ32はビデオ転送が開始されるまで待機状態であり(ST0、ST1がN)、ビデオ転送が開始されると、先ず前述のPCIバスコントローラ30に対して、ディスクリプタテーブルとして割り当てられている描画メモリのリードアクセスを依頼する(ST1がYES、ST2)。
次に、PCIバスコントローラ30からアクセス許可、即ち「Mdt‐ack」がアクテイブになるまで待機し(ST3がNO)、PCIバスコントローラ30からアクセス許可が出力されると(ST3がYES、「Mdt‐ack」がアクテイブ)、イニシエータアクセスアービタ47はアクセスした第1ワード目のデータ、即ちディスクリプタテーブル11aのフラグ情報をラッチする(ST4)。
次に、このフラグ情報を解析し、Fillのフラグがアクテイブであり、更にフラグ情報がEndでなければ(ST5がYES、ST6がYES)、当該フラグに対応する以下の情報は有効であると判断し、第2ワード目以降のデータをラッチする(ST7〜ST11)。
すなわち、第2ワード目から順に、バンドの先頭メモリアドレス、バンドの転送バイト数、次のディスクリプタテーブル11aの先頭メモリアドレスとしてネクストテーブルアドレス、更に本例では16進のバンドの先頭メモリアドレス、及びバンドの転送バイト数、更に次の16進の先頭ネクストテーブルアドレスもラッチする。その後、前述のディスクリプタテーブル・アクセスコントローラ32は、アクセスを終了し(ST12)、ビデオデータアクセスコントローラ33のアクセス処理が開始されるのを待つ(STP13)。
一方、図30はビデオデータアクセスコントローラ33A、33Bの制御シーケンスを示す図であり、前述の図16との相違点は、処理(STP0)の時、Reso1、0が「11」かどうかを判断させ、「11」の時には、そのバンドは無効と判断して、次のバンドまで待機している点である。したがって、以下の処理は前述の処理と同じであり、説明を省略する。
尚、図31(a)、(b)は実施形態2におけるディスクリプタテーブル11aのフラグを説明する図である。前述の図12(a)、(b)と比較すると、Reso1,Reso0が、文字用のReso1−A、Reso0−A、写真用のReso1−B、Reso0−Bの2つになり、更に該当する描画メモリが存在しないことを示す意味合い(Reso1,Reso0=1,1)を追加している。また該当するバンドのデータが圧縮か非圧縮かを示すビット(Through/Comp)も描画メモリA用とB用の2つを用意している。
以上のように、本例によれば2値で作成された文字の画像と多値(例えば16値)で作成された写真の画像を別々にメモリ上に持ち、合成印刷することができるので、2値のデータを16値に変換するなどのソフトによる操作の必要が無くなり、その分の時間が短くなり全体の処理が高速化されるという効果がある。