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 | 非アクティブ(出力ハイZ) |
| 1 | 0 | X | 0 | 出力非アクティブ(ハイZ) |
| 1 | 0 | X | 1 | 読み取り操作(組み合わせ的) |
| 1 | 1 | ↑ | X | 書き込み操作(立ち上がりエッジ) |
注: Xは「ドントケア」、↑は立ち上がりクロックエッジを示します
入力と出力
入力(合計20):
- A0-A7: Pin 0-7。メモリロケーションを指定する8ビットアドレス入力(最大256ロケーション)。
- D0-D7: Pin 8-15。データ書き込み用の8ビットデータ入力(バス入力)。
- CS(チップセレクト): Pin 16。HIGH時にRAMをアクティブ化。
- WE(ライトイネーブル): Pin 17。HIGH時に書き込み操作を有効化(CLK立ち上がりエッジと連携)。
- CLK(クロック): Pin 18。CLKの立ち上がりエッジで書き込み操作が発生。
- OE(アウトプットイネーブル): Pin 19。HIGH時に読み取り操作中のデータ出力を有効化。
出力(合計8):
- Q0-Q7: 8ビットデータ出力。読み取り操作中(CS=1、WE=0、OE=1)、指定されたアドレスに格納された値を出力。それ以外はハイインピーダンス(ハイZ)を出力。
設定可能なパラメータ
- メモリサイズ: DigiSim.io におけるRAM容量。デフォルトは256×8(256アドレス、アドレスあたり8ビット)。
- 初期メモリ内容: シミュレーション用にプリロードされたオプションの値。
- 伝搬遅延: アドレス/制御信号の変化からデータ出力までの時間遅延。
DigiSim.io での視覚的表現
RAMは、明確にラベル付けされた入力と出力を持つ矩形ブロックとして表示されます。アドレス入力は通常左側にあり、データラインと制御信号は明確に配置されています。回路に接続されると、コンポーネントは接続ワイヤの色変化を通じてアクティブな操作とデータフローを視覚的に示します。一部の実装では、教育目的のためにメモリ内容の表示を含む場合があります。
教育的価値
主要概念
- メモリシステム: コンピュータがデータをどのように格納し取得するかを示します。
- アドレスデコーディング: バイナリアドレスと特定のメモリロケーション間の関係を示します。
- データストレージ: コンピュータメモリにおけるバイナリ情報の構成方法を示します。
- 読み書きタイミング: メモリ操作における制御信号の調整を説明します。
- メモリ階層: コンピュータシステムにおける異なる種類のメモリの概念を紹介します。
学習目標
- ランダムアクセスメモリの基本原理を理解する。
- 制御信号を使用した読み取りおよび書き込み操作の方法を学ぶ。
- デジタルコンピューティングシステムにおけるメモリの重要性を認識する。
- RAMコンポーネントを使用してデジタル設計におけるデータストレージソリューションを構築する。
- メモリアドレスと格納データの関係を理解する。
使用例
- データストレージ: デジタルシステムにおける変数と中間結果の格納。
- ルックアップテーブル: 関数近似やコード変換のための定義済みデータテーブルの実装。
- バッファメモリ: 異なる速度を持つデジタルシステムコンポーネント間の一時ストレージの作成。
- プログラムストレージ: プリロード時に、プロセッサが実行する命令の格納。
- メモリマップドI/O: コンピュータシステムにおけるメモリアドレス方式の周辺機器の実装。
技術ノート
- DigiSim.io のRAMは、物理的なRAMの揮発性を模擬し、電源が切られたりシミュレーションがリセットされるとデータが失われます。
- 適切な動作のためには、制御信号を真理値表に従って適切にシーケンシングする必要があります。
- メモリアクセスには、アドレスセットアップ時間やデータホールド時間などのタイミングパラメータの考慮が必要です。
- 未選択(CS=0)または出力無効(OE=0)の場合、データラインはハイインピーダンス状態に入り、他のデバイスとのバス共有が可能になります。
回路実装の詳細
メモリセル構造
SRAMセル(6T):
6トランジスタSRAMセル構造:
- T1、T2: 双安定ラッチを形成する交差結合インバータ
- T3、T4: ワードライン(WL)で制御されるアクセストランジスタ
- T5、T6: プルダウントランジスタ
- 双安定ストレージ: 交差結合インバータがリフレッシュなしで状態を維持
- ビットライン(BL、BL̅): ノイズ耐性のための差動センシング
DRAMセル(1T1C):
1トランジスタ、1キャパシタDRAMセル構造:
- T: ワードライン(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バッファ: 先入れ先出しまたは後入れ先出しアクセスの特殊用途メモリ