Kim Seon Deok

[논리회로] 7. 메모리 및 프로그래머블 논리 본문

논리회로

[논리회로] 7. 메모리 및 프로그래머블 논리

seondeok 2022. 10. 24. 22:12

 

 

 

 

 

7.1 메모리(Memory)

2진 정보를 저장하고 처리에 필요한 정보를 꺼내 오는 데 사용하는 장치

데이터를 처리하는 동안 정보는 메모리로부터 프로세싱 유닛(cpu) 안에 있는 선택된 레지스터로 이동한다.

프로세싱 유닛에서 얻어진 계산 결과는 다시 메모리로 이동되어 저장된다.

read : 출력장치로 보내질 정보를 메모리에서 가져옴

write : 입력장치에서 받아들인 2진정보를 메모리에 저장

 

메모리 유닛은  word라는 여러 개 비트의 그룹으로 구성된 2진 정보를 저장한다. 

메모리와 주변 장치들과의 통신은 data input/output line, address line, control line을 통해 이루어진다.

(Bus : 메모리와 주변장치를 연결하는 통로, line의 묶음)

 

 

메모리의 종류 

 

1. RAM(Random Access Memory) : read,write동작

2. ROM(Read Only Memory) : read동작만 가능

 

 

PLD(Programmable Logic Device) : 내부 논리게이트들이 퓨즈와 비슷한 동작을 하는 전기적인 패스로 연결된 집적회로이다. 프로그래밍을 통해 원하는 논리적인 기능을 수행하도록 하드웨어를 구조를 설정하고 나머지 필요없는 퓨즈를 제거할 수 있다.

Programmable = 2진정보를 하드웨어에 저장하는 작업. 하드웨어 조직이 내가 원하는 대로 변형되어 동작하도록 하는 것

1.PLA(Programming Logic Array)

2.PAL(Programming Array Logic)

3.FPGA(Field Programmable Gate Array)

4.ROM

 

 

 

 

 

 

7.2 RAM(Random Access Memory)

read, write동작이 가능함. 데이터를 쓰고 읽는 데 위치와 상관없이 걸리는 시간이 똑같기 때문에 Random Access Memory라고 한다.

 

READ, WRITE 동작

read = 메모리에서 끄집어 냄

write = 메모리에 집어넣음

 

메모리 유닛의 블록도

메모리 유닛은 data line, data input/output line, control line으로 구성된다.

 

1. n개의 데이터 입력 라인은 메모리에 저장될 정보를 제공하고, n개의 데이터 출력 라인은 메모리로부터 출력되는 정보를 제공한다.

2. k비트의 address line은 많은 2^k개의 워드 가운데 하나의 워드를 선택하는 데 사용된다.

k개의 address line을 가진경우, 0 ~ (2^k - 1)까지의 값을 가진다.

address line에 k비트 addressor를 입력함으로써 메모리 내부의 특정한 워드를 선택한다.

3. control line은 read, write를 컨트롤 한다.

 

1024 * 16 메모리

ex) 1024 * 16 memory일 때

1024개의 word로 구성되어 있고, 1개의 word는 10비트의 메모리 주소로 구성된다.(1024 = 2^10 이므로, 주소비트수 k는 10이다. 

1개의 word는 16비트의 크기를 갖는다.(용량이 16이므로 n = 16)

메모리 용량 = 공간 갯수(= 2 ^ 주소비트 수) * 공간 크기 = word 총 개수 * 1개의 word 크기 [단위 : bit]

1byte = 8bit

 

K = 2^10, M = 2^20, G = 2 ^30

ex) 워드 크기가 16비트고 1k의 워드를 저장하는 메모리 유닛의 메모리 용량 = 1024(=2^10) * 16 bit = 1k * 16bit = 2k byte

ex) 64k * 10 bit 메모리 = 2^16 * 10 bit  >> 주소비트 k = 16, 1개의 word 용량 = n = 10

 

 

<새로운 워드를 메모리에 전송하여 저장하는 절차>-write

1.address line에 원하는 워드의 2진 어드레스를 제공해 특정 어드레스 선택

2.data input line에 메모리에 저장하고자 하는 데이터 비트를 제공

3.write입력을 활성화

 

<저장된 워드를 메모리에서 꺼내는 절차>-read

1.address line에 원하는 워드의 2진 어드레스를 제공해 특정 어드레스 선택

2.read입력을 활성화

 

메모리칩의 컨트롤라인 표시

Enable Read/Write 동작
0 X 동작 없음
1 0 선택된 워드에 쓰기
1 1 선택된 워드로 부터 읽기

실제 메모리 장치는 Read와 Write단자가 동시에 1일 수가 없기 때문에 Enable단자와 Read/Write단자 2개로 구성된다. 

 

 

 

타이밍 파형

메모리 유닛의 동작은 CPU와 같은 외부 장치에 의해 제어된다. CPU는 자신의 클럭에 동기화되지만, 메모리는 내부 클럭을 가지고 있지 않다. 대신 메모리의 read, write동작은 제어 입력에 의해 동작시간이 결정된다.

 

액세스 타임 (access time) : 메모리에 저장된 정보를 read하는 데 필요한 시간

사이클 타임 (cycle time) : 메모리에 정보르 write하는 데 필요한 시간

액세스 타임과 사이클 타임은 메모리마다 다르다. 따라서 여러 개의 메모리와 연결된 CPU는 충분한 시간을 기다린 후에 read,write해야 한다.

CPU는 내부 클럭에 따라 실행하는 자신의 동작과 메모리의 쓰기/읽기 동작이 동기화되도록 메모리에 제어신호를 보내야 하기 때문에 (메모리의 액세스타임 or 사이클타임 =  CPU클럭주기의 배수)와 같아야 한다.

(CPU는 빠른데 메모리는 대체로 느리다. 메모리의 속도가 빠를수록 CPU처리속도가 올라간다.)

 

 

read, write타이밍 파형

ex) 클럭주기 = 20ns인 CPU가 액세스 타임,사이클 타임 < 50ns인 메모리와 통신할 때

필요한 클럭 사이클 = 2.5 or 3

 

(a) read cycle

1.T1이 상승할 때 메모리로부터 버스에 어드레스와 입력데이터를 제공

2.어드레스 라인이 안정화되면 enable신호와 제어신호를 활성화 시작하고 50ns를 유지

3.어드레스와 데이터 신호는 제어신호가 비활성화 된 이후에도 일정시간 유지되어야 한다

4.T3가 종료될 때 read동작 완료

 

(b) write cycle

1.CPU로부터 버스에 어드레스를 제공

2.enable과 제어신호를 high level로 유지

3. 50ns 이내에 메모리는 어드레스에 의해 선택된 워드를 출력 데이터 라인에 옮김

4.T3가 하강할 때 CPU는 내부 레지스터로 데이터 전송

 

 

메모리의 종류

  • 순차 액세스 메모리 : 정보가 즉시 액세스될 수 없고, 특정 시간이 지난 후 액세스 가능
  • 랜덤 액세스 메모리 : 워드 저장위치에 상관없이 액세스 타임이 동일

 

  • SRAM(Static RAM) : 전원이 공급되는 동안 정보 유지. DRAM에 비해 액세스 타임, 사이클 타임이 짧다. 가격이 비싸다. 래치들로 구성된다.
  • DRAM(Dynamic RAM) : MOS트랜지스터, 캐패시터만 있으면 되므로 구조가 간단하다. 대용량으로 만들기 쉽고 가격이 싸다. 전원을 공급해주어도 일정시간이 지나면 메모리가 지워진다.(캐패시터는 방전되는 성질이 있으므로),SRAM에 비해 느리다.

 

  • 휘발성(volatile) : 전원이 공급되지 않으면 지워지는 메모리
  • 비휘발성(non-volatile) : 자기디스크, ROM, 플래시메모리

 

 

 

7.3 메모리 디코딩 - RAM의 기능. RAM을 대용량으로 만들기 위한 기술

메모리 유닛에는 정보를 저장하는 소자뿐만 아니라 입력되는 주소에 의헤 지정되는 메모리 워드를 선택하는 디코딩회로가 필요하다.

 

Binary Cell

RAM을 구성하는 Binary cell의 기본 구조이다.

Binary Cell은 SR래치를 이용한 D래치 형태이고 read/write단자가 1이면 래치부터 출력단자 연결되어 래치에 저장된 1을 출력으로 내보내고, read/write단자가 0이면 입력단자가 래치에 연결되어 SR래치에 1을 저장한다.

4*4RAM

4비트 워드 4개를 저장하는 RAM이다. 이 때 BC 4*4개가 필요하다. 그리고 지정되는 메모리 주소를 선택하기 위해 2*4디코더가 필요하다. 디코더의 입력이 00일 때 word 0 에 해당하는 BC 4개만 작동하고 나머지 12개의 BC는 작동하지 않는다.

주소 00에 저장된 데이터는 or게이트를 통과해 출력으로 내려오고 시프트 레지스터를 타고 이동하여 다음 새로운 결과값을 받도록 한다.

 

동시 디코딩 

동시 디코딩의 경우 작은 디코더를 2개 사용하여 가격을 낮추고 공간도 적게 차지하도록 만드는 기법이다.

1k워드 메모리의 2차원 디코딩 구조

1024word를 사용하려면 1024개의 주소가 필요하고, 10*1024디코딩 회로가 필요하다.

이를 동시 디코딩기법을 사용하면 5*32 디코더 2개를 이용할 수 있다. x축 방향의 어드레스 라인과 y축 방향의 어드레스 라인의 교점으로 출력값을 얻어낸다.

 

어드레스 멀티플렉서

 

64k DRAM 어드레스 멀티플렉싱

SRAM은 6개의 MOS트랜지스터로 구성된다.

DRAM은 하나의 MOS트랜지스터와 하나의 커패시터로 구성된다. 따라서 SRAM보다 4배 정도 높은 밀도로 제작할 수 있고 비용은 3~4배 저렴하다. 

DRAM은 용량이 크기 때문에 어드레스 디코딩을 2차원 배열로 나열하고 다차원 배열을 사용하기도 한다.

 

 

 

7.4 해밍코드 : 에러 검출 및 수정

패리티 비트는 에러 유무만 판단가능하였고, 홀수 개의 오류는 검출할 수 없었다.

해밍코드를 이용할 경우 에러 검출 및 에러 위치 파악, 에러 수정 모두 가능하다.

 

 

 

 

7.5 ROM(Read Only Memory)

영구적인 2진 정보가 저장된 메모리 장치이다.

ROM의 블록도

k개의 입력과 n개의 출력으로 구성된 ROM이다. 입력은 메모리의 어드레스이고, 출력은 어드레스에 의해 선택된 위치에 저장된 워드의 데이터 비트들이다.

32*8 ROM 진리표
32*8 ROM

8비트 크기의 32워드로 구성된 ROM이다. 5개의 입력은 5*32디코더를 통해 32개의 출력으로 디코딩된다.

디코더의 출력이 어드레스가 되어 해당 어드레스에 저장된 8비트데이터들이 OR게이트에 연결된다.

2^k * n ROM은 k * 2^k 내부 디코더와 n개의 OR게이트로 구성된다.

 

 

 

 

ROM의 종류

ROM은 마스크 프로그래밍으로 프로그래밍 되어, 휴대폰 사용 시 기본 적으로 들어있는 어플 같은 것들을 저장하는 데 사용된다.

1.PROM(Programmable ROM) : 아무 데이터가 없는 비어있는 데이터로, 퓨즈를 이용해서 1번만 프로그래밍 가능하다. 

2.EPROM(Erasable PROM) : 지우고 쓸 수 있는 ROM이다. 단 자외선으로 초기화를 해야 하므로 속도가 느리다.

3.EEPROM(Electrically EPROM) : 전기적으로 초기화가 가능한 ROM이다. 바이트 단위로 읽고 쓰기가 가능하다.

4.Flash memory : 바이트 단위로 읽고 쓰기가 불가능하지만 속도가 빠르다. 메모리 셀 구조가 간단해 싸고 대용량으로 제작이 가능하다.

 

 

PLD

PROM, PAL, PLA

모두 2단 구조이다.

PAL(Programming Array Logic) : 가격이 싸고 구조가 간단하다. 대량생산 가능하다

PLA(Programming Logic Array) : 모든 단자가 프로그래머블하기 때문에 자유도가 가장 높다. 구조가 복잡하고 비싸다.

 

 

 

Comments