以下、図面を参照して、実施形態について詳細に説明する。
[第1実施形態]
図1は、第1実施形態に係る画像形成装置10の構成例を示す図である。この画像形成装置10は、主制御部12及び機器制御部14がシリアルバス40を介して接続された制御装置11と、機器制御部14に接続された各種機器を含む機器群16とを含んで構成されている。シリアルバス40は、主制御部12から見た場合には送信用となる信号線Tx、及び受信用となる信号線Rxを備えた全二重の伝送路である。
機器群16に含まれる各機器は、画像形成を行なうための機器であって、例えば、感光体や現像ロール等を回転させるモータ、用紙検出のためのセンサ、或いはトナー濃度を検出するためのセンサ等が含まれる。なお、ここでは画像形成装置10を、電子写真方式で画像形成を行なう画像形成装置として説明したが、インクジェット方式で画像形成を行なう画像形成装置であってもよい。
主制御部12は、CPU(中央処理装置:Central Processing Unit)20、シリアライザ・デシリアライザ制御部22(以下、SerDes制御部22という)、及び複写レジスタ群24を備えている。
CPU20は、不図示の不揮発性の記憶部に記憶されたプログラムを実行し、画像形成装置10全体を制御する。なお、CPU20が実行するプログラムを記憶するための記憶部は、HDD(ハードディスクドライブ)、フレキシブルディスクやDVDディスク、光磁気ディスクやUSB(Universal Serial Bus)メモリ等(不図示)であってもよいし、不図示の通信IFを介して接続された他の装置の記憶媒体であってもよい。
CPU20は、CPUバス26を介してSerDes制御部22と接続されている。CPUバス26は、複数の信号線を備えたパラレルバスである。
SerDes制御部22は、CPU20からCPUバス26を介して機器制御部14に送信する情報(パラレル信号)を受け取ると、該パラレル信号をパケット化し、各パケットをシリアル信号に変換してシリアルバス40を介して機器制御部14に送信する。また、SerDes制御部22は、機器制御部14からシリアルバス40を介してシリアル形式のパケットを受信すると、当該受信したパケットをパラレル形式のパケットに変換し、該パラレル形式のパケットをデコードして、該パケットに含まれるデータを取り出す。
複写レジスタ群24は、複数のレジスタ(記憶領域)を含むメモリで構成されている。機器制御部14に含まれる入出力制御レジスタ群32の各レジスタの記憶内容が、この複写レジスタ群24に複写される。ここで、複写とは、入出力制御レジスタ群32からレジスタに記憶されたデータを読出して、該読出したデータをシリアルバス40を介して主制御部12に送信し、複写レジスタ群24の各レジスタに書込む一連の処理をいう。
機器制御部14は、シリアライザ・デシリアライザ制御部30(以下、SerDes制御部30という)、入出力制御レジスタ群32、及び駆動・受信回路34を備えている。
SerDes制御部30は、主制御部12からシリアルバス40を介してシリアル形式のパケットを受信すると、該受信したパケットをパラレル形式のパケットに変換し、パラレル形式のパケットをデコードして、該パケットに含まれるデータを取り出す。また、SerDes制御部30は、主制御部12に送信する情報(パラレル信号)をパケット化し、各パケットをシリアル信号に変換してシリアルバス40を介して主制御部12に送信する。
入出力制御レジスタ群32は、複数のレジスタ(記憶領域)を含むメモリで構成されている。入出力制御レジスタ群32の複数のレジスタは、入力レジスタと、出力レジスタとを含んでいる。入力レジスタには、各機器の状態を示すデータが書込まれる。出力レジスタには、主制御部12のCPU20から送信された各機器を制御するデータが書込まれる。また、入出力制御レジスタ群32には、割込の発生を示すデータが書込まれるレジスタ(以下、割込レジスタという)、及び割込要因を示すデータが書込まれるレジスタ(以下、割込要因レジスタという)も含まれる。
入出力制御レジスタ群32の各レジスタに記憶された記憶内容は、前述したように、主制御部12の複写レジスタ群24に複写される。本実施形態では、CPU20は、複写レジスタ群24に複写されたデータを読み出すことにより、入出力制御レジスタ群32に書込まれたデータと同じデータを参照することができる。この他、本実施形態では、CPU20は、シリアルバス40を介して入出力制御レジスタ群32に書込まれたデータを読出して取得することもできる。なお、本実施形態において、複写レジスタ群24のメモリサイズ、及び入出力制御レジスタ群32のメモリサイズは、互いに等しく、入出力制御レジスタ群32から複写レジスタ群24への複写の際には、入出力制御レジスタ群32から読み出されたデータは、当該データが記憶されていた入出力制御レジスタ群32のレジスタに対応する複写レジスタ群24のレジスタに書込まれるものとする。
駆動・受信回路34は、画像形成装置10を構成する機器群16の各機器に接続される。駆動・受信回路34は、入出力制御レジスタ群32の出力レジスタに機器を制御するためのデータが書込まれると、そのデータに応じた駆動信号を当該出力レジスタに対応する機器に出力する。機器は出力された駆動信号に応じて駆動される。また、接続された機器から当該機器の状態を示す信号が入力されると、その信号に応じたデータを当該機器の状態を示すデータ用の入力レジスタに書込む。状態を示すデータは、例えば、機器がセンサである場合には、センサの検出結果を示すデータであってもよいし、機器がモータである場合には、モータの回転状態を示すデータであってもよい。
画像形成装置10全体を制御するCPU20は、入力レジスタに書込まれたデータから機器の状態を把握し、出力レジスタに制御用のデータを書込むことにより各機器の駆動を制御している。
ただし、本実施形態では、後述するように、システムタイマの周期以下の周期で、入出力制御レジスタ群32のデータが複写レジスタ群24へ複写されるため、CPU20は、機器の状態等を把握する際には、わざわざシリアルバス40を介して入出力制御レジスタ群32からデータを取得しなくても、主制御部12に設けられた複写レジスタ群24に複写されたデータを読み出すことで、機器の状態等を把握することができる。
図2は、主制御部12のSerDes制御部22の構成例を示す図である。SerDes制御部22は、CPUバスインタフェース50、コントローラ52、パケット生成回路54、バッファ56、パラレルシリアル変換回路58、シリアルパラレル変換回路60、バッファ62、パケットデコード回路64、及びアドレスカウンタ66を備えている。
CPUバスインタフェース50は、CPUバス26を介してCPU20と通信するためのインタフェースである。コントローラ52は、SerDes制御部22を構成する各構成要素と接続され、プロトコル制御や各構成要素の動作タイミング等を制御することで、SerDes制御部22全体を制御する。
パケット生成回路54は、パケットを生成する。バッファ56は、パケット生成回路54で生成されたパケットを一時的に記憶する。パラレルシリアル変換回路(シリアライザ)58は、バッファ56に一時的に記憶されたパラレル形式のパケットをシリアル形式のパケットに変換して、シリアルバス40を介して機器制御部14に送信する。
シリアルパラレル変換回路(デシリアライザ)60は、機器制御部14からシリアルバス40を介して受信したシリアル形式のパケットをパラレル形式のパケットに変換する。バッファ62は、シリアルパラレル変換回路60で変換されたパラレル形式のパケットを一時的に記憶する。パケットデコード回路64は、バッファ62に一時的に記憶されたパラレル形式のパケットをデコードして、当該パケットに含まれるデータを取り出す。
アドレスカウンタ66は、複写レジスタ群24に入出力制御レジスタ群32から読出され転送されたデータを書込むときの書込先のアドレスを生成してコントローラ52に出力する。複写レジスタ群24へのデータの複写は、入出力制御レジスタ群32から読出され送信された予め定められたサイズのデータを複写レジスタ群24の先頭アドレスから順に書込んでいくことにより行なわれるため、予め定められたサイズのデータが書込まれる毎に、当該サイズ分インクリメントされたアドレスが出力される。アドレスカウンタ66は、複写レジスタ群24への全データの書込が終了した後、次に書込を開始する前にリセットされる(先頭アドレスのカウント値となる)。
コントローラ52には、複写レジスタ更新回路52a、読出選択回路52b、及び書込選択回路52cが、コントローラ52の機能として設けられている。
複写レジスタ更新回路52aは、入出力制御レジスタ群32の各レジスタから読出され転送されたデータを複写レジスタ群24に書込んで複写レジスタ群24の内容を更新する。
読出選択回路52bは、CPU20から、入出力制御レジスタ群32に書込まれたデータの読出要求を受けたときに、当該読出要求に基づいて、複写レジスタ群24に複写されたデータを読み出すのか、或いは入出力制御レジスタ群32に書込まれたデータを直接読み出すのかを選択して、読出処理を実行し、読み出したデータをCPU20に供給する。
書込選択回路52cは、CPU20から入出力制御レジスタ群32に対する書込要求を受けたときに、当該書込要求に基づいて、入出力制御レジスタ群32のみに対して書込むのか、或いは入出力制御レジスタ群32に書込むだけでなく複写レジスタ群24にも(複写による更新ではなく)直接書込むのかを選択して、書込処理を実行する。
図3は、機器制御部14のSerDes制御部30の構成例を示す図である。SerDes制御部30は、コントローラ80、シリアルパラレル変換回路(デシリアライザ)82、バッファ84、パケットデコード回路86、パケット生成回路88、バッファ90、パラレルシリアル変換回路(シリアライザ)92、及びアドレスカウンタ94を備えている。
コントローラ80は、SerDes制御部30を構成する他の構成要素と接続され、プロトコル制御や各構成要素の動作タイミング等を制御することで、SerDes制御部30全体を制御する。
シリアルパラレル変換回路82は、主制御部12からシリアルバス40を介して受信したシリアル形式のパケットをパラレル形式のパケットに変換する。バッファ84は、シリアルパラレル変換回路82で変換されたパラレル形式のパケットを一時的に記憶する。パケットデコード回路86は、バッファ84に一時的に記憶されたパラレル形式のパケットをデコードして、該パケットに含まれるデータを取り出す。
パケット生成回路88は、パケットを生成する。バッファ90は、パケット生成回路88で生成されたパケットを一時的に記憶する。パラレルシリアル変換回路92は、バッファ90に一時的に記憶されたパラレル形式のパケットをシリアル形式のパケットに変換して、シリアルバス40を介して主制御部12に送信する。
アドレスカウンタ94は、入出力制御レジスタ群32からデータを読み出して複写レジスタ群24に複写するときの、データの読出元のアドレスを生成してコントローラ80に出力する。複写レジスタ群24へのデータの複写は、予め定められたサイズのデータを入出力制御レジスタ群32から読み出して順次主制御部12に転送することにより行なわれるため、予め定められたサイズのデータが入出力制御レジスタ群32から読み出される毎に、当該サイズ分インクリメントされたアドレスが出力される。アドレスカウンタ94は、複写レジスタ群24への複写のための入出力制御レジスタ群32からのデータの読出しが終了したとき或いはデータの読出しを開始する際にリセットされる。
コントローラ80には、レジスタデータ転送回路80aが、コントローラ80の機能の1つとして設けられている。レジスタデータ転送回路80aは、入出力制御レジスタ群32の各レジスタに書込まれているデータを複写レジスタ群24に複写するため、入出力制御レジスタ群32からデータを読み出して、パケット生成回路88に出力し、複写レジスタ群24に書込ませるためのパケット(以下、複写パケットという)を生成させる。複写パケットは、パラレルシリアル変換回路92によりシリアル変換され、シリアルバス40を介して主制御部12に転送される。
また、コントローラ80は、入出力制御レジスタ群32の割込レジスタに割込の発生を示すデータが書込まれると、割込発生を通知する割込パケットをパケット生成回路88に生成させる。該生成された割込パケットは、パラレルシリアル変換回路92でシリアル形式のパケットに変換されて、主制御部12に送信される。主制御部12のコントローラ52は、不図示の割込信号発生回路を備える。割込信号発生回路は、割込パケットを受信すると、割込信号を発生する。CPU20は割込信号を受け取ると、割込が発生したことを把握し、複写レジスタ群24から割込要因を示すデータを読み出して割込要因に応じた処理を行なう。
なお、主制御部12のCPU20は、システムタイマを基準として動作する。システムタイマは、予め定められた時間間隔(周期)でカウントするものであって、カウント毎にCPU20に対してタイマ割込みを発生させる。システムタイマの更新(時計のカウント)は、主制御部12の基板上に設けられた不図示のタイマIC(Integrated Circuit)から供給されるクロックを基準として行なわれる。システムタイマは、リアルタイムOS(オペレーティングシステム)においては、一般的に知られている技術であるため、ここではこれ以上の説明を省略する。
また、機器制御部14にも、タイマIC(不図示)が設けられ、上記システムタイマのカウント周期と同じ長さの周期でクロックを出力する。
なお、SerDes制御部22、複写レジスタ群24、SerDes制御部30、入出力制御レジスタ群32、及び駆動・受信回路34の各々は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等のハードウェアにより構成される。
次に、本実施形態に係る制御装置11の作用について説明する。
<入出力制御レジスタ群32の更新>
CPU20は、機器を制御するための制御用のデータを書込むための書込要求をCPUバス26を介してSerDes制御部22に出力する。この書込要求には、書込むデータだけでなく、書込先となる入出力制御レジスタ群32のレジスタのアドレスが指定されている。SerDes制御部22のコントローラ52は、CPUバスインタフェース50を介して書込要求を受け取ると、パケット生成回路54、バッファ56、及びパラレルシリアル変換回路58を制御して、CPU20から受け取った書込要求をパケット化して送信する。
機器制御部14のコントローラ80は、シリアルパラレル変換回路82、バッファ84、及びパケットデコード回路86を制御して、書込要求のパケットをデコードして書込要求を取り出す。
コントローラ80は、入出力制御レジスタ群32に含まれる複数のレジスタのうち、上記デコードして得られた書込要求で指定されたアドレスのレジスタ(出力レジスタ)に、当該レジスタに対応する機器を制御するための制御用のデータを書込む。これにより、書込まれた制御用のデータに応じて該当の機器が駆動される。
また、駆動・受信回路34は、接続された機器から当該機器の状態を示す信号が入力されると、その信号に応じたデータを当該機器の状態を示すデータ用の入力レジスタに書込む。
また、本実施形態において、機器制御部14には、不図示の割込回路が設けられている。割込回路により割込(例えば、機器の動作異常など)が検出された場合には、機器制御部14のSerDes制御部30に設けられたコントローラ80は、入出力制御レジスタ群32の割込レジスタに、割込発生を示すデータを書込むと共に、割込要因レジスタに割込要因のデータを書込む。また、コントローラ80は、パケット生成回路88に割込パケットを生成させ、パラレルシリアル変換回路92でシリアル変換して主制御部12に送信する。
<複写レジスタ群24への複写>
本実施形態の制御装置11では、システムタイマのカウント周期以下の周期で、入出力制御レジスタ群32に記憶された全データを読出してシリアルバス40を介して送信し複写レジスタ群24に書込む複写処理が行なわれる。例えば、システムタイマのカウント周期が1msであれば、複写周期は、1ms以下の周期とされる。本実施形態では、入出力制御レジスタ群32に記憶された各データを先頭アドレスから順に読出して、読出したデータから複写先のアドレスを指定せずに複数のパケットを生成して送信し、複写レジスタ群24の先頭アドレスから該複数のパケットの転送順にデータを書込む。
以下、この複写処理を詳しく説明する。
機器制御部14のSerDes制御部30のコントローラ80は、機器制御部14に設けられたタイマICからクロックが出力されると、入出力制御レジスタ群32から複写レジスタ群24へのデータ複写のための読出処理を開始する。なお、ここでは、タイマICのクロックが出力された時を読出開始タイミングとしたが、これは一例であって、読出開始タイミングはこれに限定されない。
具体的には、コントローラ80のレジスタデータ転送回路80aは、アドレスカウンタ94から出力されたアドレスに従って、入出力制御レジスタ群32の先頭アドレスから予め定められた読出サイズ分の(例えば数ワードずつ)データを順次読み出して、パケット生成回路88に該読み出したデータを順次入力する。アドレスカウンタ94の初期値は、入出力制御レジスタ群32の先頭アドレスとされる。そして、レジスタデータ転送回路80aがデータを読み出す毎に、アドレスカウンタ94が上記読出サイズ分だけカウントアップする。レジスタデータ転送回路80aは、入出力制御レジスタ群32から全データを読み出すまで、アドレスカウンタ94のカウント値が示すアドレスから上記読出サイズ分のデータを読み出してパケット生成回路88に入力することを繰り返す。
パケット生成回路88は、複写対象のデータが入力される毎に、該データを複写レジスタ群24に書込ませるための複写命令のパケット(以下、複写パケットという)を生成し、バッファ90に記憶する。なお、複写パケットには、複写先(書込先)のアドレスの情報は含めない。これにより、転送データ量が削減される。
パラレルシリアル変換回路92は、レジスタデータ転送回路80aの制御の下、バッファ90に記憶された複写パケットをシリアル信号に変換して、シリアルバス40の信号線Rxに出力する。これにより、入出力制御レジスタ群32に記憶されている全データから複数の複写パケットが生成されて主制御部12に転送される。
主制御部12に転送された複写パケットは、シリアルパラレル変換回路60によりパラレル形式の複写パケットに変換されて、バッファ62に記憶される。パケットデコード回路64は、バッファ62に記憶された複写パケットをデコードして複写すべきデータを取り出す。
複写レジスタ更新回路52aは、パケットデコード回路64でデコードされて得られたデータを、複写レジスタ群24の、アドレスカウンタ66から出力されたアドレスが示すレジスタに書込む。1つの複写パケットにより書込まれるデータのサイズは、入出力制御レジスタ群32からデータを読み出したときの読出しサイズに等しい。アドレスカウンタ66の初期値は、複写レジスタ群24の先頭アドレスとされる。そして、複写レジスタ更新回路52aが、複写パケットのデータを書込む毎に、アドレスカウンタ66が上記読出サイズ分だけカウントアップする。複写レジスタ更新回路52aは、入出力制御レジスタ群32から読み出され送信された全データを書込むまで、アドレスカウンタ66のカウント値が示すアドレスにデータを書込む処理を繰り返す。
このように、入出力制御レジスタ群32の先頭アドレスから順に同じサイズのデータを読み出して順次複写レジスタ群24に書込むことを繰り返すことにより最終的に全データを複写レジスタ群24に複写するため、複写パケットで複写先(書込先)のアドレスを指定しなくても、問題なく複写処理が実行される。これにより、複写処理が簡易化する。
また、本実施形態では、上記説明したように、システムタイマのカウント周期以下の周期で、複写レジスタ群24へ全データが複写されるように、レジスタデータ転送回路80a及び複写レジスタ更新回路52aが構成されている。すなわち、全データの複写開始から複写終了までの時間は、システムタイマのカウント周期以下の周期となる。ここで、複写開始とは、入出力制御レジスタ群32から複写のためのデータの読出しを開始するタイミングをいい、複写終了とは、複写レジスタ群24への全データの書込が終了するタイミングをいう。従って、あるカウント周期の途中で、入出力制御レジスタ群32のデータが更新された場合、遅くとも次のカウント周期で、当該更新されたデータが複写レジスタ群24に複写される。CPU20は、複写レジスタ群24に複写されたデータを参照することで、システムタイマのカウント周期以下の周期で更新されたデータを参照できる。なお、複写周期は予め設定しておく。
更にまた、入出力制御レジスタ群32のデータから生成された複数の複写パケットは、予め定められた時間以上の間隔をあけて(ただし、複写開始から複写終了までの時間がシステムタイマのカウント周期以下となるように)1つずつ送信される。従って、複写パケットの転送処理中に割込が発生した場合でも、当該複写パケットが送信された後、次の複写パケットが送信されるまでの間に、割込パケットを主制御部12に送信することができる。もちろん、複写パケットの送信間隔は、割込パケットの送信がなければ、間隔を詰めて(すなわち、割込パケットを発行する場合に比べて送信間隔を短くして)送信するようにしてもよい。
<CPU20によるデータ読出>
CPU20は、入出力制御レジスタ群32に書込まれたデータを参照する場合、入出力制御レジスタ群32から直接データを取得するのではなく、複写レジスタ群24からデータを読み出すことで、入出力制御レジスタ群32に書込まれたデータを参照することができる。
従って、CPU20は、データ読出しの際には、複写レジスタ群24のアドレスを指定した読出要求をSerDes制御部22に出力する。SerDes制御部22のコントローラ52の読出選択回路52bは、CPUバスインタフェース50を介してCPU20から複写レジスタ群24のデータの読出要求を取得した場合には、複写レジスタ群24に複写されたデータ(読出要求で指定されたアドレスのデータ)を読み出して、CPU20に供給する。入出力制御レジスタ群32に対する読出要求のパケットの発行はなされない。
<従来の制御装置との比較>
ここで、図17に示す従来の制御装置の構成例と比較しながら、本実施形態の制御装置11について説明する。
図17(A)に示すように、従来の制御装置は、入出力制御レジスタ群が、主制御部側に設けられていた。主制御部の入出力制御レジスタ群と、機器制御部の駆動・受信回路とはパラレル信号線により接続され、入出力制御レジスタ群から駆動・受信回路に対して、モータやスイッチなどの駆動を制御するデータがパラレル信号線を介して出力され、駆動・受信回路から入出力制御レジスタ群に対して、センサの検出結果等の状態を示すデータがパラレル信号線を介して入力されていた。すなわち、機器の数に比例した分のパラレル信号線で主制御部と機器制御部とを接続する必要があった。しかしながら、主制御部の基板の実装スペース等の問題により、多数のパラレル信号線を配設することは問題があった。
そこで、図17(B)に示すように、主制御部及び機器制御部の各々にシリアルI/Oインタフェース(SIO IF)を設け、複数のシリアル信号線で主制御部と機器制御部とを接続し、複数のパラレル信号線をいくつかのグループに分け、1つのグループに対して1つのシリアル信号線を対応させて配設し、同一グループに属する複数のパラレル信号をシリアル信号に変換して、対応するシリアル信号線を介して送受信させる構成も考えられる。この構成により、主制御部と機器制御部とを接続する信号線の数を減らすことができるが、駆動・受信回路に接続される機器が増加する等により、機器の変更があった場合には、シリアル信号線が増加してしまう。また、このように機器が増加する場合、グルーピングを新たに設定する必要があり、機器制御部だけでなく、主制御部の作り替えも必要となる。
これに対して、本実施形態の制御装置11は、主制御部12及び機器制御部14を汎用的なシリアルバス40により接続し、機器制御部14に入出力制御レジスタ群32を設けた。これにより、また、主制御部12と機器制御部14を接続する信号線の数が削減され、主制御部12や機器制御部14の基板面積も小さくでき、コスト削減につながる。また、機能変更(機器群16の機器の増加や削減など)が生じても、主制御部12及び機器制御部14を接続する信号線に変化は生じない。また、主制御部12の構成は、増加する機器に依存しないため、主制御部12の作り替えの必要もない。
また、本実施形態では、シリアルバス40を採用したため、パレラルバスのように、遠隔接続時の信号品質の劣化(スキュー、バラつき等)の問題は生じない。
また、シリアルバス40は、汎用的な例えば数100Mbpsのシリアル伝送路であるため、当該伝送路のインタフェースとなるSerDes制御部22やSerDes制御部30等は、安価なデバイス(ASIC,FPGA)で実現される。また、パケット方式で通信するため、エラーチェックを容易にでき、伝送路の信頼性が向上する。
なお、入出力制御レジスタ群32を機器制御部14側に設け、入出力制御レジスタ群32から常にデータを読出す構成とした場合、データを読み出す際の遅延が問題となる。すなわち、入出力制御レジスタ群32に対する読出要求をシリアルバス40を介して送信してからデータが読み出されてCPU20に送信されるまでの時間がかかる。しかしながら、本実施形態では、主制御部12に複写レジスタ群24を設け、入出力制御レジスタ群32のデータを複写レジスタ群24に複写するようにしたため、CPU20は、シリアルバス40を介さずとも、複写レジスタ群24に複写されたデータを読み出せば、入出力制御レジスタ群32に記憶されたデータを取得できる。
従って、データ読出しの遅延は生じず、必要以上に高速な伝送路を用いなくても従来と同等の読出性能が確保される。なお、書込については、CPU20からSerDes制御部22に対して書込要求を出力しさえすれば、その後は、SerDes制御部22でパケットが生成され、機器制御部14で書込処理されるため、CPU20が書込処理待ちとなることはない。
<直接読出処理>
なお、上記例では、CPU20が複写レジスタ群24から複写されたデータを読み出す例について説明したが、これに限定されない。入出力制御レジスタ群32から直接データを読み出す読出要求をCPU20が出力した場合には、上述した読出選択回路52bの機能により、入出力制御レジスタ群32からデータを読み出してCPU20に転送することができる。
読出選択回路52bは、複写レジスタ群24からデータを読み出す通常の読出要求を受け取った場合には、上記実施形態で説明したように、複写レジスタ群24の指定アドレスのレジスタからデータを読み出して、CPU20に供給する。一方、読出選択回路52bは、入出力制御レジスタ群32から直接データを読み出す読出要求を受け取った場合には、複写レジスタ群24からのデータの読出しは行なわず、入出力制御レジスタ群32からデータの読出しを行なう読出処理(直接読出処理)を行なう。
具体的には、読出選択回路52bは、入出力制御レジスタ群32のアドレスが指定された読出要求をパケット生成回路54によりパケット化して、バッファ56に記憶させ、パラレルシリアル変換回路58により当該バッファ56に記憶した読出要求のパケットをシリアル信号のパケットに変換して、シリアルバス40の信号線Txに出力する。
機器制御部14のSerDes制御部30において、読出要求のパケットを受信すると、該受信したパケットをシリアルパラレル変換回路82によりパラレル化して、バッファ84に記憶し、パケットデコード回路86により当該バッファ84に記憶した読出要求のパケットをデコードして、読出要求のデータを取り出す。コントローラ80は、該読出要求に基づき、当該読出要求の指定アドレスが示す入出力制御レジスタ群32のレジスタからデータを読み出して、パケット生成回路88により該読み出したデータをパケット化し、バッファ90に記憶し、パラレルシリアル変換回路92で、バッファ90に記憶したパケットをシリアル信号に変換して、信号線Rxに出力する。
主制御部12の読出選択回路52bは、機器制御部14から送信された読出データのパケットを受け取ると、シリアルパラレル変換回路60によりパラレル変換し、パケットデコード回路64によりデコードしてデータを取り出して、CPUバスインタフェース50を介してCPUバス26に伝送しCPU20に供給する。
このように直接読出処理を可能に構成することで、CPU20が、入出力制御レジスタ群32のデータを直接参照したい場合に対応可能となる。
<直接書込処理>
また、上記例では、CPU20から書込要求が出力されると、入出力制御レジスタ群32にのみデータを書込むよう動作する例を説明したが、これに限定されない。例えば、CPU20から、入出力制御レジスタ群32だけでなく、複写レジスタ群24にも直接データを書込む書込要求があった場合には、書込選択回路52cの機能により、複写レジスタ群24に対しても指定されたアドレスにデータを書込む処理(直接書込処理)を行なうことができる。
具体的には、書込選択回路52cは、上記例と同様に、書込要求のパケットを生成して、シリアル化し、シリアルバス40を介して機器制御部14に送信して、入出力制御レジスタ群32のレジスタのうち、書込要求で指定されたアドレスのレジスタに、指定されたデータを書込ませる。
更にまた、書込選択回路52cは、入出力制御レジスタ群32にデータを書込んだレジスタに対応する複写レジスタ群24のレジスタにも、CPU20から受け取った書込要求で指定されたデータを書込む。
このように、書込選択回路52cは、CPU20から受け取った書込要求が、入出力制御レジスタ群32にのみに書込む書込要求か、入出力制御レジスタ群32及び複写レジスタ群24の双方に書込む書込要求かに応じて、処理内容を選択して実行する。
なお、直接書込処理を行なった場合には、当該直接書込処理を行なった直後の複写周期で行なわれる複写処理において、当該直接書込を行なった複写レジスタ群24のレジスタへの書込をマスク(書込を禁止)する。
<その他>
なお、本実施形態では、機器制御部14が1つ設けられている場合を例に挙げて説明したが、複数設けられていても良い。複数の機器制御部14の各々と、主制御部12とがシリアルバス40を介して接続されるよう構成し、上記のように、入出力制御レジスタ群32の複写レジスタ群24に対する複写をシステムタイマのカウント周期以下の周期で行なえばよい。
また、上記では説明を省略したが、パケットの送受信において、正常に受信された場合には、正常受信を示す応答パケット(ACK)を相手装置に送信し、受信エラーが生じた場合には、受信エラーを示す応答パケット(NACK)を相手装置に送信することで、相手装置に処理完了・異常が通知される。応答パケットNACK受信時には、パケットが再送される。
例えば、コントローラ52は、機器制御部14から複写パケットを受信した場合には、CRCチェック等のエラーチェックを行ない、正常に受信されたことが検出されれば応答パケットACKを返信し、複写レジスタ群24の先頭アドレスから順番にデータを書込む。また、受信した複写パケットのエラーチェックにおいて、不正が検出されれば、応答パケットNACKを返信する。
また、例えば、入出力制御レジスタ群32へのデータの書込要求のパケットを主制御部12から機器制御部14に送信した場合も同様に、コントローラ80は、CRCチェック等を行ない、正常に受信されたことが検出されれば、指定アドレスにデータを書込み、応答パケットACKパケットを送信する。
また、入出力制御レジスタ群32に対するデータの読出要求のパケットを主制御部12から機器制御部14に送信した場合も同様に、コントローラ80は、CRCチェック等を行ない、正常に受信されたことが検出されれば、指定アドレスからデータを読み出して、読み出したデータをパケット化して送信し、不正が検出されれば、応答パケットNACKを返信する。なお、これら処理において、応答パケットACK/NACKパケットは、パリティチェックのみでCRCチェックは行なわなくてもよい。
こうした通信制御は一般的に採用されている技術であるため、ここでは詳細な説明を省略する。
なお、本実施形態では、予め定められた複写周期毎に、複数の複写パケットの送信、及び応答パケットACKの返信がなされるため、こうした定期的な通信により、シリアルバス40のリンク断線エラーのチェックも可能である。例えば、予め定められた時間以上、パケットの送受信がなされなかった場合、シリアルバス40のリンク断線エラーが発生したと判断してもよい。
また、本実施形態では、複写レジスタ更新回路52a、読出選択回路52b、及び書込選択回路52cをコントローラ52の機能として説明したが、これに限定されず、例えば、コントローラ52とは別の回路により構成し、コントローラ52が各回路を制御することによって、各機能を実現するように構成してもよい。
また、本実施形態では、書込先のアドレスを指定しない複数の複写パケットを機器制御部14から主制御部12に送信して、複写レジスタ群24にデータを書込ませる例について説明したが、アドレスを指定した複写パケットを生成して送信することも可能である。この場合には、当該指定されたアドレスにデータが書込まれる。
[第2実施形態]
第1実施形態で説明したように、機器制御部14で割込が発生すると、割込パケットが生成されて主制御部12に送信される。割込パケットは、SerDes制御部22でデコードされ、割込信号としてCPU20に伝達される。CPU20は、割込信号を受け取ると、複写レジスタ群24から割込要因のデータを読み出して、当該読み出した割込要因のデータに応じた処理を行なう。しかしながら、複写レジスタ群24は、システムタイマのカウント周期以下の周期で、個別にアドレスを指定することなく先頭データから順に更新(複写)されるため(すなわち、アドレスが管理されていない)、割込信号を複写レジスタ群24の複写途中で受け取った場合、新規に更新された割込要因を確実に取得するには、その次の周期の複写が完了するまで待って割込要因のデータを読み出さなければならない。すなわち、割込信号を受け取ってから次の周期の複写が完了するまで、CPU20はアイドル状態(待機動作)となる。CPU20のアイドル状態が長いと、装置全体のパフォーマンスが落ちる。
そこで、第2実施形態では、SerDes制御部22に、割込信号を遅延してCPU20に出力するための割込信号遅延回路68を設けた。
図4は、第2実施形態に係る主制御部12側のSerDes制御部22の構成を示す図である。第2実施形態のSerDes制御部22には、第1実施形態で説明した(不図示の)割込信号発生回路の代わりに、割込信号遅延回路68が設けられている。割込信号遅延回路68が設けられている。割込信号遅延回路68も、コントローラ52の制御下にある。割込信号遅延回路68以外の構成は、第1実施形態と同様であるため、説明を省略する。また、機器制御部14の構成も第1実施形態と同様であるため、説明を省略する。
また、第2実施形態では、割込みフラグを記憶する記憶領域がコントローラ52内部に設けられており、機器制御部14から割込パケットを受信すると、コントローラ52は、割込フラグに1をセットする。割込フラグは、CPU20による割込処理が終了するか、或いは複写レジスタ群24から割込要因のデータが読み出されると、コントローラ52により0にリセットされる。
更に又、第2実施形態では、スタートフラグを記憶する記憶領域及びエンドフラグを記憶する記憶領域もコントローラ52内部に設けられている。コントローラ52は、割込パケットを受信した後に、先頭データの複写パケットを受信して複写レジスタ群24へのデータの書込を開始するとスタートフラグに1をセットし、スタートフラグを1にセットした後、複写レジスタ群24への全データの書込が完了するとエンドフラグに1をセットする。例えば、コントローラ52がアドレスカウンタ66を参照して、書込の開始及び終了が把握されるようにしてもよい。また、コントローラ52は、エンドフラグに1をセットしてから予め定められた期間が経過した後、次の複写周期が到来するまでの期間に、スタートフラグ及びエンドフラグを0にリセットする。
図5は、割込信号遅延回路68の構成を示す図である。割込信号遅延回路68は、2つの論理積回路68a、68bを備えている。論理積回路68aの2つの入力端子の一方には、割込フラグの値が入力される。論理積回路68aの他方の入力端子には、論理積回路68bの出力端子が接続されている。論理積回路68bの一方の入力端子には、スタートフラグの値が入力され、他方の入力端子には、エンドフラグの値が入力される。
論理積回路68bは、スタートフラグの値及びエンドフラグの値が1になると、出力が1になる。また、2つの入力端子の少なくとも一方が0のときには、出力が0になる。論理積回路68aは、割込フラグの値が1になった後に、論理積回路68bからの出力が1になると、その出力端子から割込信号を出力する。すなわち、割込信号は、割込パケットを受信しただけではCPU20に出力されない。割込フラグが1になった後、スタートフラグが1になり、その後、エンドフラグが1になったときに出力される。
論理積回路68aから割込信号が発生すると、当該割込信号は、CPUバスインタフェース50を介してCPUバス26に出力されCPU20に伝送される。
図6及び図7を参照して、第2実施形態に係る割込処理の流れを説明する。
図6は、割込信号の発生タイミングを説明する説明図である。図7は、割込信号発生の流れをフローチャートで示した図である。ただし、図7は、割込信号の発生をソフトウェアで行なうことを示したものではない。割込信号の発生は、図5に示すように、あくまで、割込信号遅延回路68及びコントローラ52(ハードウェア)により行なわれる。
図7のステップ100において、割込フラグが1になるまで待機する(図6(1)参照)。割込フラグが1にセットされると、次にステップ102において、スタートフラグが1になるまで待機する(図6(2)参照)。スタートフラグが1にセットされると、次にステップ104において、エンドフラグが1になるまで待機する(図6(3)参照)。
ステップ104においてエンドフラグが1になると、ステップ106において、割込信号遅延回路68は、割込信号を発生させる(図6(4)参照)。
ステップ108において、割込信号を受信したCPU20は、複写レジスタ群24の割込要因レジスタから割込要因のデータを読み出す(図6(5)参照)。その後、CPU20は、読み出した割込要因のデータに応じた処理を行なう。
すなわち、割込パケットを受信した後に開始される複写周期において、複写レジスタ群24への全データの複写が終了したときに割込信号を発生することで、CPU20は、時間をおかずに該更新された割込要因のデータを迅速に確認することができる。
ステップ110において、コントローラ52は、スタートフラグ及びエンドフラグをクリアする(0をセットする)。ステップ112において、CPU20による割込処理が終了すると、割込フラグに0をセットする。そして、ステップ100に戻る。
以上説明したように、制御装置11が、アドレスを指定せずに複写レジスタ群24への複写を行なうように構成されている場合であっても、割込パケットを受信してから書込の開始と終了の検出を行って、割込要因が新規に更新されている状態で、割込信号をCPU20に送出するため、CPU20は割込信号を受け取ってから時間をおかずに割込要因のデータを複写レジスタ群24から読み出すことができ、装置全体のパフォーマンスが落ちることはない。
[第3実施形態]
第1実施形態及び第2実施形態で説明したように、複写パケットには、アドレス情報が含まれていない。従って、複写パケットの転送が正常に行なわれなかった場合には、複写レジスタ群24の間違ったアドレスにデータが格納されてしまい、システムエラーとなってしまう可能性がある。この状態から復旧するためには、システムリセットを行なう必要がある。
また、上記第1実施形態及び第2実施形態では、主制御部12の複写レジスタ群24及び機器制御部14の入出力制御レジスタ群32は、共に同じメモリサイズを有しており、互いに対応する領域のデータを転送することとなっているが、例えば、入出力制御レジスタ群32のメモリサイズが複写レジスタ群24のメモリサイズよりも小さい場合であっても、入出力制御レジスタ群32と複写レジスタ群24とで同じサイズを有しているものとして処理をすると、機器制御部14から主制御部12に対して無駄な複写パケットを送信しなくてはならなくなる。
そこで、第3実施形態では、複写レジスタ群24へのデータの複写が正常且つ効率的に行なわれるように、予め定められた条件を満たすタイミングで、アドレスカウンタ66及びアドレスカウンタ94をリセットする手段を制御装置11に設ける。ここで、リセットとは、アドレスカウンタ66の場合には、複写レジスタ群24の先頭アドレスのカウント値となるように初期化する処理をいい、アドレスカウンタ94の場合には、入出力制御レジスタ群32の先頭アドレスのカウント値となるように初期化する処理をいう。
図8は、第3実施形態に係る主制御部12側のSerDes制御部22の構成を示す図である。第3実施形態のSerDes制御部22には、第1実施形態のSerDes制御部22の構成に追加して、タイマ70、及び制御レジスタ72が設けられている。タイマ70は、制御レジスタ72に予め記憶(設定)された時間が経過する毎にリセット信号をアドレスカウンタ66に出力する。また、制御レジスタ72は、タイマ70の有効無効を設定する設定値や、タイマ70がリセット信号を出力する時間間隔や、アドレスカウンタ66のリセットを指示するリセットフラグ等のデータが記憶される。
図9は、第3実施形態に係る機器制御部14側のSerDes制御部30の構成を示す図である。第3実施形態のSerDes制御部30には、第1実施形態のSerDes制御部30の構成に追加して、タイマ96、及び制御レジスタ98が設けられている。タイマ96は、制御レジスタ98に予め記憶(設定)された時間が経過する毎にリセット信号をアドレスカウンタ94に出力する。また、制御レジスタ98は、タイマ96の有効無効を設定する設定値や、タイマ96がリセット信号を出力する時間間隔や、アドレスカウンタ94のリセットを指示するリセットフラグ等のデータが記憶される。
本実施形態では、アドレスカウンタ66のカウント値は、入出力制御レジスタ群32から複写レジスタ群24への全データの書込が終了してから次の周期の先頭データの書込が開始されるまでの期間内の何れかのタイミング、及びデータの複写中にエラーが発生したタイミングの少なくとも一方において、リセットされる。また、アドレスカウンタ94は、入出力制御レジスタ群32からの全データの読出が終了してから次の周期の先頭データの読出が開始されるまでの期間内の何れかのタイミング、及びデータの複写中にエラーが発生したタイミングの少なくとも一方において、リセットされる。
以下、図10〜図15を参照しながら、第3実施形態におけるアドレスカウンタ66、94の様々なリセット手法の具体例を説明する。図10〜図15には、複写周期が1msの場合の主制御部12のアドレスカウンタ66のリセットタイミングを例示した。
(1)制御レジスタの設定によりアドレスカウンタをリセットする手法
CPU20が制御レジスタ72の設定を行なう。CPU20は、複写中にエラーが生じた場合に、CPUバス26を介して、制御レジスタ72のリセットフラグに1をセットするリセット命令をSerDes制御部22に出力し、SerDes制御部22のコントローラ52は、当該リセット命令に従って、制御レジスタ72のリセットフラグに1をセットする。アドレスカウンタ66は、自らリセット可能に構成されており、予め定められたタイミングで(例えば、アドレスのカウントアップ時やシステムタイマのカウントアップ時などでもよい)制御レジスタ72のリセットフラグを読み出し、読み出したリセットフラグの設定値が1であれば、自らリセットを実行する。リセット完了後は、制御レジスタ72のリセットフラグは、コントローラ52によって0に書き換えられる。
また、コントローラ52は、CPU20からのリセット命令に従って、機器制御部14側のアドレスカウンタ94をリセットするためのリセットパケットをパケット生成回路54、バッファ56、及びパラレルシリアル変換回路58を用いて生成し、リセットパケットを機器制御部14に送信する。機器制御部14側のSerDes制御部30のコントローラ80は、リセットパケットを受け取ると、該リセットパケットに従って、リセット信号を出力しアドレスカウンタ94をリセットする。
また、エラー発生時だけでなく、定期的にリセットされるようにしてもよい。例えば、入出力制御レジスタ群32と複写レジスタ群24のサイズが等しい場合には、複写レジスタ群24の書込み回数が、入出力制御レジスタ群32の読出し回数に等しくなったときに、アドレスカウンタ66がリセットされるようにしてもよい。
具体的には、例えば、制御レジスタ72に、入出力制御レジスタ群32に対する通常の読出回数を記憶しておき、アドレスカウンタ66のカウントアップ回数(書込回数)が当該読出回数に到達したときに、アドレスカウンタ66自身でリセットを実行する。或いは、書込回数のカウントはコントローラ52が行ない、コントローラ52からアドレスカウンタ66にリセット信号を送信するようにしてもよい。
なお、入出力制御レジスタ群32側のアドレスカウンタ94もリセットされるように、CPU20から読出回数を設定するための設定命令を出力し、該設定命令のパケットをSerDes制御部22により生成して出力する。アドレスカウンタ94のコントローラ52は、該設定命令のパケットに従って制御レジスタ98に読出回数の値をセットし、アドレスカウンタ94は、アドレスカウンタ94のカウントアップ回数(読出回数)が、制御レジスタ98に記憶した読出回数に到達したときにアドレスカウンタ94自身でリセットを実行する。
また、複写周期毎に、コントローラ52が制御レジスタ72のリセットフラグに1をセットして、アドレスカウンタ66をリセットするようにしてもよい(図10参照)。また、CPU20が、複写周期毎に、リセットフラグに1をセットするリセット命令をSerDes制御部22に出力し、当該リセット命令に従ってコントローラ52が制御レジスタ72のリセットフラグを1に書き換えるようにしてもよい。これによっても、アドレスカウンタ66は、リセットフラグに従って、自らリセット動作を行なう。例えば、システムタイマのカウント周期で複写が行なわれる場合には、当該周期の開始タイミング(入出力制御レジスタ群32から複写レジスタ群24への複写が開始されるタイミング)毎にリセットフラグが1にセットされるようにしてもよい。
なお、入出力制御レジスタ群32側でも、アドレスカウンタ94のタイマICにより複写周期毎にリセット信号がコントローラ80からアドレスカウンタ94に出力されるように構成しておくようにしてもよい。また、CPU20から周期的に出力されたリセット命令に従ってSerDes制御部22でパケットを生成し、リセットパケットを機器制御部14に送信して、制御レジスタ98のリセットフラグを1にセットし、アドレスカウンタ94がリセットフラグを参照して自らリセットするように構成してもよい。例えば、システムタイマのカウント周期毎に複写が行なわれる場合には、各カウント周期の開始タイミング毎にリセットフラグが1にセットされるようにしてもよい。
(2)タイマによりアドレスカウンタをリセットする手法
本手法ではタイマを用いてリセットを行なう。具体的には、制御レジスタ72の、タイマ70の有効無効の設定値を「有効」に設定し、タイマ70がリセット信号を出力する時間間隔を複写周期と同じ値に設定する。タイマ70は、制御レジスタ72に設定された設定値に従って動作し、設定された時間間隔が経過する毎に(例えば、複写開始タイミング毎に)、アドレスカウンタ66に対してリセット信号を出力する。アドレスカウンタ66は、リセット信号を受け取ると、リセットを実行する。図11に、(2)の手法を採用した場合のタイミングチャートの具体例を示す。図11(A)は、入出力制御レジスタ群32と複写レジスタ群24のサイズが等しいときのタイミングチャートの一例であり、図11(B)は、入出力制御レジスタ群32のサイズが複写レジスタ群24のサイズよりも小さい場合のタイミングチャートの一例である。
なお、CPU20が、複写周期毎に、リセットフラグに1をセットするリセット命令をSerDes制御部22に出力し、当該リセット命令に従ってコントローラ52がリセット信号を直接アドレスカウンタ66に出力するようにしてもよい。
また、入出力制御レジスタ群32側のアドレスカウンタ94も定期的にリセットされるように、入出力制御レジスタ群32側でも、上記と同様に制御レジスタ98の、タイマ96の有効無効の設定値を「有効」に設定し、タイマ96がリセット信号を出力する時間間隔を複写周期と同じ値に設定する。タイマ96は、制御レジスタ98に設定された設定値に従って動作し、設定された時間間隔が経過する毎に(例えば、複写開始タイミング毎に)、アドレスカウンタ94に対してリセット信号を出力する。アドレスカウンタ94は、リセット信号を受け取ると、リセットを実行する。
(3)機器制御部14から、主制御部12のアドレスカウンタ66をリセットするためのリセットパケットを送信する手法
機器制御部14のコントローラ80は、パケット生成回路88、バッファ90、及びパラレルシリアル変換回路92を用いて、アドレスカウンタ66をリセットするためのリセットパケットを生成して、主制御部12に送信する。リセットパケットは、入出力制御レジスタ群32から全データが読み出された後に生成されて送信されてもよいし、入出力制御レジスタ群32から先頭データを読み出す直前に生成されて送信されてもよい。主制御部12のコントローラ52は、当該リセットパケットを受信したときに、アドレスカウンタ66にリセット信号を出力する。
図12に、(3)の手法を採用した場合のタイミングチャートの具体例を示す。図12(A)は、入出力制御レジスタ群32と複写レジスタ群24のサイズが等しいときのタイミングチャートの一例であり、図12(B)は、入出力制御レジスタ群32のサイズが複写レジスタ群24のサイズよりも小さい場合のタイミングチャートの一例である。
なお、機器制御部14側のアドレスカウンタ94のリセットは、(1)、又は(2)で説明した手法を用いればよい。
(4)開始アドレスのデータ(先頭データ)を送信する複写パケットに、先頭の複写パケットであることを示すコードを埋め込み、主制御部12にリセットを実行させる手法
本手法では、機器制御部14から送信される複写パケットのうち、先頭データの複写パケットに、先頭データの複写パケットである旨を示すコードを埋め込み、コントローラ52は当該複写パケットを受信したときに、当該複写パケットによる新たな複写周期の書込を開始する前にアドレスカウンタ66にリセット信号を出力する。なお、コードは、複写パケットの余りビットを使って埋め込むことができる。
図13に、(4)の手法を採用した場合のタイミングチャートの具体例を示す。図13(A)は、入出力制御レジスタ群32と複写レジスタ群24のサイズが等しいときのタイミングチャートの一例であり、図13(B)は、入出力制御レジスタ群32のサイズが複写レジスタ群24のサイズよりも小さい場合のタイミングチャートの一例である。
なお、機器制御部14側のアドレスカウンタ94のリセットは、(1)、又は(2)で説明した手法を用いればよい。
(5)終了アドレスのデータ(最終データ)を送信する複写パケットに、最終の複写パケットであることを示すコードを埋め込み、主制御部12にリセットを実行させる手法
本手法では、機器制御部14から送信される複写パケットのうち、最終データの複写パケットに、最終データの複写パケットである旨を示すコードを埋め込み、コントローラ52は当該複写パケットを受信して最終データを書込んだ後、次の複写周期の書込が開始される前にアドレスカウンタ66にリセット信号を出力する。なお、コードは、複写パケットの余りビットを使って埋め込むことができる。
図14に、(5)の手法を採用した場合のタイミングチャートの具体例を示す。図14(A)は、入出力制御レジスタ群32と複写レジスタ群24のサイズが等しいときのタイミングチャートの一例であり、図14(B)は、入出力制御レジスタ群32のサイズが複写レジスタ群24のサイズよりも小さい場合のタイミングチャートの一例である。
なお、機器制御部14側のアドレスカウンタ94のリセットは、(1)、又は(2)で説明した手法を用いればよい。
(6)機器制御部14から送信される複写パケットに、入出力制御レジスタ群32のサイズを示すコードを埋め込み、当該サイズに従って主制御部12にリセットを実行させる手法
本手法では、機器制御部14から送信される複写パケットのうち、例えば先頭データの複写パケットに、入出力制御レジスタ群32のサイズを示すコードを埋め込んで主制御部12に送信する。なお、コードは、複写パケットの余りビットを使って埋め込むことができる。例えば、図15(C)に示すように、入出力制御レジスタ群32のメモリサイズに応じた、2つのビットからなるコードを複写パケットの余りビットに埋め込む。
主制御部12のコントローラ52は、当該複写パケットを受信したときに、当該複写パケットに埋め込まれたビットを参照して入出力制御レジスタ群32のサイズを取得する。そして、コントローラ52は、アドレスカウンタ66から出力されるアドレス(カウント値)が、上記取得したサイズに対応する値に到達したときに、リセット信号を出力する。
図15(A)、(B)に、(6)の手法を採用した場合のタイミングチャートの具体例を示す。図15(A)は、入出力制御レジスタ群32と複写レジスタ群24のサイズが等しいときのタイミングチャートの一例であり、図15(B)は、入出力制御レジスタ群32のサイズが複写レジスタ群24のサイズよりも小さい場合のタイミングチャートの一例である。
なお、機器制御部14側のアドレスカウンタ94のリセットは、(1)、又は(2)で説明した手法を用いればよい。
以上、(1)〜(6)の手法を説明したが、(1)〜(6)の少なくとも2つの手法を組み合わせて、アドレスカウンタ66及びアドレスカウンタ94のリセットを実行してもよい。また、主制御部12側と機器制御部14側とで異なるリセット手法を採用してもよい。
また、主制御部12側でタイマ70を用いない手法を採用した場合、図8に示すタイマ70は不要であり、機器制御部14側でタイマ96を用いない手法を採用した場合、図9に示すタイマ96は不要である。
更にまた、主制御部12側で制御レジスタ72を用いない手法を採用した場合、図8に示す制御レジスタ72は不要であり、機器制御部14側で制御レジスタ98を用いない手法を採用した場合、図9に示す制御レジスタ98は不要である。
このように、複写レジスタ群24のアドレスカウンタ66をリセットする機構、及び入出力制御レジスタ群32のアドレスカウンタ94をリセットする機構を設けたことにより、従来は書込の際にエラーが発生し書込順序が狂ってしまった(アドレスがずれた)際の復旧手段がシステムリセットしかなかったのに対して、システムリセットを行なわずに復帰できる。
また、主制御部12の複写レジスタ群24と機器制御部14の入出力制御レジスタ群32とが異なるサイズのメモリ領域であっても、データ通信量の増加は抑制され、機器制御部14の回路規模が大きくなってしまうということが抑制される。
なお、図16に示すように、第1実施形態で説明した制御装置11に、第2実施形態で説明した割込信号を遅延させて発生させる構成、及び第3実施形態で説明したアドレスカウンタ66をリセットさせる構成の各々を含めて構成してもよい。
また、上記各実施形態では、制御装置を画像形成装置に適用した例について説明したが、これに限定されず、画像形成のための機器以外の各種機器の駆動を制御する様々な装置にも適用可能である。