ワンボードマイコンの設計 -...
TRANSCRIPT
ワンボードマイコンの設計
設計仕様
1. RAM空間 8KB
2. ROM空間 8KB
3. メモリの選択はフルアドレス選択
4. プログラム作成が可能(モニタプログラム常駐)
5. シングルステップ動作可能
6. キー入力回路,表示回路付き
7. IOボート増設可能
ワンボードマイコンのブロック構成
CPU回路 ROM回路 RAM回路 IO回路
キー入力回路 表示回路
ワンボードマイコンの回路
LS
244
+5V
-5V
+5V+15V
-15V+26V
D7D6
D5D4
D3D2
D1D0
AD15AD14
AD13AD12
AD11AD10
AD9AD8
AD7AD6
AD5AD4
AD3AD2
AD1AD0
RD
WRMREQ
IORQ
WAIT
INTMNI
BUSAKBUSRQ
GNDGND
GNDGND
HALT
RESET
RST
φM1
RFSH
BUSAK
BUSRQZ
80A
CP
U
RO
M1-
2716
A10 D7
RO
M2-
2716
RO
M3-
2716
RO
M4-
2716
6
5
4
3
2
1
0 7
8
9
ABCD
E
FGO
ADDDAINCDEC
FN1FN2FN3FN4FN5
FN6
SST
DA
DB
RA
M1-
6116
RA
M2-
6116
RA
M3-
6116
RA
M4-
6116
ADD15
ADD14
ADD13
SW 2K
Vcc
RDM1
NMI
シングルステップ動作 S.S.T
AD15
AD!4
AD13AD12AD11
MREQ
1Y01Y11Y21Y3
2Y02Y12Y22Y3
ROM1ROM2ROM3ROM4RAM1RAM2RAM3RAM4
LS155
00
04
02
CPU RESET
1Y01Y11Y21Y3
2Y02Y12Y22Y3
Q
QS
R
D
CK
DADB
キー入力回路
LED表示回路
6116-W2716-Vpp
6116-OE2716-OERD
MREQ
IORQ
WR
WR
RD
AD0AD1
AD2AD3
AD4
AD5
AD6
RST RESET B0
B7
RD
WR
CS
A0A1
D0
D7 A7
A0
C7
C3
C1C2
C4
C0
C5C6
BUSAK
IORQ
M1
RD
RST
330 Xtal
1.5k
330
680
04 04
04
0404
A495
2020
200
1k100p
CPUφ
φ
5V
5V
74
100
1μ22μ
クロック発振器
10k
1S15
85
5V
02
02
02
04
0404
0202
04
04
02
02
02
00
04
10k5V
AD AD AD AD DA DA DA DA
164
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
TRDDS1DS2
1k 1kA1015
abcdefgh
020430
02
470p
5V
CS
CS
WRRD
MREQIORQ
M1HALTRFSH
WAITINTNMI
AD15
AD0
AD7
AD8
D7
D0
φ
RESET
5V
GND
LS
244
LS
244
LS
245
LS
365
CS
W
VppOE
OE
φ
CE
CS1CS0
M1
RESET
INT
IORQRD
D7
D0
IEICLK,TRG0IEO
5V
RST
AD0AD1
CTC
LS155
IO 155 1Y1 へチャンネル0
Z80-
CT
C
2G
2C
1C
1G
2G1C1G2C
A0
A10
A0
CPU回路L
S244
BUSAK
BUSRQ
Z80
AC
PU
BUSAK
IORQ
M1
RD0202
04
04
WRRD
MREQIORQ
M1HALTRFSH
WAITINTNMI
AD15
AD0
AD7
AD8
D7
D0
φ
RESET
5V
GND
LS2
44
LS2
44
LS2
45
LS3
65
メモリ回路
RO
M1-
2716
A10 D7
RO
M2-
2716
RO
M3-
2716
RO
M4-
2716
RA
M1-
6116
RA
M2-
6116
RA
M3-
6116
RA
M4-
6116
AD15
AD!4
AD13AD12AD11
MREQ
1Y01Y11Y21Y3
2Y02Y12Y22Y3
ROM1ROM2ROM3ROM4RAM1RAM2RAM3RAM4
LS155
02
DADB
00
CS
CS
CS
W
VppOE
OE
2G
2C
1C
1G
アドレスバスデータバス
コントロールバス
A0
A0
A10
マルチプレクサ回路
ROM回路
RAM回路
ROM2716RAM6116
アドレス空間
00 0000 0000B ~11 1111 1111B
データ8ビット
I/O回路(キー入力と表示)
6
5
4
3
2
1
0 7
8
9
ABCD
E
FGO
ADDDAINCDEC
FN1FN2FN3FN4FN5
FN6
SST
1Y01Y11Y21Y3
2Y02Y12Y22Y3
キー入力回路
LED表示回路
IORQ
WR
RD
AD0AD1
RST RESET B0
B7
RD
WR
CS
A0A1
D0
D7 A7
A0
C7
C3
C1C2
C4
C0
C5C6
02
02
04
10k5V
AD AD AD AD DA DA DA DA
164
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
TRDDS1DS2
1k 1kA1015
abcdefgh
CTC
LS155
DA
DB
2G1C1G2C
AD2AD3AD4
AD5
AD602
LED表示コード表示値 a b c d e f g h
0 1 1 1 1 1 1 0 0 FCH
1 0 1 1 0 0 0 0 0 60H
2 1 1 0 1 1 0 1 0 DAH
3 1 1 1 1 0 0 1 0 F2H
4 0 1 1 0 0 1 1 0 66H
5 1 0 1 1 0 1 1 0 B6H
6 1 0 1 1 1 1 1 0 BEH
7 1 1 0 0 0 1 0 0 C4H
8 1 1 1 1 1 1 1 0 FEH
9 1 1 1 0 0 1 1 0 E6H
A 1 1 1 0 1 1 1 0 EEH
B 0 0 1 1 1 1 1 0 3EH
C 1 0 0 1 1 1 0 0 9CH
D 0 1 1 1 1 0 1 0 7AH
E 1 0 0 1 1 1 1 0 9EH
a
b
c
d
e
f g
h
キー入力回路の動作
6
5
4
3
2
1
0 7
8
9
ABCD
E
FGO
ADDDAINCDEC
FN1FN2FN3FN4FN5
FN6
SST
キー入力回路
A7
A0C3
C1C2
C0
10k5V
PA PC
01 02 04 08
01 FN6 DEC D 6
02 FN5 INC C 5
04 FN4 DA B 4
08 FN3 ADD A 3
10 FN2 GO 9 2
20 FN1 F 8 1
40 E 7 0
キー機能とポートアドレス対応
00 1B(FN6) 07 14(DEC) 0E 0D( D ) 15 06( 6 )
01 1A(FN5) 08 13(INC) 0F 0C( C ) 16 05( 5 )
02 19(FN4) 09 12( DA) 10 0B( B ) 17 04( 4 )
03 18(FN3) 0A 11(ADD) 11 0A( A ) 18 03( 3 )
04 17(FN2) 0B 10( GO) 12 09( 9 ) 19 02( 2 )
05 16(FN1) 0C 0F( F ) 13 08( 8 ) 1A 01( 1 )
06 15( ) 0D 0E( E ) 14 07( 7 ) 1B 00( 0 )
下位アドレスと割付キー機能
PA PC
01 02 04 08
01 00 07 0E 15
02 01 08 0F 16
04 02 09 10 17
08 03 0A 11 18
10 04 0B 12 19
20 05 0C 13 1A
40 06 0D 14 1B
ポートアドレスと下位アドレス表
メモリ選択とメモリ配置
INPUT OUTPUT
SELECT STROBE DATA
B A 1G 1C 1Y0 1Y1 1Y2 1Y3
X X H X H H H H
L L L H L H H H
L H L H H L H H
H L L H H H L H
H H L H H H H L
X X X L H H H H
INPUT OUTPUT
SELECT STROBE DATA
B A 2G 2C 1Y0 1Y1 1Y2 1Y3
X X H X H H H H
L L L L L H H H
L H L L H L H H
H L L L H H L H
H H L L H H H L
X X X H H H H H
NOR
AB C C
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0
NAND
AB C C
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0
AD15
AD!4
AD13AD12AD11
MREQ
1Y01Y11Y21Y3
2Y02Y12Y22Y3
ROM1ROM2ROM3ROM4RAM1RAM2RAM3RAM4
LS155
02
DADB
00
CS
2G
2C
1C
1G
00 111 111 1111 1111 RAM4
00 111 000 0000 0000
00 110 111 1111 1111 RAM3
00 110 000 0000 0000
00 101 111 1111 1111 RAM2
00 101 000 0000 0000
00 100 111 1111 1111 RAM1
00 100 000 0000 0000
00 011 111 1111 1111 ROM4
00 011 000 0000 0000
00 010 111 1111 1111 ROM3
00 010 000 0000 0000
00 001 111 1111 1111 ROM2
00 001 000 0000 0000
00 000 111 1111 1111 ROM1
00 000 000 0000 0000
不使用
モニタ領域
未使用
0000H
0800H
2000H
4000H
1000H
1800H
2800H
3000H
3800H
07FFH
0FFFH
17FFH
1FFFH
27FFH
2FFFH
37FFH
3FFFH
未使用
未使用
作業領域
スタック領域
プログラム領域
CPUバッファ回路の動作
LS2
44
BUSAK
BUSRQ
Z80
AC
PU
BUSAK
IORQ
M1
RD0202
04
04
WRRD
MREQIORQ
M1HALTRFSH
WAITINTNMI
AD15
AD0
AD7
AD8
D7
D0
φ
RESET
5V
GND
LS2
44
LS2
44
LS2
45
LS3
65
NOR
A B C C
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0
H H-inp
HL
RD WR
a点の信号は通常は”L"状態.
* RD信号のみでバッファの
方向を切り替える.
* 割り込み要求時のみM1及びIORQで切り替える.
a
b
c
シングルステップ回路とその動作
ADD15
ADD14
ADD13
SW 2K
Vcc
RDM1
NMI
シングルステップ動作 S.S.T
00
04 020430
02
470p
5V NOR
AB C C
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0
NAND
AB C C
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0
SST SW OFF で動作
* ROM領域では動作せず.
* OPコードフェッチサイクル時にNMI信号を出す.
* コンデンサはタイミング合わせ.
クロック発振回路とその動作
Q
QS
R
D
CK
330 Xtal
1.5k
330
680
04 04
04
0404
A495
2020
200
1k100p
CPUφ
φ
5V
5V
74
クロック発振器
* TTLによる水晶発振回路
* F/Fヂュテーファクタを50%に
* Z80CPUのクロック条件に合わせるために
トランジスタによる立ち上がり下がり特性
の改善
リセット回路とその動作
CPU RESET
RST
1001μ22μ
10k
1S15
85
5V
02
04
0404
スイッチ入力
電源ON時は10Kと22μの回路で
リセット.
途中でのリセットはスイッチ入力より
リセット.
1μと1 0 0オームは簡単なチャタ
リング防止回路
モニタプログラムの構成
3FFCH 3FFBH 3FFAH 3FF9H 3FF8H 3FF7H 3FF6H 3FF5H
3FF4H 3FF3H 3FF2H 3FF1H
データ表示アドレス表示LED
セグメント表示バッファ(seg buffer)
ディスプレイ表示データ (des buffer)
3FEFH 3FEEH 3FEDH 3FECH表示データ (des buffer)
LED-SEGP
SEG-DSP
DSP-DAP
モニタメイン
start
SP <= 2F70H
CALL CW
CALL 初期設定
CALL キー入力
Acc=00H
CALL データ解読
CALL データ処理
CALL データ表示
SGPASSF=00H
CALL SEG-DAP
CALL LED-SEGP
CALL DSP-DAP
データ表示
start
HL<=(3FEEH)A <= HL
(3FEDH)<= AINC HLA<=(HL)
(3FECH) <=A
RET
コントロールワードの設定と初期設定
初期設定
KEY-F <= ADD
KEY-SADD <=01HAD/DAF <= ADD
RET
CW
8255の動作設定
RET
IO素子等の動作語の設定動作を安定にするための初期値の設定
キー入力プログラム
start
(PC) <= (KEYSADD)A <= (PA)
A = 00H?
WAIT
C <= A
A = 00H?
KEYF=FFH
KEYF <= FFH
A <= C
A <= 00H
RET
KEYF <= 00H
A <= (KEYSADD)
ADD A
(KEYSADD) <= A
(KEYSADD)=01H?
(KEYSADD) <= 01H
A <= 00H
Y
N
YN
Y
KEYF 00 off状態
FF on状態OR 80HCPL
(PC) <= (KEYSADD)A <= (PA)OR 80H
CPL
2回目以降 最初のデータ 入力無し
10ms
キー入力プログラム
Crag <= キーデータ
6
5
4
3
2
1
0 7
8
9
ABCD
E
FGO
ADDDAINCDEC
FN1FN2FN3FN4FN5
FN6
SST
キー入力回路
RESET B0
B7
RD
WR
CS
A0A1
D0
D7 A7
A0
C7
C3
C1C2
C4
C0
C5
10k5V
キーデータ解読キーデータ解読
start
SRA B
NC ?
A = A+7
SRA C
NC ?
INC A
A <= 00HB <= (KEYSADD)C <= キーデータ
RET
Areg =下位アドレス値
HL <= 変換スタートアドレスBC <= 0000H
C <= AHL = HL +BCA <= (HL)
A =キー機能値
C flg <= クリア
C flg <= クリア
Y
Y
6
5
4
3
2
1
0 7
8
9
ABCD
E
FGO
ADDDAINCDEC
FN1FN2FN3FN4FN5
FN6
SST
キー入力回路
RESET B0
B7
RD
WR
CS
A0A1
D0
D7 A7
A0
C7
C3
C1C2
C4
C0
C5
10k5V
キーデータ処理start
A = 0?
A=10H
A=11H
A=12H
A=13H
A=14H
A=15H
A=16H
A=17H
A=18H
A=19H
A=1AH
A=1BH
B <= AAND F0HA <= B
JP LD プログラム
JP ADD
JP DA
JP INC
JP DEC
JP SST
JP GO
JP FN1
JP FN2
JP FN3
JP FN4
JP FN5
*1 *2
*1 *2
RET
00 1B(FN6) 07 14(DEC) 0E 0D( D ) 15 06( 6 )
01 1A(FN5) 08 13(INC) 0F 0C( C ) 16 05( 5 )
02 19(FN4) 09 12( DA) 10 0B( B ) 17 04( 4 )
03 18(FN3) 0A 11(ADD) 11 0A( A ) 18 03( 3 )
04 17(FN2) 0B 10( GO) 12 09( 9 ) 19 02( 2 )
05 16(FN1) 0C 0F( F ) 13 08( 8 ) 1A 01( 1 )
06 15(SST) 0D 0E( E ) 14 07( 7 ) 1B 00( 0 )
下位アドレスと割付キー機能
JP FN6
データ処理プログラム
データ表示
start
HL<=(3FEEH)A <= HL
(3FEDH)<= AINC HLA<=(HL)
(3FECH) <=A
RET
LDプログラム
LD prg
B <= A
A <= (AD/DA F)
(AD/DA F)=00HA<=B
A<=B
HL <= 3FEEH
RLD
INC HL
RLD
HL <= 3FDEH
RLD
BC<=(3FEEH)
A<=(HL)
(BC)<=A
3FFCH 3FFBH 3FFAH 3FF9H 3FF8H 3FF7H 3FF6H 3FF5H
3FF4H 3FF3H 3FF2H 3FF1H
データ表示アドレス表示LED
セグメント表示バッファ(seg buffer)
ディスプレイ表示データ (des buffer)
B7 B4 B3 B0B3 B0
Acc (HL)
左ローティトデジット RLD
2FFBH 2FFAH
ABCD
0 XAcc
AB(HL)Acc
RLD
0 X
AB(HL)
B(HL+1)Acc
RLD 0
0 XAcc
A(HL)
XCD
B(HL+1)Acc
0 A(HL)
XCD
RET
新しいデータ
表示値
アドレス
データ Y
N
3FEFH 3FEEH 3FEDH 3FECH表示データ (des buffer)
LED-SEGP
SEG-DSP
DSP-DAP
INC,DEC,DA,ADD,GO,FNキー動作プログラム
INC prg
RET
HL <= (3EEEH)
INC HL
(3EEEH) <= HL
DA prg
RET
ADD/DA F <= 00H
GO prg
POP HLPOP HL
(GOADD) <= C3
(GOADD+1) <= (FBUF)
(GOADD+2) <= (FBUF+1)
JP GOADD
EX AF, AF'EXX
IX <= (IXBUF)IY <= (IYBUF)
ADD prg
RET
ADD/DA F <= FFH
DEC prg
RET
HL <= (3EEEH)
DEC HL
(3EEEH) <= HLJP FN2
RET
プログラム
シングルステップ動作プログラム
ADD15
ADD14
ADD13
SW 2K
Vcc
RDM1
NMI
シングルステップ動作 S.S.T
00
04 020430
02
470p
5V
SST SW OFF で動作
SST prg
EX AF, AF'EXX
(IXBUF) <= IX(IYBUF) <= IY
POP HL(FBUF) <= HL
表示プログラム
HL <= ( 表示pの先頭番地)PUSH HL
RETN
表示バッファFBUF
0066H JP SST
表示プログラム
3FFCH 3FFBH 3FFAH 3FF9H 3FF8H 3FF7H 3FF6H 3FF5H
3FF4H 3FF3H 3FF2H 3FF1H
データ表示アドレス表示LED
セグメント表示バッファ(SEGBUF)
ディスプレイ表示データ (DESDA)
3FEFH 3FEEH 3FEDH 3FECH表示データ (FBUF)
BC <= 0004HDE <= DESDA (3FF1H)HL <= FBUF (3FECH)
LDIR
RET
LED-SEGP
SEG-DSP
DSP-DAP
DSP-DAP
SEG-DSP
HL<=DSEDADE<=SEGBUFBC<=SEGDATA
0 0Acc
YX(HL)Acc
RLD
0 0
YX(HL)
A<=00HRLD
BC<=BC+0X(DE)<=(BC)
A<=00HRLDBC<=BC+0Y(DE)<=(BC)
DEC DE
DEC DEDEC HL
終了
RET
セグメント表示
LED表示回路RESET B0
B7
RD
WR
CS
A0A1
D0
D7 A7
A0
C7
C3
C1C2
C4
C0
C5C6
AD AD AD AD DA DA DA DA
164
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
TRDDS1DS2
1k 1kA1015
abcdefgh
LED-SEGPINPUT OUTPUT
RD T DS1 DS2 QA QB ------ QHL X X X L L LH L X X QA0 QB0 QH0H ↑ H H H QAn QGnH ↑ L X L QAn QGnH ↑ X L L QAn QGn
74LS164
8回
3FFCH 3FFBH 3FFAH 3FF9H 3FF8H 3FF7H 3FF6H 3FF5H
データ表示アドレス表示LED
セグメント表示バッファ(SEGBUF) LED-SEGP
164のクリア
HL <= 3FFCH
(PC) <= 20H(PC) <= 60H
(PB) <= (HL)
WAIT
(PC)<=30H
(PC)<=30H
(PC)<=30H(PC)<=70H
(PB)<=FFH(PC)<=70H
DEC HL
8回
RET
不使用
モニタ領域
未使用
0000H
0800H
2000H
4000H
1000H
1800H
2800H
3000H
3800H
07FFH
0FFFH
17FFH
1FFFH
27FFH
2FFFH
37FFH
3FFFH
未使用
未使用
作業領域
スタック領域
プログラム領域
作業領域
作業領域キーフラグ KEYF 3FFFHキースキャンアドレス KEYSADD 3FFEH 3FFDHセグメントバッファ SEGBUF 3FFCH ~ 3FF5Hディスプレデータ DESDA 3FF4H ~ 3FF1Hセグメントパス SEGP 3FF0H表示バッファ FBUF 3FEFH ~ 3FECHGOアドレス GO ADD 3FEBH ~ 3FE9HADD/DAフラグ AD/DAF 3FE8HINC/DECフラグ INC/DECF 3FE7HIX待避アドレス IX BUF 3FE6H 3FE5HIY待避アドレス IY BUF 3FE4H 3FE3H
スタックポインタ SPADD 3E00H
まとめ
1.ワンボードマイコンのハード設計
CPUのバッファ回路, メモリ選択(マルチプレクサ)
シングルステップ動作, リセット回路, パワーオンリセット動作
クロック発振回路, キー入力, 表示回路の制御
2.ワンボードマイコンのモニタプログラム設計
キー入力処理,キーコードの解読,セグメント変換,表示制御
NMI動作
3.割り込み処理によるモニタプログラムについて
他のプログラム実行中に割り込んで処理することが出来る.