M Microprocessor Microprocessor 정보통신•컴퓨터 공학부 교수 이재흥
Microprocessor
Hanbat National University prof. Lee Jae-heung
MicroprocessorMicroprocessor
정보통신•컴퓨터 공학부교수 이 재 흥
Microprocessor
Hanbat National University prof. Lee Jae-heung
1. 마이크로 프로세서의 개요
(1) 마이크로 프로세서
① ALU, 제어회로, 메모리, 타이밍(클럭) 회로
(2) 마이크로 컴퓨터
① 마이크로프로세서 (CPU)
② 프로그램 메모리 (ROM)
③ 데이터 메모리 (RAM)
④ 주변 인터페이스
ALU ScratchpadRAM
Control Clock
Microprocessor
[ 마이크로 프로세서 블럭다이어그램 ]
[ 일반적인 마이크로 컴퓨터 시스템 ]
ProgramMemory(ROM)
Microcomputer
DataMemory(RAM)
Input/Output
Timing(clock) Microprocessor
Data bus
Address bus
Control
Microprocessor
Hanbat National University prof. Lee Jae-heung
(3) 마이크로 프로세서의 역사
(4) 마이크로 컴퓨터의 특징① CISC 와 RISC
- CISC : Complex Instruction Set Computer
- RISC : Reduced Instruction Set Computer
② CISC 와 RISC 의 차이점
- 명령어의 개수와 어드레싱 모드의 최소화
- 고정된 명령어 형식
- 하드와이어드 방식의 명령디코딩
- 한 사이클에 명령을 수행하도록 구성
- LOAD/STORE 방식의 메모리 구조
- 다수의 레지스터군 제공
③ 예X = A + BY = A - B
연 산
X = A+B
Y = A- B
L R1, AA R1, BST R1, X
L R2, AS R2, BST R2, Y
CISC RISC
L R1, AL R2, BA R3, R1, R2ST R3, X
S R4, R1, R2ST R4, Y
4004
8008
8080
8085
8086
80186
80286
80386
80486
Z80
8088
Z8000
6502
6510
6809
68000
Z80000 68020
68030
68040 88000
6800
4bit
8bit
16bit
인텔 RISC 자일로그
모토롤라 RISC
모스텍
80860
Microprocessor
Hanbat National University prof. Lee Jae-heung
2. 마이크로 프로세서의 종류
(1) 비트 슬라이스 마이크로 프로세서
① 여러 비트 단위의 CPU 구성요소를 조합하여 새로운 비트 단위의 CPU를 구성
(2) 단일 칩형 마이크로 프로세서
② CPU와 인터페이스 및 메모리를 단일칩에 실현
- 8051 (Intel)
- 6805 (motorola)
- KS88C0016 (SAMSUNG)
(3) 명령어 셋
(4) 8080 / 8085 CPU
① 6개의 8비트 범용 레지스터 (B, C, D, E, H, L)
② 8비트 어큐뮬레이터 (A)
③ 16비트 스택 포인터 (SP)
④ 16비트 프로그램 카운터 (PC)
⑤ 8비트 명령 레지스터 (IR)
⑥ 5비트 상태 레지스터
Z80
8080
8008
8008 : 48 개의 명령 추가
8080 : 30 개의 명령 추가
Z80 : 80 개의 명령 추가
Microprocessor
Hanbat National University prof. Lee Jae-heung
① 8080 CPU 구조
② 8085 CPU 구조
Data busBuffer/latch
D7-D0 Bidirectional data bus
Instructionregister(8)
Instructiondecoder
and machinecycle
encoding
Timingand
control
WriteData buscontrol
Interruptcontrol
Holdcontrol
Waitcontrol Sync Clocks
WR DBININTE
INTACK
HOLDWAIT
READYSYNC Φ1 Φ2
Accumulator(8)
Temp. reg.(8) Flag
Flip-flops(5)
Accumulatorlatch(8) Arithmetic
logicunit
(ALU)(8)
Decimaladjust
Multiplexer
W (8)Temp. reg.
Z (8)Temp. reg.
B (8)Reg.
C (8)Reg.
D (8)Reg.
E (8)Reg.
H (8)Reg.
L (8)Reg.
Stack pointer (16)
Program counter (16)
Incrementer/decrementerAddress latch (16)
Reg
iste
r se
lect
Address buffer (16)
A15-A0Address bus
Powersupplies
+12 V+5 V-5 VGND
RESET
Internal data bus (8-bit) Internal data bus (8-bit)
•
•
•
••
• •
•
•
Interrupt control
Instructionregister(8)
Instructiondecoder
and machinecycle
encoding
Timing and controlClkGen control Status DMA Reset
CLK OUT READY RD WR ALE S0 S110/M HLDA
RESET IN RESET OUT
Accumulator(8)
Temp. reg.(8) Flag
Flip-flops(5)
Accumulatorlatch(8) Arithmetic
logicunit
(ALU)(8)
W (8)Temp. reg.
Z (8)Temp. reg.
B (8)Reg.
C (8)Reg.
D (8)Reg.
E (8)Reg.
H (8)Reg.
L (8)Reg.
Stack pointer (16)Program counter (16)Incrementer/decrementer
Address latch (16)
Address buffer (8)
A15-A8Address bus
Powersupplies
+5 VGND
Registerarray
Data/addressBuffer (8)
AD7-AD0Address/Data bus
HOLD
X1
X2
Serial I/O control
8-bit Internal data
INTR RTS5.5 RTS7.5INTA RTS6.5 TRAP
SID SOD
Microprocessor
Hanbat National University prof. Lee Jae-heung
(5) Z80 CPU① 특징
- 8080A 의 소프트웨어와 완전 호환성- 158종의 명령어 셋- 인덱스 레지스터- 레지스터 셋이 2개 조- 인터럽트 모드 3개- 5V 단일 전원- 단상 클럭
② 구성
③ 레지스터- 범용 레지스터
• 14개의 8비트 레지스터 (A,B,C,D,E,H,L,A’,B’,C’,D’,E’,H’,L’)- 상태 레지스터
• Carry flag (C)• Zero flag (Z)• Sign flag (S)• Parity/overflow flag (P/V)• Half carry flag (H)• Subtract flag (N)
- 특수 레지스터• Interrupt 레지스터 (I)• Refresh 레지스터 (R)• Index 레지스터 (IX, IY)• 스택 포인터 (SP)• 프로그램 카운터 (PC)
M1
MREQ
IOR
Q
RD
WR
RFSH
HALT
WAIT
INT
NM
I
BU
SR
Q
BU
SA
K
RESET
Φ+5V
GN
DCPU Control
ALU
(8)
(8)
인스트럭션레지스터
어드레스.버퍼 레지스터셋
A15~A0어드레스.버스
D7~D0데이터.버스
A F A’ F’B C B’ C’D E D’ E’H L H’ L’I RI XI YS PP C
데이터.버스
CPU내부
CPU외부
(16)
(16)
내부버스(8비트)
Microprocessor
Hanbat National University prof. Lee Jae-heung
④ ALU (Arithmetic Logical Unit)
- CPU의 내부의 논리연산 및 산술연산
- 가산(Add), 감산(Subtract)
- 논리곱(AND), 논리합(OR)
- 배타적 논리합(XOR), 비교(Compare)
- 시프트 및 회전 (Shift and Rotate)
- 증가 및 감소 (Increment and Decrement)
- 비트 세트, 리세트, 테스트 (Set, Reset, Test)
⑤ 핀배치
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑥ Bus
- Address Bus• A0~A15 ⇒ 216 = 65,536 까지 번지 지정 가능
• 단방향성 버스
• CPU ⇒ memory, 입출력 기기 (번지 전송)
- Data Bus• D0~D7 ⇒ 8비트 데이터
• 양방향성 버스
• CPU ⇔ 메모리, 입출력기기 (데이터 전송)
- Control Bus
• 시스템 제어신호
?M1 (Machine Cycle One) : op_code의 fetch cycle
?MREQ (Memory Request) : memory의 칩 선택 신호
?IORQ (I/O Request) : I/O 입출력 요구 신호
?RD (Memory Read) : 데이터 읽기 신호
?WR (Memory Write) : 데이터 쓰기 신호
?RFSH (Refresh) : DRAM refresh 신호
• CPU 제어신호
?HALT (Halt State) : HALT 명령 수행시 =>NOP 반복 수행
?WAIT (Wait) : 대기신호(Memory 또는 I/O장치 대기상태)
?INT (Interrupt Request) : I/O장치가 CPU에 인터럽트 요구
?RESET (Reset) : CPU 초기화PC <= 0000H
Interrupt enable F/F reset
Interrupt Reg(I) <= 00H
Refresh Reg(R) <= 00H
Interrupt mode <= 0
?NMI (non-maskable interrupt) : INT 보다 우선순위• CPU 버스 제어 신호
?BUSRQ (BUS ReQuest)
CPU의 관리에서 벗어나 memory 또는 I/O장치끼리 Data 교환할 때
?BUSAK (BUS AcKnowledge)
CPU가 bus request를 받아서 모든 포트를 High Impedence
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑦ 기본동작
- 명령 fetch
- 명령 decoding
- 오퍼랜드 fetch
- 실행
⑧ CPU의 타이밍
- 기본명령 사이클1 TO 5.75 μs
MACHINECYCLE M1
MACHINECYCLE M2
MACHINECYCLE MN
ONE TO SIX MACHINE CYCLES
ONE INSTRUCTION TIME
MACHINE CYCLE MN
TCYCLE250 ns
3 TO 6 CYCLES TYPICAL
A
P C
I R
A
P C
I R
A
P C
I R
A
P C
I R
3A
XX
10 00
3A 31
XX
10 01
3A 31 42
XX
10 02
3A 31 42
메모리데이터
10 03
HL
명령의 실행
1001H1000H 1002H 4321H제 2바이트OP code 제 3바이트
31H3AH 42H 메모리데이터
HL
HL
HL
명령의 패치
메모리.데이터
메모리.데이터
MREQ
IORQ
RD
WD
[ 명령 실행 예 ]
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 명령 사이클의 예
- M1 사이클 (Machine Cycle One)
OP code 패치 사이클
T1 T2 T3 T4
메모리 리드사이클 M2
T1 T2 T3
I/O 리드사이클 M3
T1 T2 Tw T3
스테이트
OP code 패치 사이클
T1 T2 T3 T4
메모리 리드사이클 M2
T1 T2 T3
메모리 리드사이클 M3
T1 T2 T3
메모리 라이트사이클 M4
T1 T2 T3
LD (nn), A 명령의 머신 사이클
32, 34, 12
(b) IN A, (n)DB, 38
OP 코드
A0~A15
MREQ
RD
WAIT
M1
D0~D7
RFSH
tDLΦ(MR)
T1 T2 T3 T4
tDLΦ(RD)
tDL(M1)
PC
“H”
ts(wT) tH tDH(M1)
tDLΦ(RD)
tDHΦ (MR)
tW(MRH) tW(MRL)
tDL(RF)
tHtSΦ(D)
tDH(RF)
tDLΦ(MR)
tF(AD)
M1 사이클
Φ
리플래시 어드레스
tD(AD) tF(AD)
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 메모리 읽기 사이클
- 메모리 쓰기 사이클
메모리데이터
A0~A15
MREQ
RD
D0~D7
tDLΦ(MR)
T1 T2 T3 T1
tDLΦ(RD)
메모리 데이터
WAIT “H”
ts(WT) tH
tDHΦ(RD)
tHtSΦ(D)
메모리 리드 사이클
ΦtD(AD)
tDHΦ(MR)
tF(AD)
A0~A15
MREQ
WR
D0~D7
tDLΦ(MR)
T1 T2 T3 T1
tDLΦ(WR)
메모리 데이터
WAIT
ts(WT) tH
tDHΦ(WR)
메모리 라이트 사이클
ΦtD(AD)
tDHΦ(MR)
tF(AD)
메모리 데이터
Microprocessor
Hanbat National University prof. Lee Jae-heung
3. 마이크로 프로세서의 내부 구조(1) DMA ( Direct Memory Access )
① 데이터 전송이 메모리와 입출력 기기 사이에서 직접 행함( DMA controller에 의해서 제어 펄스 발생 )
- DMA I/O
- 일반적인 I/O
(2) 버스 요구 및 인식 사이클
memoryI/O
interface
microprocessor
peripheral
memoryDMA
interface
microprocessor
peripheral
IORQ RD
MREQ
WR
RFSH
BUSAK
BUSRQ
A0~A15
D0~D7
하이. 임피이던스
하이. 임피이던스
하이. 임피이던스
머신.사이클의최후 스테이트
임의의 머신. 사이클 DMA 사이클
다음의 머신사이클
셈플
ts(BQ)
ts(BQ)
tH
tH셈플
Tdh(BA)tDL(BA)
O
Microprocessor
Hanbat National University prof. Lee Jae-heung
I Reg 벡터 번지
인터럽트 발생된 장치에서 보관
번지의 내용이 인터럽트 처리 프로그램의선두 번지를 가리킴.
35H 50H8064H
8000H
5035H
가로채기 루틴. 어드레스테이블의 베이스. 어드레스
가로채기 루틴의 선두
메모리
80H 64H
8064H 번지
5035H 번지
(4)데이지 체인 - 직렬 우선 순의 인터럽트 처리
Device1PI PO
Device2PI PO
Device3PI PO
INT
CPU
INTACK
Interrupt request
Interrupt acknowledge
Processor data bus
VAD1 VAD2 VAD3
TO next device
Microprocessor
Hanbat National University prof. Lee Jae-heung
(3) CPU의 인터럽트 응답① NMI :
- 언제라도 CPU에 감지.- IFF1의 상태 IFF2.- 0066H 번지를 Subroutine Call.
② INT :- mode 0- mode 1- mode 2
- mode 0 :• IM 0 명령에 의해 선택• 8비트 인터럽트 벡터의 해당 번지의 Sunroutine Call • PC는 Stack 에 저장
가로채기원3의 루틴
가로채기원2의 루틴
가로채기원1의 루틴
가로채기원0의 루틴
RST00H(C7H)
RST08H(CFH)
RST10H(D7H)
RST18H(DFH)
0018H
0010H
0008H
0000H
가로채기원0 가로채기원1 가로채기원2 가로채기원3
가로채기원3의 루틴
가로채기원2의 루틴
가로채기원1의 루틴
가로채기원0의 루틴
CALL0123H(CD2301)
CALL2345H(CD4523)
CALL8ABBH(CDBB8A)
CALLFF00H(CD00FF)
FF00H
8ABBH
2345H
0123H
가로채기원0 가로채기원1 가로채기원2 가로채기원3
(a) RST명령을 보낼 경우 (b) CALL명령을 보낼 경우
메모리 메모리
- mode 1 : • IM1 명령에 의한 선택
• 0038H (RST 38H) 번지의 Subroutine Call
- mode 2 : • IM2 명령에 의해 선택
Microprocessor
Hanbat National University prof. Lee Jae-heung
(5) 번지 지정 모드① 고유 번지 지정 ( Implied Addressing )
CPL COMPLEMENT ACCUMULATOR
BYTE 0 2FH - OP CODE
② 즉치 번지 지정 ( Immediate Addressing )ADD A.N ADD VALUE N TO ACCUMMULATOR
BYTE 0 C6H - OP CODE
BYTE 1 IMMEDIATE VALUE
0 0 1 0 1 1 1 1
1 1 0 0 0 1 1 0
N
③ 확장 즉치 번지 지정 ( Expanded Immediate Addressing )LD IY.NN LOAD IY WITH VALUE N
1 1 1 1 1 1 0 1
0 0 1 0 0 0 0 1
N LS BYTE
N MS BYTE
BYTE 0 FDH = OP CODE
BYTE 1 21H = OP CODE
BYTE 2
BYTE 3 16-BIT IMMEDIATE VALUE
④ 레지스터 번지 지정 ( Register Addressing )RL R ROTATE LEFT THROUGH CARRY REGISTER R
1 1 0 0 1 0 1 1BYTE 0 CBH = OP CODE
BYTE 1 R 00010 2 = OP CODER = CPU REGISTER CODE
0 0 0 1 0
⑤ 레지스터 간접 번지 지정 ( Register Indirect Addressing )LD A,(BC) LOAD ACCUMULATORWITH LOCATION POINTED TO BY CONTENTS OF B, C
BYTE 0 0 0 0 0 1 0 1 0 0AH = OP CODE
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑥ 확장 번지 지정모드 ( Expanded Addressing )LD A,(NN) LOAD ACCUMULATORWITH CONTENTS OF LOCATION NN
BYTE 0 0 0 1 1 1 0 1 0 3AH = OP CODE
N LS BYTE
N MS BYTE
BYTE 1
BYTE 2 16-BIT ADDRESS}
⑦ 상대 번지 지정모드 ( Relative Addressing )- 유효번지 = PC + 번지 필드 값
JR Z,E JUMP RELATIVE IF ZERO
LOCATION 0300H 0 0 1 0 1 0 0 0 28H = OP CODE
0301H 0 0 1 0 1 0 0 0 VALUE = 10 = AH
PC 0302H
INSTRUCTION WILL JUMP TO 0302H + AH = 030CHIF ZERO FLAG SET OR WILL EXECUTE NEXTINSTRUCTION AT 0302H IF NOT SET
⑧ 인덱스 레지스터 번지지정 ( Indexed Addressing )- 유효 번지 = INDEX Reg + 번지 필드 값
LD (IY + D), N LOAD LOCATION ( IY + D) WITH VALUE N
BYTE 0 1 1 1 1 1 1 0 1 OP CODE
BYTE 1 0 0 1 1 0 1 1 0 OP CODE
BYTE 2 0 1 0 0 0 0 0 0 D= 40H
BYTE 3 N VALUE TO BE STORED
(IY) = 1003HD = 40H
EFFECTIVE ADDRESS =1043H
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑨ 비트 번지 지정모드 ( Indexed Addressing )
SET B,( IX+D ) SET B OF LOCATION ( IX +D )
BYTE 0 1 1 0 1 1 1 0 1 OP CODE
BYTE 1 1 1 0 0 1 0 1 1 OP CODE
BYTE 2 D D VALUE
BYTE 3 1 1 B 1 1 0 112/1102 = OP CODEB = BIT CODE 0-7
(6) INSTRUCTION SET
① 8 BIT LOAD GROUP
- 8 Bit Data의 이동
- 특수한 경우를 제외하고는 Flag Register 와 별관계가 없다.
8 bits
CPU A REG
CPU I REG
LD A , I
8 bits
CPU A REG
CPU R REG
LD A , R
8 bits
CPU I REG
CPU A REG
LD I , A
8 bits
CPU R REG
CPU A REG
LD R , A
Microprocessor
Hanbat National University prof. Lee Jae-heung
LD R, S TYPELD B,H
8 bits
CPU B REG
CPU H REG
CPU C REG
LD C,(HL) (HL) = 1001H
MEMORY
1043H
1044H
8 BITS
LD S, R TYPE ( STORE )LD ( IX + 30H), D ( IX ) = 1014H
CPU D REG
MEMORY
1043H
1044H 8 BITS
CPU A REG
MEMORY
2004
2005
2006
8 BITS
LD (DE),A ( STORE ) ( DE ) = 2005
② 16 BIT LOAD GROUP
- 16 Bit Data의 이동(Extended Immediate Addressing에서 사용)
- Register pair의 Push or Pop의 경우- LD DD, NN : LD DD, (NN)
PUSH AF : POP AF SUBTRACT
Microprocessor
Hanbat National University prof. Lee Jae-heung
LD HL, 1025H
LD HL, 1025H 0 0 1 0 0 0 0 1
INSTRUCTION 25H
50H
CPU H REGISTER
CPU L REGISTER
8BIT8BIT
LD (NN), IX
LD (NN), IX 1 1 0 1 1 1 0 1
INSTRUCTION 0 0 1 0 0 0 1 0
20H
50H}MEMORIY ADDRESS 5020H
8BIT8BITMEMORY
5020H
5021H
HIGH ORDER
LOW ORDER
IX REGISTER
Microprocessor
Hanbat National University prof. Lee Jae-heung
LD SP, HL
HIGH ORDER
LOW ORDER
CPU H REGISTER
CPU L REGISTER
8BIT
8BIT
STACKPOINTER
REGISTER
③ Exchange, Block Transfer and Search Group- Exchange :
CPU Register pair 간의 16 Bit 또는 48 Bit Data 교환.
A
B
D
H
F
C
E
L
A’
B’
D’
H’
F’
C’
E’
L’
8 BITS( EX AF,AF’ )
8 BITS( EX AF,AF’ )
48 BITS( FX, X )
ACTIVE CPU REGISTERS
INACTIVE CPU REGISTERS
Microprocessor
Hanbat National University prof. Lee Jae-heung
(TOP OF STACK)(TOP OF STACK +1)
MEMORY
1025H
1026H
CPU H REGISTER
L
EX (SP) , HL (SP) = 1025H
8BIT
8BIT
CPU D REGISTER
E
CPU H REGISTER
L
(TOP OF STACK)(TOP OF STACK +1)
MEMORY
2043H
2044H
IX HIGH ORDER
EX (SP) , IX (SP) = 2043H
IX LOW ORDER
(TOP OF STACK)(TOP OF STACK +1)
MEMORY
128AH
128BH
EX (SP) , IY (SP) = 128AH
IY HIGH ORDER
IY LOW ORDER
Microprocessor
Hanbat National University prof. Lee Jae-heung
-Block transfer : Block Data 전송 ( 최대 64K byte)• BC Register pair : Data Block의 수, Counter로 이용.• HL Register pair : Source Block의 Starting Address.• DE Register pair : Destination block의 Starting Address.• LDI, LDD, LDIR, LDDR
“I” : Increment“D” : Decrement“R” : Repeat
• LDI 및 LDD 명령
1000H1001H1002H1003H1004H
2000H2001H2002H2003H2004H
MEMORYSOURCEBLOCK
MEMORYDESTINATION
BLOCK
8BITS
(HL) AFTER LDD
(HL) BEFORE INSTRUCTION
(HL) AFTER LDI
(DE) AFTER LDD
(DE) BEFORE INSTRUCTION
(DE) AFTER LDI
LDI , LDD 의 동작
LDI : (DE) (HL)
DE DE+1
HL HL+1
BC BC-1
LDD : (DE) (HL)
DE DE - 1
HL HL - 1
BC BC - 1
LDI ACTIONS1. TRANSFER BYTE FROM 1002H TO 2002H2. ADD 1 TO HL TO POINT TO 1003H3. ADD 1 TO DE TO POINT TO 2003H4. SUBTRACT 1 FROM BC( BYTE COUNT )5. GO ON TO NEXT INSTRUCTION
LDD ACTIONS1. TRANSFER BYTE FROM 1002H TO 2002H2. SUBTRACT 1 FROM HL TO POINT TO 1001H3. SUBTRACT 1 FROM DE TO POINT TO 2001H4. SUBTRACT 1 FROM BC( BYTE COUNT )5. GO ON TO NEXT INSTRUCTION
Microprocessor
Hanbat National University prof. Lee Jae-heung
LDIR 및 LDDR 명령LDIR 및 LDDR 의 동작
LDIR : (DE) (HL)
DE DE + 1
HL HL + 1
BC BC - 1
LDDR : (DE) (HL)
DE DE - 1
HL HL - 1
BC BC - 1
BC = 0 일때 까지 반복 BC = 0 일때 까지 반복
1000H1001H1002H1003H1004H
2014H2015H2016H2017H2018H
MEMORYSOURCEBLOCK
MEMORYDESTINATION
BLOCK
(HL) AT START (LDIR)
(DE) AT START (LDIR)
LDIR
LDDR
LDIR
LDDR
(HL) AT START (LDDR)
(HL) AT START (LDDR)
LDIR ACTIONS1. TRANSFER BYTE2. ADD 1 TO HL3. ADD 1 TO DE4. SUBTRACT 1 FROM BC5. IF (BC) = 0 GO TO STEP 16. GO ON TO NEXT INSTRUCTION
THESE ACTIONSREPEATED N TIMESWHERE N= #IN BC INITIALLY
LDDR ACTIONS1. TRANSFER BYTE2. SUBTRACT 1 FROM HL3. SUBTRACT 1 FROM DE4. SUBTRACT 1 FROM BC5. IF (BC) = 0 GO TO STEP 16. GO ON TO NEXT INSTRUCTION
THESE ACTIONSREPEATED N TIMESWHERE N= #IN BC INITIALLY
Microprocessor
Hanbat National University prof. Lee Jae-heung
- Search : 하나 또는 그 이상의 Data에 대하여 같은 내용을 찾는다.
a) BC Register pair : Search block의 수, Counter로 이용.b) HL Register pair : Search block의 Starting Addressc) CPI, CPD, CPIR, CPDR
3005H
3006H
3007H
3008H
3009H
300AH
300BH300CH
HL AT START(CPI)
HL AFTER CPI
HL AFTER CPD
HL AT START(CPD)
CPI ACTIONS1. READ NEXT BYTE2. ADD 1 TO HL3. SUBTRACT 1 FROM BC4. COMPARE BYTE TO (A) AND SET FLAGS5. GO ON TO NEXT INSTRUCTION
11AAH
11ABH
11ACH
11ADH
11AEH
11AFH
11B0H11B1H
HL AT START(CPID)
HL AT END (CPID)
HL AT START (CPDD)11B2H
HL AT END (CPDD)33H
BLOCK TOBE SEARCHED
CPD ACTIONS1. READ NEXT BYTE2. SUBTRACT 1 FROM HL3. SUBTRACT 1 FROM BC4. COMPARE BYTE TO (A) AND SET FLAGS5. GO ON TO NEXT INSTRUCTION
Microprocessor
Hanbat National University prof. Lee Jae-heung
AT START(HL) = 11AAH FOR CPIR 11B2H FOR CPDR(BC) = 9(A) = 33H
CPDD ACTIONS1. READ NEXT BYTE2. SUBTRACT 1 FROM HL3. SUBTRACT 1 FROM DE4. SUBTRACT 1 FROM BC5. IF (BC) = 0 AND BYTE = A TO STEP 16. GO ON TO NEXT INSTRUCTION
THESE ACTIONSREPEATED SIX TIMES
CPID ACTIONS1. READ NEXT BYTE2. ADD 1 TO HL3. SUBTRACT 1 FROM BC4. COMPARE BYTE TO (A) AND SET FLAGS5. IF (BC) = 0 AND BYTE = A TO STEP 16. GO ON TO NEXT INSTRUCTION
THESE ACTIONSREPEATED FOUR TIMES
Microprocessor
Hanbat National University prof. Lee Jae-heung
④ 8Bit Arithmetic and Logical Group
- 가산, 감산, 논리곱(AND), 논리합(OR), XOR
- 2개의 operand중 한 쪽은 반드시 A register에 있는 8Bit이고 다른 한쪽은즉치 또는 indirect로 addressing 된다.
- 연산결과는 항상 A register에 들어간다.
- Condition Code (Flag Register)는 대부분 관련된다.
ADD A, B
ALU
(ADD)
CPU A REG CPU B REGCY
8 BITS 8 BITS
8 BIT RESULT
ADC A, (HL)
ALU
(ADD WITH CARRY)
CPU A REG CY
8 BITS 8 BITS
8 BIT RESULT
HL
MEMORY
OPERAND
SBC A, ( IX + D )
ALU
(SUBSTRACTWITH CARRY)
CPU A REG CY
8 BITS 8 BITS
8 BIT RESULT
IX + D
MEMORY
OPERAND
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑤ General-Purpose Arithmetic and CPU Control Group.
- DAA, CPL, NEG, CCF, SCF
NOP, HALT, DI, EI, IMO, IMI, IM2
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
0s -> 1s 1s -> 0s
0s -> 1s 1s -> 0s
1 0 1 1 0 1 1 0
+ 1
(-74)
(-74)
(+73)
(+74)
CPL (A) BEFORE INSTRUCTION
(B) AFTER INSTRUCTION
NEG (A) BEFORE INSTRUCTION
(B) AFTER INSTRUCTION
⑥ 16Bit Arithmetic Group
- Register pair
[ BC, DE, HL ]
- Index Register
[ IX, IY ]
- Stack pointer
[ SP ]
- 16 bit의 연산처리
- “SS” field에 의해 pair 지정
- HL Register가 “A” 역할
1 1 0 1 1 1 0 1
0 0 1 0 1 0 0 1
ALU
(ADD)
IX
16 BITS 16 BITS
ADD IX, IX
1 1 1 0 1 1 0 1
0 1 1 1 0 0 1 0
ALU
(SUBSTRACT WITH CARRY)
HL SP CY
16 BITS 16 BITS
16 BITS
SBC HL, SP
(SECOND OPERAND)
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑦ Rorate and Shift Group
- Data의 Rorate or Shift를 한다.
- 8080에서 A register만 가능하였던 것을 그 밖의 Register(B, C, D, E, H, L)및 지정된 Memory의 내용을 Rotate or Shift 시킬 수 있다.
- RLAC, RLA, RRCA, RRA 명령
RLAC : R : Rotate RRCA : R : Rotate
L : Left R : Right
C : Circular C : Circular
A : Accumulator A : Accumulator
- RLD, RRD 명령
• 4 Bit 씩 묶어서 Rotate
• Memory Operand는 (HL)으로 HL register내용 (즉, 간접 Addressing)
• BCD 연산시 편리.
RLD ACTION
CY SHIFT LEFT ONE
7 0A
CYSHIFT RIGHT ONE
7 0A
(8 bit)
(8 bit)
CY SHIFT LEFT ONE
7 0
A
CYSHIFT RIGHT ONE
7 0A
(9 bit)
(9 bit)
RLCA ACTION
RLA ACTION RRA ACTION
RRCA ACTION
UNCHANGEDAMEMORY
OPERAND
7 4 3 0 7 4 3 0
4BIT
4BIT4BIT
UNCHANGEDAMEMORY
OPERAND
7 4 3 0 7 4 3 0
4BIT
4BIT4BIT
RRD ACTION
Microprocessor
Hanbat National University prof. Lee Jae-heung
- SRA, SLA, SRL
• S : Shift
• R, L : Right, Left
• A, L : Arithmetic Logic
⑧ Bit Set, Reset and Test Group
-CPU Register (A, B, C, D, E, H, L), 또는 IX, IY, HL, Register가 지정하는Memory location의 8bit중의 1bit를 Set, Reset, test
SET 7, D
CYS SHIFT RIGHT ONE
7 0SRA S
OPRAND
CY SHIFT LEFT ONE
7 00 OPERAND
SLA S
CYSHIFT RIGHT ONE
7 0
0
SRL M
0 1 0 1 1 1 1 1 D BEFORE INSTRUCTION
1 1 0 1 1 1 1 1 D AFTER INSTRUCTION
RES 5, (HL)
HL
X X 0 X X X X XMEMORY
OPERAND
THIS BIT RESETBIT 0,(IX +D)
INSTRUCTION
0 1 0 0 0 1 1 0
D
1 1 0 0 1 0 1 1
1 1 0 1 1 1 0 1
IX
X X X X X X X 0/1
Bit 0 specified
MEMORY
OPERAND
( IX + D )
Z
SET Z IF BIT = 0
RESET Z IF BIT = 1
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑨ JUMP Group
- Jump : PC의 내용 No stack
a) conditional Jump : JP CC, NN
unconditional Jump : JP NN
b) Absolute Jump : JP CC, NN ; JP NN
Relative Jump : JR CC, E ; JR E ; DJNE e
-) Call : PC의 내용 Stack
a) conditional Jump : JP CC, NN
unconditional Jump : JP NN
- Return
a) RET : Call
RETI : INT
RETN : NMI
⑩ Input and Output Group
(INI, INIR, IND, INDR, OUTI, OUTIR, OUTD, OUTDR)
Microprocessor
Hanbat National University prof. Lee Jae-heung
4. 인터페이스(1) 메모리 인터페이스
① 메모리 ROM : Mask ROM
PROM
EPROM
EEPROM
RAM : SRAM
DRAM
② 디코더(Decoder)
- 74L138(3X8 Decoder)
TOP VIEW
A
B
C
G2A
G2B
G1
Y7
GND
Vcc
Y0
Y1
Y2
Y3
Y4
Y5
Y6
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
(a)
H H H H H H H H
H H H H H H H H
L H H H H H H H
H L H H H H H H
H H L H H H H H
H H H L H H H H
H H H H L H H H
H H H H H L H H
H H H H H H L H
H H H H H H H L
X X X
X X X
L L L
L L H
L H L
L H H
H L L
H L H
H H L
H H H
X H
L X
H L
H L
H L
H L
H L
H L
H L
H L
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7C B AG1 G2
OUTPUTSSELECT
INPUT
ENABLE INPUT
FUNCTION TABLE
G2 = G2A + G2B (b)
(a)The pinout and
(b) functionTable of the 74LS138 3x8 line decoder
Microprocessor
Hanbat National University prof. Lee Jae-heung
•74LS139(Dual 2X4 Decoder)
The (a) pinout, (b) function table, and (c) block diagram of the 74LS139 dual 2x4 line decoder.
1G
1A
1B
1Y0
1Y1
1Y2
1Y3
GND
Vcc
2G
2A
2B
2Y0
2Y1
2Y2
2Y3
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
(TOP VIEW)
(a)
FUNCTION TABLE
H H H H
L H H H
H L H H
H H L H
H H H L
X X
L L
L H
H L
H H
H
L
L
L
L
Y0 Y1 Y2 Y3B A
SELECTENABLE
G
OUTPUTSINPUTS
(b)
(1)
(2)
(3)
(15)
(14)
(13)
(4)
(5)
(6)
(7)
(12)
(11)
(10)
(9)
DATA
OUTPUT
ENABLE 1G
1A
1B
SELECT
INPUT
ENABLE 2G
SELECT
INPUT
2A
2B
(C)
Microprocessor
Hanbat National University prof. Lee Jae-heung
③ 8255(PPIA)의 블록 다이어그램
-8255의 동작1. Mode 0 : 기본적이 입출력 동작2. Mode 1 : strobe 입력, 출력 동작3. Mode 2 : 양방향(Bidirection)동작
GROUPA
CONTROL
GROUPA
CONTROLPORT A(8)
GROUPA
PORT CUPPER(4)
GROUPB
PORT CLOWER(4)
GROUPB
PORT B(8)
GROUPB
CONTROL
DATA BUSBUFFER
READWRITE
CONTROLLOGIC
RD
WR
A1
A0
RESET
POWERSUPPLIES
+5V
GND
BI-DIRECTIONALDATA BUS
D7-D08-BIT
INTERNALDATA BUS
CS
I/OPA7,PA0
I/OPC7,PC0
I/OPC7,PC0
I/OPB7,PB0
Microprocessor
Hanbat National University prof. Lee Jae-heung
- Z80과 8255A의 연결
‘30
Z80
8255A
D0
D7
A1
A0
D0
D7
A1
A0
IOR
IOW
RD
WR
A7
A6
A5
A4
A3
A2
CS
Microprocessor
Hanbat National University prof. Lee Jae-heung
④ 제어레지스터(Control Register)의 기능
D7 D6 D5 D4 D3 D2 D1 D0
GROUPB
PORT C (LOWER)1 = INPUT0 = OUTPUT
PORT B1 = INPUT0 = OUTPUT
MODE SELECTION1 = MODE 00 = MODE 1
GROUPBPORT C (UPPER)1 = INPUT0 = OUTPUT
PORT A1 = INPUT0 = OUTPUT
MODE SELECTION00 = MODE 001 = MODE 11X = MODE 2
MODE SET FLAG1 = ACTIVE
CONTROL WORD
D7 D6 D5 D4 D3 D2 D1 D0
CONTROL WORD
0 1 2 3 4 5 6
0
7B0
B1
B2
0 1 00
BIT SELECT
BIT SET/RESET FLAG0 = ACTIVE
BIT SET/RESET 1 = SET
0 = RESETX X X
DON’TCARE
0 00 0
0 011 1
1 1 1 11 1
1 1
00
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑤ 메모리 시스템- 32K x 8 메모리시스템(8개의 4K EPROM)
- 2K x 8 SRAM, 8K x 8 EPROM
2732
A11
A0
D7
D0
’138
MEMRG
E
E
E
E
E
E
E
E
A12
A13
A14
A15
A
B
C
G2A
G2B
G1
0
1
2
5
6
7
3
4
8000-8FFF
9000-9FFF
A000-AFFF
B000-BFFF
C000-CFFF
D000-DFFF
E000-EFFF
F000-FFFF
2732
4016
‘138
A12
A13
A14
A15
+5V
A
B
C
2GA
2GB
1G
0
1
2
5
6
7
3
4
0000-0FFF
1000-1FFF
6000-6FFF
G
S
W
G
E
E
MEMR
MEMW
Microprocessor
Hanbat National University prof. Lee Jae-heung
병렬 인터페이스(8255, PIO)
병렬 인터페이스(8251, SIO)
동 기 식(Synchronous)
비동기식(Asynchronous)
② 입출력 제어방식
-Memory-mapped I/O : 입출력 기기를 메모리의 한 영역으로 간주
-Isolated I/O: I/O port에 입출력기기가 연결되어 입출력을 행함
(2) 입출력 인터페이스
① 전송 데이터의 형태
Microprocessor
Hanbat National University prof. Lee Jae-heung
③ 병렬 입출력 인터페이스(8255A : PPIA)
- 기본적인 입력포트
Simple input port that accepts TTL data at I/O port number 12H
D7
D6
D5
D4
D3
D2
D1
D0
TTLCompatibleInput data
Z80Data bus
IN12H
‘30
A7
A6
A5
A4
A3
A2
A1
A0
‘3212H
IOR
Microprocessor
Hanbat National University prof. Lee Jae-heung
- Mode 0 (기본적 입출력 모드)
- Mode 1 (Strobe 입력, 출력 모드)• Strobe의 입력 동작
?STB : Strobe ?IBF : Interrupt Buffer Full
?INTE : Interrupt Enable ?INTR : Interrupt Request
1/0110 1
CONTROL WORDD7 D6 D5 D4 D3 D2 D1 D0
111
D7 D6 D5 D4 D3 D2 D1 D0
MODE 1 ( PORT A )
INTEA PC4
PC5
PC3
PA7-PA0
PC6,7
IBFA
INTRA
I/O2
8
MODE 1 ( PORT B )
INTEB
PC2
PC1
PC0
PB7-PB0
IBFB
INTRB
8CONTROL WORD
PC6,7
1=INPUT
0=OUTPUT
STBA
RD
RD
STBB
[Mode 1. strobe input operation of the 8255A](a)Internal structure
IBF
INTR
INPUT FROMPERIPHERAL
tSIB
tSITtRIB
tRIT
tPH
tPS
tSTSTB
RD
[Mode 1. strobe input operation of the 8255A](b)Timing diagram
Microprocessor
Hanbat National University prof. Lee Jae-heung
• Strobe 출력동작
?OBF : Output Buffer Full
?ACK : Acknowledge Input
1/0010 1
CONTROL WORDD7 D6 D5 D4 D3 D2 D1 D0
011
D7 D6 D5 D4 D3 D2 D1 D0
MODE 1 ( PORT A )
INTEA
PC7
PC6
PC3
PA7-PA0
PC4,5
OBFA
ACKA
INTRA
2
8
MODE 1 ( PORT B )
PC1
PC2
PC0
PB7-PB0
OBFB
ACK0
INTRB
8CONTROL WORD
WR
WR
PC4,5
1=INPUT
0=OUTPUT
INTEB
[Strobe output operation of the 8255](a)Internal structure
INTR
OUTPUT
tWOB
tAK tAIT
tWIT
tWB
tAOB
OBF
ACK
WR
[Strobe output operation of the 8255](b)Timing diagram
Microprocessor
Hanbat National University prof. Lee Jae-heung
- Mode 2(양방향 모드)
PC3
PC7
PC6
PC4
PC5
PA7 - PC0
INTE1
INTE2
INTRA
IBFA
I/O3
PC20
8
OBFA
ACKA
STBA
WR
RD
[Mode 2 bidirectional operation of the 8255A](a)Internal structure
INTR
IBF
PERIPHERALBUS
DATA FROMCPU TO 8255A
tWOB
tAOB
tAK
tST
tSIB
tPS
tPH
tAD tKD
tRIB
DATA FROMPERIPHERALTO 8255A
DATA FROM8255A TOPERIPHERAL DATA FROM
8255A
OBF
ACK
STB
RD
WR
[Mode 2 bidirectional operation of the 8255A](b)Timing diagram
Microprocessor
Hanbat National University prof. Lee Jae-heung
④ 직렬 입출력 인터페이스(8251A:USART)
- 비동기 전송 형태
- 동기 전송 형태
- 8251A(USART)의 블록 다이어그램
- Z80과 8251A의 연결
1 5 - 8 1 1 - 2
Stop bit Data bit Parity Stop bit
Sync Multiple of data (5 - 8)Sync
DATA BUSBUFFER
READ/WRITECONTROL
LOGIC
MODEMCONTROL
TRANSMITBUFFER(P-S)
TRANSMITCONTROL
RECEIVEBUFFER(S-P)
RECEIVECONTROL
ㅇㅇ
ㅇ
ㅇ
ㅇ
ㅇ
ㅇ
INTERNALDATABUS
RESETCLKC/D
TxD
TxRDY
TxE
RxD
RxRDY
SYNDET
D7 – D0
RDWR
CS
DSRDTRCTSRTS
TxC
RxC
Z80 8251A
‘30
A0
IORQA1A2A3A4A5A6
A7
CS
RD
WR
RD
WR
C/D
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 모드 세트 레지스터(Mode set Register)의 기능
B1B2L1L2PENEPS1S2
0 1 0 1
0 0 1 1
SYNCMODE
(1X) (16X) (64X)
0 1 0 1
0 0 1 1
5BITS
6BITS
7BITS
8BITS
BAUD RATE FACTOR
CHARACTER LENGTH
PARITY ENABLE1=ENABLE0=DISABLEEVEN PARITY GENERATION/CHECK1=EVEN0=ODD
0 1 0 10 0 1 1IN
VALID1
BITS1 1/2BITS
2BITS
NUMBER OF STOP BITS
(Only affects Tx,Rx never requiresmore than one stopbit)
D7 D6 D5 D4 D3 D2 D1 D0
00L1L2PENEPESDSCSCHARACTER LENGTH
PARITY ENABLE1=ENABLE0=DISABLE
EVEN PARITY GENERATION/CHECK1=EVEN0=ODD
D7 D6 D5 D4 D3 D2 D1 D0
EXTERNAL SYNC DEFECT1=SYNDET IS AN INPUT0=SYNDET IS AN OUTPUT
SINGLE CHARACTER SYNC1=SINGLE SYNC CHARACTER0=DOUBLE SYNC CHARACTER
Note : in external sync mode programming doublecharacter sync will affect only the Tx
[Mode set control words. (a)Asynchronous]
0 1 0 1
0 0 1 1
SYNCMODE
(1X) (16X) (64X)
[Mode set control words. (b)Synchronous]
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 커맨드 레지스터(Command Register)의 기능
TXENDTRR
XESBRKERRTSIREH
D7 D6 D5 D4 D3 D2 D1 D0
TRANSMIT ENABLE1 = ENABLE0 = DISABLE
RECEIVE ENABLE1 = ENABLE0 = DISABLE
SEND BREAK CHARACTER1 = forces T
xD low
0 = DISABLE
ERROR RESET1 = reset error flags PE, OE, FE
REQUEST TO SEND“High” will force RTS output to zero
INTERNAL RESET“High” return 8251A to mode Instruction format
ENTER HUNT MODE1=enable search for sync characters
Note : Error reset must be performed wheneverRxEnable and enter hunt are programmed.
(Has no effect in async mode)
DATA TERMINAL READY“High” will force DTR output to zero
[The command register of the 8251A]
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 8251A에서의 프로그램 예• 비동기 동작 프로그램
; software to program the 8251A so that it functions; in the asynchronous mode.;COMMAND : EQU 81H ;declare the command port;;reset the 8251A;INIT : LD A, 0
OUT (COMMAND), AOUT (COMMAND), AOUT (COMMAND), ALD A, 40HOUT (COMMAND), A
;;program mode set register;
LD A, 01111010BOUT (COMMAND), A
;program operational command registerLD A, 00010101BOUT (COMMAND), A
• 동기 동작 프로그램; software to program the 8251A for synchronous; operation;COMMAND : EQU 81H ;declare the command port;;reset the 8251A;SETUP : LD A, 0
OUT (COMMAND), AOUT (COMMAND), AOUT (COMMAND), ALD A, 40HOUT (COMMAND), A
;;program mode set register;
LD A, 10111000BOUT (COMMAND), A
;program sync charactersLD A, 7EHOUT (COMMAND), ALD A, 7FHOUT (COMMAND), A
;;program command register
LD A, 00010101BOUT (COMMAND), A
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 상태 레지스터(Status Register)의 기능
; 데이터 송수신 때 발생되는 상태 보관
TXRDYRXRDYTXEMPTYPEOEFESYNDETBRKDET
DSR
PARITY ERRORThe PE flag is set when a parityError is detected. It is reset by The ER bit of the commandInstruction. PE does not inhibitOperation of the 8251A
OVERRUN ERRORThe OE flag is set when the CPUdoes not read a character beforethe next one becomes available.It is reset by the ER bit of the command instruction. OE does not inhibit operation of the 8251A; however,the previously overrun character is lost.
FRAMING ERROR(Async only)The FE flag is set when a valid stopbit is not detected at the end of everycharacter. It is reset by the ER bit of thecommand instruction.FE does not inhibit the operation of the 8251A
DATA SET READYIndicates that the DSR is at azero level.
Note1
Same defintions as I/O pins
Note 1 : TxRDY status bit has different meanings from theTxRDY output pin. The former is not conditiondeby CTS and TxEN; the latter is conditioned byboth CTS and TxENi.e. TxRDY status bit = DB buffer empty
TxRDY pin out. DB buffer empty = (CTS 0) = (TxEN 1)
[Status register of the 8251A]
Microprocessor
Hanbat National University prof. Lee Jae-heung
- 데이터 송수신 프로그램 예• 전송프로그램
; subroutine to transmit the contents of the; B register;COMMAND : EQU 81H ;declare command port,DATA : EQU 80H ;declare data port;;test status of transmitter;SEND : IN A,(COMMAND) ;get status
RRCA ;move TxRDY to carryJR NC, SEND ;if not ready
;; send data;
LD A, B ;get dataOUT (DATA), ARET
• 수신프로그램;; subroutine to receive data via the 8251A; The received data are returned in the B register;COMMAND : EQU 81H ;declare command port,DATA : EQU 80H ;declare data port;;test RxRDY;RECV : IN A,(COMMAND) ;get status
RRCA ;RxRDY to carryRRCAJR NC, RECV ;if not ready
;; get data;
IN A, (DATA)LD B, A
;; test for errors;
IN A, (COMMAND) ;get dataAND 38H ;test error bits JR Z, NEXT ;if no errorsLD B, ‘?’ ;get ASCII ?LD A, 15H ;reset errorsOUT (COMMAND), A
NEXT : RET
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑤ 타이머 (8254A)- 8254 타이머의 블록 다이어그램
⑥ 제어 레지스터(Control Register)의 기능
DATA BUSBUFFER
READ/WRITELOGIC
CONTROLWORD
REGISTER
COUNTER0
COUNTER1
COUNTER2
8
ㅇ
INTERNALBUS
A0A1
CLK 0
CLK 1GATE 1OUT 1
CLK 2
D7 – D0
ㅇ
ㅇ
GATE 0OUT 0
GATE 2
OUT 2
RDWR
CS
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RW1 RW0 M2 M1 M0 BCD
SC – Select counter :
Read-back command(see read operations)
11
Select counter 201
Select counter 110
Select counter 000
SC1 SC0
M – Mode :
Mode 5101
Mode 4001
Mode 311X
Mode 201X
Mode 1100
Mode 0000
M2 M1 M0
RW – Read/write :
Read/write least significant byte first, than most significant byte
11
Read/write most significant byte only
01
Read/write least significant byte only
10
Counter latch command(see read operations)
00
RW1RW0BCD :
Binary coded decimal (BCD)Counter (4 decades)
1
Binary counter 16-bits0
Note : Don’t care bits(X) should be 0 to insurecompatibility with future Intel products.
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑦ 8254의 6개 모드
CLK
OUT Count loaded(3)
N 1 2 3
CLK
N 1 2 3
Mode 0
Mode 1
GATE
OUTTrigger
(Count =3)
CLK
N 2 3 11 2 3 1 2 3
Mode 2
OUTCount loaded
(3)
CLK
N 2 31
Mode 4
OUT
Trigger(3)
CLKN 2 31
CLK
N 2 3 11 2 3 1 2 3
Mode 3
OUT
Count loaded(3)
GATE
OUT
Trigger(3) Mode 5
Microprocessor
Hanbat National University prof. Lee Jae-heung
⑧ 8254를 이용한 FSK 생성 프로그램 예
- Using the 8254 to generate FSK
;; subroutine to transmit a logic 0 (2025 Hz tone);SENDO : PUSH AF ; save A
LD A, 00110110B ; program controlOUT (63H), A LD A, 0DDH ; program count LSBOUT (60H), ALD A, 03H ; program count MSBOUT (60H), ACALL DELAY ; wait 3.33 msPOP AF ; restore ARET
;; subroutine to transmit a logic 1 (2225 Hz tone);SEND 1 : PUSH AF ; save A
LD A, 00110110B ; program controlOUT (63H), ALD A, 83H ; program count LSBOUT (60H), ALD A, 03H ; program count MSBOUT (60H), ACALL DELAY ; wait 3.33 msecPOP AFRET
;; transmit a byte from the accumulator;TRANS : LD B, 8 ; load counter
CALL SENDO ; send start bitLOOP : PRCA ; get data bit
CALL NC, SENDO ; if 0CALL C, SEND 1 ; if 1DJNZ LOOP ; repeat for 8 bitsCALL SEND 1 ; send stop bitRET
8254
‘30
D0
D7
A0
A1
A7
A6A5
A3A2
A4
A0
A1
GATE 0
OUT 0
CLK 0
2 MHz
FSK
+5V
WR
RD
WR
RD
IORQ
1kD0
D7