RAM (랜덤 액세스 메모리)
개요
- 목적: RAM(랜덤 액세스 메모리)은 동일한 접근 시간으로 모든 메모리 위치에서 데이터를 읽거나 쓸 수 있는 휘발성 디지털 저장 부품입니다. 디지털 시스템에서 활발하게 사용되는 데이터와 명령어를 임시로 저장합니다.
- 기호: RAM은 주소 입력, 데이터 입력, 제어 신호(CS, WE, CLK, OE)와 오른쪽에 데이터 출력이 있는 직사각형 블록으로 표현됩니다.
- DigiSim.io 역할: 디지털 시스템 설계에 필수적인 메모리 기능을 제공하여, 시뮬레이션된 회로에서 데이터 저장, 룩업 테이블, 임시 변수를 가능하게 합니다.

기능 설명
논리 동작
RAM은 지정된 메모리 주소에서 데이터를 저장하고 검색합니다. 그 동작은 주소 입력, 데이터 라인, 제어 신호에 의해 제어됩니다.
동작 모드:
- 읽기 연산: CS=1, WE=0, OE=1일 때, 지정된 주소에 저장된 데이터가 출력 핀에 나타납니다 (조합적).
- 쓰기 연산: CS=1이고 WE=1일 때 CLK의 상승 에지에서, 데이터 입력 핀에 있는 데이터가 지정된 주소에 저장됩니다 (동기/클럭 쓰기).
- 비활성 상태: CS=0이면 출력 핀은 하이 임피던스 상태이며 연산이 발생하지 않습니다.
제어 신호 진리표:
| CS | WE | CLK | OE | 동작 |
|---|---|---|---|---|
| 0 | X | X | X | 비활성 (출력 high-Z) |
| 1 | 0 | X | 0 | 비활성 출력 (high-Z) |
| 1 | 0 | X | 1 | 읽기 연산 (조합적) |
| 1 | 1 | ↑ | X | 쓰기 연산 (상승 에지에서) |
참고: X는 "무관", ↑는 상승 클럭 에지를 나타냅니다
입력 및 출력
입력 (총 20개):
- A0-A7: 핀 0-7. 메모리 위치를 지정하는 8비트 주소 입력 (최대 256 위치).
- D0-D7: 핀 8-15. 데이터 쓰기를 위한 8비트 데이터 입력 (버스 입력).
- CS (Chip Select): 핀 16. HIGH일 때 RAM을 활성화.
- WE (Write Enable): 핀 17. HIGH일 때 (CLK 상승 에지와 함께) 쓰기 연산을 활성화.
- CLK (Clock): 핀 18. 쓰기 연산은 CLK의 상승 에지에서 발생.
- OE (Output Enable): 핀 19. HIGH일 때 읽기 연산 중 데이터 출력을 활성화.
출력 (총 8개):
- Q0-Q7: 8비트 데이터 출력. 읽기 연산(CS=1, WE=0, OE=1) 중 지정된 주소에 저장된 값을 출력. 그 외에는 하이 임피던스(high-Z)를 출력.
설정 가능한 매개변수
- 메모리 크기: DigiSim.io에서 RAM 용량, 기본값 256x8 (256 주소, 주소당 8비트).
- 초기 메모리 내용: 시뮬레이션 목적의 선택적 사전 로드 값.
- 전파 지연: 주소/제어 신호 변경과 데이터 출력 사이의 시간 지연.
DigiSim.io에서의 시각적 표현
RAM은 명확하게 레이블이 지정된 입력과 출력이 있는 직사각형 블록으로 표시됩니다. 주소 입력은 일반적으로 왼쪽에 있으며, 데이터 라인과 제어 신호가 명확하게 배치됩니다. 회로에 연결되면 연결 와이어의 색상 변화를 통해 활성 연산과 데이터 흐름을 시각적으로 나타냅니다. 일부 구현에는 교육 목적의 메모리 내용 디스플레이가 포함될 수 있습니다.
교육적 가치
핵심 개념
- 메모리 시스템: 컴퓨터가 데이터를 어떻게 저장하고 검색하는지 보여줍니다.
- 주소 디코딩: 이진 주소와 특정 메모리 위치 간의 관계를 설명합니다.
- 데이터 저장: 이진 정보가 컴퓨터 메모리에 어떻게 구성되는지 보여줍니다.
- 읽기/쓰기 타이밍: 메모리 연산을 위한 제어 신호의 조율을 설명합니다.
- 메모리 계층: 컴퓨터 시스템에서 다양한 유형의 메모리 개념을 소개합니다.
학습 목표
- 랜덤 액세스 메모리의 기본 원리를 이해합니다.
- 제어 신호를 사용하여 읽기 및 쓰기 연산을 수행하는 방법을 배웁니다.
- 디지털 컴퓨팅 시스템에서 메모리의 중요성을 인식합니다.
- 디지털 설계에서 데이터 저장 솔루션을 구축하기 위해 RAM 부품을 적용합니다.
- 메모리 주소와 저장된 데이터 간의 관계를 이해합니다.
사용 예시
- 데이터 저장: 디지털 시스템에서 변수와 중간 결과를 저장합니다.
- 룩업 테이블: 함수 근사 또는 코드 변환을 위한 미리 정의된 데이터 테이블을 구현합니다.
- 버퍼 메모리: 서로 다른 속도의 디지털 시스템 부품 간 임시 저장소를 만듭니다.
- 프로그램 저장: 사전 로드 시 프로세서가 실행할 명령어를 저장합니다.
- 메모리 매핑 I/O: 컴퓨터 시스템에서 메모리 주소가 지정된 주변 장치를 구현합니다.
기술 참고사항
- DigiSim.io의 RAM은 전원이 제거되거나 시뮬레이션이 리셋될 때 데이터가 손실되는 물리적 RAM의 휘발성 특성을 시뮬레이션합니다.
- 올바른 동작을 위해 제어 신호는 진리표에 따라 적절하게 순서를 맞춰야 합니다.
- 메모리 접근에는 주소 셋업 시간과 데이터 홀드 시간을 포함한 타이밍 매개변수의 고려가 필요합니다.
- 선택되지 않았거나(CS=0) 출력이 비활성화된 경우(OE=0), 데이터 라인은 하이 임피던스 상태로 들어가 다른 장치와의 버스 공유를 허용합니다.
회로 구현 세부 사항
메모리 셀 구조
SRAM 셀 (6T):
6트랜지스터 SRAM 셀 구조:
- T1, T2: 쌍안정 래치를 형성하는 교차 결합 인버터
- T3, T4: Word Line(WL)에 의해 제어되는 접근 트랜지스터
- T5, T6: 풀다운 트랜지스터
- 쌍안정 저장: 교차 결합 인버터가 리프레시 없이 상태를 유지
- 비트 라인 (BL, BL̅): 노이즈 면역을 위한 차동 감지
DRAM 셀 (1T1C):
1트랜지스터, 1커패시터 DRAM 셀 구조:
- T: Word Line(WL)에 의해 제어되는 접근 트랜지스터
- C: 데이터 비트를 나타내는 전하를 보유하는 저장 커패시터
- 비트 라인 (BL): 접근 트랜지스터를 통해 데이터를 읽기/쓰기
- 리프레시 필요: 커패시터 전하가 누설되어 주기적인 리프레시 사이클이 필요
- 더 높은 밀도: 더 간단한 구조로 칩 면적당 더 많은 메모리 가능
주소 디코딩
행 및 열 디코더가 주소 입력을 행 및 열 선택 신호로 변환합니다:
graph LR
A03[Address A0-A3] --> RDEC[Row Decoder]
A47[Address A4-A7] --> CDEC[Column Decoder]
RDEC --> RS[Row Select 0-15]
CDEC --> CS[Column Select 0-15]
RS --> ARRAY[Memory Cell Array]
CS --> ARRAY
데이터 경로
graph LR
subgraph Read Operation
CELL1[Memory Cell] --> SA[Sense Amplifier]
SA --> OBUF[Output Buffer]
OBUF --> DOUT[Data Output]
end
subgraph Write Operation
DIN[Data Input] --> IBUF[Input Buffer]
IBUF --> WD[Write Driver]
WD --> CELL2[Memory Cell]
end
관련 부품
- ROM (읽기 전용 메모리): 읽기만 가능한 비휘발성 메모리
- PROM (프로그래머블 ROM): 1회 프로그래밍 가능한 메모리
- EPROM (소거 가능 PROM): 자외선을 사용하여 소거 가능
- EEPROM/플래시 메모리: 전기적으로 소거 가능한 비휘발성 메모리
- 레지스터: 임시 데이터 저장에 사용되는 작고 빠른 메모리
- 시프트 레지스터: 시프팅 기능이 있는 순차 메모리
- 메모리 컨트롤러: 메모리 연산을 관리하는 회로
- 캐시 메모리: CPU와 주 메모리 사이의 고속 버퍼 메모리
- 주소 디코더: 이진 주소를 개별 선택 라인으로 변환
- FIFO/LIFO 버퍼: 선입선출 또는 후입선출 접근 방식의 특수 목적 메모리