(57)【特許請求の範囲】
【請求項１】
プログラム可能で、複数の制御対象に対応した処理チャンネル毎に状態遷移によりシーケンスを制御するシーケンス制御用マイクロコントローラであって、
シーケンス制御される各制御対象に対応した各処理チャネル毎に、初期状態もしくは一連のプログラム命令の終了処理時の条件に応じて次のサンプリング周期に処理すべき状態を保持する状態レジスタを有し、
サンプリングクロック及びチャネル処理要求を受けて、各処理チャネルの処理を順次に前記状態レジスタに保持されている状態に応じたプログラムでサンプリング周期毎に実行するとともに、各処理チャネルの処理終了毎に次のサンプリング周期に当該処理チャネルで処理すべき状態を当該処理チャネルに対応する前記状態レジスタに保存し、
次のサンプリングクロックの入力を待って、次のサンプリング周期を開始する
ことを特徴とするシーケンス制御用マイクロコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、各種のシーケンス制御を行うシーケンス制御用マイクロコントローラに関する。
【０００２】
【従来の技術】
従来より、光ディスクシステムのディジタルサーボ等、各種のシーケンス制御を行うために、マイクロプロセッサが広く用いられている。そして、このためのシーケンスを表記する手法としてタイムチャート方式があるが、シーケンス処理すべき対象数が多いときなどには必ずしも理解しやすいとは言えない。そこで現象をより直視的に把握する表記法として状態遷移図を用いることが一般的に行われており、マイクロプロセッサにおいてはその状態遷移をプログラム化することによりシーケンス制御を実現している。
【０００３】
また、シーケンスはある一定時間間隔のサンプリング周期で処理されるのが通常であり、そのためにタイマ割り込みを用いるかあるいはプログラムの実行サイクルを計算してソフトウエア的に時間間隔を作り出すなどの方法が採られてきた。
【０００４】
図６はそのような従来のマイクロプロセッサを用いたシーケンス制御システムの構成図であり、図７は各チャネル毎の状態遷移を示す状態遷移図である。
【０００５】
図６において、タイマ６４で一定時間間隔Ｔｓ毎に発生されるサンプリングパルスにより割り込みコントローラ６３を起動する。プログラムメモリ６２はシーケンス制御用のプログラムが状態遷移図に対応してメモリされている。この状態遷移図は図７に示されるように、シーケンス制御されるチャネルＣＨ０〜ＣＨｎ毎に形成されており、各チャネルにおいて複数のステート（ＣＨ０の例では、ステート０〜ステート２）と状態の遷移（ＣＨ０の例では、（ａ）〜（ｇ））を持っている。また、入出力ポート６５は外部からの情報入力を受け取ると共に、外部への制御信号を出力する。
【０００６】
そして、マイクロプロセッサ６１は割り込みコントローラ６３からの信号を受けて起動し、割り込み処理プログラムを処理し、当該周期のシーケンス制御を開始する。その際、入出力ポート６５からの外部情報、及びプログラムメモリ６２からの各チャネルの状態を認識して、次に処理すべき内容を判断し、処理すべきプログラムを特定する。そして、そのプログラム命令に従って、各チャネル毎にその周期に実行すべきステップ毎の処理を行っていく。すべてのチャネルについての各ステップの処理は、当該周期の時間Ｔｓ内に終了される。
【０００７】
【発明が解決しようとする課題】
このような従来のシーケンス制御システムでは、シーケンスが複雑化してきて、かつ複数のチャネルの処理を行う場合には、割り込み処理プログラムの起動・処理とか、割り込み発生後のプログラム上での現在のステートの認識及び次に処理するべき内容の判断などを必要とするから、プログラムの処理ステップが膨大になる。したがって、従来から採用されてきている汎用のマイクロプロセッサでは、この膨大なステップのプログラムを限られた時間間隔Ｔｓ内で処理することが困難になってきている。また、従来のシーケンス制御システムで対応しようとすると、動作速度（周波数）を上げたより高級なプロセッサを使用したり、或いは外付けハードウエアを併用するなどの対策が必要となる。
【０００８】
本発明は、高級なプロセッサを使用したり、外付けハードウエアを併用したりすることなく、内部に簡単なハードウエアを設けることで処理すべきプログラムステップ数を削減して、従前から使用されている汎用のマイクロプロセッサを用いて、複雑なシーケンスで、かつ複数のチャネルの処理を行うことができる、シーケンス制御用マイクロコントローラを提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明の請求項１のシーケンス制御用マイクロコントローラは、プログラム可能で、複数の制御対象に対応した処理チャンネル毎に状態遷移によりシーケンスを制御するシーケンス制御用マイクロコントローラであって、
シーケンス制御される各制御対象に対応した各処理チャネル毎に、初期状態もしくは一連のプログラム命令の終了処理時の条件に応じて次のサンプリング周期に処理すべき状態を保持する状態レジスタを有し、
サンプリングクロック及びチャネル処理要求を受けて、各処理チャネルの処理を順次に前記状態レジスタに保持されている状態に応じたプログラムでサンプリング周期毎に実行するとともに、各処理チャネルの処理終了毎に次のサンプリング周期に当該処理チャネルで処理すべき状態を当該処理チャネルに対応する前記状態レジスタに保存し、
次のサンプリングクロックの入力を待って、次のサンプリング周期を開始することを特徴とする。
【００１０】
この構成によれば、各チャネルで処理すべき状態値を保持した状態レジスタを用いていることにより、状態遷移図を表現するのに最適なアーキテクチャとなるため、高速のマイクロプロセッサを用いることなく、効率的なシーケンスを組むことができる。
【００１１】
【発明の実施の形態】
本発明の実施例について、図１〜図５を参照して説明する。図１は、本発明の実施例に係るサーボシーケンス制御用マイクロコントローラの構成を示す図であり、図２はプログラムメモリのマップを示す図であり、図３はプログラム例を説明するための簡単な状態遷移図であり、図４及び図５は動作タイミングを示す図である。
【００１２】
図１において、バスライン１，演算レジスタＡ２、演算レジスタＢ３、汎用レジスタＴ４，フラグレジスタ５，演算論理ユニット６，および外部メモリＩ／Ｆ７で通常のマイクロプロセッサを構成している。
【００１３】
プログラムカウンタＰ８は、プログラムの処理の進行に応じて種々のアドレス値を記憶し、必要時に出力する。状態レジスタＳ９は、各処理チャネル毎に設けられており、それぞれ各チャネルで次に処理すべき状態を保持している。アドレスカウンタ１０は、プログラムカウンタＰ８にアドレスを記憶させると共に、プログラムカウンタＰ８に記憶されているアドレスと状態レジスタＳ９に保存されている状態値を受けてプログラムメモリＩ／Ｆ１１にアドレスを出力する。
【００１４】
プログラムメモリＩ／Ｆ１１は、図２のプログラムメモリにプログラムアドレスPRGADRを出力すると共に、プログラムメモリからプログラムデータPRGDATを受ける。命令デコーダ１２は、プログラムデータPRGDATをプログラムメモリＩ／Ｆ１１から受けて、デコードし、コントローラ１３に供給する。
【００１５】
コントローラ１３は、すべての構成要素、ブロックと結合されており、サンプリングクロックSMPCLK、チャネル処理要求CHAENBを受けると共に、チャネルステータスCHASTを出力する。またコントローラ１３には、サンプリングクロックSMPCLKが直接供給され、その立ち上がりを監視し、サンプリングクロックSMPCLKが立ち上がると、コントローラ１３はその時点でのチャネル処理要求CHAENBの立っているチャネルを判別する。チャネル処理要求CHAENBの立っているチャネルが複数あれば、予め定められている順にプログラム処理を行う。
【００１６】
本実施例ではチャネル数は１６としており、処理チャネルとしては例えば、サーボオフセット調整、オープンループゲイン調整などといったものが挙げられる。状態レジスタＳ９はこのチャネル数に応じて１６設けられ、またチャネル処理要求CHAENB及びチャネルステータスCHASTはチャネル数に応じて１６ビットとされている。また、本実施例では、サンプリングクロックSMPCLKは８８ＫＨｚ、システムクロックSYSCLKは３４ＭＨｚである。
【００１７】
図２のプログラムメモリは、各アドレスが８ビットで構成されており、チャネル０〜チャネル１５の各スタートアドレスが配置されたシステムエリアと、各チャネル毎に、状態アドレスとプログラムデータPRGDATが配置されたチャネルエリア、を有している。
【００１８】
次に、本発明の実施例で用いられるプログラムの例を、図３の簡単な状態遷移図に対応して記載すると、次の通りとなる。
：Ｓｔａｔｅ−０
・命令群
ＪＥＱ  Ｌａｂｅｌ１  ←条件分岐
ＳＴＰ  ０            ←次も同じ状態のプログラムを実行(ａ)
：Ｌａｂｅｌ１
ＳＴＰ  １            ←次は状態１に遷移してプログラムを実行(ｂ)
：Ｓｔａｔｅ−１
・命令群
ＪＥＱ  Ｌａｂｅｌ２  ←条件分岐
ＳＴＰ  １            ←次も同じ状態のプログラムを実行(ｃ)
：Ｌａｂｅｌ２
ＳＴＰ  ０            ←次は状態０に遷移してプログラムを実行(ｄ)
【００１９】
このプログラム例は、特定のチャネルに対するものであり、したがってこのようなプログラムが各チャネルに対応して、プログラムメモリの各チャネルエリアに記述されている。命令のところには、この状態で処理すべき命令群を記述する。条件分岐としては、レジスタ値の比較やビットテストの結果に対して分岐するかどうか判断する命令を用意する。
【００２０】
さて、図３の状態遷移図では、初期状態は「ステート０」となっているから、このチャネルのステート０に応じたプログラム命令に基づいて所要の処理が行われる。このプログラム命令の処理が終わると、条件分岐を見て、次のサンプリング周期にも同じ状態「ステート０」のプログラムを実行するか（ａ）、次の状態「ステート１」のプログラムを実行するか（ｂ）を決定し、当該チャネルの状態レジスタＳ９の状態を書き換える。
【００２１】
次のサンプリング周期において、このチャネルの状態レジスタＳ９の状態に応じて、すなわち状態「ステート０」又は状態「ステート１」に応じて、同様にプログラム処理が行われていく。
【００２２】
このように構成されるサーボシーケンス制御用マイクロコントローラの動作について、図４，図５の動作タイミング図を参照しつつ、具体的に説明する。
【００２３】
まず、サンプリングクロックSMPCLK到来直後の動作タイミングを示す図４を参照する。サーボシーケンス制御は、サンプリングクロックSMPCLKの立ち上がりによって開始されるから、サンプリングクロックSMPCLKが直接供給されるコントローラ１３でその立ち上がりを監視し、サンプリングクロックSMPCLKの立ち上がりを待つ。すなわち、サンプリングクロックSMPCLKが直接供給され、ハード的にプログラムが起動される。
【００２４】
サンプリングクロックSMPCLKが立ち上がると、コントローラ１３はその時点での処理要求の立っているチャネルを判別する。処理要求の立っているチャネルが複数あれば、これら複数のチャネルを例えば番号の小さいチャネルから順にプログラム処理を行う。この例では、処理要求の立っている一番小さいチャネルをチャネル０としている。
【００２５】
なお、コントローラ１３からは、チャネル処理要求CHAENBに対して、現在処理しているチャネルを表すチャネルステータスCHASTが出力されている。
【００２６】
コントローラ１３からの指令により、プログラムメモリＩ／Ｆ１１からプログラムアドレスPRGADRとしてチャネル０に対応して「ｎ０」（実際のアドレス値は、０００ｈ、である）を出力する。このプログラムアドレスPRGADR「ｎ０」に応じて、プログラムメモリのシステムエリアからチャネル０のスタートアドレス「ＣＨ０スタート」をプログラムデータPRGDATＤ０として取得し、これを１６倍（すなわち左へ４ビットシフト）して、プログラムカウンタＰ８に記憶する（Ｄ０×１６）。
【００２７】
そして、状態レジスタＳ９に保存されているチャネル０の状態値（ここでは、ステート０と仮定する）を読み出し、この状態値を２倍（すなわち左へ１ビットシフト）した値と、プログラムカウンタＰ８に記憶されている値（「ＣＨ０スタート」を１６倍したもの）とを加算し、その加算値（Ｄ０×１６＋Ｓ×２）をプログラムメモリＩ／Ｆ１１から新たなプログラムアドレスPRGADRとしてプログラムメモリに出力する。
【００２８】
このプログラムアドレスPRGADR（Ｄ０×１６＋Ｓ×２）に格納されているプログラムデータPRGDAT「ＣＨ０ステートＬ０」をプログラムデータPRGDATＤ２Ｌとして取得する。そして、プログラムアドレスPRGADRを１だけインクリメントする。
【００２９】
１だけインクリメントされたプログラムアドレスPRGADR（Ｄ０×１６＋Ｓ×２＋１）に格納されているプログラムデータPRGDAT「ＣＨ０ステートＨ０」をプログラムデータPRGDATＤ２Ｈとして取得する。そして、このＤ２Ｌを下位、Ｄ２Ｈを上位として総合したプログラムアドレスPRGADR（Ｄ２Ｈ＋Ｄ２Ｌ）を得る。なお、Ｄ２Ｈは上位であるから、この総合したプログラムアドレスPRGADRは、厳密に表記すると、（Ｄ２Ｈ×２５６＋Ｄ２Ｌ）である。
【００３０】
このプログラムアドレスPRGADR（Ｄ２Ｈ＋Ｄ２Ｌ）をプログラムメモリＩ／Ｆ１１からプログラムメモリに与える。この場合はチャネル０であるからＣＨ０エリアのプログラムデータPRGDAT領域からプログラムアドレスPRGADR（Ｄ２Ｈ＋Ｄ２Ｌ）に格納されているチャネル０で今回処理すべきプログラムデータPRGDATが得られる。
【００３１】
読み出されたプログラムに従って、バスライン１，演算レジスタＡ２、演算レジスタＢ３、汎用レジスタＴ４，フラグレジスタ５，演算論理ユニット６，および外部メモリＩ／Ｆ７で構成される通常のマイクロプロセッサで、プログラムを実行していく。命令体型としては、算術及び論理演算、レジスタ間データ転送、内部レジスタと外部メモリ間のデータ転送、ビットテスト、条件付き分岐、条件なし分岐、終了処理等である。
【００３２】
終了処理命令になると、チャネル０の状態レジスタＳ９にこのサンプリングで処理された結果が保存されており、処理の最後に次の状態（例えば、ステート０又はステート１）を決めて保存し、チャネル０の処理は終了する。
【００３３】
次に、チャネル処理要求CHAENBに従って、他に処理すべきチャネルが残っていれば、同様にしてそれぞれ次チャネル処理を行うことになる。次チャネル処理移行時の動作は、図５に例示されており、この図５ではチャネルステータスCHASTから分かるように、チャネルｉ−１の処理が終了し、引き続いてチャネルｉの処理を行う場合の例が示されている。この図５からも明らかなように、図４のサンプリングクロックSMPCLK到来直後の動作とは、コントローラ１３からの指令により、プログラムメモリＩ／Ｆ１１からプログラムアドレスPRGADRとしてチャネルｉに対応して「ｎｉ」を出力する。このプログラムアドレスPRGADR「ｎｉ」に応じて、プログラムメモリのシステムエリアからチャネルｉのスタートアドレス「ＣＨｉスタート」をプログラムデータPRGDATＤ０として取得する点で、変わるのみであり、以下同様に図４におけると同様に、チャネル処理が実行されていくことになる。そして、処理すべきすべてのチャネルの処理が、当該サンプリング周期Ｔｓの時間内に行われ、終了すれば、待機状態に戻り、次のサンプリングクロックSMPCLKの発生を待つ。
【００３４】
以上説明したように、本発明では、サンプリングクロックSMPCLKをコントローラ１３に直接供給し、ハード的にプログラムを起動しているため、マイクロプロセッサの割り込み処理プログラムを起動して処理する必要もなく、直ちに本来の処理にはいる。そして、各チャネル毎の状態遷移に対応して、現在処理すべき状態を状態レジスタＳ９に保存させておき、サンプリングクロックSMPCLKにより状態レジスタＳ９の値を読み出し、その値に対応したプログラムアドレスPRGADRに分岐し、速やかにプログラム実行を行う。各チャネルの処理の最後に、各状態レジスタＳ９に次回に処理すべき状態を設定し、次のチャネルの処理に移る。
【００３５】
従って、本発明においては、状態レジスタＳ９を活用することにより、状態遷移図を表現するのに最適なアーキテクチャとなるため、高速のマイクロプロセッサを用いることなく効率的なシーケンスを組むことが可能となる。
【００３６】
また、複数チャネルの状態遷移を同じプロセッサで実現する場合、プログラムが非常に複雑になることが避けられないが、本発明では、処理チャネル毎に状態レジスタＳ９を持ちサンプリング周期内で各チャネルの処理を順に実行することで、プログラムはチャネル間で完全に独立のものとなる。このことから、プログラムは各状態で処理すべきことだけを記述すれば済むのでプログラミングが容易でありデバッグもしやすい。
【００３７】
また、状態レジスタＳ９を外部から観測するようにすれば、サンプリング周期毎の状態遷移の様子が観測できるので、ＩＣＥなどエミュレータを用いなくても、ロジックアナライザ程度で充分にデバッグが可能である。
【００３８】
更に本発明では、単純なアーキテクチャで構成されるので、回路規模としても非常に小さくなるので、専用のコントローラとして最適である。
【００３９】
【発明の効果】
本発明の請求項１の構成によれば、各チャネルで処理すべき状態値を保持した状態レジスタを用いていることにより、状態遷移図を表現するするのに最適なアーキテクチャとなるため、高速のマイクロプロセッサを用いることなく、効率的なシーケンスを組むことができる。
【図面の簡単な説明】
【図１】本発明の実施例に係るサーボシーケンス制御用マイクロコントローラの構成図。
【図２】プログラムメモリのマップを示す図。
【図３】プログラム例を説明するための簡単な状態遷移図。
【図４】動作タイミングを示す図。
【図５】動作タイミングを示す図。
【図６】従来のマイクロプロセッサを用いたシーケンス制御システムの構成図。
【図７】各チャネル毎の状態遷移を示す状態遷移図。
【符号の説明】
８  プログラムカウンタＰ
９  状態レジスタＳ
１０  アドレスカウンタ１０
１１  プログラムメモリＩ／Ｆ
１２  命令デコーダ
１３  コントローラ
【図１】
0003871461.tif 000002
【図２】
0003871461.tif 000003
【図３】
0003871461.tif 000004
【図４】
0003871461.tif 000005
【図５】
0003871461.tif 000006
【図６】
0003871461.tif 000007
【図７】
0003871461.tif 000008