目次
前
次
デコーダ
デジタル回路は、シーケンサ、デコーダ、エンコーダで
構成することが多いので、デコーダをテストすることも
必要になります。
次のデコーダをテストしてみます。
左がデコーダの入力値、右を出力値とします。
0 : 100
1 : 105
2 : 110
3 : 120
4 : 130
5 : 140
6 : 150
7 : 160
8 : 170
9 : 180
10 : 190
11 : 200
12 : 150
13 : 150
14 : 150
16 : 150
IchigoJamは、出力が4ビットしかないですが
LEDの点灯、消灯に利用する1ビットを使うと
すれば、5ビットの出力があります。
OUT1から4とLEDの1ビットを使い、デコーダ回路に
5ビットを与えます。IN1から4で入力し、その値を
表示すれば、デコーダ回路が正しく作られているか
を確認できます。
OUT命令で4ビットの値を渡し、LEDの1ビットは
セレクタに利用。
8ビット出力をセレクタで1ニブル出力にして
使います。
4ビットの値を与えて、4ビットの出力を取り出す
サブルーチンを作成します。
100 '
110 LET [0],0
120 FOR I=4 TO 1 STEP -1
130 LET [0],([0] << 1) | IN(I)
140 NEXT
150 RTN
LEDから出力する値で、8ビットの上位、下位を
選ぶので、8ビットに合成する処理を考えます。
40 LED 1:GOSUB 100:LET [10],([0] << 4)
50 LED 0:GOSUB 100:LET [10],[10] | [0]
OUTには、0から15を出力するので
サブルーチンでOUT命令を使えるよう
にします。
200 '
210 FOR I=4 TO 1 STEP -1
220 OUT I,P & 1
230 LET P,(P >> 1)
240 NEXT
250 RTN
合体して、調整。
10 ' test decoder
20 FOR D=0 TO 15
30 ? D:LET P,D:GOSUB 200
40 LED 1:GOSUB 100:LET [10],([0] << 4)
50 LED 0:GOSUB 100:LET [10],[10] | [0]
60 ? [10]
70 WAIT 120
80 NEXT
90 END
100 '
110 LET [0],0
120 FOR I=4 TO 1 STEP -1
130 LET [0],([0] << 1) | IN(I)
140 NEXT
150 RTN
200 '
210 FOR I=4 TO 1 STEP -1
220 OUT I,P & 1
230 LET P,(P >> 1)
240 NEXT
250 RTN
4ビットを超える場合は、シフトレジスタを利用します。
シフトレジスタを利用すると、2ビットで4ビット、8ビットの値を
設定できます。8ビット値を出力するサブルーチンは、以下。
100 '
110 FOR I=1 TO 8
120 OUT 1,P & 1:OUT 2,0:OUT 2,1
130 LET P,P >> 1
140 NEXT
150 RTN
デコーダ出力が4ビットを超える場合、シフトレジスタで
一度8ビットを入力して、入力する方法も使えます。
74HC165を利用すれば、次のように接続します。
74HC165は、8ビットをLD制御で記憶し、クロックCKを
与えると、データを心太のように出力してきます。
処理をサブルーチンにしてみました。
200 '
210 OUT 3,1:OUT 3,0:OUT 3,1
220 LET R,0
230 FOR I=1 TO 8
240 LET R,(R << 1) | IN(1)
250 OUT 4,0:OUT 4,1
260 NEXT
270 ? R
280 RTN
合体して、調整。
10 ' test decoder
20 FOR D=0 TO 255
30 ? D
40 LET P,D:GOSUB 100
50 GOSUB 200
60 NEXT
70 END
100 '
110 FOR I=1 TO 8
120 OUT 1,P & 1:OUT 2,0:OUT 2,1
130 LET P,P >> 1
140 NEXT
150 RTN
200 '
210 OUT 3,1:OUT 3,0:OUT 3,1
220 LET R,0
230 FOR I=1 TO 8
240 LET R,(R << 1) | IN(1)
250 OUT 4,0:OUT 4,1
260 NEXT
270 ? R
280 RTN
ラベル利用で、次のようにも書けます。
10 ' test decoder
20 FOR D=0 TO 255
30 ? D
40 LET P,D:GSB @PON
50 GSB @POFF
60 NEXT
70 END
100 @PON
110 FOR I=1 TO 8
120 OUT 1,P & 1:OUT 2,0:OUT 2,1
130 LET P,P >> 1
140 NEXT
150 RTN
200 @POFF
210 OUT 3,1:OUT 3,0:OUT 3,1
220 LET R,0
230 FOR I=1 TO 8
240 LET R,(R << 1) | IN(1)
250 OUT 4,0:OUT 4,1
260 NEXT
270 ? R
280 RTN
目次
前
次