본문 바로가기

KNU_study/마이크로프로세서

마이크로프로세서(10) 38 decoder

728x90
반응형

 


이전 글의 개념(38디코더를 사용하는 이유)이 필요하다면 여기를 클릭 !!
 
 

example problem

 
<예제 1>
0000H ~ 1FFFH 메모리를 설계하시오. (38 디코더를 사용)
 

주소의 처음과 끝을 풀어 쓰면 다음과 같다.
NAND gate를 사용한 메모리 설계

 

처음 주소와 끝 주소를 비교하였을 때, A15부터 같은 값을 가지는 bit까지를 CS에 연결한다. 

-> 남은 값들은 address bus로 할당한다. 
또한 NAND 대신, decoder를 사용할 수 있다. 
-> 38디코더 : 같은 크기의 메모리 8개까지 확장 가능
 

38디코더를 사용한 메모리 설계

-> 하 실수를 또 했넹.. E1과 E2위에 바(bar)가 있어야 하고, E3위엔 아무것도 없어야 합니다!!
 
<예제 1-1>
예제1 보다 1 큰 번지를 할당하였을 때, 해당 메모리의 시작 번지와 끝 번지는 ? + 설계해라. 
 

주소의 처음과 끝을 풀어 쓰면 다음과 같다.

-> E1과 E2위에 바(bar)가 있어야 하고, E3위엔 아무것도 없어야 합니다!!
 
<예제 2>
2800H ~ 2FFFH 메모리를 설계하시오. (38 디코더를 사용)
 

역시 A15부터 중복되는 값들은 디코더에, 나머지는 address bus에

 

 
-> 38 디코더라서 3개만 디코더에 달아준다. 
-> 나머지 A14, A15는 E1바에 달아줘도 디코더는 바르게 동작한다. 
-> 대신 Mirror memory가 발생한다. Mirror memory를 모른다면 여기를 클릭 !!
 
<예제 3>
2E00H ~ 2FFFH 메모리를 설계하시오. (38 디코더를 사용)
 

 

 
-> NAND gate를 이용하여 mirror memory가 될 값들을 연달아 달아놓는다. 
-> A15 ~ A12가 0010이므로 필요에 따라 inverter를 붙여준다. 
 
<예제 4>

 
1) 0000H ~ 4kB 짜리 R/W 메모리를 설계하자. 
 

최대 64kB를 가진다는 것을 감안하면, A12까지가 4kB다.

 
2) ~ 4kB만큼 비워두자. 
 

다음 4kB의 공간을 차지하는 001(디코더) 번지에 X 표시를 한다.

 
3) ~ 2kB짜리 ROM을 설계하자. 
 

ROM이므로, RD 신호만 있는 메모리를 설계한다.

 
-> 2kB는 4kB/2이므로, A11까지 address bus에 담지 말고, A10까지만 address bus에 담자. 
-> 따라서 ROM에서 A11은 사용하지 않는다. 
 
4) memory map을 그리자. 
 

오른쪽 16bit 해석을 참고하며 mirror memory의 위치를 주의하자.

 
 
<예제 4-1>
Mirror memory가 발생하지 않게 바꿔 그려라.
(= parial decoding 말고, complete decoding을 설계해라.)
 

0일 때만 동작하게끔 A11을 0으로 가정하자. 그런 후 NAND gate를 이용하자.
mirror memory가 있던 공간이 빈 공간이 된다.

 

728x90
반응형