目次
前
次
デジタルICテスター
ROMシーケンサは、2進数の数値を、希望周期で出力可能。
この特徴を活用し、デジタルICの動作テストもできます。
ROMシーケンサから出力する2進数を、ブレッドボードに
あるデジタルICに接続して、ICの動作をテストします。
基本ゲートのICは、同一論理ゲートが複数含まれているので
LEDで入出力論理値をモニタすればよいと考えました。
2入力のANDゲートをテストするために、2進数の数値を
4パターン出力。動作中であることを示すモニタにLEDを
使い、上の回路になりました。
ROMシーケンサのパターンを考えると以下。
- address=0000 // 0001(next) / ? 1(monitor) 0(gate H) 0(gate L)
- address=0001 // 0010(next) / ? 0(monitor) 0(gate H) 0(gate L)
- address=0010 // 0011(next) / ? 1(monitor) 0(gate H) 1(gate L)
- address=0011 // 0100(next) / ? 0(monitor) 0(gate H) 1(gate L)
- address=0100 // 0101(next) / ? 1(monitor) 1(gate H) 0(gate L)
- address=0101 // 0110(next) / ? 0(monitor) 1(gate H) 0(gate L)
- address=0110 // 0111(next) / ? 1(monitor) 1(gate H) 1(gate L)
- address=0111 // 0000(next) / ? 0(monitor) 1(gate H) 1(gate L)
?の論理値は、'0'と'1'のどちらでもよいとすれば
ROMに格納するパターンは、次のように指定。
+0 0x14
+1 0x20
+2 0x35
+3 0x41
+4 0x56
+5 0x62
+6 0x77
+7 0x03
ROMへの格納パターンを決めた後、クロック周波数を
考えておきます。
1秒ごとの状態遷移になるよう、ROMシーケンサのクロック
周波数を1Hzに決めておけば、よいでしょう。
ORゲートの処理は、次のようにします。
ROMシーケンサの格納パターンは、ANDゲートのそれと
同じで変えないで対応できます。これが長所でしょう。
基本ゲートのテストができれば、デコーダのテストに
移ります。74LS139の場合、4ビット構成で対応。
4ビット中のMSB(Most Significant Bit)を、enable
disableに利用して対応。
ROMへの格納パターンは、以下。
+0 0x18
+1 0x29
+2 0x3A
+3 0x4B
+4 0x5C
+5 0x6D
+6 0x7E
+7 0x8F
+8 0x90
+9 0xA1
+A 0xB2
+B 0xC3
+C 0xD4
+D 0xE5
+E 0xF6
+F 0x07
デコーダの次は、フリップフロップをテスト。
対象回路は以下。
SRラッチとして動作させるために、0、1ビットの
出力を利用。フリップフロップ動作は、2、3ビット
を使うことにしました。
SRラッチのビットパターンは、0、1なのでセット
とリセットを交互に出力。
(ビット1,ビット0)=(0,0) アイドル
(ビット1,ビット0)=(0,1) セット
(ビット1,ビット0)=(0,0) アイドル
(ビット1,ビット0)=(1,0) リセット
(ビット1,ビット0)=(0,0) アイドル
フリップフロップはD端子とクロック入力を利用し
SRラッチの動作をしないように、パターンを決定。
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(1,0,0,0) D端子印加
(ビット3,ビット2,ビット1,ビット0)=(1,1,0,0) 記憶
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) D端子印加
(ビット3,ビット2,ビット1,ビット0)=(0,1,0,0) 記憶
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
フリップフロップとSRラッチの動作を区別できるよう
フリップフロップの場合、データキープの時間を長く
して対応。
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(1,0,0,0) D端子印加
(ビット3,ビット2,ビット1,ビット0)=(1,1,0,0) 記憶
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) D端子印加
(ビット3,ビット2,ビット1,ビット0)=(0,1,0,0) 記憶
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
(ビット3,ビット2,ビット1,ビット0)=(0,0,0,0) アイドル
ROMシーケンサのパターンとしてまとめます。
- address=0000 // 0001(next) / 0(D) 0(clk) 0(reset) 0(set) // SR latch(idle)
- address=0001 // 0010(next) / 0(D) 0(clk) 0(reset) 1(set) // SR latch(Set)
- address=0010 // 0011(next) / 0(D) 0(clk) 0(reset) 0(set) // SR latch(idle)
- address=0011 // 0100(next) / 0(D) 0(clk) 1(reset) 0(set) // SR latch(Reset)
- address=0100 // 0101(next) / 0(D) 0(clk) 0(reset) 0(set) // SR latch(idle)
- address=0101 // 0110(next) / 0(D) 0(clk) 0(reset) 0(set) // D_FF(idle)
- address=0110 // 0111(next) / 1(D) 0(clk) 0(reset) 0(set) // D_FF(data_H)
- address=0111 // 1000(next) / 1(D) 1(clk) 0(reset) 0(set) // D_FF(latch)
- address=1000 // 1001(next) / 0(D) 0(clk) 0(reset) 0(set) // D_FF(idle)
- address=1001 // 1010(next) / 0(D) 0(clk) 0(reset) 0(set) // D_FF(idle)
- address=1010 // 1011(next) / 0(D) 0(clk) 0(reset) 0(set) // D_FF(idle)
- address=1011 // 1100(next) / 0(D) 0(clk) 0(reset) 0(set) // D_FF(data_L)
- address=1100 // 1101(next) / 0(D) 1(clk) 0(reset) 0(set) // D_FF(latch)
- address=1101 // 0000(next) / 0(D) 0(clk) 0(reset) 0(set) // D_FF(idle)
ROMへの格納パターンは、以下。
+0 0x10
+1 0x21
+2 0x30
+3 0x42
+4 0x50
+5 0x60
+6 0x78
+7 0x8c
+8 0x90
+9 0xa0
+A 0xb0
+B 0xc0
+C 0xd4
+D 0x00
4信号で対応できる例を挙げましたが、8信号でも考え方は同じ。
目次
前
次