次世代メモリF-RAMを使おう

近日発売予定の商品の紹介です。発売されました!
スイッチサイエンスでは、次世代不揮発メモリの一つであるF-RAM(FeRAM)をブレッドボードで使えるようにするためのブレイクアウト基板に実装した、F-RAM Breakoutを作りました。

F-RAMという名称はメーカー(旧Ramtron、現Cypress)の呼称だそうなので、一般的にはFeRAMという呼び名のほうが通りがいいみたいです。FeRAMはFerroelectric Random Access Memoryの略で、日本語で言うと「強誘電体メモリ」。情報の保持に強誘電体を使うメモリだということですね。

記録する理屈の説明は他のサイトにおまかせしますが、特長は

  • 電源を切ってもデータを保持
  • 書き換え可能回数が非常に多い
  • 書き込み速度が速い
  • バイト単位で書き換えが可能

の4つです。つまり、SRAMのように使えてROMのようにデータが消えない、夢のようなメモリだといえるでしょう。あまりに夢のようなので、ブレイクアウトを作ったのでした。
だったらEEPROMと同じでは?と思う方もいるかもしれませんが、EEPROMは書き換え回数がそれほど多くないのです(多くて100万回くらい)。F-RAMは10^14(100兆)回の書き換えが保証されているので、制限を気にせずガンガン書き換えられます。

今回採用したF-RAMはCypressのFM25W256です。容量256キロビットですからバイトで言うと32キロバイト。電源電圧は2.7-5.5Vまで対応しているので、mbedにもArduinoにもそのままつなげられます。

F-RAM BreakoutとArduinoを接続

さっそくArduinoと接続してデータを読み書きして、本当に電源を切ってもデータが消えないのか試してみました。
このF-RAMのインターフェースはSPIなので、Arduinoとの接続は簡単です。
D10 - /CS
D11 - SI(MOSI)
D12 - SO(MISO)
D13 - CK(CLK)
VDDは5V、VSSはGNDにつないで、残るWPとHD(HOLD)は今回使わないので5Vにつなぎます。

接続を確認したら、次はスケッチ(ソフトウェア)です。このF-RAMはSPIで接続されているので、SPIライブラリが必要です。
あとはSPI接続のSRAMとだいたい同じように読み書きができるのですが、一つ違うのは書き込み時にWREN(書き込みイネーブル)コマンドを発行する必要があることです。
WRENの件は覚えておくこととして、まずは読み出しスケッチで内容を読み出してみます。先頭の256バイトをシリアルで出力します。一回しか実行しないので、loop()の中身は空です。
(初出時、一行目の「#include <SPI.h>」が抜けていました。申し訳ありません。)

最初の一回しかアドレスを設定していませんが、読み出しや書き込みを行うたびに自動でアドレスが+1されるので、連続で読み書きすることができます。
実行するとこんな出力になります。最初の16バイトにデータが入っているのは、テストで書き込んだからです。買ったばっかりだとおそらく全部0になっているのでしょう。

メモリダンプができるようになったので、今度は書き込んでみましょう。

やっていることは読み出しとさほど変わらないのですが、CMD_WRENを送信しているところがちょっと違います。SPI接続のSRAMでもこういうコマンドはないので、SPI接続SRAMのライブラリを流用しようと思った場合は注意しましょう。

書き込んでからまた読み出しスケッチを使って読み出すとこんな表示になりました。

そして一度ArduinoからUSBケーブルを外して電源を供給しない状態にしてから、またUSBケーブルをつないでF-RAMの内容を読み出してみると……

無事中身が残っていました。SRAMと違って、一晩電源を切っていても問題なくデータが残っています。

従来のメモリに比べると割高ではある次世代メモリですが、書き込みが簡単で不揮発というメリットは大きいでしょう。近い将来の主役メモリになりうる次世代メモリを使ってみたいという方は、発売までもうしばらくお待ちください。ぜひご検討ください。
商品ページ「F-RAMモジュール FM25W256」へ

Pocket