4 Interface between CPU and Memory SRAM kuic
제 4장 Interface between CPU and Memory (SRAM)
kuic. kyonggi. ac. kr/~dssung 4. 1 첫 번째 방법 (1). 8 bit CPU ( A 15 - A 0, D 7 - D 0 )에서 64 Kbyte Memory가 필요한 경우 0 x. FFFF A 15 -A 0 Address Space of CPU D 7 -D 0 64 KByte 0 x 0000
kuic. kyonggi. ac. kr/~dssung (a). 64 K byte SRAM (SA 15 - SA 0, SD 7 - SD 0) 을 이용 0 x. FFFF SA 15 -SA 0 SD 7 -SD 0 A 15 -A 0 64 KB RAM Address Space of CPU D 7 -D 0 Address Space of SRAM 64 KByte 0 x 0000 CPU의 address space : 가질 수 있는 주소공간 Memory의 address space : 가지고 있는 주소공간 64 KByte CS#
kuic. kyonggi. ac. kr/~dssung -> SRAM 1개 필요 -> CPU의 A 15 -A 0, D 7 -D 0 와 SRAM의 SA 15 -SA 0, SD 7 -SD 0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A 15 <-> SA 15), . . . , (A 0 <-> SA 0) (D 7 <-> SD 7), . . . , (D 0 <-> SD 0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?
kuic. kyonggi. ac. kr/~dssung Memory Map 0 x. FFFF A 15 -A 0 SA 15 -SA 0 CPU SD 7 -SD 0 D 7 -D 0 0 x 0000 64 KB RAM CS# : 0
kuic. kyonggi. ac. kr/~dssung (b). 32 K byte SRAM (SA 14 - SA 0, SD 7 - SD 0) 을 이용 0 x. FFFF A 15 -A 0 SA 14 -SA 0 SD 7 -SD 0 32 KB RAM CS# Address Space of CPU D 7 -D 0 64 KByte SA 14 -SA 0 SD 7 -SD 0 0 x 0000
kuic. kyonggi. ac. kr/~dssung Memory Map 0 x. FFFF SA 14 -SA 0 A 15 A 14 -A 0 32 KB SD 7 -SD 0 32 KB RAM CS# A 15 CPU D 7 -D 0 32 KB SA 14 -SA 0 SD 7 -SD 0 0 x 0000 A 15
kuic. kyonggi. ac. kr/~dssung -> CPU의 A 14 -A 0, D 7 -D 0 와 SRAM의 SA 14 -SA 0, SD 7 -SD 0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A 14 <-> SA 14), . . . , (A 0 <-> SA 0) (D 7 <-> SD 7), . . . , (D 0 <-> SD 0) : 이 경우 CPU address space와 SRAM address space와의 관계는
kuic. kyonggi. ac. kr/~dssung Memory Map 0 x. FFFF SA 14 -SA 0 A 15 A 14 -A 0 32 KB SD 7 -SD 0 32 KB RAM CS# A 15 CPU D 7 -D 0 32 KB SA 14 -SA 0 SD 7 -SD 0 0 x 0000 A 15
kuic. kyonggi. ac. kr/~dssung (c). 16 K byte SRAM (SA 13 - SA 0, SD 7 - SD 0) 을 이용 SA 13 -SA 0 Memory Map 0 x. FFFF A 15 A 14 A 13 -A 0 SD 7 -SD 0 16 KB RAM CS# O 3* 16 KB SA 13 -SA 0 16 KB SD 7 -SD 0 16 KB SA 13 -SA 0 O 2* CPU D 7 -D 0 SD 7 -SD 0 16 KB RAM CS# O 1* 16 KB 0 x 0000 SA 13 -SA 0 SD 7 -SD 0 16 KB RAM CS# O 0*
kuic. kyonggi. ac. kr/~dssung O 3# I 1 O 2# 2*4 Decoder O 1# O 2# I 0 O 1# E# O 0# E# I 1 I 0 O 3# O 2# O 1# O 0# 0 0 0 1 1 1 0 1 0 1 1 1 1 X X 1 1 I 1 : A 15 2*4 Decoder I 0 : A 14 E# : 0
kuic. kyonggi. ac. kr/~dssung -> SRAM 4개 필요 : SRAM 사상 CPU address space 영역 1 : 0 -16 K : SRAM 1개 영역 2 : 16 K-32 K : SRAM 1개 영역 3 : 32 K-48 K : SRAM 1개 영역 4 : 48 K-64 K : SRAM 1개 -> 4 영역의 구분 : A 15, A 14를 이용하여 구분 A 15, A 14를 이용한 SRAM의 구분 : 2 X 4 디코더 이용 -> 2 X 4 디코더 입력 : A 15, A 14 출력 : SRAM의 CS#
kuic. kyonggi. ac. kr/~dssung -> CPU의 A 13 -A 0, D 7 -D 0 와 SRAM의 SA 13 -SA 0, SD 7 -SD 0 연결 방법 : 무수히 많다 그중 권장하는 방법 (A 13 <-> SA 13), . . . , (A 0 <-> SA 0) (D 7 <-> SD 7), . . . , (D 0 <-> SD 0) : 이 경우 CPU address space와 SRAM address space와의 관계는 ?
kuic. kyonggi. ac. kr/~dssung SA 13 -SA 0 Memory Map 0 x. FFFF A 15 A 14 A 13 -A 0 SD 7 -SD 0 16 KB RAM CS# O 3# 16 KB SA 13 -SA 0 16 KB SD 7 -SD 0 16 KB SA 13 -SA 0 O 2# CPU D 7 -D 0 SD 7 -SD 0 16 KB RAM CS# O 1# 16 KB 0 x 0000 SA 13 -SA 0 SD 7 -SD 0 16 KB RAM CS# O 0#
kuic. kyonggi. ac. kr/~dssung (d). 8 K byte SRAM (SA 12 - SA 0, SD 7 - SD 0) 을 이용 SA 12 -SA 0 Memory Map A 15 A 14 A 13 A 12 -A 0 8 KB RAM 7 8 KB RAM 6 8 KB RAM 5 0 x. FFFF SD 7 -SD 0 8 KB RAM 7 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 SD 7 -SD 0 CS 7# 8 KB RAM 6 CS 6# SD 7 -SD 0 8 KB RAM 4 CPU D 7 -D 0 8 KB RAM 3 8 KB RAM 2 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 5 CS 5# SD 7 -SD 0 8 KB RAM 1 CS 1# 8 KB RAM 1 8 KB RAM 0 0 x 0000 SA 12 -SA 0 SD 7 -SD 0 SA 12 -SA 0 8 KB RAM 4 CS 4# SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung -> SRAM 8개 필요 : SRAM 사상 CPU address space 영역 1 : 0 -8 K : SRAM 1개 영역 8 : 56 K-64 K : SRAM 1개 -> 8 영역의 구분 : A 15, A 14, A 13을 이용하여 구분 A 15, A 14, A 13을 이용한 SRAM의 구분 : 3 X 8 디코더 이용
kuic. kyonggi. ac. kr/~dssung CS 7# O 7# CS 6# O 6# I 1 : A 14 CS 5# O 5# I 0 : A 13 CS 4# O 4# CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# I 2 : A 15 3*8 Decoder E# : 0
kuic. kyonggi. ac. kr/~dssung (2). 8 bit CPU ( A 15 - A 0, D 7 - D 0 )에서 32 Kbyte Memory가 필요한 경우 0 x. FFFF A 15 -A 0 CPU D 7 -D 0 32 KB 0 x 0000
kuic. kyonggi. ac. kr/~dssung (a). 16 K byte SRAM (SA 13 - SA 0, SD 7 - SD 0) 을 이용, 하위 영역 사상 Memory Map 0 x. FFFF A 15 A 14 A 13 -A 0 16 KB SA 13 -SA 0 CPU D 7 -D 0 SD 7 -SD 0 16 KB RAM CS 1# SA 13 -SA 0 16 KB 0 x 0000 SD 7 -SD 0 16 KB RAM CS 0#
kuic. kyonggi. ac. kr/~dssung -> SRAM 2개 필요 : SRAM 사상 CPU address space 영역 1 : 0 -16 K : SRAM 1개 영역 2 : 16 K-32 K : SRAM 1개 영역 3 : 32 K-48 K : 영역 4 : 48 K-64 K : -> 4 영역의 구분 : A 15, A 14를 이용하여 구분 A 15, A 14를 이용한 SRAM의 구분 : 2 X 4 디코더 이용 O 3# O 2# CS 1# O 1# CS 0# O 0# I 1 : A 15 2*4 Decoder I 0 : A 14 E# : 0
kuic. kyonggi. ac. kr/~dssung (b). 8 K byte SRAM (SA 12 - SA 0, SD 7 - SD 0) 을 이용, 하위영역 사상 SA 12 -SA 0 Memory Map A 15 A 14 A 13 A 12 -A 0 8 KB 0 x. FFFF SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 8 KB SD 7 -SD 0 8 KB CPU D 7 -D 0 8 KB RAM 3 SA 12 -SA 0 8 KB RAM 2 SD 7 -SD 0 8 KB RAM 1 CS 1# 8 KB RAM 1 8 KB RAM 0 SA 12 -SA 0 0 x 0000 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung -> SRAM 4개 필요 : SRAM 사상 CPU address space 영역 1 : 0 -8 K : SRAM 1개 영역 8 : 56 K-64 K : -> 8 영역의 구분 : A 15, A 14, A 13을 이용하여 구분 A 15, A 14, A 13을 이용한 SRAM의 구분 : 3 X 8 디코더 이용
kuic. kyonggi. ac. kr/~dssung O 7# I 2 : A 15 O 6# I 1 : A 14 O 5# I 0 : A 13 O 4# CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# 3*8 Decoder E# : 0
kuic. kyonggi. ac. kr/~dssung SA 12 -SA 0 Memory Map 0 x. FFFF A 15 A 14 A 13 32 KB SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 A 12 -A 0 SD 7 -SD 0 CPU D 7 -D 0 8 KB RAM 3 SA 12 -SA 0 8 KB RAM 2 SD 7 -SD 0 8 KB RAM 1 CS 1# 8 KB RAM 1 8 KB RAM 0 SA 12 -SA 0 0 x 0000 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# I 1 : A 14 2*4 Decoder I 0 : A 13 E# : A 15
kuic. kyonggi. ac. kr/~dssung (3). 8 bit CPU ( A 15 - A 0, D 7 - D 0 )에서 32 Kbyte Memory가 필요한 경우 0 x. FFFF A 15 -A 0 32 KB CPU D 7 -D 0 0 x 0000
kuic. kyonggi. ac. kr/~dssung (a). 16 K byte SRAM (SA 13 - SA 0, SD 7 - SD 0) 을 이용, 상위 영역 사상 Memory Map 0 x. FFFF A 15 A 14 A 13 -A 0 SA 13 -SA 0 16 KB SD 7 -SD 0 16 KB CS 1# O 3* SA 13 -SA 0 CPU SD 7 -SD 0 D 7 -D 0 16 KB RAM CS 2# O 2* 16 KB O 3# 16 KB O 2# 0 x 0000 O 1# O 0# I 1 : A 15 2*4 Decoder I 0 : A 14 E# : 0
kuic. kyonggi. ac. kr/~dssung (b). 8 K byte SRAM (SA 12 - SA 0, SD 7 - SD 0) 을 이용, 상위영역 사상 SA 12 -SA 0 Memory Map 0 x. FFFF SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# O 7* 8 KB RAM 3 A 15 A 14 A 13 8 KB RAM 2 A 12 -A 0 8 KB RAM 1 SA 12 -SA 0 SD 7 -SD 0 O 6* 8 KB RAM 0 CPU D 7 -D 0 8 KB SA 12 -SA 0 8 KB SD 7 -SD 0 8 KB RAM 1 CS 1# O 5* 8 KB SA 12 -SA 0 0 x 0000 SD 7 -SD 0 8 KB RAM 0 CS 0# O 4*
kuic. kyonggi. ac. kr/~dssung O 7# I 2 : A 15 O 6# I 1 : A 14 O 5# I 0 : A 13 O 4# O 3# 3*8 Decoder O 2# O 1# E# : 0 O 0#
kuic. kyonggi. ac. kr/~dssung CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# I 1 : A 14 2*4 Decoder I 0 : A 13 E# A 15
kuic. kyonggi. ac. kr/~dssung (1). M, N, m , n의 이해 CPU의 data bus 폭이 2 N bit ex) 8 bit CPU : 16 bit CPU : 32 bit CPU : 64 bit CPU : N=3 N=4 N=5 N=6
kuic. kyonggi. ac. kr/~dssung CPU의 data bus 폭이 2 N bit 일 때 필요한 memory가 2 K = 2(M+N) bit 이다 CPU가 원하는 메모리 용량 = 2 K bit 2 M 2 N ex 1) 8 bit CPU 에서 32 Kbyte의 Memory필요 32 K X 8 bit => 2(15+3) bit : K = 18, N=3, M = 15 ex 2) 16 bit CPU 에서 64 Kbyte의 Memory필요 64 K X 8 bit => 2 (16+3) bit : K = 19, N=4, M = 15 ex 3) 32 bit CPU 에서 64 Mbyte의 Memory필요 64 M X 8 bit => 2(26+3) bit : K = 29, N=5, M=24
kuic. kyonggi. ac. kr/~dssung 2 k = 2(m+n) bit SRAM 메모리 소자 2 n : 메모리 소자의 데이터 버스 폭 ex) 주어진 메모리 소자의 데이터 버스 폭은 8 bit라 가정 64 KByte SRAM 2(16+3)bit : k=19, n=3, m=16 8 KByte SRAM 2(13+3)bit : k=16, n=3, m=13 1 MByte SRAM 2(20+3)bit : k=23, n=3, m=20 메모리 용량 2(m+n)bit 2 n 2 m
kuic. kyonggi. ac. kr/~dssung What is the m ? 2(m+n) bit SRAM m lines 2 n lines 64 KB = 2(16+3) bit SRAM 16 lines 64 KB SRAM A 15 -A 0 23 lines D 7 -D 0
kuic. kyonggi. ac. kr/~dssung 64 KB = 2(16+3) bit SRAM 16 lines 64 KB SRAM A 15 -A 0 23 lines D 7 -D 0 16 lines 16 X 216 Decoder 216 23 23 lines
kuic. kyonggi. ac. kr/~dssung 2(m+n) bit SRAM m lines 2 n lines m. X 2 m Decoder 2 m 2 n 2 n lines
kuic. kyonggi. ac. kr/~dssung ex 1) 8 bit CPU 에서 32 Kbyte의 Memory필요 32 K X 8 bit => 2(15+3) bit K=18, N=3, M=15 8 KByte 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
kuic. kyonggi. ac. kr/~dssung SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 215 CPU가 원하는 메모리 용량 = 32 KByte = 2(15+3)bit SD 7 -SD 0 SA 12 -SA 0 SD 7 -SD 0 단위 메모리 용량 = 8 KByte = 2(13+3)bit 단위모듈 CS 1# SA 12 -SA 0 SD 7 -SD 0 23 8 KB RAM 1 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung ex 2) 16 bit CPU 에서 64 Kbyte의 Memory필요 64 Kbyte => 2 (16+3) bit K=19, N=4, M=15 8 KByte SRAM을 이용할 경우 -> 2(13+3)bit k=16, n=3, m=13 단위, 모듈 내 필요한 SRAM의 수 : 2(4 -3) = 2 필요한 모듈의 수 : 2(15 -13) = 4
kuic. kyonggi. ac. kr/~dssung SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 7 SA 12 -SA 0 215 SD 7 -SD 0 CPU가 원하는 메모리 용량 = 64 KByte = 2(16+3)bit 8 KB RAM 5 단위 메모리 용량 = 8 KByte = 2(13+3)bit 24 SD 7 -SD 0 8 KB RAM 4 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 6 8 KB RAM 3 SD 7 -SD 0 8 KB RAM 2 단위모듈 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 1 SD 7 -SD 0 8 KB RAM 0
kuic. kyonggi. ac. kr/~dssung SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 7 SA 12 -SA 0 SD 7 -SD 0 CPU SD 7 -SD 0 8 KB RAM 6 8 KB RAM 5 SD 7 -SD 0 8 KB RAM 4 D 15 -D 8 D 7 -D 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 2 8 KB RAM 1 SD 7 -SD 0 8 KB RAM 0
kuic. kyonggi. ac. kr/~dssung ex 3) 32 bit CPU 에서 64 Mbyte의 Memory필요 64 MByte => 2(26+3) bit K=29, N=5, M=24 1 MByte SRAM을 이용할 경우 -> 2(20+3) bit k=23, n=3, m=20 단위, 모듈 내 필요한 SRAM의 수 : 2(5 -3) = 4 필요한 모듈의 수 : 2(24 -20) = 16
kuic. kyonggi. ac. kr/~dssung CPU가 원하는 메모리 용량 = 64 MByte = 2(26+3)bit 224 단위모듈 단위 메모리 용량 = 1 MByte = 2(20+3)bit 25
kuic. kyonggi. ac. kr/~dssung SD 7 -SD 0 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 63 1 MB RAM 3 SD 7 -SD 0 SA 19 -SA 0 SA 19 -SA 0 1 MB RAM 62 1 MB RAM 2 CS 15* SD 7 -SD 0 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 61 1 MB RAM 1 SD 7 -SD 0 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 60 1 MB RAM 0
kuic. kyonggi. ac. kr/~dssung SD 7 -SD 0 1 MB RAM 63 SD 7 -SD 0 SA 19 -SA 0 1 MB RAM 62 SD 7 -SD 0 1 MB RAM 61 SD 7 -SD 0 1 MB RAM 60 D 31 -D 24 D 23 -D 16 CPU D 15 -D 8 D 7 -D 0 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 3 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 2 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 1 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 0
kuic. kyonggi. ac. kr/~dssung 처음 N-3 line : 모듈 (2 N bit 정보단위) 내 section (8 bit정보 단위) 을 선택하기 위하여 CPU 내부에서 이미 사용 ex) 8 bit CPU : N = 3 16 bit CPU : N = 4 A 0 -> BE 1#, BE 0# 32 bit CPU : N = 5 A 1, A 0 -> BE 3#, BE 2#, BE 1#, BE 0# 64 bit CPU : N = 6 A 2, A 1, A 0 -> BE 7#, BE 6#, …, BE 0#
kuic. kyonggi. ac. kr/~dssung CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# I 1 : A 14 2*4 Decoder I 0 : A 13 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# E# : A 15 SA 12 -SA 0 A 15 A 14 A 13 A 12 -A 0 CPU SD 7 -SD 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 1 CS 1# D 7 -D 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung 0 x. FFFF = 0 b 1111 0 x. E 000 = 0 b 1110 0000 0 x. DFFF = 0 b 1101 1111 0 x. C 000 = 0 b 1100 0000 0 x. BFFF = 0 b 1011 1111 0 x. A 000 = 0 b 1010 0000 0 x 9 FFF = 0 b 1001 1111 0 x 8000 = 0 b 1000 0000 0 x 7 FFF = 0 b 0111 1111 RAM 3 0 x 6000 = 0 b 0110 0000 0 x 5 FFF = 0 b 0101 1111 RAM 2 0 x 4000 = 0 b 0100 0000 0 x 3 FFF = 0 b 0011 1111 RAM 1 0 x 2000 = 0 b 0010 0000 0 x 1 FFF = 0 b 0001 1111 RAM 0 0 x 0000 = 0 b 0000
kuic. kyonggi. ac. kr/~dssung CS 3# O 3# I 1 : A 14 (1) CS 2# O 2# 2*4 Decoder CS 1# O 1# I 0 : A 13 (0) E# : A 15 (0) CS 0# O 0# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 A 15 (0) A 14 (1) A 13 (0) A 12 -A 0 (0 0011 0010 0001) CPU SD 7 -SD 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 1 CS 1# D 7 -D 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung 만일, A 15를 사용하지 않으면 ? SA 12 -SA 0 CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# A 15 A 14 A 13 A 12 -A 0 CPU I 1 : A 14 2*4 Decoder I 0 : A 13 E# : 0 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 1 CS 1# D 7 -D 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung 0 x. FFFF = 0 b 1111 중복 사상 RAM 3 0 x. E 000 = 0 b 1110 0000 0 x. DFFF = 0 b 1101 1111 RAM 2 0 x. C 000 = 0 b 1100 0000 0 x. BFFF = 0 b 1011 1111 RAM 1 0 x. A 000 = 0 b 1010 0000 0 x 9 FFF = 0 b 1001 1111 RAM 0 0 x 8000 = 0 b 1000 0000 0 x 7 FFF = 0 b 0111 1111 RAM 3 0 x 6000 = 0 b 0110 0000 0 x 5 FFF = 0 b 0101 1111 RAM 2 0 x 4000 = 0 b 0100 0000 0 x 3 FFF = 0 b 0011 1111 RAM 1 0 x 2000 = 0 b 0010 0000 0 x 1 FFF = 0 b 0001 1111 RAM 0 0 x 0000 = 0 b 0000
kuic. kyonggi. ac. kr/~dssung 0 x 0000 번지 = 0 b 0000 CS 3# O 3# I 1 : A 14 (0) CS 2# O 2# 2*4 Decoder CS 1# O 1# I 0 : A 13 (0) E# : 0 CS 0# O 0# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 A 15 (0) A 14 (0) A 13 (0) A 12 -A 0 (0 0000) CPU SD 7 -SD 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 1 CS 1# D 7 -D 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung 0 x 8000 번지 = 0 b 1000 0000 CS 3# O 3# I 1 : A 14 (0) CS 2# O 2# 2*4 Decoder CS 1# O 1# I 0 : A 13 (0) E# : 0 CS 0# O 0# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 CS 3# 8 KB RAM 2 CS 2# SA 12 -SA 0 A 15 (1) A 14 (0) A 13 (0) A 12 -A 0 (0 0000) CPU SD 7 -SD 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 1 CS 1# D 7 -D 0 SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 0 CS 0#
kuic. kyonggi. ac. kr/~dssung 만일, A 15를 사용하지 않으면 ? 중복 사상 Memory Map 8 KB RAM 3 0 x. FFFF 8 KB RAM 2 ex) CPU의 0 x 0000 번지와 0 x 8000 번지는 동시에 RAM 0의 0번지에 사상된다. 8 KB RAM 1 8 KB RAM 0 0 x 8000 8 KB RAM 3 8 KB RAM 2 0 x 0000 = 0 b 0000 0 x 8000 = 0 b 1000 0000 8 KB RAM 1 8 KB RAM 0 CPU의 0 x 0000 번지와 0 x 8000 번지는 A 15를 제외하고 동일하다. 0 x 0000
kuic. kyonggi. ac. kr/~dssung 중복 사상 Memory Map 8 KB RAM 3 0 x. FFFF 8 KB RAM 3 8 KB RAM 2 8 KB RAM 1 8 KB RAM 0 0 x 8000 8 KB RAM 3 8 KB RAM 1 8 KB RAM 2 8 KB RAM 1 8 KB RAM 0 0 x 0000 8 KB RAM 0
kuic. kyonggi. ac. kr/~dssung O 3# CS 3# A 14 : I 1 A 13 : I 0 AS# M/IO# 30 E# 2*4 Decoder O 2# CS 2# O 1# CS 1# O 0# CS 3# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 3 OE# WE# A 15 SA 12 -SA 0 A 15 A 14 A 13 A 12 -A 0 CPU D 7 -D 0 AS# M/IO# SD 7 -SD 0 8 KB RAM 2 SD 7 -SD 0 OE# WE# CS 1# SA 12 -SA 0 8 KB RAM 1 OE# WE# CS 0# SA 12 -SA 0 SD 7 -SD 0 RD# <-> OE# WR# <-> WE# CS 2# 8 KB RAM 0 OE# WE#
kuic. kyonggi. ac. kr/~dssung A 19 -A 16 A 15 A 14 A 13 -A 1 O 3# O 2# CPU BE 1# BE 0# D 15 -D 8 D 7 -D 0 O 1# O 0# I 1 : A 15 2*4 Decoder I 0 : A 14 E# A 19 A 18 A 17 A 16
kuic. kyonggi. ac. kr/~dssung SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 7 CS# O 3# SD 7 -SD 0 8 KB RAM 5 CS# O 2# SD 7 -SD 0 8 KB RAM 3 CS# O 1# SD 7 -SD 0 8 KB RAM 4 CS# O 2# CS# O 1# CS# O 0# 8 KB RAM 2 SA 12 -SA 0 SD 7 -SD 0 O 3# SA 12 -SA 0 SD 7 -SD 0 CS# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 6 8 KB RAM 1 CS# O 0# SD 7 -SD 0 BE 1# 8 KB RAM 0 BE 0#
kuic. kyonggi. ac. kr/~dssung A 3 A 2 A 1 A 3 = 0 A 2 = 0 A 1 = 0 BE 1# = 0 BE 0# = 0 16 bit CPU data bus 8 bit 0 1 1 0 x 07 0 x 06 0 1 0 0 x 05 0 x 04 0 0 1 0 x 03 0 x 02 0 0 x 01 0 x 00 BE 1# BE 0#
kuic. kyonggi. ac. kr/~dssung 0 b 00001111 111 X RAM 7 RAM 6 RAM 5 RAM 4 RAM 3 RAM 2 RAM 1 RAM 0 0 b 00001100 0000 000 X 0 b 00001011 1111 111 X 0 b 00001000 0000 000 X 0 b 00000111 1111 111 X 0 b 00000100 0000 000 X 0 b 00000011 1111 111 X 0 b 0000 000 X
kuic. kyonggi. ac. kr/~dssung A 19 -A 16 A 15 (0) A 14 (0) A 13 -A 1 O 3# O 2# O 1# CPU BE 1# (0) BE 0# (1) D 15 -D 8 D 7 -D 0 O 0# I 1 : A 15 2*4 Decoder I 0 : A 14 E# A 19 A 18 A 17 A 16
kuic. kyonggi. ac. kr/~dssung SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 7 CS# O 3# SD 7 -SD 0 8 KB RAM 5 CS# O 2# SD 7 -SD 0 8 KB RAM 3 CS# O 1# SD 7 -SD 0 8 KB RAM 4 CS# O 2# CS# O 1# CS# O 0# 8 KB RAM 2 SA 12 -SA 0 SD 7 -SD 0 O 3# SA 12 -SA 0 SD 7 -SD 0 CS# SA 12 -SA 0 SD 7 -SD 0 8 KB RAM 6 8 KB RAM 1 CS# O 0# SD 7 -SD 0 BE 1# 8 KB RAM 0 BE 0#
kuic. kyonggi. ac. kr/~dssung A 31 -A 26 SA 19 -SA 0 A 25 A 24 A 23 A 22 SD 7 -SD 0 CS# 1 MB RAM 63 CS# SA 19 -SA 0 O 15# SD 7 -SD 0 1 MB RAM 60 O 15# A 21 -A 2 CPU BE 3# BE 2# BE 1# BE 0# D 31 -D 24 D 23 -D 16 D 15 -D 8 D 7 -D 0 SA 19 -SA 0 SD 7 -SD 0 1 MB RAM 3 SA 19 -SA 0 CS# O 0# SD 7 -SD 0 BE 3# 1 MB RAM 0 CS# O 0# BE 0#
kuic. kyonggi. ac. kr/~dssung CS 15# O 15# CS 14# O 14# CS 13# O 13# CS 12# O 12# I 3 : A 25 CS 11# O 11# I 2 : A 24 I 1 : A 23 CS 10# O 10# CS 9# O 9# CS 8# O 8# CS 7# O 7# CS 6# O 6# CS 5# O 5# CS 4# O 4# CS 3# O 3# CS 2# O 2# CS 1# O 1# CS 0# O 0# I 0 : A 22 4*16 Decoder E* A 31 -A 26
kuic. kyonggi. ac. kr/~dssung ex) CPU (- A 19, - D 7) 에서 768 Kbyte의 Memory필요 (하위 영역 사상) 512 Kbyte = 219 byte < 768 Kbyte < 1 Mbyte = 220 byte 1 Mbyte => 2(20+3) bit : K=23, N=3, M=20 256 KByte SRAM을 이용할 경우 -> 2(18+3) bit : n=3, m=18 단위 모듈 내 필요한 SRAM의 수 : 2(3 -3) = 1 필요한 모듈의 수 : 2(20 -18) = 4 A 17 -A 0 : 모듈 내 메모리 소자의 address line으로 사용 A 19 -A 18 : 4개의 모듈 중 하나를 선택하기 위하여 사용 A 19 : 0 A 18 : 0 -> RAM 0 A 19 : 0 A 18 : 1 -> RAM 1 A 19 : 1 A 18 : 0 -> RAM 2 A 19 : 1 A 18 : 1 -> (사용하지 않음)
kuic. kyonggi. ac. kr/~dssung SA 18 -SA 0 A 19 A 18 SD 7 -SD 0 A 17 -A 0 256 KB RAM CS# RAM 2# SA 18 -SA 0 CPU SD 7 -SD 0 D 7 -D 0 256 KB RAM CS# RAM 1# SA 18 -SA 0 SD 7 -SD 0 O 3# O 2# : RAM 2# O 1# : RAM 1# O 0# : RAM 0# I 1 : A 19 2*4 Decoder I 0 : A 18 E# : 0 256 KB RAM CS# RAM 0#
kuic. kyonggi. ac. kr/~dssung (2). 단위 메모리들의 크기가 틀린 경우 0 x. FFFFF 0 x. F 0000 ROM 1 (64 KB) -> 동일 메모리 군들로 각각 설계 뒤 결합 0 x. E 0000 ROM 0 (64 KB) -> ex 1) 768 Kbyte의 Memory필요 (하위 영역 사상) -> ex 2) 128 Kbyte의 Memory필요 (상위 영역 사상) 0 x. C 0000 RAM 2 (256 KB) 0 x 80000 RAM 1 (256 KB) 0 x 40000 RAM 0 (256 KB) 0 x 00000
kuic. kyonggi. ac. kr/~dssung ex 1) CPU (- A 19, - D 7) 에서 768 Kbyte의 Memory필요 (하위 영역 사상) 512 Kbyte = 219 byte < 768 Kbyte < 1 Mbyte = 220 byte 1 Mbyte => 2(20+3) bit : K=23, N=3, M=20 256 KByte SRAM을 이용할 경우 -> 2(18+3) bit : n=3, m=18 단위 모듈 내 필요한 SRAM의 수 : 2(3 -3) = 1 필요한 모듈의 수 : 2(20 -18) = 4 A 17 -A 0 : 모듈 내 메모리 소자의 address line으로 사용 A 19 -A 18 : 4개의 모듈 중 하나를 선택하기 위하여 사용 A 19 : 0 A 18 : 0 -> RAM 0 A 19 : 0 A 18 : 1 -> RAM 1 A 19 : 1 A 18 : 0 -> RAM 2 A 19 : 1 A 18 : 1 -> (사용하지 않음)
kuic. kyonggi. ac. kr/~dssung O 3# : ROM 1# O 2# : ROM 0# O 1# I 1 : A 17 2*4 Decoder I 0 : A 16 E# O 3# O 0# I 1 : A 19 O 2# : RAM 2# O 1# : RAM 1# O 0# : RAM 0# 2*4 Decoder I 0 : A 18 E# : 0
kuic. kyonggi. ac. kr/~dssung SA 15 -SA 0 SD 7 -SD 0 64 KB ROM CS# ROM 1# SA 15 -SA 0 SD 7 -SD 0 ROM 0# SA 18 -SA 0 A 19 A 18 A 17 A 16 CPU SD 7 -SD 0 256 KB RAM CS# RAM 2# SA 18 -SA 0 SD 7 -SD 0 256 KB RAM CS# RAM 1# A 15 -A 0 SA 18 -SA 0 D 7 -D 0 SD 7 -SD 0 256 KB RAM CS# RAM 0#
- Slides: 89