以下、図面を参照して、本発明の実施の形態について詳細に説明する。
<制御装置を有する画像形成装置>
図1は、本発明の実施の形態に係る画像形成装置の構成例を示すブロック図である。この画像形成装置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は、複数のレジスタ(記憶領域)を含むメモリで構成されている。また、複写レジスタ群24は、各々が転送単位の情報を記憶する複数のブロックを含んで構成されている。以下では、1つのブロックに記憶される転送単位の情報を、「ブロック単位のデータ」という。ブロック単位のデータは、数ワード分(例えば、64ビット)のデータとしてもよい。
機器制御部14に含まれる入出力制御レジスタ群32の各レジスタの記憶内容が、この複写レジスタ群24に複写される。ここで、複写とは、入出力制御レジスタ群32からレジスタに記憶されたデータを読出して、当該読出したデータをシリアルバス40を介して主制御部12に送信し、複写レジスタ群24の各レジスタに書込む一連の処理をいう。複写により、複写レジスタ群24の記憶内容が更新される。
機器制御部14は、シリアライザ・デシリアライザ制御部30(以下、SerDes制御部30という)、入出力制御レジスタ群32、及び駆動・受信回路34を備えている。
SerDes制御部30は、主制御部12からシリアルバス40を介してシリアル形式のパケットを受信すると、当該受信したパケットをパラレル形式のパケットに変換し、パラレル形式のパケットをデコードして、当該パケットに含まれるデータを取り出す。また、SerDes制御部30は、主制御部12に送信する情報(パラレル信号)をパケット化し、各パケットをシリアル信号に変換してシリアルバス40を介して主制御部12に送信する。
入出力制御レジスタ群32は、複数のレジスタ(記憶領域)を含むメモリで構成されている。入出力制御レジスタ群32もまた、各々が転送単位の情報を記憶する複数のブロックを含んで構成されている。入出力制御レジスタ群32の複数のレジスタは、入力レジスタと、出力レジスタとを含んでいる。入力レジスタには、各機器の状態を示すデータが書込まれる。出力レジスタには、主制御部12のCPU20から送信された各機器を制御するデータが書込まれる。また、入出力制御レジスタ群32には、割込の発生を示すデータが書込まれるレジスタ(以下、割込レジスタという)、及び割込要因を示すデータが書込まれるレジスタ(以下、割込要因レジスタという)も含まれる。
入出力制御レジスタ群32の各レジスタに記憶された記憶内容は、前述したように、主制御部12の複写レジスタ群24にブロック毎に複写される。本実施形態では、CPU20は、複写レジスタ群24に複写されたデータを読み出すことにより、入出力制御レジスタ群32に書込まれたデータと同じデータを参照することができる。この他、本実施形態では、CPU20は、シリアルバス40を介して入出力制御レジスタ群32に書込まれたデータを読出して取得することもできる。
なお、本実施形態において、複写レジスタ群24のメモリサイズ、及び入出力制御レジスタ群32のメモリサイズは、互いに等しく、入出力制御レジスタ群32から複写レジスタ群24への複写の際には、入出力制御レジスタ群32のブロックの1つから読み出されたデータは、当該データが記憶されていた入出力制御レジスタ群32のブロックに対応する複写レジスタ群24のブロックに書込まれるものとする。
駆動・受信回路34は、画像形成装置10を構成する機器群16の各機器に接続される。駆動・受信回路34は、入出力制御レジスタ群32の出力レジスタに機器を制御するためのデータが書込まれると、そのデータに応じた駆動信号を当該出力レジスタに対応する機器に出力する。機器は出力された駆動信号に応じて駆動される。また、接続された機器から当該機器の状態を示す信号が入力されると、その信号に応じたデータを当該機器の状態を示すデータ用の入力レジスタに書込む。状態を示すデータは、例えば、機器がセンサである場合には、センサの検出結果を示すデータであってもよいし、機器がモータである場合には、モータの回転状態を示すデータであってもよい。
画像形成装置10全体を制御するCPU20は、入力レジスタに書込まれたデータから機器の状態を把握し、出力レジスタに制御用のデータを書込むことにより各機器の駆動を制御している。
ただし、本実施形態では、後述するように、システムタイマの周期以下の周期で、入出力制御レジスタ群32のデータが複写レジスタ群24へ複写されるため、CPU20は、機器の状態等を把握する際には、わざわざシリアルバス40を介して入出力制御レジスタ群32からデータを取得しなくても、主制御部12に設けられた複写レジスタ群24に複写されたデータを読み出すことで、機器の状態等を把握することができる。
<主制御部のSerDes制御部>
図2は、主制御部12のSerDes制御部22の構成例を示す図である。SerDes制御部22は、CPUバスインタフェース50、書込みバッファ51、コントローラ52、パケット生成回路54、バッファ56、パラレルシリアル変換回路58、シリアルパラレル変換回路60、バッファ62、パケットデコード回路64、及びアドレスカウンタ66を備えている。
CPUバスインタフェース50は、CPUバス26を介してCPU20と通信するためのインタフェースである。書込みバッファ51は、CPUバスインタフェース50を介してCPU20から書込まれたデータを、複写レジスタ群24の記憶内容が更新されるまで一時的に記憶する記憶部である。コントローラ52は、SerDes制御部22を構成する各構成要素と接続され、プロトコル制御や各構成要素の動作タイミング等を制御することで、SerDes制御部22全体を制御する。
パケット生成回路54は、書込みバッファ51に一時的に記憶されたデータを読み出して、当該読出したデータに基づいてパケットを生成する。バッファ56は、パケット生成回路54で生成されたパケットを一時的に記憶する。パラレルシリアル変換回路(シリアライザ)58は、バッファ56に一時的に記憶されたパラレル形式のパケットをシリアル形式のパケットに変換して、シリアルバス40を介して機器制御部14に送信する。
シリアルパラレル変換回路(デシリアライザ)60は、機器制御部14からシリアルバス40を介して受信したシリアル形式のパケットをパラレル形式のパケットに変換する。バッファ62は、シリアルパラレル変換回路60で変換されたパラレル形式のパケットを一時的に記憶する。パケットデコード回路64は、バッファ62に一時的に記憶されたパラレル形式のパケットをデコードして、当該パケットに含まれるデータを取り出す。
アドレスカウンタ66は、複写レジスタ群24に入出力制御レジスタ群32から読出され転送されたデータを書込むときの書込先のアドレスを生成してコントローラ52に出力する。ここでの「アドレス」とは、複写のために付与されるアドレスカウンタ66のカウント値であり、複写レジスタ群24及び入出力制御レジスタ群32内の、先頭から何番目のブロックであるかを表す番号である。このカウント値は、連続番号情報(シーケンス・ナンバー)としてパケットに含められる。入出力制御レジスタ群32の1番目のブロックから読み出されたデータは、対応する複写レジスタ群24の1番目のブロックに書込まれる。
複写レジスタ群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にも(複写による更新ではなく)直接書込むのかを選択して「書込選択処理」を実行する。
また、書込選択回路52cは、複写レジスタ群24の更新状況を示す更新情報を、複写レジスタ群24から取得する。取得された更新情報は、書込選択回路52cに設けられた更新情報記憶領域に記憶される。記憶された更新情報は、後述する書込選択処理の実行時に使用される。ここで「更新情報」とは、複写レジスタ群24が何番目のブロックまで更新されたかを示す情報である。以下では、この更新情報を「更新管理アドレス」という。
更に、書込選択回路52cは、書込要求に含まれる情報を書込みバッファ51から取得して、取得した情報に基づいて後述する「書込選択処理」を実行する。
<機器制御部のSerDes制御部>
図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)等のハードウェアにより構成される。
<書込みバッファ>
ここで、書込みバッファ51について更に詳しく説明する。書込みバッファ51は、コントローラ52が書込要求に基づいて「書込選択処理」を実行する前に、書込要求に係る情報を一時的に記憶する。書込要求に係る情報は、複写レジスタ群24の記憶内容が更新されるまで一時的に記憶される。書込要求には、判定情報、書込みアドレス、及び書込みデータが含まれる。ここで「判定情報」とは、入出力制御レジスタ群32のみに対して書込む「通常書込み」か、入出力制御レジスタ群32に書込むだけでなく複写レジスタ群24にも直接書込む「直接書込み」なのかを判定する判定ビットである。
また、ここでの「書込みアドレス」とは、上記のカウント値ではなく、書込要求においてCPU20により指定された、書込み先となる入出力制御レジスタ群32のレジスタのアドレスである。入出力制御レジスタ群32のアドレスは、複写レジスタ群24のアドレスに対応している。従って、CPU20により指定されたアドレスは、複写レジスタ群24のレジスタのアドレスでもある。また、ここで「書込みデータ」とは、入出力制御レジスタ群32(及び、複写レジスタ群24)に書き込まれる制御用データである。
図4は書込みバッファ51の構成例を示す模式図である。図4に示すように、書込みバッファ51は、「判定情報」を記憶する判定情報記憶領域51A、「書込みアドレス」を記憶する書込みアドレス記憶領域51B、及び「書込みデータ」を記憶する書込みデータ記憶領域51Cというように、書込要求に含まれる各情報に応じた複数の記憶領域を備えている。また、書込みバッファ51には、書込要求に係る情報が1ブロック分まで記憶される。図示した例では、1/4ブロック分の情報(斜線部)が、書込みバッファ51の各記憶領域に記憶されている。
「書込みアドレス」及び「書込みデータ」の各々は、SerDes制御部22によりパケット化されて送信される。また、「判定情報」及び「書込みアドレス」の各々は、コントローラ52の書込選択回路52cにより取得される。
<複写レジスタ群>
ここで、複写レジスタ群24について更に詳しく説明する。図5は複写レジスタ群の構成例を示す模式図である。図5に示すように、複写レジスタ群24は、複数のブロック24B1〜24Bnを含む。複数のブロック24B1〜24Bnの各々は、転送単位の書込みデータを記憶する記憶領域である。例えば、複写レジスタ群24は、各ブロックの記憶容量が64ビットの256個のブロックを有していてもよい。なお、複数のブロック24B1〜24Bnを区別する必要がない場合は、ブロック24Bと総称する。
複数のブロック24B1〜24Bnの各々には、各ブロックに対応する複数のフラグ24A1〜24Anが設けられている。なお、複数のフラグ24A1〜24Anを区別する必要がない場合は、フラグ24Aと総称する。フラグ24Aは、直接書込みを行なった複写レジスタ群24のブロック24Bへの送信(転送)による書込をマスク(更新を禁止)するために設けられている。例えば、フラグ24Aを「1」として対応するブロック24Bの更新を禁止し、フラグ24Aを「0」として対応するブロック24Bの更新を許可する。
<制御装置の作用>
次に、本実施形態に係る制御装置11の作用について説明する。
(入出力制御レジスタ群32の更新)
CPU20は、機器を制御するための制御用のデータを書込むための書込要求をCPUバス26を介してSerDes制御部22に出力する。SerDes制御部22のコントローラ52は、CPUバスインタフェース50及び書込みバッファ51を介して書込要求を受け取ると、パケット生成回路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の先頭アドレス(先頭ブロック)から当該複数のパケットの転送順にデータを書込む。これにより、複写レジスタ群24の記憶内容が更新される。
以下、この複写処理を詳しく説明する。
機器制御部14のSerDes制御部30のコントローラ80は、機器制御部14に設けられたタイマICからクロックが出力されると、入出力制御レジスタ群32から複写レジスタ群24へのデータ複写のための読出処理を開始する。なお、ここでは、タイマICのクロックが出力された時を読出開始タイミングとしたが、これは一例であって、読出開始タイミングはこれに限定されない。
具体的には、コントローラ80のレジスタデータ転送回路80aは、アドレスカウンタ94から出力されたアドレスに従って、入出力制御レジスタ群32の先頭アドレス(先頭ブロック)からブロック単位のデータを順次読み出して、パケット生成回路88に当該読み出したデータを順次入力する。アドレスカウンタ94の初期値は、入出力制御レジスタ群32の先頭アドレスとされる。例えば、1番目から順にカウントアップする場合は、アドレスカウンタ94の初期値は「1」である。
そして、レジスタデータ転送回路80aがブロック単位のデータを読み出す毎に、アドレスカウンタ94がカウントアップする。レジスタデータ転送回路80aは、入出力制御レジスタ群32から全データを読み出すまで、アドレスカウンタ94のカウント値が示すアドレスからブロック単位のデータを読み出してパケット生成回路88に入力することを繰り返す。
パケット生成回路88は、複写対象となるブロック単位のデータが入力される毎に、当該データを複写レジスタ群24に書込ませるための複写命令のパケット(以下、複写パケットという)を生成し、バッファ90に記憶する。なお、複写パケットには、複写先(書込先)のアドレスの情報は含めない。これにより、転送データ量が削減される。なお、送信される複数のパケットには、アドレスカウンタ94のカウント値が含まれる。
パラレルシリアル変換回路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に複写されて、複写レジスタ群24の記憶内容が更新される。CPU20は、複写レジスタ群24に複写されたデータを参照することで、システムタイマのカウント周期以下の周期で更新されたデータを参照できる。なお、複写周期は予め設定しておく。
更にまた、入出力制御レジスタ群32のデータから生成された複数の複写パケットは、予め定められた時間以上の間隔をあけて(ただし、複写開始から複写終了までの時間がシステムタイマのカウント周期以下となるように)1つずつ送信される。従って、複写パケットの転送処理中に割込が発生した場合でも、当該複写パケットが送信された後、次の複写パケットが送信されるまでの間に、割込パケットを主制御部12に送信することができる。もちろん、複写パケットの送信間隔は、割込パケットの送信がなければ、間隔を詰めて(すなわち、割込パケットを発行する場合に比べて送信間隔を短くして)送信するようにしてもよい。
(CPU20による直接書込処理)
CPU20からの書込要求には、入出力制御レジスタ群32にのみデータを書込む「通常書込処理」を行う書込要求と、入出力制御レジスタ群32だけでなく複写レジスタ群24にも直接データを書込む「直接書込処理」を行う書込要求とがある。CPU20から「直接書込処理」を行う書込要求が出力された場合には、書込選択回路52cの機能により、複写レジスタ群24に対しても指定されたアドレスにデータを書込む処理(直接書込処理)が行なわれる。
「直接書込処理」を行なう場合、具体的には、書込選択回路52cは、上記例と同様に、書込みバッファ51を介してCPU20から書込要求を受け取ると、書込要求のパケットを生成して、シリアル化し、シリアルバス40を介して機器制御部14に送信して、入出力制御レジスタ群32のレジスタのうち、書込要求で指定されたアドレスのレジスタに、指定されたデータを書込ませる。
そして、書込選択回路52cは、入出力制御レジスタ群32にデータを書込んだレジスタに対応する複写レジスタ群24のレジスタにも、書込みバッファ51を介してCPU20から受け取った書込要求で指定されたデータを書込む。なお、直接書込処理を行なった場合には、当該直接書込処理を行なった直後の複写周期で行なわれる複写処理において、当該直接書込を行なった複写レジスタ群24のレジスタへの書込をマスク(書込を禁止)する。
このように、書込選択回路52cは、CPU20から受け取った書込要求が、「通常書込処理」を行う書込要求か、「直接書込処理」を行う書込要求かに応じて、処理内容を選択して実行する。本実施の形態では、書込選択回路52cは、「直接書込処理」を行う書込要求を受け取ると、複写レジスタ群24の更新状況に応じて処理内容を選択して実行する。複写レジスタ群24の更新状況に応じた「書込選択処理」については後述する。
(CPU20によるデータ読出処理)
CPU20は、入出力制御レジスタ群32に書込まれたデータを参照する場合、入出力制御レジスタ群32から直接データを取得するのではなく、複写レジスタ群24からデータを読み出すことで、入出力制御レジスタ群32に書込まれたデータを参照することができる(通常読出処理)。
従って、CPU20は、データ読出しの際には、複写レジスタ群24のアドレスを指定した読出要求をSerDes制御部22に出力する。SerDes制御部22のコントローラ52の読出選択回路52bは、CPUバスインタフェース50を介してCPU20から複写レジスタ群24のデータの読出要求を取得した場合には、複写レジスタ群24に複写されたデータ(読出要求で指定されたアドレスのデータ)を読み出して、CPU20に供給する。入出力制御レジスタ群32に対する読出要求のパケットの発行はなされない。
また、入出力制御レジスタ群32から直接データを読み出す読出要求をCPU20が出力した場合には、上述した読出選択回路52bの機能により、入出力制御レジスタ群32からデータを直接読み出してCPU20に転送することができる(直接読出処理)。
読出選択回路52bは、複写レジスタ群24からデータを読み出す通常の読出要求を受け取った場合には、複写レジスタ群24の指定アドレスのレジスタからデータを読み出して、CPU20に供給する「通常読出処理」を行う。一方、読出選択回路52bは、入出力制御レジスタ群32から直接データを読み出す読出要求を受け取った場合には、複写レジスタ群24からのデータの読出しは行なわず、入出力制御レジスタ群32からデータを読み出して、CPU20に供給する「直接読出処理」を行なう。
「直接読出処理」を行なう場合、具体的には、読出選択回路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のデータを直接参照したい場合に対応可能となる。
(従来の制御装置との比較)
ここで、図12に示す従来の制御装置の構成例と比較しながら、本実施形態の制御装置11について説明する。
図12(A)に示すように、従来の制御装置は、入出力制御レジスタ群が、主制御部側に設けられていた。主制御部の入出力制御レジスタ群と、機器制御部の駆動・受信回路とはパラレル信号線により接続され、入出力制御レジスタ群から駆動・受信回路に対して、モータやスイッチなどの駆動を制御するデータがパラレル信号線を介して出力され、駆動・受信回路から入出力制御レジスタ群に対して、センサの検出結果等の状態を示すデータがパラレル信号線を介して入力されていた。すなわち、機器の数に比例した分のパラレル信号線で主制御部と機器制御部とを接続する必要があった。しかしながら、主制御部の基板の実装スペース等の問題により、多数のパラレル信号線を配設することは問題があった。
そこで、図12(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が書込処理待ちとなることはない。
<直接書込みと更新との競合>
次に、図6を参照して直接書込みと転送(機器制御部側からの送信)による更新との競合について説明する。ここで「転送」とは、機器制御部側からのデータの送信を意味する。上記の通り、CPU20が書込処理待ちとなることはない。しかしながら、CPU20から書込みバッファ51を介して入出力制御レジスタ群32に書き込まれたデータは、複写レジスタ群24の記憶内容が更新されるまで、複写レジスタ群24から読み出すことができない。
図6に示すように「直接書込処理」が行なわれる場合、書込みバッファ51から読み出されたデータは、入出力制御レジスタ群32に書き込まれると共に、複写レジスタ群24にも直接書き込まれる。また、入出力制御レジスタ群32から複写レジスタ群24に全データが複写されて、複写レジスタ群24の記憶内容が更新される。複写は、例えば1ms等、システムタイマのカウント周期以下の予め定めた周期で行われる。
従って、CPU20が複写レジスタ群24からデータを読み出す場合(通常読出処理)において、書込みバッファ51を介した複写レジスタ群24への直接書き込みと、入出力制御レジスタ群32からの複写による複写レジスタ群24の更新とが競合し、複写レジスタ群24に直接書き込まれたデータが更新されて読み出せない場合がある。
例えば、複写レジスタ群24に直接書き込まれた最新データを「データA(=11110011)」とし、入出力制御レジスタ群32からの複写による複写レジスタ群24の更新データを「データB(=11110000)」とする。更新データは、最新データの1周期前のデータである。CPU20により読み出される読出データを「データY」とすると、更新前に複写レジスタ群24からデータを読み出した場合には、最新データが読み出されて「データA」が「データY」となる。一方、更新後に複写レジスタ群24からデータを読み出した場合には、更新データが読み出されて「データB」が「データY」となる。即ち、データの読み出しタイミングにより、複写レジスタ群24に直接書き込まれたデータが更新されて読み出せなくなる。
<複写レジスタ群の更新状況に応じた書込選択処理>
本実施の形態では、コントローラ52の書込選択回路52cは、複写レジスタ群24の更新状況に応じて処理内容を選択して実行する「書込選択処理」を行う。図7は書込選択回路52cで実行される「書込選択処理」の手順を示すフローチャートである。図7に示すように、ステップ100で、直接書込処理か否かが判断される。書込選択回路52cは、書込みバッファ51に記憶された書込要求に含まれる判定情報を取得し、取得した判定情報に基づいて直接書込処理か否かを判断する。「直接書込処理」ではない場合には、ステップ106に進み、「通常書込処理」を実行する。
「直接書込処理」である場合には、ステップ102で、「更新管理アドレス」が「直接書込みアドレス」より小さいか否かを判断する。「更新管理アドレス」は、上記の通り、複写レジスタ群24が何番目のブロックまで更新されたかを示す情報である。書込選択回路52cは、複写レジスタ群24から「更新管理アドレス」を取得する。また、「直接書込みアドレス」は、書込要求で指定された書込みアドレスが、複写レジスタ群24の何番目のブロックに在るかを示す情報である。書込選択回路52cは、書込要求に含まれる書込みアドレスから「直接書込みアドレス」を取得する。各情報はカウント値で表される。
「更新管理アドレス」が「直接書込みアドレス」より小さい場合、即ち、更新前のブロックに直接書込みを行う場合は、ステップ104に進み、「第1の処理」を実行する。「更新管理アドレス」が「直接書込みアドレス」以上の場合は、ステップ108に進む。そして、ステップ108で、「更新管理アドレス」が「直接書込みアドレス」に等しいか否かを判断する。「更新管理アドレス」が「直接書込みアドレス」に等しい場合、即ち、更新中のブロックに直接書込みを行う場合は、ステップ110に進み、「第2の処理」を実行する。
「更新管理アドレス」が「直接書込みアドレス」に等しくない場合は、ステップ112に進む。そして、ステップ112で、「更新管理アドレス」が「直接書込みアドレス」より大きいか否かを判断する。「更新管理アドレス」が「直接書込みアドレス」より大きい場合、即ち、更新後のブロックに直接書込みを行う場合は、ステップ114に進み、「第3の処理」を実行する。なお、ステップ112での否定判定はない。
(第1の処理)
図8は「第1の処理」を説明するための模式図である。「更新管理アドレス」が「直接書込みアドレス」より小さい場合、即ち、更新前のブロックに直接書込みを行う場合は、「第1の処理」を実行する。図示した例では、更新管理アドレスが「1」、直接書込みアドレスが「3」である。図8に示すように、まず、書込みアドレスから取得した「直接書込みアドレス」に係るブロック24Bのフラグ24Aを「1」にセットして、「直接書込みアドレス」に係るブロック24Bの更新を禁止する。図示した例では、ブロック24B3のフラグ24A3が「1」にセットされ、ブロック24B3の更新が禁止されている。
バッファ51から書込要求を読み出して、更新を禁止したブロック24B3に対して直接書込みを行う。更新を禁止したブロック24B3では、直接書き込まれたデータは複写により更新されなくなる。図9はブロックの更新を禁止する様子を示す模式図である。図9に示すように、フラグ24Aが「1」にセットされて更新が禁止されると、直接書込みされた部分(Wビット)の更新が禁止される。なお、読出専用の部分(Rビット)には、CPU20から直接書き込みができない。ここで「W」はライトの略記であり、「R」はリード・オンリーの略記である。
この場合は、直接書込みしたデータに係るブロックは更新が禁止されているので、CPU20により直接書込要求したデータの読出要求があると、複写レジスタ群24から直接書込要求したデータが読み出される。
(第2の処理)
図10は「第2の処理」を説明するための模式図である。「更新管理アドレス」が「直接書込みアドレス」に等しい場合、即ち、更新中のブロックに直接書込みを行う場合は、「第2の処理」を実行する。図示した例では、更新管理アドレスが「3」、直接書込みアドレスが「3」である。図10に示すように、「更新管理アドレス」がインクリメントされて更新中のブロックが次に移るまで、複写レジスタ群24の「直接書込みアドレス」への直接書き込みを中止する。なお、「直接書込みアドレス」に係るブロック24Bのフラグ24Aを「0」にセットして、「直接書込みアドレス」に係るブロック24Bの更新を許可する。
この場合は、複写レジスタ群24への直接書込みが中止されているので、書込要求は書込みバッファ51に保持されている。また、「直接書込みアドレス」に係るブロック24B3は更新される可能性がある。従って、CPU20により直接書込要求したデータの読出要求があると、書込みバッファ51から直接書込要求したデータが読み出される。
(第3の処理)
図11は「第3の処理」を説明するための模式図である。「更新管理アドレス」が「直接書込みアドレス」より大きい場合、即ち、更新後のブロックに直接書込みを行う場合は、「第3の処理」を実行する。図示した例では、更新管理アドレスが「4」、直接書込みアドレスが「3」である。図11に示すように、バッファ51から書込要求を読み出して、「直接書込みアドレス」に係るブロック24B3に対して直接書込みを行う。
なお、「直接書込みアドレス」に係るブロック24B3のフラグ24A3を「0」にセットして、「直接書込みアドレス」に係るブロック24B3の更新を許可する。
この場合は、直接書込みしたデータに係るブロック24B3は更新後に上書きされているので、CPU20により直接書込要求したデータの読出要求があると、複写レジスタ群24から直接書込要求したデータが読み出される。
以上の通り、本実施の形態では、複写レジスタ群24の更新状況(更新前・更新中・更新後)に応じて、処理内容(第1の処理・第2の処理・第3の処理)を選択して実行する「書込選択処理」を行うので、CPU20から書き込まれたデータが、複写レジスタ群24の更新を待たずにCPU20によって読み出される。
<その他の変形例>
なお、本実施形態では、機器制御部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にデータを書込ませる例について説明したが、アドレスを指定した複写パケットを生成して送信することも可能である。この場合には、当該指定されたアドレスにデータが書込まれる。