マイコンのプログラムを格納するメモリーにはいろいろな種類があります。今回の特集では、最近の主流となっているFlash ROMを取り上げ、仕組みを分かり易く説明しました。
マイコンにはプログラムを格納するためのメモリーと、データを保存しておくためのメモリーがあります。プログラム用のメモリーは、マイコンが正しく動作するためのプログラムを記憶しています。プログラムはマイコンの動作中に書き換わってはいけませんし、マイコンの電源を切ってもメモリーの中に残っていなければなりません。一方、データは、マイコンが必要に応じて値を変化させますので、メモリーに保存さているデータが書き換わる必要があります。また、こちらのメモリーのデータは電源が切れると同時に消失してもかまいません。
このように、マイコンの中のメモリーは大きく分けて二種類あり、前者を読み出し専用メモリー(Read Only Memory; ROM)、後者を書き込み読み出しメモリーRandom Access Memory; RAM)と呼びます。
今回は前者のメモリー、つまりROMについての解説です。
特に、マイコンに不可欠なFlash ROMについて解説します。
ROMは読み出し専用のメモリーで、データの書き込みは容易にはできないようになっています。メーカーから出荷された後はまったく書き込みできないマスクROMもありますが、現在多くのマイコンの中にあるROMは、メーカーに指定された手続きを行えばデータを書き込むことができるようになっています。この場合、そのROMに書き込まれたプログラムはマイコンの電源を切ってもそのまま残り、次にマイコンが動作するときに読み出すことができます。このように、電源を切ってもデータを保持できるメモリーを不揮発性メモリーと呼びます。これから解説するFlash ROMも不揮発性メモリーの一つです。
次にFlash ROMを説明しますが、その前にトランジスターの基礎知識を確認しましょう。
半導体の集積回路に使われるトランジトランジスターの記号、トランジスターの断面図スタは3つの端子を持っています。記号では下図のようになります。
電流の流れる方向で見ると、トランジスターに電流を注入する方の端子をドレイン、トランジスターから電流を引き出す方の端子をソースと呼びます。また、トランジスターを流れる電流の値を制御するのがゲートです。ゲートの電位が高いほどドレインからソースに流れる電流は多くなります。(ここではNMOSトランジスターを取り上げています。詳細な説明は割愛しますが、半導体集積回路にはもう一種類のトランジスターがあり、PMOSトランジスターと呼んでいます。PMOSトランジスターは電流の向きで見るとドレインとソースの役割が反対になります。)
現在、Flash ROMのメモリー・セルとして、実にさまざまな構造が使われています。そのうち、もっとも基本的な構成はフローティング・ゲートを有するものです。フローティング・ゲートは小銭を入れるポケットのようなもので、そこに電子を入れますとその電子はそのまま留まります。この電子はマイコンの電源を切ったあとでもフローティング・ゲートの中に残っています。これが不揮発性メモリーを実現させる古典的な方法です。
Flash ROMのメモリー・セルはデータ0と1の二つの値を記憶します。それはフローティング・ゲートに電子が入っているか、ホールが入っているかで決まります。電子が入っていますとトランジスターがオンしないため電流が流れません(この状態が0です)。一方、フローティング・ゲートにホールが入っていますと、トランジスターが電流を流します。これが1の状態です。このように、トランジスターに電流が流れないか、流れるか、でデータの0、または1を決定できます。
では、フローティング・ゲートにどうやって電子を入れるのでしょうか。そのためには、メモリー・セルを通常の動作では起こり得ない特別な環境に置きます。そうしないと、通常の動作中に誤って書き込みを行ってしまう可能性があります。
ゲート電圧を通常の3倍から5倍ほどの高い電位にします。すると、その電位に引っ張られて電子がフローティング・ゲートに飛び込みます。ゲート電圧を通常の電位に下げますとフローティング・ゲート内の電子はどこへも行かず、そこに留まります。
一方、電位関係を反対にして、ソースを高い電位とすると今度はフローティング・ゲートから電子がソースの方に飛び出します。結果としてフローティング・ゲートには電子の抜け跡(ホール)が残ることになります。ホールはプラスの電荷を持っていますのでトランジスターを電流が流れます。
結局、Flash ROMの書き込みとは、フローティング・ゲートに電子を入れるか、電子を引き出すか、という動作を言うわけです。
半導体メモリーは一般的に、セル・マトリックス、ロー・デコーダー、カラム・デコーダー、センス回路からなっています。この構成はROMでもRAMでも同じです。
セル・マトリックスというのはデータを保持する1個のメモリー単位(これをメモリー・セルと呼びます)を縦横に隙間なくびっしりと並べたものです。メモリー・セルは1ビットの情報、つまり、データ0、または1のいずれかを記憶しています。
このセル・マトリックス内の任意の1つのセルを選ぶためにデコーダーが使われます。デコーダーはマトリックスの横の列を一つだけ選択するためのロー・デコーダーと縦の列を一つだけ選ぶカラム・デコーダーがあります。ローとカラムの両方のデコーダーが同時に指定したセルのデータがセンス回路でデータの判定されたのちにマイコンで使います。
Flash ROMも同じ構造をしています。
Flash ROMは不揮発性メモリーの一種ですが、わざわざ「Flash」と呼ぶには理由があります。皆さん、カメラのFlashをご存知ですね。暗い場所の被写体を撮影するとき一瞬だけ明るくする装置で、短時間に広い面積を照らし出します。Flash ROMは1回でメモリー内のすべてのセルのデータを1にするものです。つまり、すべてのメモリー・セルのフローティング・ゲートから一気に電子を抜き去り、ホールを残すという動作をします。1回で一気に行う点に注目してFlashと名付けられました。
Flash ROMのデータの書き換えは次のように行います。まず、書き換え前のFlash ROMには1、もしくは0のデータを持つセルがそれぞれ多数あります。これを一気に、すべてのセルのデータを1にします。その後、データ0を選択的に書き込みます。これはセル1個1個について行います。
このように1つのセルのデータは1から0には書き換わります。しかし、0から1に変わる時はそのセルだけということはなく、すべてのセルが1になります。特定のセルだけを0から1に変えることはできないのです。
かつてのマイコンは、マスクROMを搭載していました。プログラムROMの各セルのデータはメーカーの工場で、マイコンを製造する途中の工程でROMに直接書き込まれました。一旦、書き込みますと後からは書き換えはできませんでした。
マスクROMの利点は、マイコンがどんな状況下にあってもプログラムは書き換わらないという堅牢性にありました。ところが、それでは困ることがあります。作られたプログラムでマイコンが仕様通りの正しい動きをしなかった場合、正しいプログラムに変更しなければなりません。ところが、マスクROMですとプログラムの変更は容易ではありません。なぜならマイコンに変更プログラムを書き込むにためにはメーカーに依頼しなければならないからです。追加の費用がかかる上に、新しいプログラムが入ったマイコンが手に入るのは1~2か月後でした。
そこで、プログラムをメーカーの工場ではなく自分たちで書き換えることができるマイコンが望まれました。Flash ROMはその要求に答える最適なROMです。プログラムが完成したら自分でマイコンに書き込んで使えるので、すぐにプログラムの確認ができます。ミスがあったら、プログラムを修正した後にまた書き込んで確認できます。
Flash ROMにはさらなる利点があります。それは、まったく同じマイコンを、バージョン・アップなどプログラムのわずかな変更で異なるシステムに使用できるため、マイコンの在庫品種数を絞ることができ、在庫管理が容易になることです。また、基板に実装したまま書き換えることができるので、セットを分解してマイコンを取り換えることなく、プログラムの変更ができます。
Flash ROM内蔵のマイコンは世の中に出た頃は価格も比較的高く、開発や試作が中心で使われていました。マスクROMのようにプログラムを書きこむためのROMマスク代がかからないことと半導体プロセスの進歩によって、Flash ROMを使用した場合のトータルコストがマスクROMよりも安くなり、現在の様に普及しました。
現在では、Flash ROMを搭載しないマイコンは無いと言っていいほど
Flash ROMはマイコンにとって必須のメモリーとなっています。