目次
前
次
ROMシーケンサ
ROMシーケンサは、CPUのようなマイクロプロセッサを
実現する場合のマイクロプログラムを生成するために
使います。
マイクロプログラムは、カウンタを使った制御信号を
生成するシーケンサの変形です。
プログラムと称されていますが、ソフトウエアではなく
ハードウエアです。
ROMとして2732を利用した回路は、以下。
2ビットジョンソンカウンタを利用し、ROMのnOEと
レジスタへの情報記憶トリガーを生成します。
ROMのアドレスは、ROMに格納された情報になります。
ROMのアドレスと格納された4ビットの情報を次の
ようにすると、どんなことが起きるかを考えます。
AAAA DDDD
3210 3210
address = "0000" data = "0001"
address = "0001" data = "0010"
address = "0010" data = "0011"
address = "0011" data = "0100"
address = "0100" data = "0101"
address = "0101" data = "0110"
address = "0110" data = "0000"
リセット後、レジスタの出力は"0000"で、これがアドレスに
なります。クロックが入るとROMからのデータは"0001"になり
クロックが入るたびに、+1された値がレジスタに格納されて
いきます。
アドレスが6のときには、ROMの出力が"0000"になるので
レジスタの下位4ビットは、0→1→...→6→0→1→
と繰り返し。
リセット後に、0から6を繰り返すので7進数カウンタを
構成したのと等価。
7進数カウンタは、7ステートをもつシーケンサと等価なので
ROMの出力の上位4ビットに値を設定すると、7x4=28通り
の信号を出力できることになります。
上位4ビットを加えてみます。
AAAA DDDD DDDD
3210 3210 7654
address = "0000" data = "0001" "1001"
address = "0001" data = "0010" "0001"
address = "0010" data = "0011" "1010"
address = "0011" data = "0100" "0010"
address = "0100" data = "0101" "1101"
address = "0101" data = "0110" "0101"
address = "0110" data = "0000" "1000"
アドレスとデータの上位4ビットだけをタイミングチャート
にすると、以下。
7ステートの中で、上位4ビットの変化は
他のビットと無関係にできます。データ間
での依存関係を持たないことも可能ですし
依存関係を持たせることもできます。
ROMシーケンサでは、カウンタを構成しつつ
カウンタの値をステートにし、ステートに
おける値を好きなように設定できます。
4ビットに信号生成で不足する場合、以下の
回路を利用します。
16ビットを上位にデータ、下位にアドレスを格納して
最大256アドレスを利用できます。ROMサイズには
512バイト以上であれば使えます。
全アドレスを利用することはないですが、256バイト
分の情報を出力できるので、一般的な処理には不足は
ないと思います。
制御回路は、バイナリーカウンタをベースにしたシーケンサ。
このシーケンサで、SRラッチを使い、nOEとROMのA0を制御し
8ビットのレジスタのためのトリガーを生成。
カウンタ出力値で、何をしているのかを示してみると、以下。
counter = "0000" → nothing
counter = "0001" → nOE='L' A0='L'
counter = "0010" → confirm signal level with delay
counter = "0011" → latch 8 data(signal information)
counter = "0100" → A0='H'
counter = "0101" → confirm signal level with delay
counter = "0110" → latch 8 data(address)
counter = "0111" → nOE='H'
counter = "1000" → reset counter
シーケンサはカウンタを使うので、クロックジェネレータから
の出力をLEDで確認できるようにしました。点滅していますが
周期が短いので、点灯したままに見えます。
ROMライターは、以下を利用。
ROMライター用のデータ生成は、各種のアセンブラを利用
しておきます。Z80や6809のアセンブラは、フリーで入手
可能なので、データをバイトで生成するようにします。
目次
前
次