以下、この発明の一実施形態を、図面を参照して説明する。なお、図面においては、同一の部分については同一の参照符号を付す。
図1は、この発明の一実施形態に係る記録メディアの一例を示す図である。本例では、記録メディアとして、フラッシュメモリを用いたメモリカードを例示する。また、本例では、メモリカードとして、フラッシュメモリと、これをコントロールするカードコントローラとを備えたメモリカードを例示する。
図1に示すように、メモリカード1は、バスインタフェース14を介してホスト機器2と情報の授受を行う。メモリカード1は、ホスト機器2に設けられたスロットに対して挿抜可能に形成される。
メモリカード1は、フラッシュメモリチップ11と、このフラッシュメモリチップ11を制御するカードコントローラチップ(メモリコントローラチップ)12、及び複数の信号ピン(第1ピン乃至第9ピン)13を備える。フラッシュメモリチップ11の一例は、NAND型フラッシュメモリである。信号ピン13は、カードコントローラチップ12に電気的に接続されるピンで、メモリカード1の外部ピンとして働く。信号ピン13における第1ピン乃至第9ピンに対する信号の割り当ての一例を、図2に示す。
図2に示すように、データ0乃至データ3は、第7ピン、第8ピン、第9ピン、及び第1ピンにそれぞれ割り当てられる。なお、第1ピンは、データ3だけでなく、カード検出信号に対しても割り当てられる。さらに、第2ピンはコマンドに割り当てられ、第3ピン、及び第6ピンは接地電位Vssに、第4ピンは電源電位Vddに、第5ピンはクロック信号に割り当てられる。
信号ピン13、及びバスインタフェース14は、ホスト機器2内のホストコントローラ(図示せず)とメモリカード1との通信に使用される。例えば、ホストコントローラは、第1ピン乃至第9ピンを介してメモリカード1内のカードコントローラ12と各種信号、及びデータを通信する。例えば、メモリカード1にデータを書き込むときには、ホストコントローラは、書き込みコマンドを、第2ピンを介してカードコントローラチップ12に送信する。このとき、カードコントローラチップ12は、第5ピンに供給されているクロック信号に応答して、第2ピンに与えられる書き込みコマンドを取り込む。コマンドの入力に割り当てられる第2ピンは、データ3用の第1ピンと接地電位Vss用の第3ピンとの間に配置される。
これに対し、フラッシュメモリチップ11とカードコントローラチップ12との間の通信は、NAND型フラッシュメモリ用のインタフェースを介して行われる。例えば、8ビットのIO線(データライン)15である。
カードコントローラチップ12がフラッシュメモリチップ11にデータを書き込むときには、カードコントローラチップ12は、IO線15を介してデータ入力コマンド80h、カラムアドレス、ページアドレス、データ、及びプログラムコマンド10hをフラッシュメモリチップ11に順次入力する。ここで、コマンド80hの“h”は16進数を示すものであり、実際には“10000000”という8ビットの信号が、8ビットのIO線15にパラレルに与えられる。つまり、NAND型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。また、NAND型フラッシュメモリ用のインタフェースでは、フラッシュメモリチップ11に対するコマンドと、データとが同じIO線15を共用して通信される。
このように、ホストコントローラとカードコントローラチップ12とが通信するインタフェースと、フラッシュメモリ11とカードコントローラチップ12とが通信するインタフェースとは異なる。
図3は、一実施形態に係るメモリカードのハード構成の一例を示すブロック図である。
ホスト機器2は、メモリカード1に対してアクセスを行うためのハードウェア、及びソフトウェアを備える。メモリカード1は、ホスト機器2に接続された時に電源供給を受けて動作し、ホスト機器2からのアクセスに応じた処理を行う。
フラッシュメモリチップ11は、消去時の消去ブロックサイズ(消去単位のブロックサイズ)が所定サイズ(例えば、256kB)に定められている。また、このフラッシュメモリ1チップ11に対して、ページと称する単位(例えば、2kB)でデータの書き込み、及び読み出しが行われる。
カードコントローラチップ12は、フラッシュメモリチップ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。カードコントローラチップ12は、ホストインタフェース21、MPU(Micro processing unit)22、フラッシュインタフェース23、ROM(Read-only memory)24、RAM(Random access memory)25、バッファ26、及びレジスタ群27を有する。
ホストインタフェース21は、カードコントローラチップ12とホスト機器2との間のインタフェース処理を行う。
レジスタ群27は、各種のレジスタを有する。レジスタ群27の構成の一例を図4に示す。
図4に示すように、レジスタ部27は、例えば、カードステータスレジスタ、及びCID、RCA、DSR、CSD、SCR、OCRを含む。これらレジスタは、以下のように定義される。
カードステータスレジスタは、通常動作において使用され、例えば、エラー情報が記憶される。
CID、RCA、DSR、CSD、SCR、及びOCRは、主にメモリカードの初期化時に使用される。
CID(Card identification number)には、メモリカード1の個体番号が記憶される。RCA(Relative card address)には、相対カードアドレスが記憶される。相対カードアドレスは、初期化時にホスト機器2が決める。DSR(Driver stage register)には、メモリカード1のバス駆動力等が記憶される。CSD(Card specific data)には、メモリカード1の特性パラメータ値が記憶される。例えば、バージョン情報、性能識別コード、及び性能パラメータなどである。SCR(SD configuration data register)には、メモリカード1のデータ配置が記憶される。OCR(Operation condition resister)には、動作範囲電圧に制限のあるメモリカードの場合の動作電圧が記憶される。
MPU22は、メモリカード1全体の動作を制御する。MPU22は、例えば、メモリカード1が電源供給を受けたときに、ROM24に格納されているファームウェア(制御プログラム)をRAM25上に読み出して所定の処理を実行することにより、各種のテーブルをRAM25上に作成する。
また、MPU22は、書き込みコマンド、読み出しコマンド、消去コマンドをホスト機器2から受け取り、フラッシュメモリチップ11に対して所定の処理を実行したり、バッファ26を通じたデータ転送処理を制御したりする。
ROM24は、MPU22により制御される制御プログラムなどを格納する。RAM25は、MPU22の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。フラッシュコントローラ23は、カードコントローラチップ12とフラッシュメモリチップ11との間のインタフェース処理を行う。
バッファ26は、ホスト機器2から送られてくるデータをフラッシュメモリチップ11へ書き込む際に、一定量のデータ(例えば、1ページ分)を一時的に記憶したり、フラッシュメモリチップ11から読み出されるデータをホスト機器2へ送り出す際に、一定量のデータを一時的に記憶したりする。図5に、フラッシュメモリチップ11のデータ配置の一例を示す。
図5に示すように、フラッシュメモリチップ11の各ページは、例えば、2112B(512B分のデータ記憶部×4+10B分の冗長部×4+24B分の管理データ記憶部)を有する。また、例えば、128ページ分が1つの消去単位(256kB+8kB(ここで、kは1024))となる。1つの消去単位はブロックと呼ばれる。フラッシュメモリチップ11の記憶容量が、例えば、1Gビットである場合、256kBのブロック(消去単位)の数は512個となる。図5は、ブロックの記憶容量が256kBである場合を示しているが、ブロックの記憶容量は、例えば、16kBとなるように構築することも実用上有効である。この場合、各ページは528B(512B分のデータ記憶部+16B分の冗長部)を有しており、32ページ分が1つの消去単位(16kB+0.5kB)である。
フラッシュメモリチップ11は、フラッシュメモリチップ11へのデータ入出力を行うためのページバッファ11Aを備えている。ページバッファ11Aの記憶容量の一例は、2112B(2048B+64B)である。データ書き込みなどの際、ページバッファ11Aは、フラッシュメモリ11に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。図6に、フラッシュメモリチップ11のデータ記憶領域の一例を示す。
図6に示すように、フラッシュメモリチップ11のデータが書き込まれる領域(データ記憶領域)は、保存されるデータに応じて複数の領域に区分けされる。フラッシュメモリチップ11は、データ記憶領域として、例えば、管理データ領域31、機密データ領域32、保護データ領域33、及びユーザデータ領域34を備える。
管理データ領域31は、主にメモリカードに関する管理情報を格納する。管理データ量域31は、例えば、メモリカード1のセキュリティ情報やメディアIDなどのカード情報を格納する。
機密データ領域32は、暗号化に用いる鍵情報や認証時に使用する機密データを格納する。機密データ領域32は、例えば、ホスト機器2からはアクセス不可能な領域である。
保護データ領域33は、重要なデータを格納する。保護データ領域33は、例えば、メモリカード1に接続されたホスト機器2との相互認証によりホスト機器2の正当性が証明された場合にのみアクセスが可能となる領域である。
ユーザデータ領域34は、ユーザデータを格納する、ユーザデータ領域34は、メモリカード1を使用するユーザーが自由にアクセス及び使用することが可能な領域である。
また、本例に係るメモリカード1は、動作モードとして、例えば、SDモードと、SPIモードとを含む。さらに、SDモードは、例えば、SD4bitモードと、SD1bitモードとに分かれる。動作モードに応じた信号ピンに対する信号の割り当ての一例を図7に示す。
図7に示すように、SDモードにおいては、メモリカード1はホスト機器2からのバス幅変更コマンドによって、SD4bitモード、又はSD1bitモードに設定される。
ここで、4つのデータ0ピン(DAT0)乃至データ3ピン(DAT3)に着目すると、4ビット幅単位でデータ転送を行うSD4bitモードでは、4つのデータ0ピン乃至データ3ピンの全てをデータ転送に用いる。
1ビット幅単位でデータ転送を行うSD1bitモードでは、データ0ピン(DAT0)のみがデータ転送に使用され、データ1ピン(DAT1)、データ2ピン(DAT2)は使用しない。また、データ3ピン(DAT3)は、例えば、メモリカード19からホスト機器2への非同期割り込み等のために使用される。
SPIモードでは、データ0ピン(DAT0)を、メモリカード1からホスト機器2へのデータ信号線(DATA OUT)に用いる。コマンドピン(CMD)はホスト機器2からメモリカード19へのデータ信号線(DATA IN)に用いる。データ1ピン(DAT1)、データ2ピン(DAT2)は使用しない。また、SPIモードでは、データ3ピン(DAT3)は、ホスト機器2からメモリカード1へのチップセレクト信号CSの送信に用いる。
ホスト機器2は、ファイルシステムを搭載する。ファイルシステムは、メモリに記録されたファイル(データ)を管理する方式であり、メモリに設けられた管理領域や管理情報を示す。また、ファイルシステムには、メモリにおけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。
さらに、本形態は、以下の構成を含む。
図3に示すカードコントローラ12は、フラッシュメモリチップ11を、第1読み出しモードで使用するか、及び第1読み出しモードよりもアクセス間隔が短い第2読み出しモードで使用するかのいずれかを選択する。そして、本例では、カードコントローラ12のフラッシュインタフェース23が、選択された読み出しモードに応じて、例えば、IO線15のタイミング制御を、第1読み出しモード、又は第2読み出しモードに合うように変更する。この変更は、読み出しモード切り換え信号RE_SELに応じて決定される。
第1読み出しモードの一例は、シリアル・リードモード(Serial Read Mode、以下SRモードと略す)である。また、第2読み出しモードは、第1読み出しモードよりもアクセス間隔が短い読み出しモードである。アクセス間隔が短い、という事項の一例は、リードサイクル時間tRCが短い読み出しモードである。リードサイクル時間tRCが短い読み出しモードの一例は、例えば、第1読み出しモードをSRモードとしたときには、例えば、エクステンディッド・データ・アウトモード(Extended Data Out Mode、以下EDOモードと略す)である。SRモードの動作波形の一例を図8Aに、EDOモードの動作波形の一例を図8Bに示す。なお、図8A、及び図8Bにはリードイネーブル信号/RE、IO線IO、レディ/ビジー信号RY//BYのみを示す。
図8A、及び図8Bに示すように、EDOモードのリードサイクル時間tRCSは、SRモードのリードサイクル時間tRCよりも短くすることができる。故に、EDOモードは、SRモードよりもアクセス間隔を短くすることができる。EDOモードにおけるリードサイクル時間tRCSの一例は、例えば、温度0〜70℃、電源電圧2.7V〜3.6Vの動作条件のとき、30ns(最小)である。対して、SRリードモードにおけるリードサイクル時間tRCの一例は、同じ動作条件のとき、50ns(最小)である。
リードサイクル時間tRCSは、リードサイクル時間tRCよりも短くできるので、リードイネーブルアクセス時間tREAS、リードパルス幅tRPS、リードイネーブル“H”レベル保持時間tRHSについては以下のようになる。SRモードの場合とEDOモードの場合とを比較して示す。なお、動作条件は、上記の通りである。
・リードサイクル時間
SRモード :tREA =35ns(最大)ただし、負荷は100pF
EDOモード:tREAS=25ns(最大)ただし、負荷は50pF
・リードパルス幅
SRモード :tRP =35ns(最小)
EDOモード:tRPS =15ns(最小)
・リードイネーブル“H”レベル保持時間
SRモード :tREH =15ns(最小)
EDOモード:tRHS =15ns(最小)
また、データ出力保持時間tRLOH、tOHは、次のようになる。動作条件は、上記の通りである。
・データ出力保持時間
SRモード :tOH =10ns(最小)
EDOモード:tRLOH= 5ns(最小)
なお、信号RY//BYがレディになってからリードイネーブル信号/REが立ち下がるまでの時間tRRは、例えば、SRモード、及びEDOモードとも同じで良い。例えば、動作条件を上記の通りとしたとき、20ns(最小)である。
SRモードは、データを出力した後、リードイネーブル信号/REが立ち上がると、IO線をハイインピーダンスにする。信号/REが立ち上がってからIO線がハイインピーダンスになるまでの時間tRHZは、例えば、動作条件を上記の通りとしたとき、30ns(最大)である。また、SRモードは、SRチップイネーブル信号/CEが立ち上がった場合にもIO線をハイインピーダンスにする。信号/CEが立ち上がってからIO線がハイインピーダンスになるまでの時間tCHZは、例えば、動作条件を上記の通りとしたとき、20ns(最大)である。これらの動作波形の一例を図9Aに示す。
対して、EDOモードは、データを出力した後、リードイネーブル信号/REが立ち上がっても、IO線をハイインピーダンスにしない。EDOモードは、図8B中の参照符号100に示すように、読み出し動作の間は、リードイネーブル信号/REが立ち下がるまでデータを保持し続ける。EDOモードにおいて、IO線をハイインピーダンスとするのは、下記のときである。
(1) コマンドラッチイネーブル信号CLEが立ち上がったとき
(2) ライトイネーブル信号/WEが立ち下がったとき
(3) アドレスラッチイネーブル信号ALEが立ち上がったとき
(4) チップイネーブル信号/CEが立ち上がったとき
EDOモードでは、信号CLEが立ち上がってからIO線がハイインピーダンスになるまで、又は信号/WEが立ち下がってからIO線がハイインピーダンスになるまで、又は信号ALEが立ち上がってからIO線がハイインピーダンスになるまでの時間を、それぞれ時間tRHZとする。EDOモードにおける時間tRHZは、例えば、動作条件を上記の通りとしたとき、30ns(最大)である。また、EDOモードにおいても、チップイネーブル信号/CEが立ち上がった場合にはIO線をハイインピーダンスにする。信号/CEが立ち上がってからIO線がハイインピーダンスになるまでの時間tCHZは、例えば、動作条件を上記の通りとしたとき、20ns(最大)である。これらの動作波形の一例を図9Bに示す。
以上説明したように、第1読み出しモード、及び第2読み出しモード、本例では、SRモード、及びEDOモードでは、リードサイクル時間tRC、及びEDOモードのリードサイクル時間tRCSが、互いに異なる場合がある。この場合には、読み出しモードに応じて、カードコントローラ内で使用されるシステムクロックの周波数を変えなければならない。システムクロックの周波数を変える場合には、カードコントローラ12に与えられる外部クロック自体の周波数を、SRモードの場合とEDOモードの場合とで変えるようにしても良い。しかし、本例では、カードコントローラ12の内部で、システムクロックの周波数変換を行う。これにより、本例では、カードコントローラチップ12を、SRモードとEDOモードとの双方に対応できるようにする。システムクロックの周波数変換を、カードコントローラ12の内部で行う場合の構成の一例を図10に示す。なお、図10においては、図3に示したMPU22、ROM24、RAM25、及びレジスタ群27の図示は省略する。
図10に示すように、本例に係るカードコントローラ12は、システムクロック発生部30を有する。本例のシステムクロック発生部30は、外部クロックCLKを受け、システムクロックSYS_CLKを発生させる。システムクロックSYS_CLKは、カードコントローラチップ12の制御タイミングの計測に利用され、その制御タイミングの決定に利用される。本例のシステムクロック発生部30は、決定された読み出しモードに応じて、システムクロックSYS_CLKの周波数を変更する。このために、本例のシステムクロック発生部30は、周波数変換回路を含む。周波数変換回路の一例を図11に示す。
図11に示すように、周波数変換回路301は、読み出しモード切り換え信号RE_SELに応じて、外部クロックCLKの周波数を変換して、システムクロックSYS_CLKを出力する。本例では、読み出しモード切り換え信号RE_SELが“0”のとき、システムクロックSYS_CLKの周波数を、SRモードに応じたものとし、読み出しモード切り換え信号RE_SELが“1”のとき、システムクロックSYS_CLKの周波数を、EDOモードに応じたものとする。周波数変換回路301の一例としては、例えば、PLL(Phase Locked Loop)回路を使うことができる。また、外部クロックCLKの発振源としては、CR発振回路、発信器、水晶発振子などを使うことができる。周波数変換の例を図12A〜図12Cに示す。
図12A、図12Bは、SRモードの例を示す。図12Aに示す例は、1サイクル=70nsでデューティが“Low=1/2、High=1/2”の例である。図12Bに示す例は、1サイクル50nsでデューティが“Low=2/3、High=1/3”の例である。どちらでも、SRモードに対応することができる。
図12Cは、EDOモードの例を示す。図12Cに示す例は、1サイクル=30nsでデューティが“Low=1/2、High=1/2”の例である。これで、EDOモードに対応することができる。
本例によれば、システムクロック発生部30は、決定された読み出しモードに応じて、システムクロックSYS_CLKの周波数を変更する。よって、第1読み出しモード(本例では、SRモード)のリードサイクル時間tRCと、第2読み出しモード(本例では、EDOモード)のリードサイクル時間tRCSとが異なる場合においても、カードコントローラチップ12を、第1読み出しモードと第2読み出しモードとの双方に対応させることが可能である。
さらに、第1読み出しモード、及び第2読み出しモード、本例では、SRモード、及びEDOモードとでは、IO線のタイミング制御が異なる場合がある。
例えば、読み出し時に、フラッシュメモリチップ11がIO線15に出力した読み出しデータを、カードコントローラ12内のバッファ26に取り込むタイミングや、IO線15をアクティブにしたり、ハイインピーダンスにしたりするタイミングである。
本例では、カードコントローラチップ12が、第1読み出しモード、及び第2読み出しモードに応じて、IO線15のタイミング制御を変える。カードコントローラチップ12とNAND型フラッシュメモリチップ11との接続の一例を図13に示す。
図13に示すように、カードコントローラチップ12は、フラッシュインタフェース23を介してフラッシュメモリチップ11に接続される。
フラッシュインタフェース23は、フラッシュメモリチップ11に、各種制御信号を与えるとともに、IO線15を介してデータをやりとりする。図13では、制御信号のうち、チップイネーブル信号/CE、コマンドラッチイネーブル信号CLE、ライトイネーブル信号/RE、アドレスラッチイネーブル信号ALE、リードイネーブル信号/REを示す。これら制御信号は、例えば、フラッシュインタフェース23から出力され、フラッシュメモリチップ11の、例えば、ロジック制御回路40に入力される。ロジック制御回路40は、入力された制御信号に従って、フラッシュメモリチップ11を制御する。フラッシュメモリチップ11のNAND側入出力回路41は、IO線15を介して、フラッシュインタフェース23の内部に設けられたインタフェース側入出力回路42に接続される。インタフェース側入出力回路42は、入力回路43、及び出力回路44を含む。入力回路43、及び出力回路44は、IO線15に接続され、入出力制御回路45によって制御される。
本例の入出力制御回路45は、フラッシュインタフェース23の内部に設けられる。そして、本例の入出力制御回路45は、読み出しモード切り換え信号RE_SEL、ライトアクセス時のイネーブル信号WE_GT、チップイネーブル信号/CEのコントローラ内部信号(内部チップイネーブル信号)CE_L、システムクロックSYS_CLK、及びリードイネーブル信号/REのコントローラ内部信号(内部リードイネーブル信号)RE_ENに従って、アウトプットイネーブル信号OE_Lを出力する。本例では、アウトプットイネーブル信号OE_Lが、入力回路43、及び出力回路44を制御する。入出力制御回路45は、入力回路43、及び出力回路44を制御することで、IO線15をアクティブにしたり、ハイインピーダンスにしたりするタイミングを制御する。入出力制御回路45の回路構成の一例を図14に示す。なお、その動作は後述する。
さらに、図13に示すように、フラッシュインタフェース23は、データ取り込み回路46を有する。データ取り込み回路46は、入力回路43に入力されたデータ、即ち、フラッシュメモリチップ11から出力された読み出しデータDT_INを、バッファ26に出力するタイミングを制御する。本例のデータ取り込み回路46は、内部リードイネーブル信号RE_EN、データを取り込むタイミングを決定するクロック信号RE_CLK、及び読み出しモード切り換え信号RE_SELに従って、読み出しデータDT_INを、バッファ26に出力するタイミングを制御する。即ち、データ取り込み回路46は、フラッシュメモリチップ11がIO線15に出力した読み出しデータを、カードコントローラ12内のバッファ26に取り込むタイミングを制御する。データ取り込み回路46から出力されたデータRE_DTはバッファ26へ出力される。データ取り込み回路46の回路の一例を図15に示す。
次に、本例のフラッシュインタフェース23の動作の一例を説明する。
図16はフラッシュインタフェース23のSRモード時における動作波形の一例を示す動作波形図、図17は同じくEDOモード時における動作波形の一例を示す図である。
(SRモード)
SRモードに従ったデータの読み出しは、ステート信号C_STが“DATA_IN”ステートのときに、リードイネーブル信号/REが立ち下がると開始される。そして、本例では、SRモードは、読み出しモード切り換え信号RE_SELが“0(=Low)”のときにアサートされる。
図16に示すように、ステート信号C_STが“DATA_IN”ステートになると、信号RE_ENが“0(=Low)”から“1(=High)”となる(時刻t1)。その後、リードイネーブル信号/REから“1(=High)”が“0(=Low)”となり、フラッシュメモリチップ11からIO線15に読み出しデータDout1が出力される。このとき、図14に示すインタフェース側入出力制御回路45は次のように動作する。
モード切り換え信号RE_SELは“0”である。入出力制御回路45のセレクタ50は、信号RE_SELに従って0入力を選択する。0入力が選択されるので、信号RE_ENはセレクタ51に出力される。セレクタ51は、ORゲート回路56の出力に従って0入力、又は1入力を選択する。ORゲート回路56は、ORゲート回路52の出力、及び信号RE_SELの反転信号を受ける。信号RE_SELは“0”であるから、その反転信号は“1”である。従って、ORゲート回路56は、ORゲート回路52の出力に関わらず“1”を出力する。ORゲート回路56の出力が“1”であるから、セレクタ51は、SRモードの間、1入力を選択し続ける。
セレクタ51は1入力を選択するので、信号RE_ENはフリップフロップ回路53に入力される。フリップフロップ回路53は、システムクロックSYS_CLKの立ち上がりに従って入力された信号を出力する。フリップフロップ回路53の出力はアウトプットイネーブル信号OE_Lである。信号OE_Lは“1(=High)”となる。信号OE_Lが“1”となるので、入出力制御回路45は、入力回路43をイネーブルし、出力回路44をデッセーブルする(時刻t2)。
このように、SRモードでは、入出力制御回路45は、信号RE_ENが“0”から“1”に変化することで、入力回路43をイネーブルし、入出力回路42のモードを“入力”とする。
入出力回路42のモードが“入力”であるので、IO線15に出力されているデータDout1は入力回路43を介してデータDT_INとしてデータ取り込み回路46に入力される。このとき、図15に示すデータ取り込み回路46は次のように動作する。
データ取り込み回路46のセレクタ60は、信号RE_ENに従って1入力を選択する。1入力が選択されるので、データDT_INは、フリップフロップ回路61に入力される。
また、セレクタ62は、信号RE_SELに従って0入力を選択する。0入力が選択されるので、クロック信号RE_CLKがクロック信号RD_CLKとして、フリップフロップ回路61に入力される。フリップフロップ回路61は、クロック信号RD_CLKの立ち上がりに従って入力されたデータDT_INを、データRE_DTとして出力する。この後、フリップフロップ回路61は、クロック信号RD_CLKが立ち上がる毎に入力されたデータDT_INをデータRE_DTとして出力する。
SRモードでは、図16に示すように、クロック信号RD_CLKが、システムクロックSYS_CLKの立ち上がりに同期して立ち上がる。さらに、本例では、リードイネーブル信号/REが、システムクロックSYS_CLKの立ち上がりに同期して立ち上がる。従って、SRモードでは、システムクロックSYS_CLKの立ち上がり、又はリードイネーブル信号/REの立ち上がり、又はシステムクロックSYS_CLK、及びリードイネーブル信号/REの双方の立ち上がりに同期して、データDT_INがバッファ26に取り込まれる。
読み出しが終了し、信号RE_ENが“1”から“0”になると、システムクロックSYS_CLKの1サイクル後に、信号OE_Lは“1”から“0”になる。入出力制御回路45は、入力回路43をデッセーブルし、出力回路44をイネーブルする(時刻t3)。
このように、SRモードでは、入出力制御回路45は、信号RE_ENが“1”から“0”に変化することで、出力回路44をイネーブルし、入出力回路42のモードを“出力”とする。
(EDOモード)
EDOモードに従ったデータの読み出しは、SRモードと同様に、ステート信号C_STが“DATA_IN”ステートのときに、リードイネーブル信号/REが立ち下がると開始される。本例では、EDOモードは、読み出しモード切り換え信号RE_SELが“1(=High)”のときにアサートされる。
図17に示すように、ステート信号C_STが“DATA_IN”ステートになると、信号RE_ENが“0(=Low)”から“1(=High)”となる(時刻t1)。その後、リードイネーブル信号/REから“1(=High)”が“0(=Low)”となり、フラッシュメモリチップ11からIO線15に読み出しデータDout1が出力される。このとき、図14に示すインタフェース側入出力制御回路45は次のように動作する。
モード切り換え信号RE_SELは“1”である。セレクタ50は、信号RE_SELに従って1入力を選択する。信号WE_GT、CE_L、及びRE_ENは、アクセスされていないとき、“WE_GT=1(=High)”、“CE_L=1(=High)”、“RE_EN=0(=Low)”である。信号WE_GT、CE_L、及びRE_ENは、アクセスされる、本例ではリードモードになると、それぞれ“WE_GT=0(=Low)”、“CE_L=0(=Low)”、“RE_EN=1(=High)”に変化する。NORゲート回路54は、“WE_GT=0”、“CE_L=0”であるので、“1”を出力する。ANDゲート回路55は、“NORゲート回路54の出力=1”、“RE_EN=1”であるので、“1”を出力する。ORゲート回路52は、“WE_GT=0”、“CE_L=0”、“RE_EN=1”であるので、“1”を出力する。ORゲート回路56は、信号RE_SELが“1”であるから、その反転信号を受けることで、その出力を、ORゲート回路52の出力に従って変化させる。今、ORゲート回路52の出力は“1”であるから、ORゲート回路56は“1”を出力する。セレクタ51は1入力を選択する。
セレクタ51が1入力を選択することで、信号RE_ENはフリップフロップ回路53に入力される。フリップフロップ回路53は、システムクロックSYS_CLKの立ち上がりに従って入力された信号を出力する。フリップフロップ回路53の出力はアウトプットイネーブル信号OE_Lである。信号OE_Lは“1(=High)”となる。信号OE_Lが“1”となるので、入出力制御回路45は、入力回路43をイネーブルし、出力回路44をデッセーブルする(時刻t2)。
このように、EDOモードでは、入出力制御回路45は、信号RE_ENが“0”から“1”に変化することで、入力回路43をイネーブルし、入出力回路42のモードを“入力”とする。
入出力回路42のモードが“入力”であるので、IO線15に出力されているデータDout1は入力回路43を介してデータDT_INとしてデータ取り込み回路46に入力される。このとき、図15に示すデータ取り込み回路46は次のように動作する。
データ取り込み回路46のセレクタ60は、信号RE_ENに従って1入力を選択する。1入力が選択されるので、データDT_INは、フリップフロップ回路61に入力される。
また、セレクタ62は、信号RE_SELに従って1入力を選択する。1入力が選択されるので、クロック信号RE_CLKの反転信号がクロック信号RD_CLKとして、フリップフロップ回路61に入力される。フリップフロップ回路61は、クロック信号RD_CLKの立ち上がりに従って入力されたデータDT_INを、データRE_DTとして出力する。この後、フリップフロップ回路61は、クロック信号RD_CLKが立ち上がる毎に入力されたデータDT_INをデータRE_DTとして出力する。
EDOモードでは、図17に示すように、クロック信号RD_CLKが、SRモードの場合とは反対にシステムクロックSYS_CLKの立ち下がりに同期して立ち上がる。また、EDOモードにおいても、SRモードと同様に、リードイネーブル信号/REは、システムクロックSYS_CLKの立ち上がりに同期して立ち上がる。従って、EDOモードでは、システムクロックSYS_CLKの立ち下がり、又はリードイネーブル信号/REの立ち下がり、又はシステムクロックSYS_CLK、及びリードイネーブル信号/REの双方の立ち下がりに同期して、データDT_INがバッファ26に取り込まれる。
読み出しが終了し、信号RE_ENが“1”から“0”になると、ORゲート回路52の出力は“1”から“0”に変わる。これを受けて、ORゲート回路56は、その出力を“1”から“0”に変化させる。今、ORゲート回路52の出力は“0”であるから、ORゲート回路56は“0”を出力する。セレクタ51は0入力を選択する。
セレクタ51が0入力を選択することで、フリップフロップ53には、フリップフロップ53自身の出力が入力される。即ち、信号OE_Lは“1”を維持する。
このように、EDOモードでは、信号RE_EN“1”から“0”になっても、信号OE_Lを“0”とせず、“1”を維持する。これは、信号RE_ENが“1”から“0”になった後、SRモードと同様に、システムシステムクロックSYS_CLKの1サイクル後に信号OE_Lを“1”から“0”に変化させてしまうと、データがIO線15上でコンフリクトしてしまうからである。例えば、本例では、データDout4と、カードコントローラチップ12からフラッシュメモリチップ11へ与える出力データDinとがコンフリクトする。従って、本例では、信号RE_EN“1”から“0”になっても、信号OE_Lを“0”とせず、“1”を維持する。
EDOモードのとき、信号OE_Lが“1”から“0”に変化するのは、信号CE_Lがイネーブルになった後(例えば、“0”から“1”に変化)、又は信号WE_GTがイネーブルになった後(例えば、“0”から“1”に変化)である。信号CE_L、又は信号WE_GTの少なくとも一方が“1”になると、ORゲート回路52の出力は“0”から“1”に変わる。これを受けて、ORゲート回路56は、その出力を“0”から“1”に変化させる。今、ORゲート回路52の出力は“1”であるから、ORゲート回路56は“1”を出力する。セレクタ51は1入力を選択する。
ANDゲート回路55は、信号RE_ENが“0”、又はNORゲート回路54の出力が“0”であるから、“0”を出力する。セレクタ51は1入力を選択しているから、フリップフロップ回路53は、システムクロックSYS_CLKの立ち上がりに従って、ANDゲート回路55の出力“0”を出力する。つまり、信号CE_L、及び信号WE_GTの少なくとも一方が“0”から“1”になると、システムクロックSYS_CLKの1サイクル後に、信号OE_Lは“1”から“0”になる。入出力制御回路45は、入力回路43をデッセーブルし、出力回路44をイネーブルする(時刻t3、図17においては、信号CE_Lが“0”から“1”になった場合を示す)。
このように、EDOモードでは、入出力制御回路45は、信号CE_L、及び信号WE_GTの少なくとも一方が“0”から“1”に変化することで、出力回路44をイネーブルし、入出力回路42のモードを“出力”とする。
なお、信号WE_GTは、信号/WEがイネーブル、例えば、“/WE=0(=Low)”になったときだけでなく、信号/CE、CLE、ALEの各信号がイネーブルになったときにも、イネーブルとなる信号である。信号/CEは、例えば、“/CE=0(=Low)”のときにイネーブル、信号CLEは、例えば、“CLE=1(=High)”のときにイネーブル、信号ALEは、例えば、“ALE=1(=High)”のときにイネーブルである。
このように、本例のカードコントローラチップ12は、第1読み出しモード、及び第2読み出しモードに応じて、IO線15のタイミング制御を変える。従って、カードコントローラチップ12を、第1読み出しモードと第2読み出しモードとの双方に、本例では、SRモードとEDOモードとの双方に対応させることが可能である。
具体的には、SRモードのとき、カードコントローラチップ12の入出力制御回路45は、信号RE_ENがイネーブルになったことを受けて、入出力回路42のモードを“入力”に切り換える。そして、信号RE_ENがデッセーブルになったことを受けて、入出力回路42のモードを“出力”に切り換える。
また、EDOモードのとき、入出力制御回路45は、信号RE_ENがイネーブルになったことを受けて、入出力回路42のモードを“入力”に切り換える。これは、SRモードと同様である。そして、SRモードとは異なり、信号CE_L、及びWE_GTの少なくとも一方がイネーブルになったことを受けて、入出力回路42のモードを“出力”に切り換える。そのために、本例では、信号OE_Lを出力するフリップフロップ53に、自身の出力を自身の入力に帰還させる帰還パス57を持つ。さらに、信号RE_ENがデッセーブルになった後でも、信号RE_EN以外の信号、例えば、信号CE_L、及びWE_GTの少なくとも一方がイネーブルになるまで帰還パス57を有効とし、信号CE_L、及びWE_GTの少なくとも一方がイネーブルになると、帰還パス57を無効とする帰還パス制御回路58を持つ。本例の帰還パス制御回路58はORゲート回路52、56を含む。また、この帰還パス制御回路57は、SRモードの間においては、帰還パス57を無効とし続ける。
本例の入出力制御回路45は、帰還パス57、及び帰還パス57を制御する帰還パス制御回路58を含むことで、SRモード、及びEDOモードの双方に対応することができる。
次に、SRモード、及びEDOモードの切り換えの一例を説明する。
本例のカードコントローラチップ12は、フラッシュメモリチップ11を、SRモードで動作させるか、EDOモードで動作させるかを制御することが可能である。モード切り換え制御の一例を図18に示す。
図18に示すように、カードコントローラチップ12は、第2読み出しモード、本例では、EDOモードをエントリーするEDOモードエントリーコマンド“B1h”を発行する。フラッシュメモリチップ11は、コマンド“B1h”を受信すると、SRモードに代えてEDOモードで動作する。反対に発行されない場合には、フラッシュメモリチップ11は、SRモードで動作する。
さらに、カードコントローラチップ12は、エントリーされたEDOモードを解除することもできる。解除するときには、カードコントローラチップ12は、EDOモード解除コマンド“FFh”を発行する。フラッシュメモリチップ11は、コマンド“FFh”を受信すると、EDOモードに代えてSRモードで動作する。
また、本例のフラッシュメモリチップ11は、電源投入後、EDOエントリーコマンド“B1h”を受信するまで、SRモードで動作する。
このように、本例のカードコントローラチップ12は、フラッシュメモリチップ11を、SRモードで動作させるか、EDOモードで動作させるかを制御することが可能である。この制御は、例えば、読み出しモード切り換え信号RE_SELに従って行えば良い。
また、本例は、フラッシュメモリチップ11が、SRモード、及びEDOモードの双方で動作可能なものを例示する。そして、カードコントローラチップ12は、SRモード、及びEDOモードの双方で動作可能なフラッシュメモリチップ11を制御することが可能であることを示している。しかし、カードコントローラチップ12は、SRモードのみ、あるいはEDOモードのみに対応したフラッシュメモリチップ11についても制御することが可能である。
例えば、読み出しモード切り換え信号RE_SELを、例えば、“0”に固定すれば、カードコントローラチップ12は、SRモードのみをアサートする。反対に、“1”に固定すれば、カードコントローラチップ12は、EDOモードのみをアサートする。
このように、カードコントローラチップ12は、SRモード、及びEDOモードの双方で動作可能なフラッシュメモリチップ11だけでなく、SRモードのみ、あるいはEDOモードのみに対応したフラッシュメモリチップ11についても制御できる。
次に、読み出しモード切り換え信号RE_SELの入力の例について説明する。
図19〜図21は、読み出しモード切り換え信号の入力例を示すブロック図である。
(入力例1)
図19に示すように、入力例1は、カードコントローラチップ12に、読み出しモード切り換え信号RE_SELを受信する外部ピン70を設けたものである。外部ピン70には、例えば、電源電位Vdd、又は接地電位Vssが入力される。例えば、外部ピン70に、接地電位Vssが入力されたときには、信号RE_SELは、例えば、“0”となる。よって、SRモードがアサートされる。反対に、外部ピン70に、電源電位Vddが入力されたときには、信号RE_SELは、例えば、“1”となる。よって、EDOモードがアサートされる。
このように、読み出しモード切り換え信号RE_SELは、カードコントローラチップ12の外部から入力することができる。
(入力例2)
図20に示すように、読み出しモード切り換え信号RE_SELは、ホスト機器2から与えるようにしても良い。この場合、レジスタ群27の、例えば、1ビットを、信号RE_SELを保持する領域として割り当てる。信号RE_SELは、ホスト機器2から、ホストインタフェース21を介してレジスタ群27の1ビットに書き込まれ、そして、保持される。保持された信号RE_SELは、レジスタ群27からフラッシュインタフェース23に与えられる。
このように、読み出しモード切り換え信号RE_SELは、ホスト機器2から入力することができる。
(入力例3)
図21に示すように、読み出しモード切り換え信号RE_SELは、フラッシュメモリチップ11から与えるようにしても良い。この場合にも、入力例2と同様に、レジスタ群27の、例えば、1ビットを、信号RE_SELを保持する領域として割り当てる。信号RE_SELは、フラッシュメモリチップ11から、フラッシュインタフェース23を介してレジスタ群27の1ビットに書き込まれ、そして、保持される。保持された信号RE_SELは、レジスタ群27からフラッシュインタフェース23に与えられる。
信号RE_SELを、フラッシュメモリチップ11から与える場合には、信号RE_SELは、例えば、フラッシュメモリチップ11のシステムデータ内に、モード切り換え用の変数データを持たせれば良い。信号RE_SELは、変数データに従って決定される。
このように、読み出しモード切り換え信号RE_SELは、フラッシュメモリチップ11から入力することもできる。
また、上記実施形態は、下記の態様を含む。
(1) 不揮発性半導体メモリと、前記不揮発性半導体メモリを制御するコントローラと、を備え、前記コントローラは、前記不揮発性半導体メモリを、第1読み出しモードで使用するか、及び前記第1読み出しモードよりもアクセス間隔が短い第2読み出しモードで使用するかのいずれかを選択するメモリシステム。
(2) (1)に記載の態様において、前記コントローラは、読み出しモード切り換え信号に応じて、前記不揮発性半導体メモリを前記第1の読み出しモードで使用するか、及び前記第2の読み出しモードで使用するかのいずれかを決定する。
(3) (1)及び(2)いずれかに記載の態様において、前記コントローラは、このコントローラの制御タイミングを決定に利用されるシステムクロックを発生させるシステムクロック発生部を備え、前記システムクロック発生部は、決定された読み出しモードに応じて、前記システムクロックの周波数を変更する。
(4) (1)乃至(3)いずれか一つに記載の態様において、前記コントローラは、前記不揮発性半導体メモリからの読み出しデータが入力される入力回路と、前記不揮発性半導体メモリへの書き込みデータを出力する出力回路と、前記入力回路、及び前記出力回路を制御する入出力制御回路と、を備え、前記入出力制御回路は、前記入力回路をイネーブルするか、及び前記出力回路をイネーブルするかのいずれかを決定するアウトイネーブル信号を発生し、前記入出力制御回路は、決定された読み出しモードに応じて、前記アウトイネーブル信号を、内部リードイネーブル信号の変化に従って切り換えるか、内部リードイネーブル信号以外の信号の変化に従って切り換えるかのいずれかを選択する。
(5) (1)乃至(4)いずれか一つに記載の態様において、前記コントローラは、前記不揮発性半導体メモリからの読み出しデータが入力される入力回路と、前記入力回路に入力された読み出しデータを、システムクロックのエッジに応じて取り込む読み出しデータ取り込み回路と、を備え、前記読み出しデータ取り込み回路は、決定された読み出しモードに応じて、前記読み出しデータを、前記システムクロックの立ち上がりエッジで取り込むか、及び前記システムクロックの立ち下がりエッジで取り込むかのいずれかを選択する。
(6) (1)乃至(5)いずれか一つに記載の態様において、前記コントローラは、前記第2読み出しモードをエントリーする第2読み出しモードエントリーコマンド、及びエントリーされた前記第2読み出しモードを解除する第2読み出しモード解除コマンドを出力し、前記不揮発性半導体メモリは、前記第2読み出しモードエントリーコマンドを受信した後、前記第1読み出しモードに代えて前記第2読み出しモードで動作し、前記第2読み出しモード解除コマンドを受信した後、前記第2読み出しモードに代えて前記第1読み出しモードで動作する。
(7) (6)に記載の態様において、前記不揮発性半導体メモリは、電源投入後、前記第2読み出しモードエントリーコマンドを受信するまで、前記第1読み出しモードで動作する。
(8) (2)乃至(7)いずれか一つに記載の態様において、前記コントローラは、前記読み出しモード切り換え信号を受信する外部ピンを備える。
(9) (2)乃至(7)いずれか一つに記載の態様において、前記読み出しモード切り換え信号は、前記不揮発性半導体メモリを記録メディアとして使用するホスト機器から与えられる。
(10) (2)乃至(7)いずれか一つに記載の態様において、前記読み出しモード切り換え信号は、前記不揮発性半導体メモリから与えられる。
(11) (9)に記載の態様において、前記コントローラは、レジスタを備え、前記レジスタは、前記ホスト機器から与えられた読み出しモード切り換え信号を格納する。
(12) (10)に記載の態様において、前記コントローラは、レジスタを備え、前記レジスタは、前記不揮発性半導体メモリから与えられた読み出しモード切り換え信号を格納する。
(13) (1)乃至(12)いずれか一つに記載の態様において、前記第1読み出しモードはシリアル・リードモードであり、前記第2読み出しモードはエクステンディツド・データ・アウトモードである。
(14) (1)乃至(13)いずれか一つに記載の態様において、前記不揮発性半導体メモリは、NAND型フラッシュメモリである。
(15) 不揮発性半導体メモリと、前記不揮発性半導体メモリを制御し、前記不揮発性半導体メモリを、第1読み出しモードで使用するか、及び前記第1読み出しモードよりもアクセス間隔が短い第2読み出しモードで使用するかを選択するコントローラと、を具備する記録メディア。
(16) ホスト機器に接続可能なホストインタフェースと、半導体メモリに接続可能なメモリインタフェースと、を備え、前記メモリインタフェースは、前記半導体メモリを、第1読み出しモードで使用するか、及び前記第1読み出しモードよりもアクセス間隔が短い第2読み出しモードで使用するかのいずれかを選択するメモリコントローラ。
(17) (15)に記載の態様において、(2)乃至(14)の態様を含む記録メディア。
(18) (16)に記載の態様において、(2)乃至(13)の態様を含むメモリコントローラ。
以上、この発明を一実施形態により説明したが、この発明の実施形態は、上記一実施形態が唯一のものではなく。その実施にあたっては発明の要旨を逸脱しない範囲で種々に変形することが可能である。
例えば、一実施形態では、フラッシュメモリチップ11とカードコントローラチップ12とが一緒にメモリカードに搭載される場合を示したが、フラッシュメモリチップ11のみをメモリカードに搭載し、このメモリカードが装着されるホスト機器側にカードコントローラチップ12を搭載するようにしても良い。
また、フラッシュメモリと、これを制御するコントローラとを別々のチップ11、及び12とする場合を示したが、フラッシュメモリと、これを制御するコントローラとを一つのチップに搭載するようにしても良い。
また、一実施形態は種々の段階の発明を含んでおり、一実施形態において開示した複数の構成要件の適宜な組み合わせにより、種々の段階の発明を抽出することが可能である。
また、一実施形態は、この発明をNAND型フラッシュメモリとそのコントローラに適用した例に基づき説明したが、この発明はNAND型フラッシュメモリとそのコントローラに限られるものではなく、AND型、NOR型等、NAND型以外のフラッシュメモリとそのコントローラにも適用することができる。
さらに、一実施形態は、これらフラッシュメモリとそのコントローラを内蔵したメモリカードに限られるものではなく、半導体集積回路装置のメモリシステムとして、例えば、プロセッサのメモリシステムや、システムLSIのメモリシステムにも応用することができる。