본문 바로가기
흔한 학교 생활/컴퓨터 코딩 데이터

[마이크로프로세서] D flip flop 메모리, Memory Map

by 흔한 학생 2024. 3. 15.
반응형

 

 

D 플립플롭을 이용한 메모리, 메모리 맵의 구조

D flip flop을 이용한 메모리의 구조에 대해 알아보겠습니다.
우선 1비트를 저장하는 방법에 대해 알아볼 것이고 앞서 배운 data bus, address bus, control bus가 어떻게 연결되어 있는지 알아보겠습니다.

 


우선 D 플립플롭은 D, Q, CLK 로 구성되어 있습니다.




data bus는 데이터를 읽고, 쓰기 위해 D와 Q에 연결되어야 합니다.

그리고 address bus는 특정 주소의 메모리만 enable 하는 목적이므로 CLK에 디코더를 통해 연결되어 있습니다.



그리고 제어 신호는 어디로 연결되어야 할까요? $\overline{MEMW}$ 와 $\overline{MEMR}$ 신호를 받을 수 있을텐데요.
bar 가 함께 있음은 active low로 동작하는 것이고 1과 0으로 구성된 제어 신호를 주면 데이터를 쓰거나 읽어올 수 있어야 합니다.

이 동작을 가능하게 하기위해선 어떤 로직을 이용해야 할까요?
바로 논리회로 시간에 배운 tri-state buffer 을 이용할 수 있습니다.


tri-state buffer 의 동작은
플립플롭의 입력과 출력부에 tri-state buffer 를 위치시키고

$\overline{MEMW}$ 와 $\overline{MEMR}$를 이어주면 해당 제어신호를 이용할 수 있습니다.

이렇게 1비트를 저장할 수 있는 로직을 만들었습니다.
병렬로 8개를 나열한다면 그제야 1바이트를 저장할 수 있는 메모리가 완성될 것입니다.


4바이트를 저장할 수 있는 메모리를 생각해 봅시다.


$\overline{RD}$에는 $\overline{MEMR}$ 이 연결되어 있고 $\overline{WR}$ 에는 $\overline{MEMW}$이 연결되어 있습니다.
그리고 특정 메모리를 선택할 수 있는, enable 할 수 있는 address bus $A_{0} A_{1}$이 디코더를 통해 연결되어 있습니다. 그리고 현재 $A_{2}$ 라는 address bus는 아무것도 연결되어 있지 않다고 가정해봅시다.
각 주소를 위에서부터 00 01 10 11 이라 하고, address bus에 001이 간다면 01이 enable 될 것입니다.
주소로 101 을 입력된다면 마찬가지로 01 주소의 메모리가 enable 될 것입니다. $A_{2}$로 가는 입력은 의미가 없기 때문입니다.
이렇게 남는 address bus 가 존재할 때 partial decoding 이라고 합니다.


이 4바이트를 저장할 수 있는 메모리를 하나 더 추가해 8바이트를 저장할 수 있도록 해봅시다
$A_{2}$가 0일때 왼쪽의 메모리 칩, $A_{2}$가 1일때 오른쪽 칩을 선택하려면 다음과 같이 연결할 수 있습니다.


이렇게 모든 address bus를 연결했을 때를 apsolute decoding 이라 합니다.


Memory Map

시작부터 끝을 찾는 것?

1. address bus $A_{15}$까지 address bus가 연결되어 있을 때 메모리 맵은?

address bus가 A0 에서 A15까지 16비트 이므로 16x2^16 디코더가 있습니다.

때문에 $2^{16}$ 인
0000 H ~ FFFF H 까지 존재합니다.

2. address bus $A_{14}$까지 연결

$A_{15}$는 CS에 연결되어 있고 address bus에는 $A_{14}$ 까지만 연결되어 있습니다.
0000….0000 ~ 0111…1111 주소까지 메모리가 존재하므로 16진수로 변환 시 0000 H 부터 7FFF H 까지 존재합니다.

처음에는 주소를 16진수로 나타내었기에 0000H ~ FFFFH 입니다.
이를 2진수로 변환하면 한 자리씩 4자리 2진수로 바꿔 나타내면 됩니다.

이 같은 경우에는 A15가 0으로 고정되어 있기에 2진수로 나타내면 0111...1111 까지만 있는 것입니다. 
0111 1111 1111 1111 을 네 자리씩 묶어서 16진수로 변환하면 7 F F F 입니다.
3. address bus $A_{12}$ 까지 연결

0000…0000 ~ 0001…1111 까지 존재합니다.
16진수로 변환 시 0000 H ~ 1FFF H 까지 존재합니다.

 

4. 만약 메모리 맵이 0000 H ~ 3FFF H 라면 address bus 는 어떻게 연결되어 있을까요?

10진수로 변환하면 0000…0000 ~ 0011…1111 이므로 $A_{13}$ 까지 address bus에 연결되어 있을 것입니다.

 

5. 2800 H ~ 2FFF H 라면?

00101000 … ~ 00101111… 이므로 $A_{15}$ 에서 $A_{11}$ 까지 고정되어 있습니다.
때문에 CS에 다음과 같이 연결되어 있을 것입니다.

반응형