1. demultiplexing
Read 할 때의 순서 : Address bus --> Control bus --> Data bus
Write 할 때의 순서 : Address bus --> Data bus --> Control bus
-> Address bus와 Data bus는 동시에 쓰이지 않는다. 그러므로 그걸 같이 써서 효율적으로 줄이자.
이렇게 공용으로 사용하는 것을 demultiplexing이라고 한다.
입력이 1개, 출력이 여러개인 상황을 의미한다. multiplexer는 입력이 여러 개, 출력이 한 개
2. ALE 신호
(1) Ctrl 신호(파랑)을 1로 준다.
(2) 잠시 뒤, Ctrl 신호(파랑)을 0으로 바꾼다.
(3) 결과를 보면, Q는 그대로 1이 유지되고, 그 밑의 값은 변한다.
-> ALE 신호 : address latch enable 신호
예를 들어보자.
2001H 번지가 address bus에 실려 enable되는 동시에 data bus로 값도 들어간다.
address bus가 실리면, ALE 신호가 0으로 떨어진다.
MEMR 신호를 주면, data bus가 실린다.
-> FF는 시작할 때 1이 되고, 한 클락 지나면 0이 되는 것을 data bus로도 사용한다.
FF는 시작할 때 1이 되고, 한 클락 지나도 계속 1인 것은 address bus만으로 사용한다.
-> 이에 대한 그림은 아래와 같다. A와 D가 같이 사용되는 모습
3. 타이밍도
<타이밍도의 표현>
하나의 명령어의 시작부터 끝까지, 시스템들간의 변화를 의미한다.
* 모든 명령어의 시작은 opcode fetch machine cycle이다.
* 16bit의 address bus를 표현하기엔 너무 길기 때문에 필요한 값만 묶어 표현한다.
<opcode fetch machine cycle>
최소 3T간 유지해야 한다. 한 클락 후에 이 cycle은 완전히 끊긴다.
8bit짜리 AD를 보면, 첫 블락은 Address bus를, 두번째 블락은 Data bus를 나타낸다.
<ADD M>
몇가지 명령어들을 타이밍도로 그려보자.
<DCR M>
외부 메모리 주소(M)의 값을 1 감소시키는 명령어다.
INR M도 같은 타이밍도로 표현된다.
오류 있음 T3 저렇게 그리면 안됨 ㅠㅠ WR이라서 데이터 블록 잘못그림 !!!
<INX B>
최악의 경우, 예를 들어 BC가 20H와 FFH라면, 그 값은 2100H가 된다.
-> 그것까지 고려하여 3개 T를 더 작성해둔다. 이 T들은 BC의 값을 1 증가시킬 때 필요하다.
DCX 명령어도 same
<LXI D, 2040H>
3byte 명령어 중에 유일하게 기본형으로 끝난다.
<LDA 2050H>
3byte 명령어이지만, opcode fetch + MEMR + MEMR + MEMR cycle을 가진다.
<STA 2051H>
역시 3byte 명령어이지만, opcode fetch + MEMR + MEMR + MEMW cycle을 가진다.
<MVI B, 20H>
2byte 명령어에선, 2개를 제외한 모든 명령어가 기본형이다 !!
그 2개가 IN, OUT 명령어다 !!
<IN 01H>
opcode를 실음과 동시에, PC가 2001H로 변한다.
decoder에 enable되고, MEMR control 신호가 주어지면, databus에 싣는 것과 동시에 PC가 1 증가한다.
** IN, OUT 포트는 address bus를 8개만 사용한다.
-> 예.. 실수한 부분이 있군요, M3 동작은 I/O의 동작이기 때문에 IO/M을 올려줘야 합니다ㅜㅜ
<OUT 02H>
opcode를 실음과 동시에, PC가 2001H로 변한다.
A값을 output 02번지로 내보내야 한다.
-> 여기도 마찬가지로 M3 동작은 I/O의 동작이기 때문에 IO/M을 올려줘야 합니다ㅜㅜ
'KNU_study > 마이크로프로세서' 카테고리의 다른 글
마이크로프로세서(16) 프로그램 코드 설계 예제 (0) | 2023.04.21 |
---|---|
마이크로프로세서(15) I/O interface (1) | 2023.04.21 |
마이크로프로세서(13) 어셈블러 명령어2 (0) | 2023.04.21 |
마이크로프로세서(12) 어셈블러 명령어 (0) | 2023.04.21 |
마이크로프로세서(11) I/O interface (0) | 2023.04.21 |