(57)【要約】【課題】プリンタコントローラにおいて、印刷処理速度をなるべく低下させずに、ＲＯＭアクセス用の信号線を減少する。【解決手段】プリンタの起動時に用いるプログラムと、プリンタの印刷処理に用いるプログラムとを記録したシリアルＲＯＭと、ＣＰＵと、ＲＡＭとを備え、前記ＣＰＵは、前記プリンタの起動時に用いるプログラムにしたがって、前記プリンタの印刷処理に用いるプログラムをシリアルＲＯＭから読み出してＲＡＭにコピーし、コピーしたプログラムにしたがって印刷処理を行なうことを特徴とするプリンタコントローラを提供する。【選択図】  図１
2004240693.tif 000002
【特許請求の範囲】
【請求項１】
プリンタの起動時に用いるプログラムと、プリンタの印刷処理に用いるプログラムとを記録したシリアルＲＯＭと、
ＣＰＵと、
ＲＡＭとを備え、
前記ＣＰＵは、前記プリンタの起動時に用いるプログラムにしたがって、前記プリンタの印刷処理に用いるプログラムをシリアルＲＯＭから読み出してＲＡＭにコピーし、コピーしたプログラムにしたがって印刷処理を行なうことを特徴とするプリンタコントローラ。
【請求項２】
請求項１に記載したメモリコントローラにおいて、
メモリコントローラをさらに備え、
前記ＣＰＵは、メモリコントローラを介してシリアルＲＯＭにアクセスすることを特徴とするプリンタコントローラ。
【請求項３】
請求項２に記載したメモリコントローラにおいて、
前記メモリコントローラはシリアルＲＯＭから読み出した所定サイズのデータを格納するバッファを備え、
シリアルＲＯＭから読み出すべきデータがバッファに格納されている場合には、バッファからデータを読み出すことを特徴とするプリンタコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタのコントローラに関する。
【０００２】
【従来の技術】
プリンタに組み込まれたコントローラは、ホストコンピュータから送信される印刷用データを解釈して、画像データを生成し、印刷エンジンに供給する処理をはじめとした、プリンタにおける種々の処理を制御する。
【０００３】
図８は、従来のページプリンタのコントローラの構成の一例を示すブロック図である。本図に示すように、プリンタコントローラは、ＣＰＵ１１０に接続されたメモリコントローラ１２０を備えており、メモリコントローラ１２０には、ＲＯＭコネクタ１３５に装着されたＲＯＭ１３０がＲＯＭバス１６０を介して接続され、また、ＲＡＭコネクタ１４５に装着されたＲＡＭ１４０がＲＡＭバス１７０を介して接続されている。ＲＯＭバス１６０とＲＡＭバス１７０とはそれぞれ複数本のアドレス信号線とデータ信号線とを含んでいる。
【０００４】
また、メモリコントローラ１２０には、ページプリンタが備える印刷エンジン、操作パネル、ＥＥＰＲＯＭ、各種インタフェース等を制御するＩＯコントローラ１５０が、ＩＯバス１８０を介して接続されている。
【０００５】
図９に示すように、ＲＯＭ１３０は、複数のＲＯＭチップ１３１を備えたＲＯＭＭ  ＤＩＭＭにより構成することができる。図１０は、ＲＯＭ１３０のメモリマップを示しており、本図に示すように、ＲＯＭ１３０は、プリンタ起動時の処理を実行するための起動プログラム（ＩＰＬ）１３１ａ、印刷データの解釈、印刷エンジンの制御等の処理を実行するためのプリンタ処理プログラム１３１ｂ、および、フォントデータ１３１ｃを格納している。なお、プリンタ処理プログラム１３１ｂは、処理毎のモジュールに分けられていたり、また、圧縮されている場合もある。
【０００６】
ページプリンタの電源が投入されると、ＣＰＵ１１０は、ＲＯＭ１３０にアクセスして、起動プログラム１３１ａを実行し、各種の初期設定を行なう。その後、プリンタ処理プログラム１３１ｂをＲＡＭ１４０にコピーして、コピー先の所定のアドレスにジャンプする。
【０００７】
ＲＡＭ１４０の読み出し速度は、ＲＯＭ１３０の読み出し速度よりも非常に高速であるため、ＣＰＵ１１０は、起動時処理以降の処理、例えば、印刷実行処理等では、ＲＡＭ１３０にコピーされたプリンタ処理プログラムをフェッチして処理を実行することにより、印刷処理速度等を向上させるようにしている。
【０００８】
【発明が解決しようとする課題】
アドレス信号線とデータ信号線とを含むＲＯＭバス１６０は、複数の信号を並列（パラレル）に伝送する。このとき、バスの幅（信号線の本数）は、ＣＰＵ１１０が扱うアドレス空間、データ長等に対応するようにしているため、一般に、ＲＯＭバス１６０の幅は大きくなる。
【０００９】
例えば、ＣＰＵ１１０の扱うデータ長が３２ｂｉｔの場合に、ＲＯＭバス１６０に含まれるアドレスバスおよびデータバスが、それぞれ２３本および３２本の信号線から構成されるとすると、ＲＯＭバス１６０として、合計５５本の信号線が必要となる。
【００１０】
信号線の数が多くなると、信号ピンの本数も増え、その分の面積が必要となるため、メモリコントローラ１２０のみならず、プリンタコントローラ基板そのもののサイズも大きくなってしまう。基板のサイズが大きくなることはコストの上昇を招くため、信号線の数はなるべく減らすことが望ましい。また、信号線の数を減らすことができれば、基板のサイズを縮小することでコストを削減することができる上、コントローラ上の信号線の引き回しの制約が緩和され、さらに、基板のサイズの縮小を図ることができる。
【００１１】
一方で、信号線の数の削減による印刷処理速度の低下はなるべく少ない方が望ましい。
【００１２】
本発明の目的は、プリンタコントローラにおいて、印刷処理速度をなるべく低下させずに、ＲＯＭアクセス用の信号線を減少することにある。
【００１３】
【課題を解決するための手段】
上記課題を解決するため、本発明によれば、
プリンタの起動時に用いるプログラムと、プリンタの印刷処理に用いるプログラムとを記録したシリアルＲＯＭと、
ＣＰＵと、
ＲＡＭとを備え、
前記ＣＰＵは、前記プリンタの起動時に用いるプログラムにしたがって、前記プリンタの印刷処理に用いるプログラムをシリアルＲＯＭから読み出してＲＡＭにコピーし、コピーしたプログラムにしたがって印刷処理を行なうことを特徴とするプリンタコントローラが提供される。
【００１４】
シリアルＲＯＭを用いることで、ＲＯＭアクセス用の信号線を少なくすることができる。また、起動時にプリンタの印刷処理に用いるプログラムをシリアルＲＯＭからＲＡＭにコピーし、印刷処理時にはＲＡＭにコピーしたプログラムを用いることにより、印刷処理速度への影響を少なくすることができる。
【００１５】
本発明は、
メモリコントローラをさらに備え、
前記ＣＰＵは、メモリコントローラを介してシリアルＲＯＭにアクセスするようにしてもよい。
【００１６】
これにより、ＣＰＵの負荷を軽減することができる。
【００１７】
さらに、本発明は、前記メモリコントローラはシリアルＲＯＭから読み出した所定サイズのデータを格納するバッファを備え、
シリアルＲＯＭから読み出すべきデータがバッファに格納されている場合には、バッファからデータを読み出すようにしてもよい。
【００１８】
プログラムは局所性が高いため、バッファに書き込んだページのヒット率は高いことが期待される。したがって、バッファを用いることにより起動時の処理速度への影響も少なくすることができる。
【００１９】
【発明の実施の形態】
本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明を適用したコントローラの構成の一例を説明するためのブロック図である。
【００２０】
本実施形態においては、ＲＯＭの信号線を削減するため、シリアルＲＯＭ３０を用いるようにしている。一般に、シリアルＲＯＭ３０は、ＣＳ（チップセレクト）、ＳＣＫ（クロック）、ＳＩ（シリアル入力）、ＳＯ（シリアル出力）の４本の信号線によりデータのやり取りを行なうようになっている。すなわち、ＣＳをアクティブにして、ＳＣＫの立ち上がりエッジでＳＩにオペコード、アドレスの順にビットデータをシリアル入力すると、読み出されたデータがＳＯから出力される。このとき、シリアルＲＯＭ３０の１ページ、例えば、５１２バイトのビットデータが連続して出力される。
【００２１】
図１に示すように、プリンタコントローラは、ＣＰＵ１０に接続されたメモリコントローラ２０を備えている。メモリコントローラ２０には、シリアルＲＯＭ３０がＲＯＭバス６０を介して接続され、また、ＲＡＭコネクタ４５に装着されたＲＡＭ４０がＲＡＭバス７０を介して接続されている。
【００２２】
本図の例では、シリアルＲＯＭ３０を２個用いている。この場合、ＲＯＭバス６０は、それぞれのチップセレクト線（ＣＳ０Ｘ、ＣＳ１Ｘ）、および、ＳＣＫ、ＳＩ、ＳＯの５本の信号線で構成することができる。
【００２３】
なお、シリアルＲＯＭ３０のメモリマップは、図１０に示した従来例のメモリマップと同様である。すなわち、シリアルＲＯＭ３０は、起動プログラム（ＩＰＬ）、プリンタ処理プログラム、および、フォントデータをあらかじめ格納している。そして、ＣＰＵ１０は、起動時にシリアルＲＯＭ３０にアクセスして、起動プログラムを実行し、各種の初期設定を行なう。その後、プリンタ処理プログラムをＲＡＭ４０にコピーして、コピー先の所定のアドレスにジャンプする。
【００２４】
このため、ＣＰＵ１０が、シリアルＲＯＭ３０からプログラムを読み出すのは、実質的に、プリンタの起動時の処理に限られる。
【００２５】
メモリコントローラ２０には、ページプリンタが備える印刷エンジン、操作パネル、ＥＥＰＲＯＭ、各種インタフェース等を制御するＩＯコントローラが、ＩＯバス８０を介して接続されている。
【００２６】
本実施形態において、メモリコントローラ２０は、シリアルＲＯＭ３０を制御するためのシリアルＲＯＭ制御回路２００を備えている。なお、ＣＰＵ１０、ＲＡＭ４０、ＩＯコントローラ５０等は、従来の構成とすることができる。
【００２７】
図２は、シリアルＲＯＭ制御回路２００の構成を示すブロック図である。
【００２８】
まず、シリアルＲＯＭ制御回路２００に関する信号線について説明する。本図に示すように、シリアルＲＯＭ制御回路２００は、ＣＰＵ１０等と情報のやり取りを行なうための信号線であるＡＤ（０−３１）、Ｄ（０−３１）、ＲＯＭＲＥＱＸ、ＲＷＸ、ＲＯＭＡＣＫＸと、シリアルＲＯＭ３０と情報のやり取りを行なうための信号線であるＳＩ、ＣＳＸ、ＳＣＫ、ＳＯとを有している。
【００２９】
ＡＤ（０−３１）は、ＣＰＵ１０からパラレル入力される３２ｂｉｔのアドレス情報である。
【００３０】
Ｄ（０−３１）は、ＣＰＵ１０の要求に応答して、シリアルＲＯＭ３０から読み出したデータを、３２ｂｉｔのパラレル信号としてＣＰＵ１０に出力する。
【００３１】
ＲＯＭＲＥＱＸは、シリアルＲＯＭ３０への要求信号である。メモリコントローラ２０が備える図示しないアドレスデコーダから出力される。
【００３２】
ＲＷＸは、シリアルＲＯＭ３０に対する読み出し命令のとき１を示し、（書き込み可能な）シリアルＲＯＭ３０に対する書き込み命令のとき０を示す入力信号である。
【００３３】
ＲＯＭＡＣＫＸは、ＲＯＭＲＥＱＸの応答として、シリアルＲＯＭ３０からの読み出しが終了して、３２ｂｉｔのデータがそろったときに０示す出力信号である。
【００３４】
ＳＩは、シリアルＲＯＭ３０のＳＩに接続され、シリアルＲＯＭ３０にシリアルデータを出力する。
【００３５】
ＣＳＸは、シリアルＲＯＭ３０のＣＳに接続され、シリアルＲＯＭにチップセレクト信号を出力する。
【００３６】
ＳＣＫは、シリアルＲＯＭ３０のＳＣＫに接続され、ＳＩ、ＳＯの同期クロックを出力する。
【００３７】
ＳＯは、シリアルＲＯＭ３０のＳＯに接続され、シリアルＲＯＭ３０からのシリアルデータを入力する。
【００３８】
つぎに、図２に示したシリアルＲＯＭ制御回路２００を構成する各ブロックについて説明する。本図において、シリアルＲＯＭ制御回路２００は、アドレスレジスタ２０１、ページアドレス変換部２０２、セレクタ部２０３、シフトレジスタ部２０４、ページレジスタ部２０５、比較部２０６、ステートマシン部２０７、シフトレジスタ部２０８、バッファ部２０９、リードレジスタ部２１０を備えている。
【００３９】
アドレスレジスタ２０１は、ＣＰＵ１０から出力されるアドレスデータを一時的に記憶する。
【００４０】
ページアドレス変換部２０２は、ＣＰＵ１０から出力されたアドレスデータを、シリアルＲＯＭ３０のページアドレスに変換する。シリアルＲＯＭ３０の１ページの大きさを５１２バイトとすると、アドレスデータの下位の９ｂｉｔを切り取ったアドレスがページアドレスとなる。
【００４１】
セレクタ部２０３は、ステートマシン部２０７からの指示に基づいて、シフトレジスタ部２０４へ入力するデータを選択する。具体的には、オペコードとページアドレスとを切り替えて、シフトレジスタ部２０４に出力する。
【００４２】
シフトレジスタ部２０４は、セレクタ部２０３から出力されたパラレルのデータを一時的に格納し、ＳＣＫの立ち下がりに同期して、１ｂｉｔずつシフトしながらシリアルＲＯＭ３０のＳＩにシリアル出力する。
【００４３】
ページレジスタ部２０５は、ページアドレス変換部２０２が出力したページアドレスを一時的に記憶する。
【００４４】
比較部２０６は、ページアドレス変換部２０２が出力したページアドレスと、ページレジスタ部２０５が記憶する前回のページアドレスとが一致しているかどうかを判断し、一致している場合には、ＨＩＴ信号をアクティブにしてステートマシン部２０７に出力する。
【００４５】
ステートマシン部２０７は、シリアルＲＯＭ制御回路２００における処理を管理する。ステートマシン部２０７は、さらに、メインステートマシン部２０７１、切り出しステートマシン部２０７２、ＳＲＡＭステートマシン部２０７３、および、複数のカウンタを備えて構成される（図３参照）。ステートマシン部２０７の詳細については後述する。
【００４６】
シフトレジスタ部２０８は、シリアルＲＯＭ３０のＳＯから出力されたデータを１ｂｉｔずつ取り込む。
【００４７】
バッファ部２０９は、シフトレジスタ部２０８を介して入力されるシリアルＲＯＭ３０からの出力データを１ページ分（５１２バイト）蓄え、リードレジスタ部２１０に８ｂｉｔずつ出力する。
【００４８】
リードレジスタ部２１０は、バッファ部２０９が出力する８ｂｉｔのデータを４回分溜め、ＣＰＵ１０のバス幅である３２ｂｉｔにそろえて出力する。
【００４９】
つぎに、ステートマシン部２０７の内部構成について、図３のブロック図を参照して説明する。
【００５０】
メインステートマシン部２０７１は、シリアルＲＯＭ３０に対するＣＳ信号およびＳＣＫ信号を発生するためのステートマシンである。メインステートマシン部２０７１の状態遷移については後述する。
【００５１】
切り出しステートマシン部２０７２は、シリアルＲＯＭ３０から１ページ分のデータをバッファ部２０９に取り込み、指定されたアドレスに対応する４バイトのデータを取り出してＣＰＵ１０に出力する処理を管理する。
【００５２】
ＳＲＡＭステートマシン部２０７３は、切り出しステートマシン部２０７２の下位のステートマシンであり、バッファ部２０９内のＳＲＡＭ２０９１のリード・ライト処理を管理する。
【００５３】
ＣＬＫＣＮＴ２０７４は、シリアルＲＯＭ３０のクロックであるＳＣＫを生成するためのカウンタである。本実施形態では、プリンタコントローラのクロック（ＣＬＫ）４個分で、ＳＣＫの１クロックを生成するようにしているため、２ｂｉｔカウンタで構成する。
【００５４】
ＢＩＴＣＮＴ２０７５は、ＳＣＫのクロック数をカウントするための５ｂｉｔのカウンタである。
【００５５】
ＢＹＴＥＣＮＴ２０７６は、シリアルＲＯＭ３０から読み込み中のデータのバイト位置を示すカウンタである。シリアルＲＯＭ３０の１ページを５１２バイトとすると０から５１１までカウントする。
【００５６】
つぎに、バッファ部２０９の内部構成について、図４のブロック図を参照して説明する。
【００５７】
本図に示すように、バッファ部２０９は、ＳＲＡＭ２０９１とアドレスカウンタ２０９２とセレクタ２０９３とを備えている。
【００５８】
本実施例において、ＳＲＡＭ２０９１は、シリアルＲＯＭ３０の１ページに対応して、５１２バイトの構成としている。ただし、もっと小さくても大きくてもよいし、５１２バイトのブロックを複数備えるようにしてもよい。ＳＲＡＭ２０９１は、シフトレジスタ部２０８からのデータ（ＤＩＮ）を入力し、リードレジスタ部２１０へのデータ（ＤＯＵＴ）を出力する。また、制御信号としてＳＲＡＭステートマシン部２０７３からリード信号（ＳＲＤＸ）とライト信号（ＳＷＲＸ）とが入力される。
【００５９】
アドレスカウンタ２０９２は、ＳＲＡＭ２０９１のライトアドレスを発生する。後述するように切り出しステートマシン部２０７２がＬＤ状態の場合に、アドレスロード信号がアクティブとなり、ＡＤ（０−３１）の下位９ｂｉｔをロードする。これは、読み取り対象のデータの最下位バイトのページ内におけるアドレスである。そして、後述するようにＳＲＡＭステートマシン部２０７３がＷＲ１状態になると、インクリメント信号がアクティブとなり、カウントをインクリメントする。また、メインステートマシン部２０７１がＣＭＤ状態になるとアドレスカウンタ２０９２は０に初期化される。アドレスデータと初期化の０データとは、セレクタ２０９３により切り替えられる。
【００６０】
つぎに、図５に示した状態遷移図を参照して、メインステートマシン部２０７１の状態遷移について説明する。
【００６１】
本図において、ＩＤＬＥは、初期状態である。
【００６２】
ＩＤＬＥ状態で、ＲＯＭＲＥＱＸがアクティブとなり、かつ、比較部２０６からのＨＩＴ信号が非アクティブのとき、すなわち、ＣＰＵ１０からシリアルＲＯＭ３０の読み出し命令がなされ、かつ、読み出すデータの含まれるページが前回読み出したページとは別のページである場合は、ＣＭＤ状態に遷移する。ＣＭＤ状態では、ＣＳをアクティブにする。また、シフトレジスタ部２０４は、ＳＩを介して、オペコード（ページリードの場合は、例えば、０ｘ５２）をシリアルＲＯＭ３０に出力する。
【００６３】
ＣＭＤ状態で、ＢＩＴＣＮＴ２０７５が７となり、かつ、ＣＬＫＣＮＴが３となると、すなわち、８ｂｉｔのオペコードの出力が終了すると、ＡＤＲ状態に遷移する。ＡＤＲ状態では、シフトレジスタ部２０４は、ＳＩから２４ｂｉｔのページアドレスをシリアルＲＯＭ３０に出力している。
【００６４】
ＡＤＲ状態で、ＢＩＴＣＮＴ２０７５が２３となり、かつ、ＣＬＫＣＮＴが３となると、すなわち、２４ｂｉｔのページアドレスの出力が終了すると、ＤＮＴＸ状態に遷移する。ＤＮＴＸ状態は、シリアルＲＯＭ３０の仕様に対応するものであり、シリアルＲＯＭ制御回路２００は、ＳＩから３２ｂｉｔのダミーデータを出力する。
【００６５】
ＤＮＴＸ状態で、ＢＩＴＣＮＴ２０７５が３１となり、かつ、ＣＬＫＣＮＴが３となると、すなわち、３２ｂｉｔのダミーデータの出力が終了すると、ＤＡＴＡ状態に遷移する。ＤＡＴＡ状態では、ＳＯを介して、シフトレジスタ２０８に、シリアルＲＯＭ３０からの１ページ分のデータが入力される。
【００６６】
ＤＡＴＡ状態で、ＢＹＴＥＣＮＴ２０７６が５１１、かつ、ＢＩＴＣＮＴ２０７５が７、かつ、ＣＬＫＣＮＴが３となると、すなわち、１ページ分５１２バイトのデータの入力が終了すると、ＣＵＴＤＮ状態に遷移する。ＣＵＴＤＮ状態では、ＳＣを非アクティブにし、１ページ分のデータを記憶したバッファ部２０９から指定の４バイトのデータを読み出す。その後、ＩＤＬＥ状態に戻る。
【００６７】
また、ＩＤＬＥ状態で、ＲＯＭＲＥＱＸがアクティブとなり、かつ、比較部２０６からのＨＩＴ信号がアクティブのとき、すなわち、ＣＰＵ１０からシリアルＲＯＭ３０の読み出し命令がなされ、かつ、読み出すデータの含まれるページが前回読み出したページとは同じページである場合は、バッファ部２０９が記憶しているデータから読み出すことができ、シリアルＲＯＭ３０にアクセスする必要がないので、メインステートマシン部２０７１は、ＣＵＴＤＮ状態に遷移する。
【００６８】
つぎに、図６に示した状態遷移図を参照して、切り出しステートマシン部２０７２の状態遷移について説明する。切り出しステートマシン部２０７２は、上述のように、ＣＵＴＤＮ状態において、シリアルＲＯＭ３０の１ページ分のデータを記憶したバッファ部２０９のＳＲＡＭ２０９１から、ＣＰＵ１０の指定に係る４バイト分のデータを切り出す処理を管理する。
【００６９】
本図において、ＩＤＬＥは、初期状態である。
【００７０】
ＩＤＬＥ状態で、メインステートマシン部２０７１がＣＵＴＤＮ状態になると、ＬＤ状態に遷移する。ＬＤ状態では、アドレス情報の下位９ｂｉｔをバッファ部２０９内のアドレスカウンタ２０９２にロードする。
【００７１】
そして、Ｒ０状態になりバッファ部２０９から１バイト目を読み出す。以下、Ｒ１、Ｒ２、Ｒ３状態に遷移し、それぞれ、バッファ部２０９から２バイト目、３バイト目、４バイト目を読み出す。
【００７２】
その後、ＡＣＫ状態に遷移し、ＲＯＭＡＣＫＸをアクティブにして、ＣＰＵ１０に読み出したデータを出力する。
【００７３】
つぎに、図７に示した状態遷移図を参照して、ＳＲＡＭステートマシン部２０７３の状態遷移について説明する。上述のように、ＳＲＡＭステートマシン部２０７３は、切り出しステートマシン部２０７２の下位のステートマシンであり、バッファ部２０９内のＳＲＡＭ２０９１のリード・ライト処理を管理する。
【００７４】
本図において、ＩＤＬＥは、初期状態である。
【００７５】
ＩＤＬＥ状態で、切り出しステートマシン部２０７２がＬＤ状態になると、ＲＤ０状態になる。ＲＤ０状態は、リードの１クロック目である。ここで、ＳＲＡＭ２０９１へは２クロックでアクセスするようにしている。
【００７６】
つぎのクロックで、ＲＤ１状態に遷移する。ＲＤ１状態は、リードの２クロック目である。ここで、ＳＲＡＭ２０９１へのリード信号をアクティブにしてデータを読み出す。この処理を切り出しステートマシン部２０７２がＲ３になるまで繰り返すことにより、４バイト分のデータを読み出すことができる。その後、ＩＤＬＥ状態に戻る。
【００７７】
また、ＩＤＬＥ状態でメインステートマシン部２０７１がＤＡＴＡ状態で、かつ、ＢＩＴＣＮＴが７で、かつ、ＣＬＫＣＮＴが３になると、ＷＲ０状態に遷移する。ＷＲ０状態は、ライトの１クロック目である。つぎのクロックで、ＷＲ１状態に遷移する。ＷＲ１状態は、ライトの２クロック目である。ここで、ＳＲＡＭ２０９１へのライト信号をアクティブにして、シフトレジスタ部２０８のデータをＳＲＡＭ２０９１を書き込む。そして、バッファ部２０９のアドレスカウンタ２０９２へのインクリメント信号をアクティブにして、アドレスカウンタ２０９２をインクリメントする。
【００７８】
つぎに、メモリコントローラ２０全体の処理動作について説明する。
【００７９】
ＣＰＵ１０からメモリコントローラ２０にアドレスが出力されることで、シリアルＲＯＭ３０に対するリードサイクルが開始する。
【００８０】
メモリコントローラ２０内のアドレスデコーダが、ＣＰＵ１０が出力したアドレスを、ＡＤ、ＲＯＭＲＥＱ、ＲＷＸに変換する。これらの信号は、シリアルＲＯＭ制御回路２００に入力される。
【００８１】
ＲＯＭＲＥＱＸがアクティブになると、ページレジスタ部２０５が記憶している前回のページアドレスと、要求のあったページアドレスとが比較部２０６により比較され、一致しているときにはＨＩＴ信号がアクティブとなって、メインステートマシン部２０７１に入力される。
【００８２】
一方、一致しないときにはＨＩＴ信号は非アクティブであり、メインステートマシン部２０７１は、ＣＭＤ状態に推移する。
【００８３】
ＣＭＤ状態で、８ｂｉｔのオペコードがセレクタ部２０３によりシフトレジスタ部２０４に入力される。シフトレジスタ部２０４は、ＳＣＫの１クロック毎に、オペコードをシリアルデータとしてシリアルＲＯＭ３０に出力する。
【００８４】
そして、メインステートマシン部２０７１は、ＡＤＲ状態に遷移して、２４ビットのページアドレスがセレクタ部２０３によりシフトレジスタ部２０４に入力される。シフトレジスタ部２０４は、ＳＣＫの１クロック毎に、ページアドレスをシリアルデータとしてシリアルＲＯＭ３０に出力する。
【００８５】
つぎのＤＮＴＸ状態は、将来の拡張のために設けられたものであり、シリアルＲＯＭ３０の仕様にしたがい、３２ｂｉｔのダミーデータを出力してＤＡＴＡ状態に遷移する。
【００８６】
ＤＡＴＡ状態では、シリアルＲＯＭ３０のＳＯからシリアルデータが出力されるので、ビット毎にシフトレジスタ２０８に取り込む。シフトレジスタ２０８が８ｂｉｔ分のデータを取り込むと、ＳＲＡＭステートマシン部２０７３がＩＤＬＥ状態からＷＲ０状態、続けて、ＷＲ１状態に遷移する。
【００８７】
ＷＲ１状態でバッファ部２０９のＳＲＡＭ２０９１へのライト信号がアクティブになり、このときのシフトレジスタ部２０８の内容が、ＳＲＡＭ２０９１に書き込まれる。
【００８８】
ＳＲＡＭステートマシン部２０７３はＩＤＬＥ状態に戻り、つぎの８ｂｉｔが溜まるまで待つ。この動作を１ページ分、すなわち、本実施例では５１２バイト分繰り返す。これにより、バッファ部２０９は、１ページ分のすべてのデータを格納することになる。
【００８９】
つぎに、メインステートマシン部２０７１は、ＣＵＴＤＮ状態に遷移する。ＣＵＴＤＮ状態では、バッファ部２０９のＳＲＡＭ２０９１に書き込まれた１ページ分のデータから、ＣＰＵ１０の要求に対応する４バイト分のデータが読み出される。これにより、シリアルＲＯＭ３０に対するリードサイクルが終了する。
【００９０】
読み出されたデータは、ＣＰＵ１０に出力され、ＣＰＵ１０が実行する。
【００９１】
なお、バッファ部２０９のＳＲＡＭ２０９１には、１ページ分のデータが書き込まれるため、同じページ内のデータの読み出し要求が続くと、シリアルＲＯＭ３０へのアクセスを行なうことなく、ＣＰＵ１０にデータを出力することができる。
【００９２】
すなわち、ページレジスタ部２０５が記憶している前回のページアドレスと、要求のあったページアドレスとが一致しているときには、比較部２０６は、ＨＩＴ信号をアクティブにする。
【００９３】
メインステートマシン部２０７１は、ＩＤＬＥ状態で、ＲＯＭＲＥＱＸとＨＩＴとが共にアクティブになると、ＣＵＴＤＮ状態に遷移する。そして、バッファ部２０９のＳＲＡＭ２０９１に書き込まれた１ページ分のデータから、ＣＰＵ１０の要求に対応する４バイト分のデータを読み出して、３２ｂｉｔデータとしてＣＰＵ１０に出力する。これにより、同じページ内のデータの読み出し要求に対する応答時間を大幅に短縮することができる。
【００９４】
上述のように、ＣＰＵ１０がシリアルＲＯＭ３０に格納したプログラムを読み出すのは、実質的に起動時に限られ、印刷実行時には、ＲＡＭ４０にコピーしたプログラムにより処理を行なう。このため、シリアルＲＯＭ３０を用いることによる印刷処理速度への影響は少ないので、印刷処理速度をなるべく低下させずに、ＲＯＭアクセス用の信号線を減少させることができる。
【００９５】
また、起動時の初期設定後に行なわれるシリアルＲＯＭ３０へのアクセスは、プリンタ処理プログラムをコピーする目的である。このため、連続したデータを読み込むことになり、バッファに書き込んだページのヒット率は高いことが期待される。したがって、バッファを用いることにより、シリアルＲＯＭ３０を用いることによる起動時の処理速度への影響も少なくすることができる。
【００９６】
なお、本実施形態では、ＣＰＵ１０の負荷を軽減するため、メモリコントローラ２００を設け、ＣＰＵ１０はメモリコントローラ２００を介してシリアルＲＯＭ３０にアクセスするようにしているが、ＣＰＵ１０自身にシリアルＲＯＭ制御回路を設けて、ＣＰＵ１０が直接シリアルＲＯＭ３０にアクセスするようにしてもよい。
【００９７】
また、本実施形態では、プリンタコントローラのクロック（ＣＬＫ）を分周してＳＣＫのクロックを発生させているが、高速のシリアルＲＯＭとＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋ  Ｌｏｏｐ）とを用いることにより、クロック（ＣＬＫ）を逓倍したクロックを発生させると、より高速なアクセスが可能となる。
【図面の簡単な説明】
【図１】コントローラの構成の一例を示すブロック図。
【図２】シリアルＲＯＭ制御回路の構成を示すブロック図。
【図３】ステートマシン部の内部構成を示すブロック図。
【図４】バッファ部の内部構成を示すブロック図。
【図５】メインステートマシン部の状態遷移図。
【図６】切り出しステートマシン部の状態遷移図。
【図７】ＳＲＡＭステートマシン部の状態遷移図。
【図８】従来のプリンタコントローラの構成を示すブロック図。
【図９】ＲＯＭの構成を示すブロック図。
【図１０】ＲＯＭのメモリマップを示す図。
【符号の説明】
２０  メモリコントローラ、４５  ＲＡＭコネクタ、５０  ＩＯコントローラ、６０  ＲＯＭバス、７０  ＲＡＭバス、８０  ＩＯバス、１２０  メモリコントローラ、１３１  ＲＯＭチップ、１３１ｃ  フォントデータ、１３１ｂ  プリンタ処理プログラム、１３１ａ  起動プログラム、１３５  ＲＯＭコネクタ、１４５  ＲＡＭコネクタ、１５０  ＩＯコントローラ、１６０  ＲＯＭバス、１７０ＲＡＭバス、１８０  ＩＯバス、２００  シリアルＲＯＭ制御回路、２０１  アドレスレジスタ、２０２  ページアドレス変換部、２０３  セレクタ部、２０４  シフトレジスタ部、２０５  ページレジスタ部、２０６  比較部、２０７  ステートマシン部、２０８  シフトレジスタ、２０８  シフトレジスタ部、２０９  バッファ部、２１０  リードレジスタ部、２０７１  メインステートマシン部、２０７２  切り出しステートマシン部、２０７３  ＳＲＡＭステートマシン部、２０９２  アドレスカウンタ、２０９３  セレクタ
【図１】
2004240693.tif 000003
【図２】
2004240693.tif 000004
【図３】
2004240693.tif 000005
【図４】
2004240693.tif 000006
【図５】
2004240693.tif 000007
【図６】
2004240693.tif 000008
【図７】
2004240693.tif 000009
【図８】
2004240693.tif 000010
【図９】
2004240693.tif 000011
【図１０】
2004240693.tif 000012