以下、図面を参照して、実施形態について詳細に説明する。
<制御装置を有する画像形成装置>
図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は、複数のレジスタ(記憶領域)を含むメモリで構成されている。また、複写レジスタ群24は、各々が転送単位の情報を記憶する複数のブロックを含んで構成されている。以下では、1つのブロックに記憶される転送単位の情報を、「ブロック単位のデータ」という。ブロック単位のデータは、数ワード分(例えば、64ビット)のデータとしてもよい。
機器制御部14に含まれる入出力制御レジスタ群32の各レジスタの記憶内容が、この複写レジスタ群24に複写される。ここで「複写」とは、入出力制御レジスタ群32からレジスタに記憶されたデータを読出して、当該読出したデータをシリアルバス40を介して主制御部12に送信し、複写レジスタ群24の各レジスタに書込む一連の処理をいう。複写により、複写レジスタ群24の記憶内容が更新される。
機器制御部14は、シリアライザ・デシリアライザ制御部30(以下、SerDes制御部30という)、入出力制御レジスタ群32、駆動・受信回路34、及び監視部36を備えている。
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の出力レジスタに機器を制御するためのデータが書込まれると、そのデータに応じた駆動信号を当該出力レジスタに対応する機器に出力する。機器は出力された駆動信号に応じて駆動される。また、接続された機器から当該機器の状態を示す信号が入力されると、その信号に応じたデータを当該機器の状態を示すデータ用の入力レジスタに書込む。状態を示すデータは、例えば、機器がセンサである場合には、センサの検出結果を示すデータであってもよいし、機器がモータである場合には、モータの回転状態を示すデータであってもよい。
監視部36は、入出力制御レジスタ群32に接続されると共に、SerDes制御部30にも接続されている。監視部36は、入出力制御レジスタ群32の複数のブロックの更新の有無をブロック毎に監視する。そして、監視部36は、更新の有無を示す情報(比較結果)をSerDes制御部30に出力する。
画像形成装置10全体を制御するCPU20は、入力レジスタに書込まれたデータから機器の状態を把握し、出力レジスタに制御用のデータを書込むことにより各機器の駆動を制御している。
ただし、本実施形態では、後述するように、システムタイマの周期以下の周期で、入出力制御レジスタ群32のデータが複写レジスタ群24へ複写されるため、CPU20は、機器の状態等を把握する際には、わざわざシリアルバス40を介して入出力制御レジスタ群32からデータを取得しなくても、主制御部12に設けられた複写レジスタ群24に複写されたデータを読み出すことで、機器の状態等を把握することができる。
<主制御部のSerDes制御部>
図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に一時的に記憶されたパラレル形式のパケットをデコードして、当該パケットに含まれるデータを取り出す。
また、パケットデコード回路64は、パケット識別部64aを有している。パケット識別部64aは、後述する複写パケットとダミーパケットとを識別して、複写パケットとダミーパケットの何れであるかを示す識別情報をコントローラ52に出力する。
アドレスカウンタ66は、複写レジスタ群24に入出力制御レジスタ群32から読出され転送されたデータを書込むときの書込先のアドレスを生成してコントローラ52に出力する。ここでの「アドレス」とは、複写のために付与されるアドレスカウンタ66のカウント値であり、複写レジスタ群24及び入出力制御レジスタ群32内の、先頭から何番目のブロックであるかを表す番号である。このカウント値は、連続番号(SQ-NUM:シーケンス・ナンバー)としてパケットに含まれている。入出力制御レジスタ群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にも(複写による更新ではなく)直接書込むのかを選択して、書込処理を実行する。
<機器制御部の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は、入出力制御レジスタ群32から読み出されたデータに基づいて、後述する複写パケット、ダミーパケット等のパケットを生成する。パケット生成回路88は、ヘッダ生成部88aを有している。ヘッダ生成部88aは、後述する通り、データに付加された更新判定ビットに応じて、複写パケットとダミーパケットの何れであるかを示す識別情報を含むヘッダを生成し、生成したヘッダを該当するパケットに付加する。
バッファ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、及び監視部36の各々は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等のハードウェアにより構成される。
<監視部>
図4は本発明の実施の形態に係る監視部の構成例を示すブロック図である。図4に示すように、監視部36は複数の比較回路36Rを有している。複数の比較回路36Rの各々は、入出力制御レジスタ群32の複数のブロック32Bの各々に対応して設けられている。図示した例では、複数(n個)のブロック32B1〜32Bnの各々に対応して、複数(n個)の比較回路36R1〜36Rnが設けられている。以下では、複数のブロック32B1〜32Bnを区別する必要がない場合はブロック32Bと総称し、比較回路36R1〜36Rnを区別する必要がない場合は比較回路36Rと総称する。
入出力制御レジスタ群32に記憶された全データは、システムタイマのカウント周期以下の周期(「複写周期」又は「更新周期」という。)で読み出される。データの読み出しはブロック単位で行われる。比較回路36Rは、対応するブロック32Bから読み出したブロック単位のデータを、対応するブロック32Bから1周期前に読み出したブロック単位のデータと比較する。即ち、対応するブロック32Bのデータについて、更新の有無(1周期の間に更新されたか否か)を監視しているのである。
比較回路36Rは、ブロック単位のデータをビット単位で比較して、比較結果(更新の有無を示す情報)をコントローラ80に出力する。比較結果は、コントローラ80の図示しない記憶部に記憶される。複数ビットのデータを比較する比較回路は、例えばトリガ検出を用いたロジック回路等、一般的に知られている技術であるため、回路構成の詳細な説明は省略する。ブロック単位のデータに変化が無ければ、比較結果は「更新なし」となる。一方、ブロック単位のデータに変化が有れば、比較結果は「更新あり」となる。1周期の間に1ビットでもデータが書き換えられると、比較結果は「更新あり」となる。後述する通り、「更新なし」の場合は、データが格納されていないダミーパケットが送信され、「更新あり」の場合は、ブロック単位のデータが格納された複写パケットが送信される。
なお、図4に示す回路構成は、監視部36の実現手段の一例を示すものであり、入出力制御レジスタ群32の複数のブロック32Bの更新の有無を監視する機能が実現されればよく、監視部36の回路構成は図示したものには限定されない。例えば、入出力制御レジスタ群32の複数のブロック32Bに対し1つの比較回路を設けてもよい。但し、データの読み出しはブロック単位で行われるので、1つのブロック32Bに対して1つの比較回路36Rを設ける方が、複数のブロック32Bに対して1つの比較回路36Rを設ける場合よりも、監視部36を構成する回路がより小型化されると共に、読み出しのタイミングで比較するのでタイミングの設定が容易になる。
<複写パケットとダミーパケット>
ここで複写パケットとダミーパケットとについて説明する。
図5(A)は複写パケットの構成の一例を示す模式図である。図5(B)はダミーパケットの構成の一例を示す模式図である。複写パケットは、入出力制御レジスタ群32から読み出したデータを複写レジスタ群24に書込ませるためのパケットである。従って、複写パケットには、複写対象となるブロック単位のデータが格納されている。これに対し、ダミーパケットには、データは格納されていない。ダミーパケットは、複写レジスタ群24にデータを書込まずに、アドレスカウンタ66をインクリメントするためのパケットである。
図5(A)に示す例では、複写パケットは、ヘッダ(HEADER)、データ(DATA)、連続番号(SQ-NUM)、パッド(PAD)及び誤り検出符号(CRC)で構成されている。ヘッダ(HEADER)は7ビットで表され、データ(DATA)は64ビットで表され、連続番号(SQ-NUM)は4ビットで表され、パッド(PAD)は2ビットで表され、誤り検出符号(CRC)は7ビットで表される。複写パケットのパケット長は、合計84ビットとされている。
ここで「ヘッダ(HEADER)」は、パケットに付加されるパケット・ヘッダであり、複写パケットであることを示す識別情報を含んでいる。「データ(DATA)」は、複写対象となるブロック単位のデータである。「連続番号(SQ-NUM)」は、アドレスカウンタ94が生成したデータの読出元のアドレスデータであり、何番目のブロックからの読み出しデータかを表すカウント値のデータである。「パッド(PAD)」は、データ長を揃えるための付加データである。「誤り検出符号(CRC)」は、誤り検出用のコードデータである。
図5(B)に示す例では、ダミーパケットは、ヘッダ(HEADER)、連続番号(SQ-NUM)、パッド(PAD)及び誤り検出符号(CRC)で構成されている。即ち、データ(DATA)を有しない以外は、複写パケットと同じ構成である。但し、ヘッダは、ダミーパケットであることを示す識別情報を含んでいる。ヘッダ(HEADER)は7ビットで表され、連続番号(SQ-NUM)は4ビットで表され、パッド(PAD)は3ビットで表され、誤り検出符号(CRC)は7ビットで表されている。ダミーパケットのパケット長は、合計21ビットとされている。
ダミーパケットのパケット長は、データ(DATA)を含まない分、複写パケットのパケット長よりも短い。図5(A)及び(B)に示す例では、ダミーパケットのパケット長は21ビットであり、84ビットである複写パケットのパケット長の1/4の長さである。図6(A)は複写パケットが連続送信される様子を示す模式図である。図6(B)はダミーパケットが挿入される様子を示す模式図である。これらを比較すれば分かるように、ダミーパケットが挿入されることで、送信される情報量(トラフィック)が低減され、シリアルバスの占有時間が短縮される。シリアルバスの占有時間が短縮されると、割込の発生に対する対応が迅速化されるという利点もある。
なお、複写パケットのパケット長(84ビット)及びダミーパケットのパケット長(21ビット)は一例であり、システムの設計に応じて設定してもよい。本実施の形態では、1ワードを7ビットのデータで送信することから、各パケットのパケット長を7ビットの整数倍に調整している。
ここでダミーパケットを送信する理由について補足説明する。
本実施形態では、入出力制御レジスタ群32に記憶された各データを先頭アドレスから順に読出して、読出したデータから複写先のアドレスを指定せずに複数のパケットを生成して送信し、複写レジスタ群24の先頭アドレスから当該複数のパケットの転送順にデータを書込む。ここで転送順を表すのが上記の連続番号(SQ-NUM)である。複写パケットに複写先(書込先)のアドレスの情報を含めないことで、アドレスの情報を含める場合に比べて送信される情報量が低減される。
しかしながら、上記の複写処理では、アドレスカウンタ94のカウント値が示す入出力制御レジスタ群32のアドレスから、ブロック単位でデータを読み出して複写パケットを生成する。そして、複写パケットをデコードして得られたブロック単位のデータを、アドレスカウンタ66のカウント値が示す複写レジスタ群24のアドレスに書き込む。従って、入出力制御レジスタ群32及び複写レジスタ群24の複数のブロックに対応した個数分だけパケットを送信しなければ、複写レジスタ群24が順番に更新されない。このため、従来は、入出力制御レジスタ群32に更新されていないブロックが存在しても、当該ブロックのデータを格納した複写パケットを送信していた。
本実施の形態では、入出力制御レジスタ群32の更新されていないブロックについては、当該ブロックのデータが格納されていないダミーパケットを送信する。上記の通り、ダミーパケットを挿入することで、複写パケットだけを送信する場合に比べて送信される情報量が更に低減される。同時に、連続番号(SQ-NUM)を含むダミーパケットを送信することで、アドレスカウンタ94及びアドレスカウンタ66がインクリメントされて、複写レジスタ群24が順番に更新されるのである。
更に、画像形成装置という観点から見ると、画像形成装置の待機時等の機器が動作していない状況では、全機器に亘って送信されるデータ量が低減される。また、画像形成装置の稼働時においても一部の機器に絞ってデータが送信される。
<制御装置の作用>
次に、本実施形態に係る制御装置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の先頭アドレス(先頭ブロック)から当該複数のパケットの転送順にデータを書込む。これにより、複写レジスタ群24の記憶内容が更新される。
また、本実施の形態では、入出力制御レジスタ群32から読み出したブロック単位のデータが更新されていない場合は、ブロック単位のデータが格納された「複写パケット」に代えて、ブロック単位のデータが格納されていない「ダミーパケット」が送信される。
以下、この複写処理を詳しく説明する。
機器制御部14のSerDes制御部30のコントローラ80は、機器制御部14に設けられたタイマICからクロックが出力されると、入出力制御レジスタ群32から複写レジスタ群24へのデータ複写のための読出処理を開始する。なお、ここでは、タイマICのクロックが出力された時を読出開始タイミングとしたが、これは一例であって、読出開始タイミングはこれに限定されない。
具体的には、コントローラ80のレジスタデータ転送回路80aは、アドレスカウンタ94から出力されたアドレスに従って、入出力制御レジスタ群32の先頭アドレス(先頭ブロック)からブロック単位のデータを順次読み出して、パケット生成回路88に当該読み出したデータを順次入力する。
図7はレジスタデータ転送回路80aの動作(レジスタ転送処理)の流れを示すフローチャートである。図7を参照して更に詳細に説明すると、レジスタデータ転送回路80aは、まず、ステップ100で、入出力制御レジスタ群32からブロック単位のデータを読出して取得する。次に、ステップ102で、読み出したデータの「比較結果」を取得する。即ち、「更新なし」又は「更新あり」を示す情報を取得する。
次に、ステップ104で、更新判定ビットを立てる。「更新なし」のブロック単位のデータには、「更新なし」を示す更新判定ビット「1」を付加する。一方、「更新あり」のブロック単位のデータには、「更新あり」を示す更新判定ビット「0」を付加する。次に、ステップ106で、更新判定ビットが付加されたデータを、パケット生成回路88に出力して、動作を終了する。
アドレスカウンタ94の初期値は、入出力制御レジスタ群32の先頭アドレスとされる。そして、レジスタデータ転送回路80aがデータを読み出す毎に、アドレスカウンタ94がカウントアップする。レジスタデータ転送回路80aは、入出力制御レジスタ群32から全データを読み出すまで、アドレスカウンタ94のカウント値が示すアドレスから上記ブロック単位のデータを読み出してパケット生成回路88に入力することを繰り返す。
パケット生成回路88は、複写対象のデータが入力される毎に、当該データを複写レジスタ群24に書込ませるための複写命令のパケット(即ち、「複写パケット」)、又は当該データを含まないダミーパケットを生成し、バッファ90に記憶する。
図8はパケット生成回路の処理の動作(パケット生成処理)の流れを示すフローチャートである。図8を参照して更に詳細に説明すると、まず、ステップ200で、更新判定ビットが「1」か否か(即ち、「更新なし」か否か)を判定する。更新判定ビットが「1」(更新なし)の場合は、ステップ202に進み、データが格納されていないダミーパケットを生成する。次に、ステップ204で、ダミーパケットであることを示すヘッダをパケットに付加する。続いて、ステップ206で、ヘッダが付加されたダミーパケットをバッファ90に出力して、動作を終了する。
一方、ステップ200で、更新判定ビットが「1」ではなく「0」(更新あり)の場合は、ステップ208に進み、ブロック単位のデータが格納された複写パケットを生成する。次に、ステップ210で、複写パケットであることを示すヘッダをパケットに付加する。続いて、ステップ206で、ヘッダが付加された複写パケットをバッファ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のカウント値が示すアドレスにデータを書込む処理を繰り返す。
図9は複写レジスタ更新回路の動作(複写レジスタ更新処理)の流れを示すフローチャートである。図9を参照して更に詳細に説明すると、まず、ステップ300で、パケット識別部64aから複写パケットとダミーパケットの何れであるかを示す識別情報を取得する。次に、ステップ302で、識別情報に基づいて取得したパケットが「ダミーパケット」か否かを判断する。
「ダミーパケット」である場合は、ステップ304に進み、アドレスカウンタ66のカウント値が示すアドレスにはデータを書き込まない(スキップする)。続いて、ステップ306で、アドレスカウンタ66をカウントアップして、動作を終了する。一方、ダミーパケットではなく「複写パケット」である場合は、ステップ308に進み、アドレスカウンタ66のカウント値が示すアドレスにデータを書き込む。続いて、ステップ306で、アドレスカウンタ66をカウントアップして、動作を終了する。
このように、入出力制御レジスタ群32の先頭アドレスから順に同じサイズのデータを読み出して順次複写レジスタ群24に書込むことを繰り返すことにより、最終的に更新され送信された全データを複写レジスタ群24に複写するため、複写パケット又はダミーパケットで複写先(書込先)のアドレスを指定しなくても、問題なく複写処理が実行される。これにより、複写処理が簡易化する。
また、本実施の形態では、入出力制御レジスタ群32から読み出したブロック単位のデータが更新されていない場合は、ブロック単位のデータが格納された「複写パケット」に代えて、ブロック単位のデータが格納されていない「ダミーパケット」を生成して送信する。これにより、アドレスカウンタ94及びアドレスカウンタ66がインクリメントされて複写レジスタ群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に対する読出要求のパケットの発行はなされない。
(従来の制御装置との比較)
ここで、図10に示す従来の制御装置の構成例と比較しながら、本実施形態の制御装置11について説明する。ここでは、複写レジスタ群を主制御部に設けた場合の利点について説明する。
図10(A)に示すように、従来の制御装置は、入出力制御レジスタ群が、主制御部側に設けられていた。主制御部の入出力制御レジスタ群と、機器制御部の駆動・受信回路とはパラレル信号線により接続され、入出力制御レジスタ群から駆動・受信回路に対して、モータやスイッチなどの駆動を制御するデータがパラレル信号線を介して出力され、駆動・受信回路から入出力制御レジスタ群に対して、センサの検出結果等の状態を示すデータがパラレル信号線を介して入力されていた。すなわち、機器の数に比例した分のパラレル信号線で主制御部と機器制御部とを接続する必要があった。しかしながら、主制御部の基板の実装スペース等の問題により、多数のパラレル信号線を配設することは問題があった。
そこで、図10(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にデータを書込ませる例について説明したが、アドレスを指定した複写パケットを生成して送信することも可能である。この場合には、当該指定されたアドレスにデータが書込まれる。なお、ダミーパケットの場合は、複写レジスタ群24にデータは書込まれない。