1 / 89

제 4 장

제 4 장. Interface between CPU and Memory (SRAM). 4.1 첫 번째 방법 (1). 8bit CPU ( A15 - A0, D7 - D0 ) 에서 64Kbyte Memory 가 필요한 경우. 0xFFFF. Address Space of CPU 64KByte. CPU. A15-A0. D7-D0. 0x0000. (a). 64K byte SRAM (SA15 - SA0, SD7 - SD0) 을 이용. 64KB RAM. SA15-SA0. 0xFFFF.

Download Presentation

제 4 장

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 4 장 Interface between CPU and Memory (SRAM)

  2. 4.1 첫 번째 방법 (1). 8bit CPU ( A15 - A0, D7 - D0 )에서 64Kbyte Memory가 필요한 경우 0xFFFF Address Space of CPU 64KByte CPU A15-A0 D7-D0 0x0000

  3. (a). 64K byte SRAM (SA15 - SA0, SD7 - SD0) 을 이용 64KB RAM SA15-SA0 0xFFFF Address Space of CPU 64KByte CPU CS# SD7-SD0 A15-A0 Address Space of SRAM 64KByte D7-D0 0x0000 CPU의 address space : 가질 수 있는 주소공간 Memory의 address space : 가지고 있는 주소공간

  4. -> SRAM 1개 필요 -> CPU의 A15-A0, D7-D0 와 SRAM의 SA15-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A15 <-> SA15), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?

  5. Memory Map 0xFFFF CPU A15-A0 64KB RAM SA15-SA0 CS# : 0 SD7-SD0 D7-D0 0x0000

  6. (b). 32K byte SRAM (SA14 - SA0, SD7 - SD0) 을 이용 32KB RAM 0xFFFF Address Space of CPU 64KByte CPU SA14-SA0 CS# A15-A0 SD7-SD0 D7-D0 32KB RAM SA14-SA0 CS# SD7-SD0 0x0000

  7. Memory Map 0xFFFF 32KB RAM CPU SA14-SA0 A15 CS# A15 32KB A14-A0 SD7-SD0 D7-D0 32KB RAM 32KB SA14-SA0 CS# A15 SD7-SD0 0x0000

  8. -> SRAM 2개 필요 : SRAM 사상 CPU address space 영역 1 : 0-32K : SRAM 1개 영역 2 : 32K-64K : SRAM 1개 -> 두 영역의 구분 : A15를 이용하여 구분 A15를 이용한 SRAM의 구분 : 1X2 디코더 이용 -> 1X2 디코더 입력 : A15 출력 : SRAM의 CS#

  9. -> CPU의 A14-A0, D7-D0 와 SRAM의 SA14-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A14 <-> SA14), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?

  10. Memory Map 0xFFFF 32KB RAM CPU SA14-SA0 A15 CS# A15 32KB A14-A0 SD7-SD0 D7-D0 32KB RAM 32KB SA14-SA0 CS# A15 SD7-SD0 0x0000

  11. (c). 16K byte SRAM (SA13 - SA0, SD7 - SD0) 을 이용 SA13-SA0 16KB RAM CS# O3* Memory Map SD7-SD0 0xFFFF CPU A15 16KB A14 SA13-SA0 16KB RAM CS# O2* A13-A0 16KB SD7-SD0 D7-D0 SA13-SA0 16KB RAM 16KB CS# O1* SD7-SD0 16KB 0x0000 SA13-SA0 16KB RAM CS# O0* SD7-SD0

  12. 2*4 Decoder 2*4 Decoder O3# O3# I1 : A15 I1 O2# O2# I0 : A14 I0 O1# O1# E# : 0 E# O0# O0#

  13. -> SRAM 4개 필요 : SRAM 사상 CPU address space 영역 1 : 0-16K : SRAM 1개 영역 2 : 16K-32K : SRAM 1개 영역 3 : 32K-48K : SRAM 1개 영역 4 : 48K-64K : SRAM 1개 -> 4 영역의 구분 : A15, A14를 이용하여 구분 A15, A14를 이용한 SRAM의 구분 : 2X4 디코더 이용 -> 2X4 디코더 입력 : A15, A14 출력 : SRAM의 CS#

  14. -> CPU의 A13-A0, D7-D0 와 SRAM의 SA13-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A13 <-> SA13), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?

  15. SA13-SA0 16KB RAM CS# O3# Memory Map SD7-SD0 0xFFFF CPU A15 16KB A14 SA13-SA0 16KB RAM CS# O2# A13-A0 16KB SD7-SD0 D7-D0 SA13-SA0 16KB RAM 16KB CS# O1# SD7-SD0 16KB 0x0000 SA13-SA0 16KB RAM CS# O0# SD7-SD0

  16. (d). 8K byte SRAM (SA12 - SA0, SD7 - SD0) 을 이용 SA12-SA0 SA12-SA0 8KB RAM3 8KB RAM7 CS3# CS7# Memory Map SD7-SD0 SD7-SD0 0xFFFF 8KB RAM7 CPU A15 A14 8KB RAM6 SA12-SA0 SA12-SA0 8KB RAM2 8KB RAM6 A13 CS2# CS6# A12-A0 8KB RAM5 SD7-SD0 SD7-SD0 8KB RAM4 8KB RAM3 D7-D0 SA12-SA0 SA12-SA0 8KB RAM1 8KB RAM5 CS1# 8KB RAM2 CS5# SD7-SD0 SD7-SD0 8KB RAM1 8KB RAM0 0x0000 SA12-SA0 SA12-SA0 8KB RAM0 8KB RAM4 CS0# CS4# SD7-SD0 SD7-SD0

  17. -> SRAM 8개 필요 : SRAM 사상 CPU address space 영역 1 : 0-8K : SRAM 1개 . . 영역 8 : 56K-64K : SRAM 1개 -> 8 영역의 구분 : A15, A14, A13을 이용하여 구분 A15, A14, A13을 이용한 SRAM의 구분 : 3X8 디코더 이용

  18. -> 3X8 디코더 입력 : A15, A14, A13 출력 : SRAM의 CS# -> CPU의 A12-A0, D7-D0 와 SRAM의 SA12-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A12 <-> SA12), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0)

  19. 3*8 Decoder O7# CS7# I2 : A15 O6# CS6# I1 : A14 I0 : A13 O5# CS5# O4# CS4# O3# CS3# O2# CS2# O1# CS1# E# : 0 O0# CS0#

  20. (2). 8bit CPU ( A15 - A0, D7 - D0 )에서 32Kbyte Memory가 필요한 경우 0xFFFF CPU A15-A0 D7-D0 32KB 0x0000

  21. (a). 16K byte SRAM (SA13 - SA0, SD7 - SD0) 을 이용,하위 영역 사상 Memory Map 0xFFFF CPU A15 16KB A14 A13-A0 16KB SA13-SA0 16KB RAM CS1# SD7-SD0 D7-D0 16KB SA13-SA0 16KB RAM 16KB CS0# SD7-SD0 0x0000

  22. -> SRAM 2개 필요 : SRAM 사상 CPU address space 영역 1 : 0-16K : SRAM 1개 영역 2 : 16K-32K : SRAM 1개 영역 3 : 32K-48K : 영역 4 : 48K-64K : -> 4 영역의 구분 : A15, A14를 이용하여 구분 A15, A14를 이용한 SRAM의 구분 : 2X4 디코더 이용 2*4 Decoder O3# I1 : A15 O2# I0 : A14 CS1# O1# E# : 0 CS0# O0#

  23. -> 2X4 디코더 입력 : A15, A14 출력 : 두 개의 SRAM의 CS# -> CPU의 A13-A0, D7-D0 와 SRAM의 SA13-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A13 <-> SA13), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0)

  24. (b). 8K byte SRAM (SA12 - SA0, SD7 - SD0) 을 이용,하위영역 사상 SA12-SA0 8KB RAM3 CS3# Memory Map SD7-SD0 0xFFFF 8KB CPU A15 A14 8KB SA12-SA0 8KB RAM2 A13 CS2# A12-A0 8KB SD7-SD0 8KB 8KB RAM3 D7-D0 SA12-SA0 8KB RAM1 CS1# 8KB RAM2 SD7-SD0 8KB RAM1 8KB RAM0 SA12-SA0 8KB RAM0 0x0000 CS0# SD7-SD0

  25. -> SRAM 4개 필요 : SRAM 사상 CPU address space 영역 1 : 0-8K : SRAM 1개 . . 영역 8 : 56K-64K : -> 8 영역의 구분 : A15, A14, A13을 이용하여 구분 A15, A14, A13을 이용한 SRAM의 구분 : 3X8 디코더 이용

  26. 3*8 Decoder O7# I2 : A15 O6# I1 : A14 I0 : A13 O5# O4# O3# CS3# O2# CS2# O1# CS1# E# : 0 O0# CS0#

  27. -> 3X8 디코더 입력 : A15, A14, A13 출력 : 4 개의 SRAM의 CS# -> CPU의 A12-A0, D7-D0 와 SRAM의 SA12-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A12 <-> SA12), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0)

  28. SA12-SA0 8KB RAM3 CS3# Memory Map SD7-SD0 0xFFFF CPU A15 A14 SA12-SA0 8KB RAM2 A13 32KB CS2# A12-A0 SD7-SD0 8KB RAM3 D7-D0 SA12-SA0 8KB RAM1 CS1# 8KB RAM2 SD7-SD0 8KB RAM1 8KB RAM0 SA12-SA0 8KB RAM0 0x0000 CS0# SD7-SD0

  29. 2*4 Decoder CS3# O3# I1 : A14 CS2# O2# I0 : A13 CS1# O1# E# : A15 CS0# O0#

  30. (3). 8bit CPU ( A15 - A0, D7 - D0 )에서 32Kbyte Memory가 필요한 경우 0xFFFF CPU A15-A0 32KB D7-D0 0x0000

  31. (a). 16K byte SRAM (SA13 - SA0, SD7 - SD0) 을 이용,상위 영역 사상 Memory Map SA13-SA0 16KB RAM 0xFFFF CPU 16KB A15 CS1# O3* A14 SD7-SD0 A13-A0 16KB SA13-SA0 16KB RAM CS2# O2* SD7-SD0 D7-D0 16KB 2*4 Decoder O3# I1 : A15 16KB O2# I0 : A14 0x0000 O1# E# : 0 O0#

  32. (b). 8K byte SRAM (SA12 - SA0, SD7 - SD0) 을 이용,상위영역 사상 SA12-SA0 8KB RAM3 CS3# O7* Memory Map SD7-SD0 0xFFFF 8KB RAM3 CPU A15 A14 SA12-SA0 8KB RAM2 8KB RAM2 A13 CS2# O6* A12-A0 8KB RAM1 SD7-SD0 8KB RAM0 8KB D7-D0 SA12-SA0 8KB RAM1 CS1# 8KB O5* SD7-SD0 8KB 8KB SA12-SA0 8KB RAM0 0x0000 CS0# O4* SD7-SD0

  33. 3*8 Decoder O7# I2 : A15 O6# I1 : A14 I0 : A13 O5# O4# O3# O2# O1# E# : 0 O0#

  34. 2*4 Decoder CS3# O3# I1 : A14 CS2# O2# I0 : A13 CS1# O1# E# A15 CS0# O0#

  35. 4.2 두 번째 방법 CPU의 data bus 폭이 2N bit 일 때 필요한 memory가 2K = 2(M+N) bit 이다 -> 이때, 2(m+n) bit SRAM 메모리 소자를 이용하여 설계하라 ?

  36. (1). M, N, m ,n의 이해 CPU의 data bus 폭이 2N bit ex) 8bit CPU : N = 3 16bit CPU : N = 4 32bit CPU : N = 5 64bit CPU : N = 6

  37. CPU의 data bus 폭이 2N bit 일 때 필요한 memory가 2K = 2(M+N) bit 이다 CPU가 원하는 메모리 용량 = 2K bit 2M 2N ex1) 8bit CPU 에서 32Kbyte의 Memory필요 32K X 8bit => 2(15+3) bit : K = 18, N=3, M = 15 ex2) 16bit CPU 에서 64Kbyte의 Memory필요 64K X 8bit => 2 (16+3) bit : K = 19, N=4, M = 15 ex3) 32bit CPU 에서 64Mbyte의 Memory필요 64M X 8bit => 2(26+3) bit : K = 29, N=5, M=24

  38. 메모리 용량 2(m+n)bit 2k = 2(m+n) bit SRAM 메모리 소자 2n : 메모리 소자의 데이터 버스 폭 2m ex) 주어진 메모리 소자의 데이터 버스 폭은 8bit라 가정 64KByte SRAM 2(16+3)bit : k=19, n=3, m=16 8KByte SRAM 2(13+3)bit : k=16, n=3, m=13 1MByte SRAM 2(20+3)bit : k=23, n=3, m=20 2n

  39. What is the m ? 2(m+n) bit SRAM 64KB = 2(16+3) bit SRAM 64KB SRAM A15-A0 D7-D0 16 lines m lines 23 lines 2n lines

  40. 64KB = 2(16+3) bit SRAM 64KB SRAM A15-A0 D7-D0 16 lines 16X216 Decoder 16 lines 216 23 lines 23 23 lines

  41. 2(m+n) bit SRAM m lines mX2m Decoder m lines 2m 2n lines 2n 2n lines

  42. (2). 설계 순서 (a). 메모리 소자들의 배치 및 CPU의 데이터 버스와 메모리의 데이터 버스를 연결 - CPU의 데이터 버스 폭을 만족하기 위한 단위 메모리 소자의 수 = 단위모듈 - 원하는 메모리 용량을 구성하기 위한 단위 모듈의 수 - 메모리 소자들의 배치 및 데이터 버스 연결 (b). CPU의 어드레스 버스와 메모리의 어드레스 버스를 연결

  43. (a). 메모리 소자들의 배치 및CPU의 데이터 버스와 메모리의 데이터 버스를 연결 CPU가 원하는 메모리 용량 = 벽 2M 단위 메모리 용량 = 벽돌 단위모듈 2m 2n 2N 단위모듈 -> CPU의 데이터 폭을 만족하기 위한 단위 메모리들의 집합

  44. 단위 모듈을 구성하기 위한 메모리 소자의 수 : 2N/2n = 2(N-n) CPU가 원하는 메모리 용량 단위 메모리 용량 단위모듈 2n 2N

  45. 원하는 메모리 용량을 구성하기 위한 단위 모듈의 수 : 2M/2m = 2(M-m) CPU가 원하는 메모리 용량 2M 단위모듈 2m

  46. ex1) 8bit CPU 에서 32Kbyte의 Memory필요 32K X 8bit => 2(15+3) bit K=18, N=3, M=15 8KByte SRAM을 이용할 경우 -> 2(13+3) bit k=16, n=3, m=13 단위 모듈 내 필요한 SRAM의 수 : 2(N-n) = 2(3-3) = 1 필요한 모듈의 수 : 2(M-m) = 2(15-13) = 4

  47. SA12-SA0 8KB RAM3 CS3# CPU가 원하는 메모리 용량 = 32KByte = 2(15+3)bit SD7-SD0 SA12-SA0 8KB RAM2 CS2# 215 SD7-SD0 SA12-SA0 8KB RAM1 CS1# SD7-SD0 단위 메모리 용량 = 8KByte = 2(13+3)bit 단위모듈 SA12-SA0 8KB RAM0 CS0# SD7-SD0 23

  48. ex2) 16bit CPU 에서 64Kbyte의 Memory필요 64Kbyte => 2 (16+3) bit K=19, N=4, M=15 8KByte SRAM을 이용할 경우 -> 2(13+3)bit k=16, n=3, m=13 단위, 모듈 내 필요한 SRAM의 수 : 2(4-3) = 2 필요한 모듈의 수 : 2(15-13) = 4

  49. SA12-SA0 SA12-SA0 8KB RAM6 8KB RAM7 CPU가 원하는 메모리 용량 = 64KByte = 2(16+3)bit SD7-SD0 SD7-SD0 SA12-SA0 SA12-SA0 8KB RAM4 8KB RAM5 215 SD7-SD0 SD7-SD0 SA12-SA0 SA12-SA0 8KB RAM2 8KB RAM3 SD7-SD0 SD7-SD0 단위 메모리 용량 = 8KByte = 2(13+3)bit 단위모듈 SA12-SA0 SA12-SA0 8KB RAM0 8KB RAM1 SD7-SD0 SD7-SD0 24

  50. SA12-SA0 SA12-SA0 8KB RAM6 8KB RAM7 SD7-SD0 SD7-SD0 CPU SA12-SA0 SA12-SA0 8KB RAM4 8KB RAM5 SD7-SD0 SD7-SD0 D15-D8 SA12-SA0 SA12-SA0 8KB RAM2 8KB RAM3 D7-D0 SD7-SD0 SD7-SD0 SA12-SA0 SA12-SA0 8KB RAM0 8KB RAM1 SD7-SD0 SD7-SD0

More Related