LoginSignup
1
1

More than 1 year has passed since last update.

エレキ素人が何か考える(その17):1bit DRAM

Posted at

Arduinoから擬似「1 bit DRAM」を制御

擬似的な「1 bit DRAM」をマイコン(Arduino)から制御する。

DRAMの原理

  1. DRAMとは?DRAMの構造・動作原理を図解で説明
  2. コンピュータの基礎(2)-メモリ- Memory
  3. 半導体メモリ ー DRAM

上記URLなどに適切な説明が見つかる。MOSFETやトランジスタとコンデンサを利用し、電化の有無で、'1'を'0'を記憶するものである。最後のサイトの図を使って説明。

Write

image.png
"W"ラインをHighにして、"B"ラインをHighまたはLowにして、コンデンサに'1'または'0'の状態をつくる。

Read

ramread.gif
"W"ラインをHighにして、"B"ラインの状態を読み込み、Highであれば'1'、Lowであれば'0'と判断する。ただし、'1'の場合、放電されてしまうため、再度、"B"ラインをHighにして、コンデンサに'1'の状態をつくることが必要である。

実回路

接続は下記のとおり。

MOSFET 接続先
Gate Arduino Pin 2
Drain Arduino Pin 4
Source Capcitor & GND

Sch_回路図.png

ソースコード

#define G_PIN 2
#define D_PIN 4

void setup() {
  Serial.begin(9600);
  pinMode(G_PIN, OUTPUT);
}

void write_data(uint8_t data) {
  digitalWrite(G_PIN, HIGH);
  pinMode(D_PIN, OUTPUT);
  Serial.print("Write data: ");
  Serial.println(data);
  digitalWrite(D_PIN, (data? HIGH:LOW));
  delay(1);
  digitalWrite(G_PIN, LOW);
}

void read_data() {
  digitalWrite(G_PIN, HIGH);
  pinMode(D_PIN, INPUT);
  uint8_t data = digitalRead(D_PIN);
  Serial.print("Read data: ");
  Serial.println(data);
  if (data) {                   // ①
    pinMode(D_PIN, OUTPUT);     // ①
    digitalWrite(D_PIN, HIGH);  // ①
  }                             // ①
  delay(1);
  digitalWrite(G_PIN, LOW);
}

// 0: 0-Write 1: 1-Write Others: Read
void loop() {
  if (Serial.available() > 0) {
    String input = Serial.readStringUntil('\n');
    uint8_t val = input.toInt();
    if (val < 2) {
      write_data(val);
    } else {
      read_data();
    }
  }
}

アルゴリズム的には下記となる。

シリアル入力 0 1 それ以外
Action '0'書き込み '1'書き込み 読み込み

※ エラー入力は未考慮

実験

'0'を書き込んだあとの読み取りは'0'、'1'を書き込んだあとの読み取りは'1'となり、期待どおりの動作をしている。
通常動作.png
また、上記コードの①の部分をコメント化(読み込み後の書き込みなし)すると、下記のように、'1'の書き込み後、すぐに読み出せば'1'となるが、その後は'0'となる(期待どおり)。
書き込みなし.png

終わりに

本当にこれで正しいのか自信はないが、DRAM制御の基本的な考え方はある程度理解したつもりである。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1