目次
前
次
シーケンサ実現
シーケンサは、ステートマシンとも呼ばれる
決められた動作を実行する他に、条件判断で
動作を変更したり、反復するデジタルの回路
です。
マイクロコンピュータの構造化プログラムを
デジタル回路で実現するのが、シーケンサと
考えればよいでしょう。
最も簡単なシーケンサのもとになる回路は、以下。
この出力にRSラッチをつけると、点滅回路になります。
RSラッチで実現しているLEDの状態は、次のように
点灯と消灯を行ったり来たり。
カウンタIC4024の出力は、デコーダICに0から15を与え
0と5のときに、正のパルスを出力します。
カウンタの値(ステート)で実行している内容は、以下。
- 0 → 0ピンに'H'出力(SにHを与える)
- 1 → 1ピンに'H'出力
- 2 → 2ピンに'H'出力
- 3 → 3ピンに'H'出力
- 4 → 4ピンに'H'出力
- 5 → 5ピンに'H'出力(RにHを与える)
- 6 → 6ピンに'H'出力
- 7 → 7ピンに'H'出力
- 8 → 8ピンに'H'出力
- 9 → 9ピンに'H'出力
- 10 → 'H'出力なし
- 11 → 'H'出力なし
- 12 → 'H'出力なし
- 13 → 'H'出力なし
- 14 → 'H'出力なし
- 15 → 'H'出力なし
RSラッチに与えられる制御信号をタイミングチャートで
見ると、次のようになります。
シーケンサでは、ステートごとに実行する処理を決める
ことがシステム設計の一部になります。
シーケンサに使うカウンタを何にするのかも、同じ程度
に重要項目と言えます。
ステートが4状態以内では、2ビットジョンソンカウンタ
を使うのが定石です。
2ビットジョンソンカウンタは、シフトレジスタを利用。
出力は、Qa、Qbなので、状態値は次の繰返しです。
- 00 → 01
- 01 → 11
- 11 → 10
- 10 → 00
クロックを1Hzにすると、QaかQbにLEDを
接続すると点滅できます。
マイコンのファームウエアを作成するとき、構造化された
プログラムを書くと、見通しがよくなりますがシーケンサ
を使うと、構造化されたプログラムと等価な処理を、実現
できます。
構造化されたプログラムは、「proper program」と呼び
次の3種の構造だけで記述されます。
この3種の構造を実現する回路とフローチャートの
対応を見てみます。
連接
選択
反復
シーケンサで動かす回路は、トリガーを貰って与えられた
仕事をする方式にしておきます。
ソフトウエア工学の心得があれば、イベントドリブン
タイプの処理に適用できると言い換えるとわかるかも
知れません。
条件待ちをして、条件が合致したら複数の処理を連続
実行する場合は、シフトレジスタを2つ組み合わせて
条件判定とトリガー出力、連続実行で2シーケンサを
用意。
回路は簡単で、以下となります。
信号SSが0→1と変化すると、左のシフトレジスタで
その変化を1クロック分だけ、右のシフトレジスタに
伝達します。
左のシフトレジスタは、条件判定回路になります。
右のシフトレジスタは、3回路に順番にトリガーを
与えて、終了。
状態遷移図では、次のシーケンスを実行しているのと等価。
シーケンサは、与えるクロックで100MHz程度でも充分
実用になります。マイコンが100MHzで動作させても
命令を解釈しながら実行するために、システム動作が
50MHzにもならないのとは、大違い。
トリガーで一気呵成に3回路を動かしますが、各回路の
動作終了を待ってはいません。待ちを、実現するには
右のシフトレジスタをJKタイプのフリップフロップに
交換して対応します。
CMOSの4000シリーズ、4500シリーズには、使いやすい
JKタイプのフリップフロップはないので、74LSの
シリーズを利用します。
74LSシリーズを使うと、電源が5Vに限定される
ので、DタイプのフリップフロップをJKタイプへと
変換して使います。
1シーケンサで複数の回路を動かす場合、SRラッチを
使った回路を考えればよいでしょう。
上の回路の場合、SRラッチのS、Rの組を8パターン使う
ことが可能です。8回路を並列に動かすことができると
言ってもよいでしょう。
目次
前
次