さて、
“FIFOメモリ”というキーワードを聞いて、ピンと来る方は
「まだまだ珍しい存在」かも知れない。 ほとんどの方は
「何それ?」状態だろうと思う。
一般的なメモリは、その容量に応じた
アドレスを指定するための信号線を持っており、読み書きしたい番地を先にそれらの信号線に設定してやらないといけない。 例えばメモリの連続した番地に目的のデータが入っている場合でも、アドレスを一つずつ進めてやりながら設定し、読み出し処理を繰り返してやる必要がある。
ここでFIFOメモリの最も大きな特徴を記すなら、
First In First Outというその名前が表すとおり
「アドレスの指定がいらない」という点があげられる。 ウラを返せば
「好き勝手なアドレスを指定することができない」ということになるのだが、要はアドレスを管理する仕組みはメモリのチップ中に取り込まれているので、外部からは読み書きの際に
「プラス1」される以外には、
「リセット」して
「0番地に戻す」ことしかできない。 つまり、ランダムアクセスはできない代わり、純粋なシーケンシャルアクセスならデータの更新周期に合った
クロックを与えるだけで
自動的にデータの入出力が行えるという、モノグサな人間に持ってこいなデバイスだ。
それともう一つ、
データのリードとライトが
「別系統で同時に行える」のが最もありがたい機能だろうか。 これらをうまく活用すれば、タイミングに制約があるデータの
「一時的なタイムシフト」にも最適だ。
トランジスタ技術2012年3月号(今月号)の特集で小型カメラを使った応用例が出ているのだが、そのカメラの1つにFIFOメモリがバッファリング用として使われている。 この機種ではカメラから出てくるデータがクロックに同期してどんどんFIFOメモリに蓄えられ、マイコンは自分の好きなタイミングで読み出し用のクロックを与えれば、そのデータを先頭から順次読み出すことができる。 もっともデータが格納されるよりも遅いスピードでちんたら読み出しを続けていればいつかはメモリが満杯になってデータが溢れてしまうので、どこかで「待った」をかけなければならないのだが、
1フレーム(1画面)分のデータを一気に格納しておき、しばらく画面更新が不要な性格のアプリなら、
遅いマイコンでも対応が可能になるなどのメリットが得られるはずだ。
少し長くなったので本題に戻そう。
私自身も色々と画像関係のハードウェアをいぢくってきた関係で、
“FIFOメモリ”は何種類か常備してあったりする。 そのうちの幾つかをざっと見ていただくことにしようかな(笑)
NEC
uPD42101C
唯一のDIPパッケージ入り。 容量は
910Word×8Bitで、NTSC規格の4Fsc(14.31818MHz)でサンプリングされた映像信号を 1水平ライン分格納することができる。 その用途から
「ラインメモリ」と呼ばれることもある。
ライン・ダブラ(同じ水平ラインを二度書きする)による
“倍速スキャン・コンバータ”用に重宝させていただいたかな。