MAX II CPLDを使用したNANDフラッシュ・メモリ

MAX II CPLD を使用した NAND
フラッシュ・メモリ・インタフェース
この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用
ください。設計の際には、最新の英語版で内容をご確認ください。
2007 年 12 月 ver 1.0
Application Note 500
はじめに
本書では、アルテラの MAX® II CPLD を使用した NAND フラッシュ・メモリ・
インタフェースの実装について説明します。本デザインは、Samsung および AMD
両方の NAND フラッシュ・メモリで使用することができます。
フラッシュ・
メモリ
フラッシュ・メモリは、電気的にプログラムおよび再プログラムが可能な不揮発
性の半導体メモリです。情報はセル・アレイに格納されます。各セルには 1 ビッ
トの情報を保持できます。セルは、MOSFET のコントロール・ゲートとシリコ
ン・サブストレートの間に浮遊ゲートが存在するデュアル・ゲート構造になって
います。二酸化シリコン絶縁体がこの浮遊ゲートを絶縁するために使用されてい
ます。これがフラッシュ・メモリ・デバイスの基本的なストレージ・メカニズムです。
NOR フラッシュと NAND フラッシュは、フラッシュ・メモリ・デバイスの 2 つ
のバリエーションです。NOR 型フラッシュ・メモリはランダム・アクセスが可
能であり、NAND 型フラッシュ・メモリはシーケンシャル・アクセス・デバイス
です。これら 2 つのフラッシュ・メモリのインタフェースは大きく異なります。
NOR 型フラッシュ・メモリは、専用のアドレス・ラインおよびデータ・ライン
を内蔵していますが、NAND 型メモリには専用アドレス・ラインがありません。
NOR 型と NAND 型を比較した場合、NAND 型にはセル面積の縮小に伴うビッ
トあたりのコスト低減、集積度の向上、耐久性の向上、および消去時間とプログ
ラミング時間の短縮など、大きな利点があります。これらの利点により、NAND
フラッシュ・メモリは、USB フラッシュ・ドライブ、MP3 プレーヤ、デジタル・
オーディオ・レコーディング、デジタル TAD(Telephone Answering Devices)
のデータ・ストレージ、デジタル・カメラ、およびCompactFlashおよびMemoryStick
などのメモリ・カード製品に使用されています。
本書では、アルテラ MAX II CPLD への NAND フラッシュ・メモリ・インタフェー
スの実装について説明します。デザインは、Samsung および AMD 両方の NAND
フラッシュ・メモリで使用することができます。この例では、
AMD Am30LV0064D
および Samsung K9F4008W0A フラッシュ・デバイスが使用されています。
AMD NAND フラッシュ・デバイス(Am30LV0064D)は、データがシーケンシャ
ルで、
高速書き込み機能が要求される高集積アプリケーションに最適な 64 M ビッ
ト・マス・ストレージ・デバイスです。最初のページのリード・アクセス時間は
7 µs、以降のバイト・アクセス時間は 50 ns 未満になります。
Altera Corporation
AN-500-1.0/JP
1
MAX II CPLD を使用した NAND フラッシュ・メモリ・インタフェース
Samsung NAND フラッシュ・デバイス(K9F4008W0A)は、高性能レベルや高
集積度フラッシュ・メモリの大容量を必要としないアプリケーションに最適な
512 K × 8 ビットのストレージ・デバイスです。ランダム・アクセス時間 15 µs、
シーケンシャル・アクセス時間 120 ns の 32 バイト・フレーム・リード動作をサ
ポートします。
MAX II を
使用した
NAND
フラッシュ・
インタフェー
ス
図 1 に、インタフェース・ブロック図を示します。システムからのコマンドは、
NAND フラッシュ・インタフェースの入力にコード化された形で到達します。実
行される各動作は、異なるフォーマットでコード化され、3 ビット幅のコントロー
ル・バスを通じて発行されます(4 ページの表 2 を参照)。
表 1 に、インタフェースのピンの説明を示します。ALE、CLE、SE、WE の場合の
イネーブルまたはディセーブルは、イネーブル / ディセーブル信号入力で個別に
行われます。これらのコマンドは、NAND フラッシュ・インタフェース・ブロッ
ク(アルテラ MAX II CPLD)によって正しく符号化され、出力イネーブルまた
はディセーブル信号として変換され、NAND フラッシュに必要な動作が実行され
るようにします。
NAND フラッシュで実行される実際の動作は、I/O バスを介してコマンド・レジ
スタに書き込まれるコマンドによって制御されます(5 ページの表 3 および 6 ペー
ジの表 4 を参照)。読み書きされるデータのアドレスは、データと共に同じバスを
介して発行されます。
図 1 は、NAND フラッシュ・デバイスの異なるインタフェース信号を示していま
す。'#' が付いた信号は Low のときにアサートされます。
図 1.
NAND フラッシュ・デバイスのインタフェース信号
CLE
READ/WRITE#
ALE
RESET
CE#
EN/DB#
NAND Flash
Interface
Microprocessor
WE#
NAND Flash
WP#
CONTROL[2:0]
RE#
SE#
MAX II
RY/BY#
I/O[7:0]
2
Altera Corporation
2007 年 12 月
MAX II を使用した NAND フラッシュ・インタフェース
表 1 は、インタフェース信号を説明しています。
表 1.
図 1 のブロック図に記載されている信号の概要 (1 / 2)
信号
READ/WRITE#
サイズ
説明
1 ビット 書き込み動作と読み出し動作を区別するためのマイクロプロセッサからの入力です。
●
●
RESET
READ/WRITE# 0: 書き込み動作
READ/WRITE# 1: 読み出し動作
1 ビット NAND フラッシュ・デバイスをリセットするためのマイクロプロセッサからの入
力です。
CONTROL[2:0] 3 ビット 3 ビット・コントロール・バス。マイクロプロセッサが NAND フラッシュ・イン
タフェース(アルテラ MAX II)に 3 ビットの情報を送信すると、そこで適切に符
号化され、EN/DB# 入力の状態に応じて適切なインタフェース信号がイネーブル
またはディセーブルされます。
EN/DB#
1 ビット 必要な動作を実行するために他のコントロール・ビットとともに使用されるコン
トロール・ビットです。
● EN/DB# 1: コントロール・ビットで選択されたインタフェース信号をイネーブ
ルします。
● EN/DB# 0: コントロール・ビットで選択されたインタフェース信号をディセー
ブルします。
I/O[7:0]
8 ビット データ / コマンド / アドレスを NAND フラッシュ・デバイス内の対応するレジス
タに送信するのに使用される双方向 8 ビット多重化バスです。これらのラインで
は NAND フラッシュ・デバイスから読み出されるデータも利用可能です。
RY/BY#
1 ビット デバイスの状態を示す NAND フラッシュ・デバイスからの出力です。
●
●
CLE
RY/BY# 0 : デバイスは動作を実行中でビジーの状態です。
RY/BY# 1 : デバイスは次のコマンドを受け入れ可能な状態です。
1 ビット アクティブ High のコマンド・ラッチ・イネーブル。デバイスのコマンド・レジ
スタまたはデータ・レジスタを選択するのに使用します。High のとき、I/O ライ
ン上のコマンドは WE# の立ち上がりエッジでコマンド・レジスタにラッチされま
す。(1)
ALE
1 ビット アクティブ High のアドレス・ラッチ・イネーブル。デバイスのアドレス・レジ
スタまたはデータ・レジスタを選択するのに使用します。High のとき、I/O ライ
ン上のアドレスは WE# の立ち上がりエッジでアドレス・レジスタにラッチされま
す。Low 信号は、デバイスのリセットを引き起こします。この信号は、アドレス・
シーケンス中には High にしておく必要があります。(1)
CE#
1 ビット アクティブ Low のチップ・イネーブル。デバイスのアクティブ・モードとスタン
バイ・モードのいずれかを選択するのに使用します。
● CE# 0 : アクティブ・モードが選択されます。
● CE# 1 : 現在動作が実行中でない場合は、スタンバイ・モードが選択されます。
プログラムまたは消去動作が実行中の場合、CE 信号は無視されます。
Altera Corporation
2007 年 12 月
3
MAX II CPLD を使用した NAND フラッシュ・メモリ・インタフェース
表 1.
図 1 のブロック図に記載されている信号の概要 (2 / 2)
信号
WE#
サイズ
説明
1 ビット アクティブ Low のライト・イネーブル。コマンド / アドレス / データをデバイス
内の対応するレジスタに書き込むのに使用します。I/O ライン上の情報は、 WE#
の立ち上がりエッジで対応するレジスタにラッチされます。
WP#
1 ビット アクティブ Low の書き込み保護。
WP# 0 : デバイスは書き込み保護されています。
WP# 1 : デバイスは書き込み保護されていません。
RE#
1 ビット アクティブ Low のリード・イネーブル。デバイスからデータ / ステータスを読み
出すのに使用します。この情報は、I/O ライン上において RE# の立ち上がりエッ
ジで使用できます。
SE#
1 ビット アクティブ Low の Spare 領域のイネーブル。AMD デバイスが使用されていると
きにのみ必要です。Samsung デバイスには必要ありません。
SE# 0 : 各ページの 16 バイトの Spare 領域がイネーブルされます。
● SE# 1 :Spare 領域はディセーブルされます。
●
表 1 の注 :
(1)
データ・レジスタは、CLE と ALE の両方を Low にすることにより選択されます。I/O ライン上のデータは、WE# の立ち上がり
エッジでデータ・レジスタにラッチされます。
表 2.
コントロール信号の異なる組み合わせでインタフェースが実行する動作 (1 / 2)
コントロール信号
[2:0]
EN/DB#
実行される動作
000
—
EN/DB# の状態に関係なく、コマンド・ラッチ・イネーブルはイネーブルされま
す(CLE = 1)。
4
001
—
I/O ライン上で送信されたコマンドに応じて、データ / ステータス / デバイス ID
を読み出します。
010
—
I/O ライン上で送信されたコマンドに応じて、データ / コマンド / アドレスを書
き込みます。
011
1
0
ALE がアサートされます(High)。
ALE がディセーブルされます(Low)。
100
1
0
SE# がアサートされます(Low)。
SE# がディセーブルされます(High)。(1)
101
1
0
WP# がアサートされます(Low)。
WP# がディセーブルされます(High)。
110
1
0
CE# がアサートされます(Low)。
CE# がディセーブルされます(High)。
Altera Corporation
2007 年 12 月
MAX II を使用した NAND フラッシュ・インタフェース
表 2.
コントロール信号の異なる組み合わせでインタフェースが実行する動作 (2 / 2)
コントロール信号
[2:0]
EN/DB#
111
1
0
実行される動作
フラッシュ・デバイスの状態が RY/BY# ライン上で送信されます。
RY/BY# ラインにはフラッシュ・デバイスの状態は反映されません。
表 2 の注 :
(1)
この動作は、AMD フラッシュ・デバイスにのみ適用されます。このコマンドは、 EN/DB# ラインの条件に応じて、各ページの
16 バイトのスペア領域をイネーブル / ディセーブルすることができます。
表 3 および 4 に、AMD NAND フラッシュ・デバイス(Am30LV0064D)および
Samsung NAND フラッシュ・デバイス(K9F4008W0A)でサポートされている
各種コマンドの情報を示します。
表 3.
Am30LV0064D コマンド・セット
動作
サイクル 1 サイクル 2
ビジー時の有効性
データの読み出し
00h/01h
—
無効
ギャップレス読み出し (1)
02h
—
無効
予備領域の読み出し
50h
—
無効
ID の読み出し
90h
—
無効
ステータスの読み出し
70h
—
有効
データの入力 (2)
80h
—
無効
ページ・プログラム (2)
10h
—
無効
ブロック消去 (3)
60h
D0h
無効
消去中断 (1)
B0h
—
有効
消去再開 (1)
D0h
—
無効
リセット
FFh
—
有効
表 3 の注 :
(1)
AMD NAND フラッシュ・デバイスでのみサポートされるスーパーセット・コマンドです。
(2)
フラッシュ・アレイへのデータのプログラミングは 2 つのステップで構成されており、2 つ
の別々のコマンド・シーケンスを実行する必要があります。プログラムするデータは、入力
データ・コマンド・シーケンスを使用してデータ・レジスタにロードしなければなりません。
データをロードした後、Page Program コマンドが実行され、データ・レジスタからフラッ
(3)
シュ・アレイに情報が転送されます。
ブロック消去も 2 つのコマンドから成るプロシージャです。最初のコマンド・サイクルで、
消去されるブロックのアドレスがデバイスに発行されます。次のコマンド・サイクルで、WE#
信号の立ち上がりエッジを検出するとフラッシュ・デバイスは消去動作を開始します。
Altera Corporation
2007 年 12 月
5
MAX II CPLD を使用した NAND フラッシュ・メモリ・インタフェース
フラッシュ・デバイスのプログラミングは、ページ単位(512 バイト + 16 バイト
の予備領域)で行われますが、消去はブロック単位で行われます(8 Kバイト +
256 バイト)。
消去中断および消去再開は、スピードが重視されるタスクを実行するために用意
されています。これらのタスクはまだ消去されていないブロックでのみ実行でき
ます。ギャップレス読み出しは、特別な高性能モードでデータを読み出すのに使
用されます。これにより、最初のページ転送で、わずか 7 µs のレイテンシで複数
のページを読み出すことができます。
AMD NAND フラッシュ・デバイスの詳細情報は、www.spansion.com/
datasheets/22203c4.pdf を参照してください。
表 4.
K9F4008W0A コマンド・セット
動作
サイクル 1 サイクル 2
ビジー時の有効性
読み出しデータ
00h
—
無効
ID の読み出し
90h
—
無効
ステータスの読み出し
70h
—
有効
フレーム・プログラム (1)
80h
10h
無効
ブロック消去 (2)
60h
D0h
無効
リセット
FFh
—
有効
表 4 の注 :
(1)
フレーム・プログラムは、2 つのコマンドから成るプロシージャです。Frame Program セッ
トアップ・コマンド(80h)でプログラムするデータのロードを開始します。Frame Program
確認コマンド(10h)でプログラミング・プロセスが開始されます。
(2)
ブロック消去も 2 つのコマンドから成るプロシージャです。Erase セットアップ・コマンド
(60h)で消去するブロックのアドレスがロードされます。Erase 確認コマンド(D0h)がロー
ドされると、フラッシュ・デバイスは内部消去プロセスを開始します。
フラッシュ・デバイスのプログラミングはフレーム単位(32 バイト)で実行され
ますが、消去はブロック単位(4 K バイト)で実行されます。フラッシュ・デバ
イスは、部分フレーム・プログラミングもサポートしています。
Samsung NAND FLASH デバイスの詳細情報は、www.datasheet4u.com/html/
K/9/F/K9F4008W0A-_Samsungsemiconductor.pdf.html を参照してください。
6
Altera Corporation
2007 年 12 月
実装
実装
本デザインは、EPM240 またはその他の MAX II CPLD を使用して実装できます。
デザインのソース・コードはコンパイルして、MAX II CPLD にプログラムする
ことができます。ホスト・インタフェース・ポートおよび NAND フラッシュ・
デバイスは、2 ページの図 1 に示されています。図に示す NAND フラッシュ・イ
ンタフェース・デザインは、AMD NAND フラッシュ・デバイス Am30LV0064D
および Samsung NAND フラッシュ・デバイス K9F4008W0A に対応しています。
ソース・コード
このデザイン例は Verilog HDL で記述されています。ソース・コード、テストベ
ンチ、および完成した Quartus II プロジェクトは、以下から入手可能です。
www.altera.co.jp/literature/an/an500_design_example.zip
まとめ
このデザイン例が示すように、MAX II CPLD は NAND フラッシュなどのメモ
リ・デバイスへのインタフェースを実装する際に有力な選択肢となります。
MAX II
CPLD は、低消費電力で使いやすいパワー・オン機能を備えており、このような
メモリ・デバイス・インタフェース・アプリケーションに最適なプログラマブル・
ロジック・デバイスです。
関連情報
以下に、関連資料を示します。
■
MAX II CPLD ホームページ :
www.altera.co.jp/products/devices/cpld/max2/mx2-index.jsp
■
MAX II デバイスの資料ページ :
www.altera.co.jp/literature/lit-max2.jsp
■
MAX II パワーダウン・デザイン :
www.altera.co.jp/support/examples/max/exm-power-down.html
■
MAX II アプリケーション・ノート :
AN 428: MAX II CPLD のデザイン・ガイドライン
AN 422: MAX II CPLD を使用したポータブル・システムにおける消費電力
の管理
Altera Corporation
2007 年 12 月
7
MAX II CPLD を使用した NAND フラッシュ・メモリ・インタフェース
表 5 に、このアプリケーション・ノートの改訂履歴を示します。
改訂履歴
表 5.
改訂履歴
日付 & バージョン
2007 年 12 月 v1.0
101 Innovation Drive
San Jose, CA 95134
www.altera.com
Literature Services:
[email protected]
8
変更内容
初版
注記
—
Copyright © 2007 Altera Corporation. All rights reserved. Altera, The Programmable Solutions Company,
the stylized Altera logo, specific device designations, and all other words and logos that are identified as
trademarks and/or service marks are, unless noted otherwise, the trademarks and service marks of Altera
Corporation in the U.S. and other countries. All other product or service names are the property of their respective holders. Altera products are protected under numerous U.S. and foreign patents and pending
applications, maskwork rights, and copyrights. Altera warrants performance of its semiconductor products
to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability
arising out of the application or use of any information, product, or service described
herein except as expressly agreed to in writing by Altera Corporation. Altera customers
are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services.
Altera Corporation