제
This presentation is the property of its rightful owner.
Sponsored Links
1 / 89

제 4 장 PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on
  • Presentation posted in: General

제 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4

제 4 장

Interface between

CPU and Memory (SRAM)


4

4.1 첫 번째 방법

(1). 8bit CPU ( A15 - A0, D7 - D0 )에서 64Kbyte Memory가 필요한 경우

0xFFFF

Address

Space

of CPU

64KByte

CPU

A15-A0

D7-D0

0x0000


4

(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와의 관계는 ?


4

Memory Map

0xFFFF

CPU

A15-A0

64KB

RAM

SA15-SA0

CS# : 0

SD7-SD0

D7-D0

0x0000


4

(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


4

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


4

-> SRAM 2개 필요

: SRAM 사상

CPU address space

영역 1 : 0-32K : SRAM 1개

영역 2 : 32K-64K : SRAM 1개

-> 두 영역의 구분 : A15를 이용하여 구분

A15를 이용한 SRAM의 구분 : 1X2 디코더 이용

-> 1X2 디코더 입력 : A15

출력 : SRAM의 CS#


4

-> CPU의 A14-A0, D7-D0 와

SRAM의 SA14-SA0, SD7-SD0 연결 방법

: 무수히 많다

그중 권장하는 방법

(A14 <-> SA14), ......, (A0 <-> SA0)

(D7 <-> SD7), ....., (D0 <-> SD0)

: 이 경우 CPU address space와 SRAM address space와의 관계는 ?


4

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


4

(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


4

2*4

Decoder

2*4

Decoder

O3#

O3#

I1 : A15

I1

O2#

O2#

I0 : A14

I0

O1#

O1#

E# : 0

E#

O0#

O0#


4

-> 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#


4

-> CPU의 A13-A0, D7-D0 와

SRAM의 SA13-SA0, SD7-SD0 연결 방법

: 무수히 많다

그중 권장하는 방법

(A13 <-> SA13), ......, (A0 <-> SA0)

(D7 <-> SD7), ....., (D0 <-> SD0)

: 이 경우 CPU address space와

SRAM address space와의 관계는 ?


4

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


4

(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


4

-> 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 디코더 이용


4

-> 3X8 디코더 입력 : A15, A14, A13

출력 : SRAM의 CS#

-> CPU의 A12-A0, D7-D0 와

SRAM의 SA12-SA0, SD7-SD0 연결 방법

: 무수히 많다

그중 권장하는 방법

(A12 <-> SA12), ......, (A0 <-> SA0)

(D7 <-> SD7), ....., (D0 <-> SD0)


4

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#


4

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

0xFFFF

CPU

A15-A0

D7-D0

32KB

0x0000


4

(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


4

-> 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#


4

-> 2X4 디코더 입력 : A15, A14

출력 : 두 개의 SRAM의 CS#

-> CPU의 A13-A0, D7-D0 와

SRAM의 SA13-SA0, SD7-SD0 연결 방법

: 무수히 많다

그중 권장하는 방법

(A13 <-> SA13), ......, (A0 <-> SA0)

(D7 <-> SD7), ....., (D0 <-> SD0)


4

(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


4

-> SRAM 4개 필요 : SRAM 사상

CPU address space

영역 1 : 0-8K : SRAM 1개

.

.

영역 8 : 56K-64K :

-> 8 영역의 구분 : A15, A14, A13을 이용하여 구분

A15, A14, A13을 이용한 SRAM의 구분 :

3X8 디코더 이용


4

3*8

Decoder

O7#

I2 : A15

O6#

I1 : A14

I0 : A13

O5#

O4#

O3#

CS3#

O2#

CS2#

O1#

CS1#

E# : 0

O0#

CS0#


4

-> 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)


4

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


4

2*4

Decoder

CS3#

O3#

I1 : A14

CS2#

O2#

I0 : A13

CS1#

O1#

E# : A15

CS0#

O0#


4

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

0xFFFF

CPU

A15-A0

32KB

D7-D0

0x0000


4

(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#


4

(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


4

3*8

Decoder

O7#

I2 : A15

O6#

I1 : A14

I0 : A13

O5#

O4#

O3#

O2#

O1#

E# : 0

O0#


4

2*4

Decoder

CS3#

O3#

I1 : A14

CS2#

O2#

I0 : A13

CS1#

O1#

E#

A15

CS0#

O0#


4

4.2 두 번째 방법

CPU의 data bus 폭이 2N bit 일 때

필요한 memory가 2K = 2(M+N) bit 이다

-> 이때, 2(m+n) bit SRAM 메모리 소자를

이용하여 설계하라 ?


4

(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


4

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


4

메모리 용량

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


4

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


4

64KB = 2(16+3) bit SRAM

64KB SRAM

A15-A0

D7-D0

16 lines

16X216

Decoder

16 lines

216

23 lines

23

23 lines


4

2(m+n) bit SRAM

m lines

mX2m

Decoder

m lines

2m

2n lines

2n

2n lines


4

(2). 설계 순서

(a). 메모리 소자들의 배치 및

CPU의 데이터 버스와 메모리의 데이터 버스를 연결

- CPU의 데이터 버스 폭을 만족하기 위한

단위 메모리 소자의 수 = 단위모듈

- 원하는 메모리 용량을 구성하기 위한

단위 모듈의 수

- 메모리 소자들의 배치 및 데이터 버스 연결

(b). CPU의 어드레스 버스와 메모리의 어드레스 버스를 연결


4

(a). 메모리 소자들의 배치 및CPU의 데이터 버스와

메모리의 데이터 버스를 연결

CPU가 원하는 메모리 용량 = 벽

2M

단위 메모리

용량 = 벽돌

단위모듈

2m

2n

2N

단위모듈 -> CPU의 데이터 폭을 만족하기 위한 단위 메모리들의 집합


4

단위 모듈을 구성하기 위한 메모리 소자의 수 :

2N/2n = 2(N-n)

CPU가 원하는 메모리 용량

단위 메모리

용량

단위모듈

2n

2N


4

원하는 메모리 용량을 구성하기 위한

단위 모듈의 수 : 2M/2m = 2(M-m)

CPU가 원하는 메모리 용량

2M

단위모듈

2m


4

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


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


4

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


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


4

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


4

ex3) 32bit CPU 에서 64Mbyte의 Memory필요

64MByte => 2(26+3) bit

K=29, N=5, M=24

1MByte SRAM을 이용할 경우 -> 2(20+3) bit

k=23, n=3, m=20

단위, 모듈 내 필요한 SRAM의 수 : 2(5-3) = 4

필요한 모듈의 수 : 2(24-20) = 16


4

CPU가 원하는 메모리 용량

= 64MByte = 2(26+3)bit

224

단위모듈

단위 메모리 용량

= 1MByte = 2(20+3)bit

25


4

SA19-SA0

SA19-SA0

SA19-SA0

1MB

RAM

60

SA19-SA0

1MB

RAM

61

1MB

RAM

62

1MB

RAM

63

CS15*

SD7-SD0

SD7-SD0

SD7-SD0

SD7-SD0

SA19-SA0

SA19-SA0

1MB

RAM

0

SA19-SA0

1MB

RAM

1

SA19-SA0

1MB

RAM

2

1MB

RAM

3

SD7-SD0

SD7-SD0

SD7-SD0

SD7-SD0


4

CPU

SA19-SA0

SA19-SA0

SA19-SA0

1MB

RAM

60

SA19-SA0

1MB

RAM

61

1MB

RAM

62

1MB

RAM

63

SD7-SD0

SD7-SD0

SD7-SD0

SD7-SD0

D31-D24

D23-D16

D15-D8

D7-D0

SA19-SA0

SA19-SA0

1MB

RAM

0

SA19-SA0

1MB

RAM

1

SA19-SA0

1MB

RAM

2

1MB

RAM

3

SD7-SD0

SD7-SD0

SD7-SD0

SD7-SD0


4

(b). CPU의 어드레스 버스와

메모리의 어드레스 버스를 연결

A0부터 시작하여

처음 N-3 line : 모듈 내 section or bank를 선택하기 위하여 사용

다음 m line : 모듈 내 소자의 address line으로 이용

다음 M-m line : 특정 모듈의 선택을 위하여 이용

나머지 line : 설계된 메모리 모듈을

CPU의 address map에 유일하게 사상하기 위하여 이용


4

처음 N-3 line : 모듈 (2N bit 정보단위) 내

section (8 bit정보 단위) 을 선택하기 위하여

CPU 내부에서 이미 사용

ex)

8bit CPU : N = 3

16bit CPU : N = 4

A0 -> BE1#, BE0#

32bit CPU : N = 5

A1, A0 -> BE3#, BE2#, BE1#, BE0#

64bit CPU : N = 6

A2, A1, A0 -> BE7#, BE6#, …, BE0#


4

ex1) CPU (- A15, - D7) 에서 32Kbyte의 Memory필요

(하위 영역 사상)

32KByte => 2(15+3) bit : K=18, N=3, M=15

8KByte SRAM을 이용할 경우 -> 2(13+3) bit : k=16, n=3, m=13

단위 모듈 내 필요한 SRAM의 수 : 2(3-3) = 1

필요한 모듈의 수 : 2(15-13) = 4

m lines ->

A12-A0 : 모듈 내 메모리 소자의 address line으로 사용

M-m lines ->

A14-A13 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A15 : 설계된 메모리 모듈을

CPU의 address map에 유일하게 사상하기 위하여 이용


4

2*4

Decoder

CS3#

O3#

SA12-SA0

8KB

RAM3

I1 : A14

CS3#

CS2#

O2#

I0 : A13

SD7-SD0

CS1#

O1#

E# : A15

CS0#

O0#

SA12-SA0

8KB

RAM2

CS2#

CPU

A15

SD7-SD0

A14

A13

A12-A0

SA12-SA0

8KB

RAM1

CS1#

SD7-SD0

D7-D0

SA12-SA0

8KB

RAM0

CS0#

SD7-SD0


4

0xFFFF = 0b 1111 1111 1111 1111

0xE000 = 0b 1110 0000 0000 0000

0xDFFF = 0b 1101 1111 1111 1111

0xC000 = 0b 1100 0000 0000 0000

0xBFFF = 0b 1011 1111 1111 1111

0xA000 = 0b 1010 0000 0000 0000

0x9FFF = 0b 1001 1111 1111 1111

0x8000 = 0b 1000 0000 0000 0000

0x7FFF = 0b 0111 1111 1111 1111

RAM 3

0x6000 = 0b 0110 0000 0000 0000

0x5FFF = 0b 0101 1111 1111 1111

RAM 2

0x4000 = 0b 0100 0000 0000 0000

0x3FFF = 0b 0011 1111 1111 1111

RAM 1

0x2000 = 0b 0010 0000 0000 0000

0x1FFF = 0b 0001 1111 1111 1111

RAM 0

0x0000 = 0b 0000 0000 0000 0000


4

ex) 설계된 회로도에서 CPU의 입장에서

0x4321번지의 위치에 해당되는 메모리 소자를 표시하고

그 메모리 소자의 입장에서는 몇 번지에 해당되는가 ?

sol)

0x4321 = 0100 0011 0010 0001

A15 : 0, A14 : 1, A13 : 0

RAM2가 선택

RAM2로 입력되는 주소는

0 0011 0010 0001 = 0x0321번지


4

2*4

Decoder

CS3#

O3#

I1 : A14 (1)

CS2#

O2#

I0 : A13 (0)

SA12-SA0

8KB

RAM3

CS1#

O1#

CS3#

E# : A15 (0)

SD7-SD0

CS0#

O0#

SA12-SA0

8KB

RAM2

CS2#

CPU

A15 (0)

SD7-SD0

A14 (1)

A13 (0)

A12-A0 (0 0011 0010 0001)

SA12-SA0

8KB

RAM1

CS1#

SD7-SD0

D7-D0

SA12-SA0

8KB

RAM0

CS0#

SD7-SD0


4

만일, A15를 사용하지 않으면 ?

SA12-SA0

8KB

RAM3

2*4

Decoder

CS3#

O3#

CS3#

I1 : A14

SD7-SD0

CS2#

O2#

I0 : A13

CS1#

O1#

E# : 0

SA12-SA0

CS0#

O0#

8KB

RAM2

CS2#

CPU

A15

SD7-SD0

A14

A13

A12-A0

SA12-SA0

8KB

RAM1

CS1#

SD7-SD0

D7-D0

SA12-SA0

8KB

RAM0

CS0#

SD7-SD0


4

0xFFFF = 0b 1111 1111 1111 1111

RAM 3

중복 사상

0xE000 = 0b 1110 0000 0000 0000

0xDFFF = 0b 1101 1111 1111 1111

RAM 2

0xC000 = 0b 1100 0000 0000 0000

0xBFFF = 0b 1011 1111 1111 1111

RAM 1

0xA000 = 0b 1010 0000 0000 0000

0x9FFF = 0b 1001 1111 1111 1111

RAM 0

0x8000 = 0b 1000 0000 0000 0000

0x7FFF = 0b 0111 1111 1111 1111

RAM 3

0x6000 = 0b 0110 0000 0000 0000

0x5FFF = 0b 0101 1111 1111 1111

RAM 2

0x4000 = 0b 0100 0000 0000 0000

0x3FFF = 0b 0011 1111 1111 1111

RAM 1

0x2000 = 0b 0010 0000 0000 0000

0x1FFF = 0b 0001 1111 1111 1111

RAM 0

0x0000 = 0b 0000 0000 0000 0000


4

0x0000 번지 = 0b 0000 0000 0000 0000

2*4

Decoder

CS3#

O3#

I1 : A14 (0)

CS2#

O2#

I0 : A13 (0)

SA12-SA0

8KB

RAM3

CS1#

O1#

CS3#

E# : 0

SD7-SD0

CS0#

O0#

SA12-SA0

8KB

RAM2

CS2#

CPU

A15 (0)

SD7-SD0

A14 (0)

A13 (0)

A12-A0 (0 0000 0000 0000)

SA12-SA0

8KB

RAM1

CS1#

SD7-SD0

D7-D0

SA12-SA0

8KB

RAM0

CS0#

SD7-SD0


4

0x8000 번지 = 0b 1000 0000 0000 0000

2*4

Decoder

CS3#

O3#

I1 : A14 (0)

CS2#

O2#

I0 : A13 (0)

SA12-SA0

8KB

RAM3

CS1#

O1#

CS3#

E# : 0

SD7-SD0

CS0#

O0#

SA12-SA0

8KB

RAM2

CS2#

CPU

A15 (1)

SD7-SD0

A14 (0)

A13 (0)

A12-A0 (0 0000 0000 0000)

SA12-SA0

8KB

RAM1

CS1#

SD7-SD0

D7-D0

SA12-SA0

8KB

RAM0

CS0#

SD7-SD0


4

만일, A15를 사용하지 않으면 ?

중복 사상

Memory Map

0xFFFF

8KB RAM3

8KB RAM2

ex)CPU의 0x0000 번지와 0x8000 번지는

동시에 RAM0의 0번지에 사상된다.

8KB RAM1

8KB RAM0

0x8000

CPU의 0x0000 번지와 0x8000 번지는

A15를 제외하고 동일하다.

0x0000 = 0b 0000 0000 0000 0000

0x8000 = 0b 1000 0000 0000 0000

8KB RAM3

8KB RAM2

8KB RAM1

8KB RAM0

0x0000


4

중복 사상

8KB

RAM3

Memory Map

0xFFFF

8KB RAM3

8KB RAM2

8KB

RAM2

8KB RAM1

8KB RAM0

0x8000

8KB RAM3

8KB

RAM1

8KB RAM2

8KB RAM1

8KB RAM0

8KB

RAM0

0x0000


4

2*4

Decoder

CS3#

A14 : I1

O3#

A13 : I0

CS2#

O2#

CS3#

SA12-SA0

8KB

RAM3

AS#

CS1#

O1#

OE#

E#

30

SD7-SD0

M/IO#

CS0#

O0#

WE#

A15

SA12-SA0

CS2#

8KB

RAM2

CPU

OE#

A15

SD7-SD0

A14

WE#

A13

A12-A0

CS1#

SA12-SA0

8KB

RAM1

OE#

D7-D0

SD7-SD0

WE#

CS0#

SA12-SA0

8KB

RAM0

AS#

M/IO#

OE#

SD7-SD0

WE#

RD# <-> OE#

WR# <-> WE#


4

ex2) CPU (- A19, - D15) 에서 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

A0 : 모듈 내 section의 선택을 위하여 사용

A13-A1 : 모듈 내 메모리 소자의 address line으로 사용

A15-A14 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A19-A16 : 설계된 메모리 모듈을

CPU의 address map에 유일하게 사상하기 위하여 이용


4

CPU

A19-A16

A15

A14

2*4

Decoder

A13-A1

O3#

I1 : A15

O2#

I0 : A14

A19

O1#

BE1#

E#

A18

BE0#

O0#

A17

A16

D15-D8

D7-D0


4

SA12-SA0

SA12-SA0

8KB

RAM6

8KB

RAM7

O3#

CS#

O3#

CS#

SD7-SD0

SD7-SD0

SA12-SA0

SA12-SA0

8KB

RAM4

8KB

RAM5

CS#

O2#

CS#

O2#

SD7-SD0

SD7-SD0

SA12-SA0

SA12-SA0

8KB

RAM2

8KB

RAM3

O1#

CS#

CS#

O1#

SD7-SD0

SD7-SD0

SA12-SA0

SA12-SA0

8KB

RAM0

8KB

RAM1

O0#

CS#

O0#

CS#

SD7-SD0

SD7-SD0

BE0#

BE1#


4

A3 A2 A1

16bit

CPU

A3 = 0

A2 = 0

A1 = 0

BE1# = 0

BE0# = 0

0 1 1

0x06

0x07

data bus

0 1 0

0x04

0x05

8bit

0 0 1

0x02

0x03

0 0 0

0x00

0x01

8bit

BE0#

BE1#


4

0b 00001111 1111 1111 111X

RAM 7

RAM 6

0b 00001100 0000 0000 000X

RAM 5

RAM 4

0b 00001011 1111 1111 111X

0b 00001000 0000 0000 000X

RAM 3

RAM 2

0b 00000111 1111 1111 111X

0b 00000100 0000 0000 000X

RAM 1

RAM 0

0b 00000011 1111 1111 111X

0b 00000000 0000 0000 000X


4

ex) 설계된 회로도에서 CPU의 입장에서

0x02345번지의 위치에 해당되는 메모리 소자를 표시하고

그 메모리 소자의 입장에서는 몇 번지에 해당되는가 ?

sol)

0x02345 = 00000010 0011 0100 0101

A15 : 0, A14 : 0,

A0 : 1 -> BE1# = 0, BE0# = 1

RAM1이 선택

RAM1 로 입력되는 주소는

10 0011 0100 010 = 1 0001 1010 0010 = 0x11A2번지


4

CPU

A19-A16

A15 (0)

2*4

Decoder

A14 (0)

O3#

I1 : A15

A13-A1

O2#

I0 : A14

A19

O1#

E#

A18

BE1# (0)

O0#

A17

BE0# (1)

A16

D15-D8

D7-D0


4

SA12-SA0

SA12-SA0

8KB

RAM6

8KB

RAM7

O3#

CS#

O3#

CS#

SD7-SD0

SD7-SD0

SA12-SA0

SA12-SA0

8KB

RAM4

8KB

RAM5

CS#

O2#

CS#

O2#

SD7-SD0

SD7-SD0

SA12-SA0

SA12-SA0

8KB

RAM2

8KB

RAM3

O1#

CS#

CS#

O1#

SD7-SD0

SD7-SD0

SA12-SA0

SA12-SA0

8KB

RAM0

8KB

RAM1

O0#

CS#

O0#

CS#

SD7-SD0

SD7-SD0

BE0#

BE1#


4

ex3) CPU (- A31, - D31) 에서 64Mbyte의 Memory필요

(하위 영역 사상)

64Mbyte => 2(26+3) bit : K=29, N=5, M=24

1MByte SRAM을 이용할 경우 -> 2(20+3) bit : k=23, n=3, m=20

단위 모듈 내 필요한 SRAM의 수 : 2(5-3) = 4

필요한 모듈의 수 : 2(24-20) = 16

A1, A0 : 모듈 내 section의 선택을 위하여 사용

A21-A2 : 모듈 내 메모리 소자의 address line으로 사용

A25-A22 : 16개의 모듈 중 하나를 선택하기 위하여 사용

A31-A26 : 설계된 메모리 모듈을

CPU의 address map에 유일하게 사상하기 위하여 이용


4

A31-A26

CPU

CS#

SA19-SA0

CS#

SA19-SA0

1MB

RAM

63

1MB

RAM

60

O15#

O15#

A25

SD7-SD0

SD7-SD0

A24

A23

A22

A21-A2

BE3#

BE2#

BE1#

BE0#

D31-D24

D23-D16

SA19-SA0

SA19-SA0

CS#

1MB

RAM

3

1MB

RAM

0

CS#

O0#

O0#

D15-D8

SD7-SD0

SD7-SD0

D7-D0

BE3#

BE0#


4

4*16

Decoder

CS15#

O15#

CS14#

O14#

CS13#

O13#

CS12#

O12#

I3 : A25

I2 : A24

O11#

CS11#

I1 : A23

O10#

CS10#

I0 : A22

O9#

CS9#

O8#

CS8#

CS7#

O7#

E*

CS6#

O6#

A31-A26

O5#

CS5#

O4#

CS4#

O3#

CS3#

O2#

CS2#

O1#

CS1#

O0#

CS0#


4

4.3 조건이 일반적이지 않은 경우 공식에 의한 인터페이스 설계

(1). 필요한 메모리들의 Byte의 2의 배수가 되지 않는 경우

-> 크기가 크고 가장 가까운 2의 배수를 필요 메모리로 가정하고 설계

ex) CPU (- A19, - D7) 에서 768Kbyte의 Memory필요

(하위 영역 사상)

Memory Map

0xFFFFF

256KB

256KB

256KB

0x00000


4

ex) CPU (- A19, - D7) 에서 768Kbyte의 Memory필요

(하위 영역 사상)

512Kbyte = 219byte < 768Kbyte < 1Mbyte = 220byte

1Mbyte => 2(20+3) bit : K=23, N=3, M=20

256KByte SRAM을 이용할 경우 -> 2(18+3) bit : n=3, m=18

단위 모듈 내 필요한 SRAM의 수 : 2(3-3) = 1

필요한 모듈의 수 : 2(20-18) = 4

A17-A0 : 모듈 내 메모리 소자의 address line으로 사용

A19-A18 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A19 : 0 A18 : 0 -> RAM0

A19 : 0 A18 : 1 -> RAM1

A19 : 1 A18 : 0 -> RAM2

A19 : 1 A18 : 1 -> (사용하지 않음)


4

SA18-SA0

256KB

RAM

CPU

A19

CS#

RAM2#

A18

SD7-SD0

A17-A0

SA18-SA0

256KB

RAM

CS#

RAM1#

SD7-SD0

D7-D0

SA18-SA0

256KB

RAM

CS#

RAM0#

SD7-SD0

2*4

Decoder

O3#

I1 : A19

O2# : RAM2#

I0 : A18

O1# : RAM1#

E# : 0

O0# : RAM0#


4

0xFFFFF

(2). 단위 메모리들의 크기가 틀린 경우

-> 동일 메모리 군들로 각각 설계 뒤

결합

-> ex1) 768Kbyte의 Memory필요

(하위 영역 사상)

-> ex2) 128Kbyte의 Memory필요

(상위 영역 사상)

ROM1 (64KB)

0xF0000

ROM0 (64KB)

0xE0000

0xC0000

RAM2 (256KB)

0x80000

RAM1 (256KB)

0x40000

RAM0 (256KB)

0x00000


4

ex1) CPU (- A19, - D7) 에서 768Kbyte의 Memory필요

(하위 영역 사상)

512Kbyte = 219byte < 768Kbyte < 1Mbyte = 220byte

1Mbyte => 2(20+3) bit : K=23, N=3, M=20

256KByte SRAM을 이용할 경우 -> 2(18+3) bit : n=3, m=18

단위 모듈 내 필요한 SRAM의 수 : 2(3-3) = 1

필요한 모듈의 수 : 2(20-18) = 4

A17-A0 : 모듈 내 메모리 소자의 address line으로 사용

A19-A18 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A19 : 0 A18 : 0 -> RAM0

A19 : 0 A18 : 1 -> RAM1

A19 : 1 A18 : 0 -> RAM2

A19 : 1 A18 : 1 -> (사용하지 않음)


4

ex2) CPU (- A19, - D7) 에서 128Kbyte의 Memory필요

(상위 영역 사상)

128Kbyte => 2(17+3) bit : K=20, N=3, M=17

64KByte ROM을 이용할 경우 -> 2(16+3) bit : n=3, m=16

단위 모듈 내 필요한 ROM의 수 : 2(3-3) = 1

필요한 모듈의 수 : 2(17-16) = 2

A15-A0 : 모듈 내 메모리 소자의 address line으로 사용

A16 : 2개의 모듈 중 하나를 선택하기 위하여 사용

A19-A17 : 설계된 메모리 모듈을

CPU의 address map에 유일하게 사상하기 위하여 이용

(A19:1, A18:1, A17:1)


4

ex2) CPU (- A19, - D7) 에서 128Kbyte의 Memory필요

(상위 영역 사상)

128Kbyte => 2(17+3) bit : K=20, N=3, M=17

64KByte ROM을 이용할 경우 -> 2(16+3) bit : n=3, m=16

단위 모듈 내 필요한 ROM의 수 : 2(3-3) = 1

필요한 모듈의 수 : 2(17-16) = 2

A15-A0 : 모듈 내 메모리 소자의 address line으로 사용

A17, A16 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A17:0, A16:0 -> (사용하지 않음)

A17:0, A16:1 -> (사용하지 않음)

A17:1, A16:0 -> ROM0

A17:1, A16:1 -> ROM1

A19-A18 : 설계된 메모리 모듈을

CPU의 address map에 유일하게 사상하기 위하여 이용

(A19:1, A18:1)


4

(ex1 과 ex2의 결합)

A17-A0 : 모듈 내 메모리 소자 (RAM0, RAM1, RAM2)

의 address line으로 사용

A15-A0 : 모듈 내 메모리 소자 (ROM0, ROM1)

의 address line으로 사용

A17, A16 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A17:0, A16:0 -> (사용하지 않음)

A17:0, A16:1 -> (사용하지 않음)

A17:1, A16:0 -> ROM0

A17:1, A16:1 -> ROM1

A19-A18 : 4개의 모듈 중 하나를 선택하기 위하여 사용

A19 : 0 A18 : 0 -> RAM0

A19 : 0 A18 : 1 -> RAM1

A19 : 1 A18 : 0 -> RAM2

A19 : 1 A18 : 1 -> ROM0와 ROM1을 위한

2X4 decoder를 선택하기 위하여 사용


4

2*4

Decoder

O3# : ROM1#

I1 : A17

O2# : ROM0#

I0 : A16

O1#

O3#

E#

2*4

Decoder

O0#

I1 : A19

O2# : RAM2#

I0 : A18

O1# : RAM1#

E# : 0

O0# : RAM0#


4

SA15-SA0

64KB

ROM

CS#

ROM1#

SD7-SD0

SA15-SA0

64KB

ROM

CS#

ROM0#

SD7-SD0

SA18-SA0

256KB

RAM

CS#

RAM2#

CPU

A19

SD7-SD0

A18

A17

A16

SA18-SA0

256KB

RAM

CS#

RAM1#

SD7-SD0

A15-A0

SA18-SA0

256KB

RAM

D7-D0

CS#

RAM0#

SD7-SD0


  • Login