本発明は、信号線を複数のデバイスで共用する電子機器に関する。
従来より、電子機器としては、パーソナルコンピュータ(以下、「パソコン」と表現する。)などの電子計算機やレーザプリンタ装置などの画像形成装置が知られている。この種の電子機器では、信号線としてのバスを介して複数のデバイスと、それら各デバイスを統括制御する制御装置と、が接続される。デバイスとしては、例えば、メモリモジュールやPCI(Peripheral Component Interconnect)機器を挙げることができ、メモリモジュールは、バスを通じてメモリコントローラと接続され、PCI機器は、PCIバスを介してPCIコントローラと接続される。
また、上記電子機器としては、デバイス(メモリモジュール等)を増設・付替することが可能なものが知られている(例えば特許文献1,2参照)。デバイスを増設・付替可能な構成の電子機器では、利用者の目的に応じて、種類(能力)の異なるデバイスが接続される。このため、従来装置では、増設・付替されたデバイスに応じた処理の切替を行うことがなされている。
特開平6−350907号公報
特開平6−214879号公報
ところで、デバイスを増設・付替可能な上記電子機器では、バスに接続されるデバイスの数・種類によって、バスの負荷容量が変化することが知られている。即ち、バスを複数のデバイスにて共用する場合には、デバイスの接続によって信号入力側から見たバスの静電容量等が変化し、特にバスの負荷容量が増大した場合には、信号の遅延が生じて、バスに入力された信号が受け側のデバイスに到達するまでの時間が増大する。
通常、デバイスを制御する制御装置(メモリコントローラ等)では、上記複数のデバイスで共用するバスと、各デバイス毎に用意された専用線と、を用いて各種制御信号を入力し、複数のデバイスの一つを選択的に制御する。このため、複数のデバイスで共用するバスにおいて過度の信号の遅延が起こると、専用線を介した制御信号のデバイスへの入力タイミングと、バスを介した制御信号のデバイスへの入力タイミングと、が合わなくなり、デバイスを正常に駆動することができなくなる。
このような問題から、デバイスを増設・付替可能な従来の電子機器では、製品マニュアル等を用いて利用者に対し推奨するデバイスを提示し、利用者に対して、増設・付替するデバイスを制約するなどしていた。しかしながら、このような手法では、単にデバイスの選択自由度を狭めるだけであるため、デバイスの選択自由度を求める利用者に、不満が及ぶ可能性が高かった。
本発明は、こうした問題に鑑みなされたものであって、様々な種類のデバイスの増設・付替に対応でき、信号線の負荷容量の変化に依らず、従来より確実に、デバイスを正常に駆動することのできる電子機器を提供することを目的とする。
かかる目的を達成するためになされた請求項1記載の発明は、複数種類のデバイスが共用する信号線と、その信号線を介し、信号線に接続されたデバイスに信号入力を行うことで、そのデバイスを制御する制御手段と、制御手段から上記デバイスへ信号線を介して入力される信号の受付を、デバイスに対して指示する受付指示手段と、を備える電子機器において、推定手段と、変更手段と、を設けたことを特徴とする。
推定手段は、信号線の負荷容量を推定し、変更手段は、この推定手段の推定結果に基づいて、受付指示手段が上記デバイスに対して行う指示の出力タイミングを変更する。
この電子機器によれば、変更手段が、信号線の負荷容量に応じて、信号の受付時期を変更するので、デバイスの追加などにより信号線の負荷容量が増大し、デバイスに入力される信号の遅延量が大きくなった場合であっても、不適切なタイミングで、デバイスが制御手段からの入力信号の受付を開始してしまうのを防止することができる。
従って、この電子機器によれば、信号線の負荷容量の変化に依らず、各デバイスを良好に駆動することができ、様々なデバイスの接続に対応することができる。
また、信号線の負荷容量の変化を原因とする上記問題は、制御手段及び受付指示手段の動作タイミングを規定するクロック信号の周波数を変更することで解消されてもよい。
請求項2記載の発明は、複数種類のデバイスが共用する信号線と、その信号線を介し、信号線に接続されたデバイスに信号入力を行うことで、デバイスを制御する制御手段と、制御手段からデバイスへ信号線を介して入力される信号の受付を、デバイスに対して指示する受付指示手段と、制御手段及び受付指示手段を同期動作させるためのクロック信号を、制御手段及び受付指示手段に入力するクロック信号入力手段と、を備える電子機器に、信号線の負荷容量を推定する推定手段と、クロック信号の周波数を変更する変更手段と、を設けたものである。
この電子機器においては、変更手段が、推定手段の推定結果に基づいて、クロック信号入力手段が制御手段及び受付指示手段に入力するクロック信号の周波数を変更する。
このように構成された請求項2記載の電子機器では、制御手段及び受付指示手段がクロック信号に基づいて同期動作するため、制御手段が信号線に信号を出力してから受付指示手段がデバイスに対して信号の受付を指示するまでの期間は、クロック信号の周期で定まる。
従って、変更手段によりクロック信号の周波数を低くすれば、制御手段が信号線に信号を出力してから受付指示手段がデバイスに対して信号の受付を指示するまでの期間が長くなる。
よって、この電子機器によれば、制御手段からデバイスへ入力される信号に遅延が生じる場合であっても、遅延量に相当する時間、信号の受付時期を遅らせることができ、信号線の負荷容量に依らず、デバイスを良好に駆動することができる。
また、請求項1又は請求項2記載の電子機器においては、推定手段を請求項3記載のように構成するとよい。請求項3記載の電子機器における推定手段は、信号線に接続されているデバイスを判別し、その結果に基づいて、信号線の負荷容量を推定する。
このように構成された請求項3記載の電子機器によれば、負荷容量の推定に必要なハードウェア構成を必要とせず、ソフトウェア的に負荷容量の推定を効率よく行うことができる。
また、信号線に接続されているデバイスが、自身(デバイス)の特徴を表すデバイス情報を記憶するものである場合には、電子機器に、デバイス情報を、そのデバイス情報を記憶するデバイスから取得するデバイス情報取得手段を設け、デバイス情報取得手段が取得したデバイス情報に基づいて、信号線の負荷容量を推定し、その推定結果に基づいて、受付指示のタイミング変更、クロック信号の周波数変更を行うようにするとよい。
デバイス情報に基づいて信号線の負荷容量を推定し、それに応じた処理を行うようにすれば、電子機器の構成を簡単にすることができる。
請求項4記載の電子機器は、複数種類のデバイスが共用する信号線と、信号線を介し、信号線に接続されたデバイスに信号入力を行うことで、そのデバイスを制御する制御手段と、制御手段からデバイスへ信号線を介して入力される信号の受付を、デバイスに対して指示する受付指示手段と、デバイス情報取得手段と、変更手段と、を備える電子機器である。
この電子機器における変更手段は、デバイス情報取得手段が取得した上記信号線に接続されているデバイスが記憶するデバイス情報に基づき、受付指示手段がデバイスに対して行う上記指示の出力タイミングを変更する。
請求項4記載の発明によれば、請求項1記載の電子機器と同様の効果を得ることができる他、デバイス情報を用いるため、信号線の負荷容量に応じた受付時期の変更を、簡単な機器構成で実現することができる。
また、請求項5記載の電子機器は、複数種類のデバイスが共用する信号線と、信号線を介し、信号線に接続されたデバイスに信号入力を行うことで、そのデバイスを制御する制御手段と、制御手段からデバイスへ信号線を介して入力される信号の受付を、デバイスに対して指示する受付指示手段と、制御手段及び受付指示手段を同期動作させるためのクロック信号を、制御手段及び受付指示手段に入力するクロック信号入力手段と、デバイス情報取得手段と、クロック信号の周波数を変更する変更手段と、を備える電子機器である。
この電子機器における変更手段は、デバイス情報取得手段が取得した上記信号線に接続されているデバイスが記憶するデバイス情報に基づいて、クロック信号入力手段が制御手段及び受付指示手段に入力するクロック信号の周波数を変更する。
請求項5記載の発明によれば、請求項2記載の電子機器と同様の効果を得ることができる他、デバイス情報を用いるため、信号線の負荷容量の応じたクロック信号の周波数変更を、簡単な機器構成で実現することができる。
尚、請求項1〜請求項5記載の発明は、請求項6記載のように、信号線に接続されるデバイスがメモリモジュールである電子機器に適用されるとよい。
パーソナルコンピュータや、レーザプリンタ装置などは、メモリモジュールを増設することが可能な構成にされていることが多いが、このような電子機器に、請求項6記載の発明を適用すれば、増設するメモリモジュールの種類(例えば、メモリモジュールの記憶容量)によっては、メモリモジュールを駆動することができなくなる問題を解消することができる。
また、請求項3記載の電子機器において、デバイスをメモリモジュールとする場合には、推定手段を請求項7記載のように構成するのがよい。
請求項7記載の電子機器においては、推定手段が、信号線に接続されるメモリモジュールに割り当てられるアドレスに、データの書込及び読込の少なくとも一方を実行することにより、信号線に接続されているメモリモジュールを判別し、その結果に基づいて、信号線の負荷容量を推定する。このように構成された請求項7記載の発明によれば、簡単な機器構成で、請求項3記載の電子機器を構成することができる。
その他、請求項4又は請求項5記載の電子機器において、信号線に接続されるデバイスが、SPD(Serial Presence Detection)チップを内蔵するメモリモジュールである場合には、信号線に接続されたメモリモジュールのSPDチップに記録された情報を、デバイス情報として、メモリモジュールから取得するように上記デバイス情報取得手段を構成するとよい。SPDチップに記録された情報に基づけば、メモリモジュールの記憶容量等が容易にわかるため、信号線の負荷容量に応じたバッファチップの切替等を簡単に行うことができる。
以下に、本発明の実施例について、図面とともに説明する。図1は、本発明が適用された電子機器としてのプリンタ装置1の構成を表すブロック図である。
本実施例のプリンタ装置1は、当該装置各部を統括制御するCPU11と、各種プログラムやパラメータ等を記憶するROM13と、画像データの格納やCPU11の作業領域に用いられるRAM15と、CPU11からの指令に従って装置各部に制御信号を入力するASIC17と、当該プリンタ装置1各部を同期動作させるための基準クロック信号CLK0を生成する発振器19と、ネットワーク伝送線を介して接続される外部装置と当該プリンタ装置1との間でデータ授受を行うネットワークインタフェース21と、USB(Universal Serial Bus)規格に基づくデータを入出力するUSB端子23と、ネットワークインタフェース21やUSB端子23を介して外部装置から入力された画像データに従って画像を用紙に形成(印刷)する画像形成部25と、ユーザが操作可能な各種キーからなる操作部27と、プリンタ装置1に関する各種情報を表示する表示部(液晶パネル等)29と、を備える。
画像形成部25は、周知のレーザプリンタ装置と同様、レーザユニットや、帯電器、感光体、現像器、転写器、定着器、これら各部をASIC17からの制御信号に従って動作させるためのエンジン基板、などからなる。画像形成部25は、ASIC17からの制御信号に従って、帯電器にて帯電された感光体にレーザを照射し、それによって感光体上に静電潜像を形成し、その静電潜像を現像器を用いて現像し、それによって感光体上に形成された現像剤像を転写器を用いて用紙に転写し、その像を定着器にて用紙に定着させることで、用紙に画像を形成する。
図1に一点鎖線で示すように、CPU11、ROM13、RAM15、ASIC17、発振器19、ネットワークインタフェース21、及びUSB端子23は、メイン基板10上に実装されている。本実施例のROM13は、複数のROMチップから構成され、本実施例のRAM15は、複数のSDRAMチップが搭載されたメモリモジュール15Mから構成されている。
図2は、メイン基板10の構成を表す説明図である。メイン基板10には、メモリモジュール15Mを装着するため複数のスロットSL1〜SL3が設けられている。製品出荷時には、複数のスロットSL1〜SL3の内の一つにメモリモジュール15Mが装着されており、他のスロットSL2,SL3は、メモリモジュール15M増設用のスロットとして機能する。尚、スロットSL2,SL3には、利用者の目的に応じて、記憶容量やメーカ等の異なる様々な種類のメモリモジュールが装着される。
その他、ASIC17には、CPU11からの指令に従ってメモリモジュール15Mを制御するメモリコントローラ(以下に説明する第一実施例又は第二実施例又は第三実施例のメモリコントローラ)が内蔵されている。
尚、本発明は、上述したように、デバイスに信号の受付を指示するタイミングを、信号の遅延量に応じて変更するなどして、信号線の負荷容量の変化を原因とする問題を解消するものであるが、信号線の負荷容量の変化を原因とする上記問題は、信号線に送出する信号の整形を行うバッファチップを切り替えることでも、解消することができる。
従って、以下では、バッファチップを切り替えて、信号線の負荷容量の変化を原因とする問題を解消する例を、第一実施例として説明し、その後、本発明の実施例を、第二実施例及び第三実施例として説明する。
図3は、第一実施例のSDRAM制御システム30の構成を表す説明図である。CPU11は、ROM13に格納されたプログラム等に基づいて各種演算処理を実行するCPUコア、ASIC17とCPUコアとの間で相互に伝送される各種データ・制御信号を中継するインタフェース回路、発振器19から入力される基準クロック信号CLK0を逓倍するPLL回路、などから構成されている。このCPUコアは、PLL回路により高周波数化されたクロックに同期して動作する。
一方、第一実施例のSDRAM制御システム30におけるメモリコントローラ40は、CPU命令解析部41、SDRAM制御部43などからなり、CPU11からの制御信号に従って、メモリモジュール15Mへ制御信号やアドレス信号ADR、データ信号などを出力する。上述したメモリモジュール15Mは、このメモリコントローラ40から入力される制御信号及びアドレス信号ADRに基づいて動作する。
CPU命令解析部41は、CPU11からの制御信号をデコード処理して、それがメモリモジュール15Mに対する制御信号であるか否か判断し、その信号がメモリモジュール15Mに対する制御信号であると判断すると、その内容(CPU11の命令内容)をSDRAM制御部43に入力する構成にされている。
SDRAM制御部43は、データ制御回路51、アドレス制御回路53、制御信号生成回路55、などからなり、CPU命令解析部41から入力されたCPU11の命令内容に従って、メモリモジュール15Mを制御するための制御信号やアドレス信号ADRなどを生成し、これをメモリモジュール15Mに入力する。
データ制御回路51は、制御信号と共にCPU11から入力されたデータ信号のメモリモジュール15Mへの出力を制御し、又、メモリモジュール15Mからデータバス61を介して入力されたデータ信号のCPU11への出力を制御する。一方、アドレス制御回路53は、CPU11から入力された制御信号に従って、メモリモジュール15Mにおけるデータ読出又は書込先のアドレスの指定を、アドレス信号ADRをメモリモジュール15Mに入力することにより行う。
その他、制御信号生成回路55は、メモリモジュール15Mの制御信号として、周知のチップセレクト(CS#)信号、ローアドレスストローブ(RAS#)信号、カラムアドレスストローブ(CAS#)信号、ライトイネーブル(WE#)信号、クロック(CLK)信号を生成し、出力するものである。この制御信号生成回路55は、第一信号生成部57と第二信号生成部59とを備えており、第一信号生成部57にて、上記RAS#信号、CAS#信号、WE#信号を生成し、第二信号生成部59にて、CS#信号、CLK信号を生成する。
メモリコントローラ40及び各メモリモジュール15Mは、データ信号を伝送するためのデータバス61と、アドレス信号ADRを伝送するためのアドレスバス63と、により相互に接続されており、メモリコントローラ40とメモリモジュール15Mとの間におけるデータの授受は、このデータバス61を介して行われる。その他、メモリモジュール15Mに対するデータの読出又は書込先のアドレスの指定は、アドレス制御回路53からアドレスバス63に、そのアドレスを示したアドレス信号ADRを送出することにより行われる。
尚、データバス61及びアドレスバス63は夫々、スロットSL1〜SL3を介して全てのメモリモジュール15Mと接続される構成にされており、データバス61及びアドレスバス63は、全メモリモジュール共通の信号線として使用される。
その他、第一信号生成部57は、上記RAS#信号、CAS#信号及びWE#信号の夫々を伝送するための信号線L1を介して、全メモリモジュール15Mと接続されており、この全メモリモジュール共通の信号線L1を介して、各メモリモジュール15Mに、上記RAS#信号、CAS#信号及びWE#信号を入力する。
一方、CS#信号及びCLK信号を伝送するための信号線L2は、メモリモジュール15M毎に用意されており(以下、メモリモジュール15M毎に用意された信号線を「専用の信号線」と称する。)、第二信号生成部59は、CS#信号及びCLK信号を伝送するための上記専用の信号線L2を介して、各メモリモジュール15Mに、CS#信号及びCLK信号を入力する。
ところで、第一実施例のメモリコントローラ40は、アドレス制御回路53と、アドレスバス63との間に、バッファ回路45を備えると共に、そのバッファ回路45を制御するための切替制御回路49を備える。
図4は、バッファ回路45の構成を表す説明図である。バッファ回路45は、アドレス制御回路53から入力されたアドレス信号ADRを増幅して、その信号波形を整形する複数種類のバッファチップ47H,47Lを備える。バッファチップ47H,47Lとしては、夫々バッファ能力(信号増幅率等)の異なるものが用いられており、これらのバッファチップ47H,47Lは、アドレスバス63の負荷容量に応じて使い分けられる。
即ち、バッファ回路45は、使用するバッファチップ47H,47Lを変更することによって、メモリモジュール15Mの搭載数により変化するアドレスバス63の負荷容量に応じた信号増幅を行う構成にされている。各バッファチップ47H,47Lの電源端子は、切替制御回路49と接続されている。
CPU命令解析部41は、CPU11から入力されるバッファ切替信号(H選択信号又はL選択信号)を、切替制御回路49に入力する構成にされており、切替制御回路49は、このバッファ切替信号に従って、複数のバッファチップ47H,47Lの中からCPU11により選択されたバッファチップ47H,47Lの一つを選択し、その選択したバッファチップ47H,47Lの電源端子に電源供給を行って、そのバッファチップ47H,47Lを動作させる。
具体的に、切替制御回路49は、H選択信号が入力されると、バッファ能力の高いバッファチップ47Hに対してHigh信号を入力して、そのバッファチップ47Hを作動させると共に、バッファ能力の低いバッファチップ47Lに対してLow信号を入力して、そのバッファチップ47Lをオフにする。一方、切替制御回路49は、L選択信号が入力されると、バッファ能力の低いバッファチップ47Lに対してHigh信号を入力して、そのバッファチップ47Lを作動させると共に、バッファ能力の高いバッファチップ47Hに対してLow信号を入力して、そのバッファチップ47Hをオフにする。即ち、切替制御回路49は、未選択のバッファチップに対してLow信号を入力し、そのバッファチップを動作させないようにする。
このようにして作動されるバッファチップ47H,47Lは、入力端(CPU11側)から入力されるアドレス信号ADRを増幅(整形)して、その増幅(整形)後のアドレス信号ADRを出力端(アドレスバス63側)に出力する。
また、CPU11は、当該プリンタ装置1の電源投入直後に、図5に示すチップ切替処理を実行して、上述したバッファチップ47H,47Lの切り替えを行う。図5は、CPU11が実行するチップ切替処理を表すフローチャートである。
CPU11は、チップ切替処理を実行すると、図6に示すように、周知の方法でメモリモジュール15Mに内蔵されているSPDチップ16からデバイスの特徴を表すデバイス情報を取得する(S110)。CPU11がSPDチップ16から取得するデバイス情報は、SPDチップ16に記録されているバンク数、バンク毎の容量等が記載された周知のSPDデータであり、CPU11は、このSPDデータに基づいて、アドレスバス63に接続されたメモリモジュール15Mの記憶容量の総計を算出する(S120)。
その後、CPU11は、メモリモジュール15Mの記憶容量の総計が予め設定された閾値以上であるか否か判断し(S130)、閾値未満であると判断すると(S130でNo)、バッファ能力をLow(ロウ)に設定するためのバッファ切替信号として、上記L選択信号をメモリコントローラ40に入力する(S140)。メモリコントローラ40では、このバッファ切替信号(L選択信号)がCPU11から入力されると、CPU命令解析部41が、そのバッファ切替信号(L選択信号)を切替制御回路49に伝達し、この信号を受けて切替制御回路49は、バッファ能力の低いバッファチップ47Lを、上記手法により選択的に動作させる。
一方、S130においてメモリモジュール15Mの記憶容量の総計が予め設定された閾値以上であると判断すると(S130でYes)、CPU11は、バッファ能力をHigh(ハイ)に設定するためのバッファ切替信号として、上記H選択信号をメモリコントローラ40に入力する(S150)。メモリコントローラ40では、このバッファ切替信号(H選択信号)がCPU11から入力されると、CPU命令解析部41が、そのバッファ切替信号(H選択信号)を切替制御回路49に伝達し、この信号を受けて切替制御回路49は、バッファ能力の高いバッファチップ47Hを、上記手法により選択的に動作させる。CPU11は、このようなS140又はS150での処理を終えると、当該チップ切替処理を終了する。
図7(a)は、バッファ回路でのバッファ能力が適値である場合の理想的な信号波形(点線)と、バッファ能力が大きすぎる場合の信号波形(実線)を示した説明図であり、図7(b)は、バッファ回路でのバッファ能力が適値である場合の理想的な信号波形(点線)と、バッファ能力が小さすぎる場合の信号波形(実線)を示した説明図である。
一般的に、アドレスバス63に接続されるメモリモジュール15Mの数が多くなると、アドレスバス63の負荷容量が増加し、アドレスバス63に入力されるアドレス信号ADRの立ち上がりがなまってしまうため、バッファ回路45のバッファ能力を上げる必要があるが、必要以上にバッファ能力の高いバッファチップを用いると、バッファ能力に対してアドレスバス63の負荷容量が小さいため、信号波形にオーバーシュート及びアンダーシュートが発生してしまう。オーバーシュート及びアンダーシュートが発生してしまう状況下ではメモリモジュール15Mを正常に駆動することができないばかりでなく、最悪の場合メモリモジュール15Mに損傷を与えてしまう可能性がある。
一方、オーバーシュート及びアンダーシュートを防止するために、バッファ能力の小さいバッファチップを用いると、メモリモジュール15Mが増設されアドレスバス63の負荷容量が増加した場合に、アドレスバス63の負荷容量に対してバッファ能力が小さいため、信号波形の立ち上がりがなまってしまい、メモリモジュール15Mを正常に駆動することができなくなってしまう。
これに対して、第一実施例のメモリコントローラ40では、CPU11から入力されるバッファ切替信号を受けて、切替制御回路49が、使用するバッファチップ47H,47Lを、アドレスバス63の負荷容量に最適なバッファチップ47H,47Lに切り替えるので、アドレスバス63に入力されるアドレス信号ADRを適切に整形することができる。従って、このメモリコントローラ40によれば、オーバーシュート及びアンダーシュートを発生させることなく、アドレスバス63の負荷容量増大に伴う信号遅延(立ち上がりのなまり)の問題を解消することができ、メモリモジュール15Mを良好に駆動することができる。
尚、上記実施例では、アドレスバス63とアドレス制御回路53との間に、バッファ回路45を設けることで、信号遅延の問題を解消するようにしたが、データバス61の伝送信号においても同様の信号遅延の問題が発生する場合には、データバス61とデータ制御回路51との間に、図4に示すバッファ回路45を挿入して、その信号遅延の問題を解消されればよい。
次に、第二実施例のSDRAM制御システム70について説明する。図8(a)は、第二実施例のSDRAM制御システム70の構成を表す説明図であり、図8(b)は、第二実施例のSDRAM制御システム70におけるメモリコントローラ80が備える第二信号生成部89の構成を表す説明図である。また、図8(c)は、第二信号生成部89内に設けられた各信号生成部90の構成を表す説明図である。
第二実施例のSDRAM制御システム70は、メモリコントローラ80にバッファチップ47H,47Lを切り替えるための切替制御回路49がないこと、バッファ回路83が単一のバッファチップ(図示せず)で構成されていること、制御信号生成回路85における第二信号生成部89が本実施例特有の構成になっていること、を除けば概ね第一実施例のSDRAM制御システム30と同一構成であるので、同一構成の部位については同一符号を付し、その説明を一部省略することにする。
図8(a)に示すように、第二実施例のSDRAM制御システム70におけるメモリコントローラ80は、CPU命令解析部81と、SDRAM制御部82と、SDRAM制御部82のアドレス制御回路53から出力されるアドレス信号ADRを増幅(整形)してアドレスバス63に入力するバッファ回路83と、から構成されている。
SDRAM制御部82は、データバス61に接続されたデータ制御回路51と、バッファ回路83を介してアドレスバス63に接続されたアドレス制御回路53と、制御信号生成回路85と、からなり、制御信号生成回路85は、上記RAS#信号及びCAS#信号並びにWE#信号を生成し、これらを全メモリモジュール共通の信号線L1を介して各メモリモジュール15Mに入力する第一信号生成部57と、アドレス信号ADR、RAS#信号、CAS#信号及びWE#信号の受付タイミングを示す上記CS#信号及びCLK信号を生成し、メモリモジュール15M毎に用意された専用の信号線L2を通じて、それらの信号(CS#信号及びCLK信号)を各メモリモジュール15Mに入力する第二信号生成部89と、を備える。
アドレスバス63とアドレス制御回路53との間に介在するバッファ回路83は、単一のバッファチップ(図示せず)からなり、そのバッファチップにて、アドレス制御回路53から入力されたアドレス信号ADRを増幅(整形)し、その後のアドレス信号ADRを、アドレスバス63に送出する。
一方、制御信号生成回路85が備える第二信号生成部89は、図8(b)に示すように、各メモリモジュール15M毎の信号生成部90を備える。各信号生成部90は、図8(c)に示すように、CLK信号生成部91と、CS信号生成部93と、からなり、CLK信号生成部91は、発振器19から入力される基準クロック信号CLK0に基づいて、当該信号生成部90に割り当てられたメモリモジュール15Mの基準クロックとなるCLK信号を生成し、これを専用の信号線L2を介して、そのメモリモジュール15Mに入力する。
尚、基準クロック信号CLK0と、メモリモジュール15Mに入力するCLK信号とが同一のものである場合においては、CLK信号生成部91が、発振器19から受けた基準クロック信号CLK0を、CLK信号として、メモリモジュール15Mとメモリコントローラ80との間に設けられた上記専用の信号線L2に入力する。
一方、CS信号生成部93は、元信号生成部95と、遅延回路部97と、切替回路部99と、から構成されている。元信号生成部95は、通常時(アドレスバス63の負荷容量が小さい場合)にメモリモジュール15Mに入力するCS#信号を生成するものである。この元信号生成部95の出力端は、遅延回路部97及び切替回路部99に接続されており、元信号生成部95が生成したCS#信号(以下、元信号生成部95が生成したCS#信号を特に「第一のCS#信号」と称する。)は、切替回路部99及び遅延回路部97に入力される。
遅延回路部97は、元信号生成部95から出力される第一のCS#信号を所定時間分ΔT(例えば、基準クロック信号CLK0(周波数f)の1周期分ΔT=1/f)遅らせて、この信号(以下、遅延回路部97から出力される遅延後のCS#信号を特に「第二のCS#信号」と称する。)を、切替回路部99に入力するものである。この遅延回路部97は、例えば、フリップフロップ回路を用いて構成される。
その他、切替回路部99は、元信号生成部95から入力される第一のCS#信号と、遅延回路部97から入力される第二のCS#信号のいずれか一方を、CPU11からCPU命令解析部81を通じて入力される切替信号に基づいて選択出力するものである。この切替回路部99の出力端は、専用の信号線L2を介して、当該信号生成部90に割り当てられたメモリモジュール15Mに接続されている。具体的に、本実施例の切替回路部99は、切替信号としてCPU命令解析部81からLow信号が入力されると、元信号生成部95が出力する第一のCS#信号を信号線L2に出力し、High信号が入力されると、遅延回路部97が出力する第二のCS#信号を信号線L2に出力する。
図9は、第一のCS#信号(上図)と、第二のCS#信号(下図)を表した説明図である。周知のように、アドレスバス63を通じてメモリモジュール15Mに入力されるアドレス信号ADRは、メモリモジュール15Mに入力されるCS#信号(第一のCS#信号又は第二のCS#信号)がHighからLowに移行した後CLK信号がLowからHighに移行した時点で、メモリモジュール15M側で受け付けられ、アドレス信号ADRが示すアドレス先へのデータ書込、又は、アドレスからのデータ読出、又は、その他のコマンド(制御信号)に従う処理が行われる。
アドレスバス63の負荷容量が小さい場合には、アドレス信号ADRの立ち上がりがなまることなく信号遅延が生じないので、図9上図に示すように、第一のCS#信号をメモリモジュール15Mに入力した場合であっても、アドレスの受付が正確に行われるが、アドレスバス63の負荷容量が大きく、アドレス信号ADRの立ち上がりが遅くなると(図9上図点線)、アドレス信号ADRが完全にメモリモジュール15Mに伝達される前に、アドレス信号ADRの受付がメモリモジュール15M側で開始されてしまう。このため、第一のCS#信号をメモリモジュール15Mに入力したのでは、メモリモジュール15Mを正常に駆動することができなくなってしまう。
一方、アドレスバス63の負荷容量が大きく、アドレス信号ADRの伝送に遅延が生じる場合には、図9下図に示すようにメモリモジュール15Mに第二のCS#信号を入力すると、CS#信号がHighからLowに切り替わるタイミングが遅れるのに伴って、メモリモジュール15M側でのアドレス信号ADRの受付タイミングが第一のCS#信号を入力する場合と比べて遅くなる。このため、アドレス信号ADRが完全にメモリモジュール15Mに伝達されてから、メモリモジュール15M側でアドレスの受付が開始される。
このため第二実施例のSDRAM制御システム70では、アドレスバス63の負荷容量が大きい場合であっても、メモリモジュール15Mを正常に駆動することができる。勿論、実際のアドレスバス63の負荷容量に拘わらず、アドレスバス63の負荷容量が大きい場合におけるアドレス信号ADRの遅延を考慮して、CS#信号のHighからLowへの切替タイミングを設定してもよいが、そうすると、アドレスバス63の負荷容量が小さい場合に、メモリモジュール15Mの応答性が悪くなってしまう。この点、第二実施例のSDRAM制御システム70では、切替信号に応じて、CS#信号の位相をずらすので、アドレスバス63の負荷容量が小さい場合においては、メモリモジュール15Mの応答性を悪化させることがなく、メモリモジュール15Mを正常に駆動することができる。
尚、第一のCS#信号及び第二のCS#信号の選択は、当該プリンタ装置1の電源投入時にCPU11が実行するCS切替処理にて実行される。図10は、当該プリンタ装置1の電源投入時にCPU11が実行するCS切替処理を表すフローチャートである。
CS切替処理を実行すると、CPU11は、図6に示すように、周知の方法でメモリモジュール15Mに搭載されているSPDチップ16からデバイス情報を取得する(S210)。CPU11がSPDチップ16から取得するデバイス情報は、バンク数、バンク毎の容量等が記載された周知のSPDデータであり、CPU11は、このSPDデータに基づいて、アドレスバス63に接続されたメモリモジュール15Mの記憶容量の総計を算出する(S220)。
その後、CPU11は、メモリモジュール15Mの記憶容量の総計が予め設定された閾値以上であるか否か判断し(S230)、閾値未満であると判断すると(S230でNo)、上記切替信号として、Low信号をメモリコントローラ80に入力する(S240)。メモリコントローラ80では、このLow信号がCPU11から入力されると、CPU命令解析部81が、このLow信号をCS信号生成部93の切替回路部99に入力する。この信号を受けて切替回路部99は、元信号生成部95から出力される第一のCS#信号がメモリモジュール15Mに入力されるようにする(通常設定)。
一方、S230においてメモリモジュール15Mの記憶容量の総計が予め設定された閾値以上であると判断すると(S230でYes)、CPU11は、上記切替信号として、High信号をメモリコントローラ80に入力する(S250)。メモリコントローラ80では、このHigh信号がCPU11から入力されると、CPU命令解析部81が、このHigh信号をCS信号生成部93の切替回路部99に入力する。この信号を受けて、切替回路部99は、遅延回路部97から出力される第二のCS#信号がメモリモジュール15Mに入力されるようにする。CPU11は、このようにしてS240又はS250での処理を終えると、当該CS切替処理を終了する。
尚、CS切替処理は、図11に示すように構成されてもよい。図11は、CPU11が実行する変形例のCS切替処理を表すフローチャートである。
変形例のCS切替処理を実行すると、CPU11は、S305にて、メモリモジュール15Mの数を表すパラメータDevに、製品出荷時の状態におけるメモリモジュール15Mの個数を初期値(本実施例の場合1)として設定し、続くS310にて、増設用のスロットSL2,SL3の一つを選択する。その後、CPU11は、そのスロットのメモリモジュール15Mに割り当てられる予定のアドレスに、周知の方法で、データバス61を介してテストデータの書込を実行し(S320)、更にその後、上記テストデータの書込対象としたアドレスからデータの読出を実行する(S330)。
その後、CPU11は、上記アドレスから読み出したデータが、S320にて書き込んだテストデータと一致するか否か判断し(S340)、一致すると判断すると(S340でYes)、その増設用のスロットSL2,SL3にはメモリモジュール15Mが装着されているとして、上記パラメータDevを1加算し(S345)、処理をS350に移行する。
一方、CPU11は、上記アドレスから読み出したデータが、S320にて書き込んだテストデータと一致しないと判断すると(S340でNo)、その増設用のスロットSL2,SL3にはメモリモジュール15Mが装着されていないとして、パラメータDevのカウントを行わず、処理をS350に移行する。
S350において、CPU11は、増設用のスロットSL2,SL3の全てを上記S310の処理にて選択したか否か判断し、選択していないと判断すると(S350でNo)、処理をS310に戻して、未選択のスロットSL2,SL3を一つ選択し、後続の処理(S320〜S350)を再び実行する。一方、S350において増設用のスロットSL2,SL3の全てを上記S310の処理にて選択したと判断すると(S350でYes)、CPU11は、S360に移行し、当該SDRAM制御システム70に接続されたメモリモジュール15Mが所定数以上であるか否か判断する。
ここで、メモリモジュール15Mが所定数未満であると判断すると(S360でNo)、CPU11は、上記切替信号として、Low信号をメモリコントローラ80に入力する(S370)。メモリコントローラ80では、このLow信号がCPU11から入力されると、切替回路部99が、第一のCS#信号を出力するようにされる。
一方、S360において当該SDRAM制御システム70に接続されたメモリモジュール15Mが所定数以上であると判断すると(S360でYes)、CPU11は、上記切替信号として、High信号をメモリコントローラ80に入力する(S380)。メモリコントローラ80では、このHigh信号がCPU11から入力されると、切替回路部99が、第二のCS#信号をメモリモジュール15Mに入力するようにされる。CPU11は、このようにしてS370又はS380での処理を終えると、当該CS切替処理を終了する。
この変形例によれば、SPDデータを読み込むことなく、アドレスバス63に接続されたメモリモジュール15Mを判別することができるので便利である。
続いて、第三実施例について説明する。図12(a)は、第三実施例におけるSDRAM制御システム100の構成を表す説明図であり、図12(b)は、第三実施例のSDRAM制御システム100におけるメモリコントローラ110が備える周波数変換部120の構成を表す説明図である。
第三実施例のSDRAM制御システム100は、メモリコントローラ110にバッファチップ47H,47Lを切り替えるための切替制御回路49がないこと、バッファ回路83が単一のバッファチップ(図示せず)で構成されていること、メモリコントローラ110に本実施例特有の周波数変換部120を備えること、を除けば概ね第一実施例のSDRAM制御システム30と同一構成であるので、同一構成の部位については、同一符号を付して、その説明を一部省略することにする。
図12(a)に示すように、第三実施例のSDRAM制御システム100におけるメモリコントローラ110は、CPU命令解析部111と、SDRAM制御部43と、SDRAM制御部43のアドレス制御回路53から出力されるアドレス信号ADRを増幅(整形)してアドレスバス63に入力するバッファ回路83と、図12(b)に示す構成の周波数変換部120と、を備える。
SDRAM制御部43は、データバス61に接続されたデータ制御回路51と、バッファ回路83を介してアドレスバス63に接続されたアドレス制御回路53と、制御信号生成回路55と、からなり、制御信号生成回路55は、上記RAS#信号及びCAS#信号並びにWE#信号を生成し、これらを全メモリモジュール共通の信号線L1を介して各メモリモジュール15Mに入力する第一信号生成部57と、アドレス信号ADR、RAS#信号、CAS#信号及びWE#信号のメモリモジュール15M側での受付タイミングを示す上記CS#信号及びCLK信号を生成し、これらの信号(CS#信号及びCLK信号)をメモリモジュール15M毎に用意された専用の信号線L2を通じて、各メモリモジュール15Mに入力する第二信号生成部59と、を備える。
アドレスバス63とアドレス制御回路53との間に介在するバッファ回路83は、単一のバッファチップ(図示せず)からなり、そのバッファチップにて、アドレス制御回路53から入力されたアドレス信号ADRを増幅(整形)し、その後のアドレス信号ADRを、アドレスバス63に送出する。
一方、周波数変換部120は、発振器19から入力される基準クロック信号CLK0に基づいて、SDRAM制御部43の各部を同期動作させるための基準クロック信号CLK1を生成するものである。基準クロック信号CLK1は、データ制御回路51、アドレス制御回路53、制御信号生成回路55に入力され、データ信号、アドレス信号ADR、上記各種制御信号を同期出力するために用いられる。
周波数変換部120は、発振器19から入力された基準クロック信号CLK0を切替回路部123に入力するための伝送路と、変換部121に入力するための伝送路と、を備えており、発振器19から入力された基準クロック信号は、当該周波数変換部120が備える切替回路部123と、変換部121と、に入力される。
変換部121は、発振器19から入力された基準クロック信号CLK0を、基準クロック信号CLK0よりも低い所定の周波数に変換して出力するものである。この変換部121は、例えば分周器などで構成される。変換部121から出力される周波数変換後の基準クロック信号CLK0は、切替回路部123に入力される。
切替回路部123は、CPU11からCPU命令解析部111を通じて入力される切替信号に基づいて、発振器19から入力される基準クロック信号CLK0、及び、変換部121から入力される周波数変換後の基準クロック信号CLK0のいずれか一方を、上記基準クロック信号CLK1として、選択出力するものである。この切替回路部123から出力される基準クロック信号CLK1は、データ制御回路51、アドレス制御回路53及び制御信号生成回路55に入力される。
具体的に、本実施例の切替回路部123は、切替信号としてCPU命令解析部111からLow信号が入力されると、発振器19から入力される基準クロック信号CLK0を、そのまま基準クロック信号CLK1としてSDRAM制御部43の各部に入力し、High信号が入力されると、変換部121から入力される周波数変換後の基準クロック信号CLK0を、基準クロック信号CLK1として、SDRAM制御部43の各部に入力する。
図13(a)は、発振器19から入力される基準クロック信号CLK0を、そのまま基準クロック信号CLK1としてSDRAM制御部43に入力した場合に、SDRAM制御部43から出力されるCLK信号及びアドレス信号ADR並びにCS#信号を示したタイムチャートである。また、図13(b)は、上記周波数変換後の基準クロック信号CLK0を、基準クロック信号CLK1としてSDRAM制御部43に入力した場合に、SDRAM制御部43から出力されるCLK信号及びアドレス信号ADR並びにCS#信号を示したタイムチャートである。
第二実施例と同様、第三実施例のSDRAM制御システム100では、メモリモジュール15Mに入力されるCS#信号がHighからLowに移行した後CLK信号がLowからHighに移行した時点で、アドレスバス63を通じてメモリモジュール15Mに入力されるアドレス信号ADRがメモリモジュール15M側で受け付けられ、アドレス信号ADRが示すアドレス先へのデータ書込、又は、アドレスからのデータ読出、又は、その他のコマンド(制御信号)に従う処理が行われる。
アドレスバス63の負荷容量が小さい場合には、アドレス信号ADRの立ち上がりがなまることなく信号遅延が生じないので、図13(a)に示すように、基準クロック信号CLK0をSDRAM制御部43に入力して、その基準クロック信号CLK0に同期した制御信号等(アドレス信号ADR、RAS#信号、CAS#信号、WE#信号、CS#信号、CLK信号など)をSDRAM制御部43に生成させ、それらをメモリモジュール15Mに入力しても、アドレスの受付が正確に行われるが、アドレスバス63の負荷容量が大きく、アドレス信号ADRの立ち上がりが遅くなると(図13(a)点線参照)、アドレス信号ADRが完全にメモリモジュール15Mに伝達される前に、アドレス信号ADRの受付がメモリモジュール15M側で開始されてしまう。
このため、アドレスバス63の負荷容量が大きく、アドレス信号ADRの伝送に遅延が生じる場合において、基準クロック信号CLK0をそのままSDRAM制御部43での信号生成の基準となる基準クロック信号CLK1として入力したのでは、メモリモジュール15Mを正常に駆動することができなくなってしまう。
これに対し、図13(b)に示すようにSDRAM制御部43に入力する基準クロック信号CLK1を、発振器19から出力される基準クロック信号CLK0よりも低い周波数にすると、基準クロック信号CLK1の低周波数化に伴って、メモリコントローラ110からの制御信号等の出力タイミングが遅くなる。なぜなら、制御信号等は、基準クロック信号CLK1に同期して出力されるからである。
よって、基準クロック信号CLK0よりも低い周波数の基準クロック信号CLK1を用いると、メモリモジュール15Mに入力されるCS#信号がHighからLowに切り替わるタイミングが遅れ、メモリモジュール15M側でのアドレス信号ADRの受付タイミングが遅くなる。
従って、アドレスバス63の負荷容量が大きく、アドレス信号ADRの伝送に遅延が生じる場合に、発振器19から出力される基準クロック信号CLK0よりも低い周波数を、基準クロック信号CLK1として用いると、アドレス信号ADRが完全にメモリモジュール15Mに伝達されてから、メモリモジュール15Mにアドレスの受付を開始させることができる。
この結果、第三実施例のSDRAM制御システム100では、アドレスバス63の負荷容量が大きい場合であっても、メモリモジュール15Mを正常に駆動することができる。
尚、切替回路部123を用いた基準クロック信号CLK1の切替は、当該プリンタ装置1の電源投入時にCPU11が実行するクロック切替処理にて実行される。図14は、当該プリンタ装置1の電源投入時にCPU11が実行するクロック切替処理を表すフローチャートである。
クロック切替処理を実行すると、CPU11は、図6に示すように、周知の方法でメモリモジュール15Mに搭載されているSPDチップ16からデバイス情報としてのSPDデータを取得する(S410)。CPU11は、第一及び第二実施例と同様、このSPDデータに基づいて、アドレスバス63に接続されたメモリモジュール15Mの記憶容量の総計を算出する(S420)。
その後、CPU11は、メモリモジュール15Mの記憶容量の総計が予め設定された閾値以上であるか否か判断し(S430)、閾値未満であると判断すると(S430でNo)、上記切替信号として、Low信号をメモリコントローラ110に入力する(S440)。メモリコントローラ110では、このLow信号がCPU11から入力されると、CPU命令解析部111が、このLow信号を周波数変換部120の切替回路部123に入力する。この信号を受けて切替回路部123は、発振器19から入力される基準クロック信号CLK0をそのまま、上記基準クロック信号CLK1として、SDRAM制御部43の各部に入力する。
一方、S430においてメモリモジュール15Mの記憶容量の総計が予め設定された閾値以上であると判断すると(S430でYes)、CPU11は、上記切替信号として、High信号をメモリコントローラ110に入力する(S450)。メモリコントローラ110では、このHigh信号がCPU11から入力されると、CPU命令解析部111が、このHigh信号を周波数変換部120の切替回路部123に入力する。この信号を受けて、切替回路部123は、変換部121から入力される周波数変換後の基準クロック信号CLK0を、基準クロック信号CLK1として、SDRAM制御部43の各部に入力する。CPU11は、このようにしてS440又はS450での処理を終えると、当該クロック切替処理を終了する。
尚、第二実施例と同様に、クロック切替処理は、S305からS360までの処理を実行した後、S360でNoである場合には、上記S440の処理を実行し、S360でYesである場合には、S450の処理を実行するように、構成されてもよい。
[その他]
本発明における複数種類のデバイスが共用する信号線は、アドレスバス63に相当し、制御手段は、SDRAM制御部43,82に相当する。
また、本発明の推定手段は、CPU11が実行するS210及びS220、又はS305〜S350、又はS410及びS420での処理にて実現されている。尚、アドレスバス63の負荷容量は、メモリモジュール15Mの記憶容量又はメモリモジュール15Mの個数と、相関関係があるものであるため、上記実施例では、メモリモジュール15Mの記憶容量又はメモリモジュール15Mの個数を、アドレスバス63の負荷容量の推定値として、後続の判断処理(S130,S230,S360,S430)で用いるようにした。
また、本発明の受付指示手段は、CS#信号を生成する第二信号生成部59,89に相当する。また、受付指示の出力タイミングを変更する変更手段は、CS信号生成部93が備える遅延回路部97及び切替回路部99と、CPU11が実行するCS切替処理のS230〜S250(又はS360〜S380)とにより実現されている。
この他、本発明のクロック信号入力手段は、第三実施例の周波数変換部120に相当し、クロック信号の周波数を変更する変更手段は、周波数変換部120が備える変換部121及び切替回路部123と、CPU11が実行するクロック切替処理のS430〜S450)とにより実現されている。また、デバイス情報取得手段は、CPU11が実行するS210、S310での処理にて実現されている。
また、本発明の電子機器は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、本発明は、CPU201と、PCIコントローラ203と、PCIバス205と、PCIバス205に接続されたPCIデバイス209a,209b,209c,209dと、からなる図15に示すようなPCIデバイス制御システム200に適用されてもよい。図15は、そのPCIデバイス制御システム200の構成を表す説明図である。
PCIバス205は、複数種類のPCIデバイス209a,209b,209c,209dが共用する信号線として機能するものであり、PCIコントローラ203は、このPCIバス205を介して、PCIデバイス209a,209b,209c,209dに制御信号等を入力し、PCIデバイス209a,209b,209c,209dを制御する。
このPCIデバイス制御システム200においても、PCIバス205と、PCIコントローラ203との間に、図4に示すバッファ回路45を設ければ、PCIバス205の負荷容量に応じたバッファチップ47H,47Lの切替が可能となり、各PCIデバイス209a,209b,209c,209dを良好に駆動することができる。その他、チップセレクト(CS#)信号の出力タイミングを変更したり、制御信号生成回路に入力する基準クロック信号の周波数を変更すれば、PCIバスの負荷容量に応じて、適切にPCIデバイス209a,209b,209c,209dを駆動することができる。
本発明が適用されたプリンタ装置1の構成を表すブロック図である。
メイン基板10の構成を表す説明図である。
第一実施例のSDRAM制御システム30の構成を表すブロック図である。
バッファ回路45の構成を表す回路図である。
CPU11が実行するチップ切替処理を表すフローチャートである。
SPDデータの読取態様に関する説明図である。
バッファ能力が適値である場合の理想的な信号波形及びバッファ能力が大きすぎる場合の信号波形を示した説明図(a)と、理想的な信号波形及びバッファ能力が小さすぎる場合の信号波形を示した説明図(b)である。
第二実施例のSDRAM制御システム70の構成を表すブロック図である。
第一のCS#信号(上図)と第二のCS#信号(下図)を示すタイムチャートである。
CPU11が実行するCS切替処理を表すフローチャートである。
CPU11が実行する変形例のCS切替処理を表すフローチャートである。
第三実施例のSDRAM制御システム100の構成を表すブロック図である。
第三実施例のメモリコントローラ110から出力されるCLK信号及びアドレス信号ADR並びにCS#信号を示したタイムチャートである。
CPU11が実行するクロック切替処理を表すフローチャートである。
PCIデバイス制御システム200の構成を表す説明図である。
符号の説明
1…プリンタ装置、10…メイン基板、11…CPU、13…ROM、15…RAM、15M…メモリモジュール、16…SPDチップ、17…ASIC、19…発振器、21…ネットワークインタフェース、23…USB端子、25…画像形成部、27…操作部、29…表示部、30,70,100…SDRAM制御システム、40,80,110…メモリコントローラ、41,81,111…CPU命令解析部、43,82…SDRAM制御部、45,83…バッファ回路、47H,47L…バッファチップ、49…切替制御回路、51…データ制御回路、53…アドレス制御回路、55,85…制御信号生成回路、57…第一信号生成部、59,89…第二信号生成部、61…データバス、63…アドレスバス、90…信号生成部、91…CLK信号生成部、93…CS信号生成部、95…元信号生成部、97…遅延回路部、99,123…切替回路部、120…周波数変換部、121…変換部、200…PCIデバイス制御システム、203…PCIコントローラ、205…PCIバス、209a〜209d…PCIデバイス、L1,L2…信号線、SL1〜SL3…スロット