890 likes | 1.09k Views
제 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.
E N D
제 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 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 : 가지고 있는 주소공간
-> 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와의 관계는 ?
Memory Map 0xFFFF CPU A15-A0 64KB RAM SA15-SA0 CS# : 0 SD7-SD0 D7-D0 0x0000
(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
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
-> SRAM 2개 필요 : SRAM 사상 CPU address space 영역 1 : 0-32K : SRAM 1개 영역 2 : 32K-64K : SRAM 1개 -> 두 영역의 구분 : A15를 이용하여 구분 A15를 이용한 SRAM의 구분 : 1X2 디코더 이용 -> 1X2 디코더 입력 : A15 출력 : SRAM의 CS#
-> CPU의 A14-A0, D7-D0 와 SRAM의 SA14-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A14 <-> SA14), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?
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
(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
2*4 Decoder 2*4 Decoder O3# O3# I1 : A15 I1 O2# O2# I0 : A14 I0 O1# O1# E# : 0 E# O0# O0#
-> 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#
-> CPU의 A13-A0, D7-D0 와 SRAM의 SA13-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A13 <-> SA13), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?
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
(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
-> 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 디코더 이용
-> 3X8 디코더 입력 : A15, A14, A13 출력 : SRAM의 CS# -> CPU의 A12-A0, D7-D0 와 SRAM의 SA12-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A12 <-> SA12), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0)
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#
(2). 8bit CPU ( A15 - A0, D7 - D0 )에서 32Kbyte Memory가 필요한 경우 0xFFFF CPU A15-A0 D7-D0 32KB 0x0000
(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
-> 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#
-> 2X4 디코더 입력 : A15, A14 출력 : 두 개의 SRAM의 CS# -> CPU의 A13-A0, D7-D0 와 SRAM의 SA13-SA0, SD7-SD0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A13 <-> SA13), ......, (A0 <-> SA0) (D7 <-> SD7), ....., (D0 <-> SD0)
(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
-> SRAM 4개 필요 : SRAM 사상 CPU address space 영역 1 : 0-8K : SRAM 1개 . . 영역 8 : 56K-64K : -> 8 영역의 구분 : A15, A14, A13을 이용하여 구분 A15, A14, A13을 이용한 SRAM의 구분 : 3X8 디코더 이용
3*8 Decoder O7# I2 : A15 O6# I1 : A14 I0 : A13 O5# O4# O3# CS3# O2# CS2# O1# CS1# E# : 0 O0# CS0#
-> 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)
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
2*4 Decoder CS3# O3# I1 : A14 CS2# O2# I0 : A13 CS1# O1# E# : A15 CS0# O0#
(3). 8bit CPU ( A15 - A0, D7 - D0 )에서 32Kbyte Memory가 필요한 경우 0xFFFF CPU A15-A0 32KB D7-D0 0x0000
(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#
(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
3*8 Decoder O7# I2 : A15 O6# I1 : A14 I0 : A13 O5# O4# O3# O2# O1# E# : 0 O0#
2*4 Decoder CS3# O3# I1 : A14 CS2# O2# I0 : A13 CS1# O1# E# A15 CS0# O0#
4.2 두 번째 방법 CPU의 data bus 폭이 2N bit 일 때 필요한 memory가 2K = 2(M+N) bit 이다 -> 이때, 2(m+n) bit SRAM 메모리 소자를 이용하여 설계하라 ?
(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
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
메모리 용량 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
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
64KB = 2(16+3) bit SRAM 64KB SRAM A15-A0 D7-D0 16 lines 16X216 Decoder 16 lines 216 23 lines 23 23 lines
2(m+n) bit SRAM m lines mX2m Decoder m lines 2m 2n lines 2n 2n lines
(2). 설계 순서 (a). 메모리 소자들의 배치 및 CPU의 데이터 버스와 메모리의 데이터 버스를 연결 - CPU의 데이터 버스 폭을 만족하기 위한 단위 메모리 소자의 수 = 단위모듈 - 원하는 메모리 용량을 구성하기 위한 단위 모듈의 수 - 메모리 소자들의 배치 및 데이터 버스 연결 (b). CPU의 어드레스 버스와 메모리의 어드레스 버스를 연결
(a). 메모리 소자들의 배치 및CPU의 데이터 버스와 메모리의 데이터 버스를 연결 CPU가 원하는 메모리 용량 = 벽 2M 단위 메모리 용량 = 벽돌 단위모듈 2m 2n 2N 단위모듈 -> CPU의 데이터 폭을 만족하기 위한 단위 메모리들의 집합
단위 모듈을 구성하기 위한 메모리 소자의 수 : 2N/2n = 2(N-n) CPU가 원하는 메모리 용량 단위 메모리 용량 단위모듈 2n 2N
원하는 메모리 용량을 구성하기 위한 단위 모듈의 수 : 2M/2m = 2(M-m) CPU가 원하는 메모리 용량 2M 단위모듈 2m
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
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
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
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
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