(57)【要約】【課題】消費電流の増加を抑制出来る半導体装置、メモリシステム、及びデータ転送方法を提供すること。【解決手段】ｎビット（ｎは２以上の自然数）の信号ＤＡＴＩを出力する回路ブロック１２と、クロックに同期して前記回路ブロック１２から前記信号ＤＡＴＩを受信し、前記信号ＤＡＴＩのｎビットのうち、前記クロックの前後で値が変化したビットである第１ビットのビット数が、予め定められたｍビット（ｍ＜ｎ、ｍは１以上の自然数）を超えない場合、前記信号ＤＡＴＩの全ビットを１クロックサイクルで外部へ出力し、前記ｍビットを超える場合、前記信号ＤＡＴＩの全ビットを複数クロックサイクルで出力する出力回路１６とを具備し、前記出力回路１６は、前記第１ビットのビット数が前記ｍビットを超える場合、クロックサイクルの各々において出力する前記第１ビットのビット数を前記ｍビット以下とする。【選択図】図７
2010049476.tif 000002
【特許請求の範囲】
【請求項１】
ｎビット（ｎは２以上の自然数）の信号を出力する回路ブロックと、
クロックに同期して前記回路ブロックから前記信号を受信し、前記信号のｎビットのうち、前記クロックの前後で値が変化したビットである第１ビットのビット数が、予め定められたｍビット（ｍ＜ｎ、ｍは１以上の自然数）を超えない場合、前記信号の全ビットを１クロックサイクルで外部へ出力し、前記ｍビットを超える場合、前記信号の全ビットを複数クロックサイクルで出力する出力回路と
を具備し、前記出力回路は、前記第１ビットのビット数が前記ｍビットを超える場合、クロックサイクルの各々において出力する前記第１ビットのビット数を前記ｍビット以下とする
ことを特徴とする半導体装置。
【請求項２】
前記出力回路は、前記信号の各ビットがそれぞれ前記第１ビットであるか、または前記クロックの前後で値が変化しないビットである第２ビットであるかを検出する検出部と、
前記信号の各ビットについて、該ビットとこれよりも下位または上位の前記ビットと、に含まれる前記第１ビットの累積値を生成するカウント部と、
前記信号の各ビットを、前記クロックに同期して外部へ出力する出力部と、
比較値を生成し、前記信号が更新される度に前記比較値を初期値にリセットし、前記累積値の最大値が、前記比較値と前記ｍとの和を超える場合には、前記クロックの前後で前記ｍを加算することにより前記比較値を更新する比較値生成部と、
前記クロックに同期して、前記累積値、前記比較値、及び前記比較値と前記ｍとの和を比較する比較部と、
前記出力部に対して、前記比較値よりも大きく且つ前記和以下である前記累積値、またはゼロである前記累積値に対応する前記ビットの出力を許可し、それ以外の前記累積値に対応する前記ビットの出力を禁止すると共に、前記累積値の最大値が前記和よりも大きい場合に、前記信号の更新を禁止するマスク部と
を備えることを特徴とする請求項１記載の半導体装置。
【請求項３】
前記出力部は、各々が前記信号の各ビットを前記クロックに同期して外部へ出力するフリップフロップを備え、
前記マスク部は、前記ビットの出力を禁止する場合、対応する前記フリップフロップに入力される前記クロックを無効とする
ことを特徴とする請求項２記載の半導体装置。
【請求項４】
請求項１記載の半導体装置と、
前記半導体装置により動作を制御されるＮＡＮＤ型フラッシュメモリと
を具備し、前記出力回路は、前記ＮＡＮＤ型フラッシュメモリへの書き込みデータを、前記信号として出力する
ことを特徴とするメモリシステム。
【請求項５】
クロックに同期してデータを転送するデータ転送方法であって、
転送すべきｎビット（ｎは２以上の自然数）の信号が更新される度に、比較値（比較値＜ｎ、比較値は整数）を初期値にリセットするステップと、
ｎビットの前記信号の各ビットのうち、前記クロックの前後で値が変化したビットである第１ビットのビット数をカウントするステップと、
前記信号の各ビットについて、該ビットとこれよりも下位または上位の前記ビットと、に含まれる前記第１ビットの累積値を生成するステップと、
前記クロックに同期して、前記累積値の各々、前記比較値、及び前記比較値と予め設定された設定値（設定値＜ｎ、設定値は１以上の自然数）との和を比較するステップと、
前記比較の結果、前記比較値よりも大きく且つ前記和以下である前記累積値、またはゼロである前記累積値に対応する前記ビットの出力を許可し、それ以外の累積値に対応する前記ビットの出力を禁止すると共に、いずれかの前記ビットの出力が禁止された場合、前記信号の更新を禁止するステップと、
前記出力を許可された前記ビットを外部へ出力するステップと、
いずれかの前記ビットの出力が禁止された場合、前記比較値を前記比較値と前記設定値との和に更新した後、前記比較するステップに戻るステップと
を具備することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は半導体装置、メモリシステム、及びデータ転送方法に関する。例えば、不揮発性の半導体メモリと、その動作を制御するコントローラとの間のデータ転送方法に関する。
【背景技術】
【０００２】
ＬＳＩ間でデータを転送する際には、データの入出力を司るＩ／Ｏバッファに電流が流れる。この電流の大きさは、（データ信号周波数×負荷容量×電圧×総データ信号数）で表すことが出来る（例えば特許文献１参照）。
【０００３】
従ってＩ／Ｏバッファに流れる電流量は、データバスのデータ信号周波数に比例して増加し、またデータ信号数が多い場合にも増加する。その結果、消費電流が増加し、電源電圧の低下、ＬＳＩの温度上昇、またはノイズの増加という問題が生じる原因となる。
【特許文献１】特開平９−３２１８２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、消費電流の増加を抑制出来る半導体装置、メモリシステム、及びデータ転送方法を提供する。
【課題を解決するための手段】
【０００５】
この発明の一態様に係る半導体装置は、ｎビット（ｎは２以上の自然数）の信号を出力する回路ブロックと、クロックに同期して前記回路ブロックから前記信号を受信し、前記信号のｎビットのうち、前記クロックの前後で値が変化したビットである第１ビットのビット数が、予め定められたｍビット（ｍ＜ｎ、ｍは１以上の自然数）を超えない場合、前記信号の全ビットを１クロックサイクルで外部へ出力し、前記ｍビットを超える場合、前記信号の全ビットを複数クロックサイクルで出力する出力回路とを具備し、前記出力回路は、前記第１ビットのビット数が前記ｍビットを超える場合、クロックサイクルの各々において出力する前記第１ビットのビット数を前記ｍビット以下とする。
【０００６】
また、この発明の一態様に係るメモリシステムは、前記半導体装置と、前記半導体装置により動作を制御されるＮＡＮＤ型フラッシュメモリとを具備し、前記出力回路は、前記ＮＡＮＤ型フラッシュメモリへの書き込みデータを、前記信号として出力する。
【０００７】
また、この発明の一態様に係るデータ転送方法は、クロックに同期してデータを転送するデータ転送方法であって、転送すべきｎビット（ｎは２以上の自然数）の信号が更新される度に、比較値（比較値＜ｎ、比較値は整数）を初期値にリセットするステップと、ｎビットの前記信号の各ビットのうち、前記クロックの前後で値が変化したビットである第１ビットのビット数をカウントするステップと、前記信号の各ビットについて、該ビットとこれよりも下位または上位の前記ビットと、に含まれる前記第１ビットの累積値を生成するステップと、前記クロックに同期して、前記累積値の各々、前記比較値、及び前記比較値と予め設定された設定値（設定値＜ｎ、設定値は１以上の自然数）との和を比較するステップと、前記比較の結果、前記比較値よりも大きく且つ前記和以下である前記累積値、またはゼロである前記累積値に対応する前記ビットの出力を許可し、それ以外の累積値に対応する前記ビットの出力を禁止すると共に、いずれかの前記ビットの出力が禁止された場合、前記信号の更新を禁止するステップと、前記出力を許可された前記ビットを外部へ出力するステップと、いずれかの前記ビットの出力が禁止された場合、前記比較値を前記比較値と前記設定値との和に更新した後、前記比較するステップに戻るステップとを具備する。
【発明の効果】
【０００８】
本発明によれば、消費電流の増加を抑制出来る半導体装置、メモリシステム、及びデータ転送方法を提供出来る。
【発明を実施するための最良の形態】
【０００９】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１０】
この発明の一実施形態に係る半導体装置、メモリシステム、及びデータ転送方法について、図１を用いて説明する。図１は、本実施形態に係るメモリシステムのブロック図である。
【００１１】
＜メモリシステムの全体構成について＞  
図示するようにメモリシステムは、メモリカード１及びホスト機器２を備えている。ホスト機器２は、ホストバスインタフェース（以下、単にホストバスと呼ぶことがある）３を介して接続されるメモリカード１に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００１２】
＜メモリカードの構成について＞  
メモリカード１は、ホスト機器２とホストバスインタフェース３を介して情報の授受を行う。メモリカード１は、ＮＡＮＤ型フラッシュメモリチップ（単にＮＡＮＤ型フラッシュメモリ、またはフラッシュメモリと呼ぶことがある）４、フラッシュメモリチップ４を制御するカードコントローラ５、ＮＡＮＤバスインタフェース（以下、ＮＡＮＤバスと呼ぶ）６、及び複数の信号ピン（第１ピン乃至第９ピン）７を備えている。
【００１３】
複数の信号ピン７は、カードコントローラ４と電気的に接続されている。複数の信号ピン７における第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。
【００１４】
データ０乃至データ３は、第７ピン、第８ピン、第９ピン、および第１ピンにそれぞれ割り当てられている。第１ピンは、また、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピンおよび第６ピンは接地電位Ｖssに、第４ピンは電源電位Ｖddに、第５ピンはクロック信号に割り当てられている。
【００１５】
また、メモリカード１は、ホスト機器２に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器２に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード１内のカードコントローラ４と各種信号およびデータを通信する。例えば、メモリカード１にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してカードコントローラ４にシリアルな信号として送出する。このとき、カードコントローラ４は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１６】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してカードコントローラ４にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖss用の第３ピンとの間に配置されている。複数の信号ピン７とそれに対するホストバスインタフェース３は、ホスト機器２内のホストコントローラとメモリカード１とが通信するのに使用される。
【００１７】
これに対し、フラッシュメモリ５とカードコントローラ４との間の通信は、ＮＡＮＤ型フラッシュメモリ用のＮＡＮＤバス６によって行われる。すなわち、フラッシュメモリ５とカードコントローラ４とは、例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００１８】
例えば、カードコントローラ４がフラッシュメモリ５にデータを書き込む際には、カードコントローラ４は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、およびプログラムコマンド１０Ｈ（或いはキャッシュプログラムコマンド１５Ｈ）をフラッシュメモリ５に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤバスインタフェース６では、複数ビットのコマンドがパラレルに与えられる。
【００１９】
また、ＮＡＮＤバスインタフェース１５では、フラッシュメモリ５に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器２内のホストコントローラとメモリカード１とが通信するインタフェース（ホストバス１４）と、フラッシュメモリ５とカードコントローラ４とが通信するインタフェース（ＮＡＮＤバス６）とは異なる。
【００２０】
＜メモリコントローラの構成について＞  
次に、図１に示すカードコントローラ４の内部構成について図３を用いて説明する。図３はカードコントローラ４のブロック図である。
【００２１】
カードコントローラ４は、フラッシュメモリ５内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。カードコントローラ４は、ホストインタフェースモジュール１０、ＭＰＵ（Micro processing unit）１１、フラッシュコントローラ１２、ＲＯＭ（Read-only memory）１３、ＲＡＭ（Random access memory）１４、バッファ１５、及び入出力回路１６を有する。
【００２２】
ホストインタフェースモジュール１０は、カードコントローラ４とホスト機器２との間のインタフェース処理を行う。
【００２３】
ＭＰＵ１１は、メモリカード１全体の動作を制御する。ＭＰＵ１１は、ＲＯＭ１３に格納されているファームウェアと、ＲＡＭ１４に格納したファームウェアの一部や各種のテーブルなどを利用して、ホスト機器２から要求されたコマンドを実行する。すなわちＭＰＵ１１は、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ５に対して所定の処理を実行したり、バッファ１５を通じたデータ転送処理を制御したりする。
【００２４】
ＲＯＭ１３は、ＭＰＵ１１により実行されるファームウェアなどを格納する。ＲＡＭ１４は、ＭＰＵ１１の作業エリアとして使用され、ファームウェアや各種のテーブル（表）を記憶する。フラッシュコントローラ１２は、カードコントローラ４とフラッシュメモリ５との間のインタフェース処理を行う。
【００２５】
バッファ１５は、ホスト機器２から送られてくるデータをフラッシュメモリ５へ書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、フラッシュメモリ５から読み出されるデータをホスト機器２へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００２６】
入出力回路１６は、ＮＡＮＤ型フラッシュメモリ５との間の信号の授受を司る。入出力回路１６は、ｎビット（ｎは２以上の自然数）の信号を出力する際、直前に出力した信号に比べて値が変化するビット数を、１クロックサイクルあたり最大でｍビットに制限する（ｍ＜ｎ）。
【００２７】
例えば、ｎ＝４、ｍ＝２である場合に、あるクロックサイクルにおいて“００００”を出力し、次に“１１１１”を出力する場合を考える。この場合に入出力回路１６は、まず初めのクロックサイクルにおいて下位２ビットのみを反転して、“００１１”を出力し、次のクロックサイクルにおいて上位２ビットを反転して、“１１１１”を出力する。つまり、値の変化するビット数が設定値ｍを超える場合には、複数のクロックサイクルに分割して信号を出力する。入出力回路１６の構成及び動作の詳細については、後述する。
【００２８】
またカードコントローラ４は、図示せぬクロック生成回路を備える。このクロック生成回路はクロックＣＬＫ１を生成し、これをフラッシュコントローラ１２や入出力回路１６へ出力する。
【００２９】
＜ＮＡＮＤ型フラッシュメモリの構成について＞  
次に、ＮＡＮＤ型フラッシュメモリ５の内部構成について簡単に説明する。図４はＮＡＮＤ型フラッシュメモリ５のブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ５は、メモリセルアレイ２０、ロウデコーダ２１、ページバッファ２２、制御回路２３、及び入出力回路２４を備えている。
【００３０】
＜メモリセルアレイ２０について＞  
まずメモリセルアレイ２０について説明する。メモリセルアレイ２０は、複数のメモリセルユニット２５を備えている。メモリセルユニット２５の各々は、例えば３２個のメモリセルトランジスタＭＴと、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタＭＴの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。メモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【００３１】
同一行にあるメモリセルトランジスタＭＴの制御ゲートはワード線ＷＬ０〜ＷＬ３１のいずれかに共通接続され、同一行にあるメモリセルの選択トランジスタＳＴ１、ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。また、メモリセルアレイ２０において同一列にある選択トランジスタＳＴ１のドレインは、いずれかのビット線ＢＬに共通接続される。更に、選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。なお、選択トランジスタＳＴ１、ＳＴ２は必ずしも両方必要ではなく、メモリセルユニット２５を選択出来るのであればいずれか一方のみが設けられていても良い。
【００３２】
上記構成において、同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには一括してデータが書き込まれ、この単位をページと呼ぶ。更に、同一行にある複数のメモリセルユニット２５は一括してデータが消去され、この単位をメモリブロックと呼ぶ。
【００３３】
＜ロウデコーダ２１について＞  
ロウデコーダ２１は、カードコントローラ４から与えられるロウアドレス信号に従って、メモリセルアレイ２０中におけるいずれかのメモリブロックのロウ方向を選択する。すなわち、ワード線ＷＬのいずれかを選択し、電圧を印加する。
【００３４】
＜ページバッファ２２について＞  
ページバッファ２２は、メモリセルアレイ２０との間のデータの入出力を行う。データの読み出し時には、メモリセルアレイ２０から読み出されたデータをセンス・増幅して、一時的に保持する。またデータの書き込み時には、書き込みデータを一時的に保持し、これをメモリセルアレイ２０のビット線ＢＬに転送する。これらのデータ転送はページ単位で行われる。
【００３５】
＜制御回路２３について＞  
次に制御回路２３について説明する。制御回路２３は、ＮＡＮＤ型フラッシュメモリ５全体の動作を司る。すなわち制御回路２３は、カードコントローラ４からコマンド及びアドレスを受け取る。そして受け取ったコマンド及びアドレスに基づいて、ロウデコーダ２１やページバッファ２２等の動作を制御する。また制御回路７はシーケンサを含み、データの書き込み動作、消去動作、及び読み出し動作における一連の処理（シーケンス）を制御する。
【００３６】
また制御回路２３は、電圧発生回路及びクロック生成回路を含む。電圧発生回路は、上記コマンドに応答して、データの書き込み、読み出し、及び消去に必要な電圧を生成して、これをメモリセルアレイ２０、ロウデコーダ２１、及びページバッファ２２へ出力する。
【００３７】
＜入出力回路２４について＞  
入出力回路２４は、カードコントローラ４との間の信号の授受を司る。すなわち、カードコントローラ４から与えられるコマンドやアドレスを制御回路２３へ転送し、データをページバッファへ転送する。またページバッファ２２から与えられる読み出しデータを、カードコントローラ４へ転送する。
【００３８】
＜入出力回路１６、２４について＞  
次に、上記カードコントローラ４及びＮＡＮＤ型フラッシュメモリ５の備える入出力回路１６、２４の詳細について、図５を用いて説明する。図５は、入出力回路１６、２４の回路図である。以下では、説明の簡単化のため、ＮＡＮＤバス６が４ビットである場合について説明する。また、入出力回路１６についてはデータをＮＡＮＤ型フラッシュメモリ５へ出力する部分についてのみ示し、入出力回路２４についてはデータをカードコントローラ４から受け取る部分についてのみ示す。
【００３９】
＜入出力回路１６について＞  
まず、カードコントローラ４の備える入出力回路１６について説明する。図示するように入出力回路１６は、大まかには入力部３０、検出部４０、カウント部５０、比較値生成部６０、比較部７０、マスク部８０、出力部９０、及びバッファ１１０（出力バッファ）を備えている。
【００４０】
＜入力部３０について＞  
入力部３０は、例えばフラッシュコントローラ１２から与えられる４ビットの信号を、クロックに同期して一時的に保持する。この信号は、ホスト機器から与えられ、例えばＮＡＮＤ型フラッシュメモリ５に書き込むべきデータ等である。以下、４ビットの信号の各ビットを、それぞれデータＤＡＴＩ０〜ＤＡＴＩ３と呼ぶ。入力部３０は、ＡＮＤゲート３１とフリップフロップ３２−０〜３２−３とを有している。
【００４１】
ＡＮＤゲート３１は、マスク部８０から与えられる信号ＭＡＳＫ３と、制御回路２３で生成されたクロックＣＬＫ１とのＡＮＤ演算を行い、演算結果をクロックＣＬＫ２として出力する。
【００４２】
フリップフロップ３２−０〜３２−３の各々は、それぞれクロックＣＬＫ２の立ち上がりエッジに同期してデータＤＡＴＩ０〜ＤＡＴＩ３を取り込み、これをデータＤＡＴＩＡ０〜ＤＡＴＩＡ３として出力する。以下、データＤＡＴＩ０〜ＤＡＴＩ３を区別しない場合には一括して信号ＤＡＴＩと呼び、データＤＡＴＩＡ０〜ＤＡＴＩＡ３を区別しない場合には、一括してデータＤＡＴＩＡと呼ぶ。
【００４３】
＜検出部４０について＞  
検出部４０は、クロックＣＬＫ１の各サイクル間において、データＤＡＴＩ０〜ＤＡＴＩ３の値が変化したか否かを検出する。すなわち検出部４０は、排他的論理和（ＥＸＯＲ）ゲート４１−０〜４１−３を保持している。
【００４４】
ＥＸＯＲゲート４１−０は、データＤＡＴＩ０とデータＤＡＴＩＡ０とのＥＸＯＲ演算を行う。すなわち、データＤＡＴＩ０とデータＤＡＴＩＡ０とが異なる場合には“１（“Ｈ”レベル）”を出力し、等しい場合には“０（“Ｌ”レベル）”を出力する。同様に、ＥＸＯＲゲート４１−１は、データＤＡＴＩ１とデータＤＡＴＩＡ１とのＥＸＯＲ演算を行う。またＥＸＯＲゲート４１−２は、データＤＡＴＩ２とデータＤＡＴＩＡ２とのＥＸＯＲ演算を行う。そしてＥＸＯＲゲート４１−３は、データＤＡＴＩ３とデータＤＡＴＩＡ３とのＥＸＯＲ演算を行う。
【００４５】
＜カウント部５０について＞  
カウント部５０は、データＤＡＴＩのうち、検出部４０において値の変化が検出されたデータＤＡＴＩ数をカウントする。すなわちカウント部５０は、加算器５１−１〜５１−３を備えている。
【００４６】
加算器５１−１は、ＥＸＯＲゲート４１−０の演算結果とＥＸＯＲゲート４１−１の演算結果とを加算する。加算器５１−２は、加算器５１−１の加算結果とＥＸＯＲゲート４１−２の演算結果とを加算する。加算器５１−３は、加算器５１−２の加算結果とＥＸＯＲゲート４１−３の演算結果とを加算する。
【００４７】
そしてカウント部５０は、ＥＸＯＲゲート４１−０の演算結果を信号ＳＵＭ０として出力し、加算器５１−１〜５１−３の演算結果を信号ＳＵＭ１〜ＳＵＭ３として出力する。以下、信号ＳＵＭ０〜ＳＵＭ３を区別しない場合には、一括して信号ＳＵＭと呼ぶ。
【００４８】
＜比較値生成部６０について＞  
比較値生成部６０は、入出力回路１６からＮＡＮＤ型フラッシュメモリ５へ出力される信号のうち、１クロックサイクルあたりに許容出来る変化ビット数である設定値６６を保持する。つまり設定値６６は、１クロックサイクルに転送可能なデータＤＡＴＩ数である。そして設定値を基準にして比較値を生成して、これを比較部７０へ出力する。比較値生成部６０は、レジスタ６１、加算器６２、ＡＮＤゲート６３、フリップフロップ６４、及びインバータ６５を備えている。
【００４９】
レジスタ６１は、上記設定値６６を保持する。加算器６２は、比較値と設定値６６とを加算する。インバータ６５は、信号ＭＡＳＫ３を反転する。ＡＮＤゲート６３は、加算器６２の加算結果と、インバータ６５の反転結果とのＡＮＤ演算を行う。フリップフロップ６４は、クロックＣＬＫ１の立ち上がりエッジに同期して、ＡＮＤゲート６３における演算結果を取り込み、これを新たな比較値として出力する。
【００５０】
＜比較部７０について＞  
比較部７０は、信号ＳＵＭと、比較値生成部６０から与えられる比較値とを元にして、値の変化したデータＤＡＴＩの数を把握し、その数が設定値を超えている場合には、データＤＡＴＩのうちの一部についてのみ、ＮＡＮＤ型フラッシュメモリ５への出力を許可する。
【００５１】
図示するように比較部７０は、信号ＳＵＭ０〜ＳＵＭ３にそれぞれ対応した比較部７１−０〜７１−３を備えている。比較部７１−０〜７１−３の各々は、比較回路７２−０〜７２−３、ＡＮＤゲート７３−０〜７３−３、インバータ７４−０〜７４−３、及びＯＲゲート７５−０〜７５−３をそれぞれ備えている。
【００５２】
比較回路７２−０〜７２−３の各々は、信号ＳＵＭ０〜ＳＵＭ３と、比較値及び“比較値＋設定値”とを比較する。そして、“比較値＋設定値”≧ＳＵＭ＞比較値なる関係が満たされた場合には“Ｈ”レベルを出力し、満たされない場合には“Ｌ”レベルを出力する。
【００５３】
ＡＮＤゲート７３−０〜７３−３の各々は、信号ＳＵＭ０〜ＳＵＭ３のそれぞれのＡＮＤ演算を行う。またインバータ７４−０〜７４−３の各々は、それぞれＡＮＤゲート７３−０〜７３−３の演算結果を反転させる。すなわちインバータ７４−０〜７４−３の各々は、信号ＳＵＭ０〜ＳＵＭ３が“１ｄ０”であれば“Ｈ”レベルを出力し、“１ｄ１”以上であれば“Ｌ”レベルを出力する。
【００５４】
以下では、ダブルクォーテーションマーク（“”）で囲った数字のうち、“１ｄ”は、それに続く数字が１桁の１０進数表記であることを示し、“４ｂ”は、それに続く数字が４桁の２進数表記であることを示し、何も付さない場合には１桁の２進数表記であるものとする。
【００５５】
ＯＲゲート７５−０〜７５−３の各々は、それぞれ比較回路７２−０〜７２−３の比較結果とインバータ７４−０〜７４−３の出力とのＯＲ演算を行い、ＯＲ演算結果を信号ＣＭＰ０〜ＣＭＰ３として出力する。
【００５６】
＜マスク部８０について＞  
マスク部８０は、信号ＣＭＰ０〜ＣＭＰ３に基づいて、データＤＡＴＩ０〜ＤＡＴＩ３のうちのいずれかの出力を禁止するためのマスク信号ＭＡＳＫ０〜ＭＡＳＫ３を生成する。マスク信号ＭＡＳＫ０〜ＭＡＳＫ３がアサート（本実施形態では“Ｌ”レベル）とされることで、データＤＡＴＩ０〜ＤＡＴＩ３の転送がそれぞれ禁止される。
【００５７】
マスク部８０は、フリップフロップ８１−０〜８１−３を備えている。フリップフロップ８１−０〜８１−３の各々は、クロックＣＬＫ１の立ち下がりエッジで信号ＣＭＰ０〜ＣＭＰ３を取り込み、これをマスク信号ＭＡＳＫ０〜ＭＡＳＫ３として出力する。
【００５８】
また、信号ＭＡＳＫ３は、フラッシュコントローラ１２に対して信号ＤＡＴＡ＿ＷＡＩＴとして出力される。信号ＤＡＴＡ＿ＷＡＩＴがアサートされると（“Ｌ”レベル）、新たなデータＤＡＴＩの入力が禁止される。または、フラッシュコントローラ１２は、新たなデータＤＡＴＩの出力を禁止される。
【００５９】
＜出力部９０について＞  
出力部９０は、マスク信号ＭＡＳＫ０〜ＭＡＳＫ３に基づいて、データＤＡＴＩＡ０〜ＤＡＴＩＡ３を、バッファ１１０を介してＮＡＮＤ型フラッシュメモリ５へ出力する。
【００６０】
すなわち出力部９０は、データＤＡＴＩＡ０〜ＤＡＴＩＡ３毎に設けられたＡＮＤゲート９１−０〜９１−３及びフリップフロップ９２−０〜９２−３、並びにフリップフロップ９３及びＡＮＤゲート９４を備えている。
【００６１】
ＡＮＤゲート９１−０〜９１−３の各々は、信号ＭＡＳＫ０〜ＭＡＳＫ３とクロックＣＬＫ１とのＡＮＤ演算を行う。フリップフロップ９２−０〜９２−３の各々は、ＡＮＤゲート９１−０〜９１−３の演算結果の立ち上がりエッジに同期して、データＤＡＴＩＡ０〜ＤＡＴＩＡ３を取り込み、これを信号ＤＡＴＯ０〜ＤＡＴＯ３としてＮＡＮＤ型フラッシュメモリ５へ出力する。
【００６２】
フリップフロップ９３は、クロックＣＬＫ１の立ち下がりエッジに同期して、信号ＭＡＳＬ０を取り込み、信号ＦＯとして出力する。ＡＮＤゲート９４は、信号ＦＯとクロックＣＬＫ１とのＡＮＤ演算を行う。そして、演算結果をクロックＣＬＫ３として、バッファ１１０を介してＮＡＮＤ型フラッシュメモリ５へ出力する。
【００６３】
以下では、ＡＮＤゲート９１−０〜９１−３、フリップフロップ９２−０〜９２−３、及び信号ＤＡＴＯ０〜ＤＡＴＯ３を区別しない場合には、一括してそれぞれＡＮＤゲート９１、フリップフロップ９２、及び信号ＤＡＴＯと呼ぶことにする。
【００６４】
＜入出力回路２４について＞  
次に、ＮＡＮＤ型フラッシュメモリ５が備える入出力回路２４について説明する。図示するように入出力回路２４は、フリップフロップ１００−０〜１００−３及びバッファ（入力バッファ）１２０を有している。
【００６５】
フリップフロップ１００−０〜１００−３の各々は、クロックＣＬＫ３の立ち上がりエッジに同期して、且つバッファ１２０を介して、データＤＡＴＯ０〜ＤＡＴＯ３を受け取る。そして受け取ったデータＤＡＴＯ０〜ＤＡＴＯ３を、データＤＡＴＯＡ０〜ＤＡＴＯＡ３として、例えばページバッファ２２や制御回路２３へ出力する。
【００６６】
＜データの転送方法について＞  
次に、上記構成の入出力回路１６から入出力回路２４へのデータ転送方法について説明する。図６は、本実施形態に係るデータ転送方法のフローチャートである。図示するようにデータ転送方法は、大まかには第１乃至第４ステージＳ１〜Ｓ４に分けることが出来る。以下、各ステージにつき説明する。
【００６７】
＜第１ステージＳ１＞  
まず、ホスト機器からカードコントローラ４にデータが与えられ、このデータがバッファ１５に保持される。そしてフラッシュコントローラ１２は、バッファ１５に蓄えられたデータのうち、４ビットのデータＤＡＴＩを、入出力回路１６に入力する（ステップＳ１０）。すると検出部４０が、各データＤＡＴＩにつき値が反転したか否かを検出する（ステップＳ１１）。つまり、入力データにおけるビット反転の有無を検出する。引き続きカウント部５０が、反転したデータＤＡＴＩ数をカウントする（ステップＳ１２）。すなわち、入力データにおける反転ビット数をカウントする。
【００６８】
そして、信号ＭＡＳＫ３＝“Ｈ”であれば（ステップＳ１３、ＮＯ）、比較値生成部６０は、比較値を“０”とする（ステップＳ１４）。他方、信号ＭＡＳＫ３＝“Ｌ”であれば（ステップＳ１３、ＹＥＳ）、比較値生成部６０は、比較値を（比較値＋設定値）とする（ステップＳ１５）。そして比較部７０が、信号ＳＵＭと、ステップＳ１４またはＳ１５で生成された比較値、及びこの比較値と設定値とを合算した値とを比較する（ステップＳ１６）。その後マスク部８０は、クロックの立ち下がりエッジでステップＳ１６の比較結果を取り込み、信号ＭＡＳＫを更新する（ステップＳ１７）。
【００６９】
＜第２ステージＳ２＞  
次に、第１ステージＳ１の次のクロックサイクルにおいて第２ステージＳ２の処理が行われる。なお、第１ステージＳ１と第２ステージＳ２とはパイプライン的に実行される。従って、第２ステージＳ２の処理が開始されると同時に、第１ステージＳ１の処理も再度開始される。
【００７０】
第２ステージＳ２で行われる処理は、入力部３０から出力部９０へのデータ転送である。信号ＭＡＳＫ３＝“Ｈ”であれば（ステップＳ２０、ＮＯ）、入力部３０は第１ステージＳ１のステップＳ１０で入力されたデータＤＡＴＩを、データＤＡＴＩＡとして出力部９０へ出力する（ステップＳ２１）。また、信号ＤＡＴＡ＿ＷＡＩＴが“Ｈ”レベルとなるので、当該第２ステージＳ２と平行して行われる第１ステージＳ１においては、データＤＡＴＩ入力が許可され、入出力回路２４に入力されるデータＤＡＴＩが更新される（ステップＳ２２）。
【００７１】
他方、信号ＭＡＳＫ３＝“Ｌ”であれば（ステップＳ２０、ＹＥＳ）、クロックＣＬＫ２が“Ｌ”レベルで固定されるため、入力部３０は第１ステージＳ１のステップＳ１０で入力されたデータＤＡＴＩを取り込まず、その結果、データＤＡＴＩＡを出力しない（ステップＳ２３）。すなわち、データＤＡＴＩＡは不変である。また、信号ＤＡＴＡ＿ＷＡＩＴが“Ｌ”レベルとなるので、第１ステージＳ１における新たなデータＤＡＴＩの入力が禁止される（ステップＳ２４）。すなわち、データＤＡＴＩも不変である。
【００７２】
＜第３ステージＳ３＞  
第３ステージＳ３で行われる処理は、出力部９０からＮＡＮＤ型フラッシュメモリ５の入出力回路２４へのデータ転送である。
【００７３】
信号ＭＡＳＫ＝“Ｈ”であれば（ステップＳ３０、ＮＯ）、対応するフリップフロップ９２の各々は、ＡＮＤゲート９１の出力の立ち上がりエッジに同期して、つまりクロックＣＬＫ１の立ち上がりエッジに同期して、データＤＡＴＩＡを取り込み、これをデータＤＡＴＯとしてＮＡＮＤ型フラッシュメモリ５の入出力回路２４へ出力する（ステップＳ３１）。
【００７４】
他方、信号ＭＡＳＫ＝“Ｌ”であれば（ステップＳ３０、ＮＯ）、対応するＡＮＤゲートの出力が“Ｌ”レベルに固定される。従って、これに対応するフリップフロップ９２はデータＤＡＴＩＡを取り込まず、その結果データＤＡＴＯも出力しない（ステップＳ３３）。すなわち、データＤＡＴＯは不変である。
【００７５】
また、信号ＭＡＳＫ０に基づいて、クロックＣＬＫ３が生成される。信号ＭＡＳＫ０＝“Ｌ”であれば、信号ＦＯ＝“Ｌ”レベルとなり、クロックＣＬＫ３は“Ｌ”レベルで固定される。
【００７６】
＜第４ステージＳ４＞  
次に、第４ステージＳ４の処理が行われる。第４ステージＳ４は、第１乃至第３ステージＳ１〜Ｓ３とパイプライン的に実行される。第４ステージで行われる処理は、ＮＡＮＤ型フラッシュメモリ５の入出力回路２４で実行される。
【００７７】
信号ＭＡＳＫ０＝“Ｈ”であれば（ステップＳ４０、ＮＯ）、入出力回路２４のフリップフロップ１００−０〜１００−３はそれぞれ、データＤＡＴＯ０〜ＤＡＴＯ３をクロックＣＬＫ３の立ち上がりエッジに同期して取り込み、これをデータＤＡＴＯＡ０〜ＤＡＴＯＡ３として出力する（ステップＳ４１）。つまり、データＤＡＴＯＡ０〜ＤＡＴＯＡ３が更新される。
【００７８】
他方、信号ＭＡＳＫ０＝“Ｈ”であれば（ステップＳ４０、ＹＥＳ）、クロックＣＬＫ３は“Ｌ”レベルに固定されるため、フリップフロップ１００−０〜１００−３はデータＤＡＴＯ０〜ＤＡＴＯ３を取り込まない（ステップＳ４３）。すなわち、データＤＡＴＯＡ０〜ＤＡＴＯ３は不変である。
【００７９】
＜データの転送方法の具体例について＞  
上記のデータ転送方法の具体例について、図７を用いて説明する。図７は、図５における各種信号のタイミングチャートである。以下では、設定値が２、すなわち、データＤＡＴＯが１度に変化出来るビット数が２である場合を例に挙げて説明する。なお、信号ＭＡＳＫ０〜ＭＡＳＫ３の初期値は全て“Ｈ”レベルであり、またデータＤＡＴＩＡ０〜ＤＡＴＩＡ３の初期値は全て“０”であるものとする。
【００８０】
（時刻ｔ０〜ｔ１）  
まず時刻ｔ０において、４ビットのデータが入出力回路１６に入力される。このデータＤＡＴＩ［３：０］は、“４ｂ００００”である。つまり、データＤＡＴＩ０＝ＤＡＴＩ１＝ＤＡＴＩ２＝ＤＡＴＩ３＝“０”である。そして時刻ｔ０〜ｔ１において、“４ｂ００００”に関して第１ステージＳ１の処理が行われる。
【００８１】
時刻ｔ０〜ｔ１において、ＤＡＴＩＡ＝“０”であるので、検出部４０のＥＸＯＲゲートの出力は全て“０（“Ｌ”レベル）”となる。すると、カウント部５０において、信号ＳＵＭ０＝“１ｄ０”となる。また加算器５１−１の出力である信号ＳＵＭ１は、ＥＸＯＲゲート４１−１の出力（“０”）＋ＳＵＭ０＝“１ｄ０”となる。同様にして、信号ＳＵＭ２＝ＳＵＭ３＝“１ｄ０”となる。
【００８２】
また、信号ＭＡＳＫ３＝“Ｈ”であるので、比較値生成部６０におけるＡＮＤゲート６３の出力は“Ｌ”レベルとなる。そのため、比較値は“１ｄ０”である。
【００８３】
すると、比較値＝“１ｄ０”、比較値＋設定値＝“１ｄ２”、信号ＳＵＭ０〜ＳＵＭ３＝“１ｄ０”であるから、比較部７０の比較回路７１−０〜７１−３においては、“比較値＋設定値”≧ＳＵＭ＞比較値なる関係が満たされない。従って比較回路７１−０〜７１−３は“Ｌ”レベルを出力する。他方、信号ＳＵＭ０〜ＳＵＭ３の全てが“１ｄ０”であるから、インバータ７４−０〜７４−３の出力の全てが“Ｈ”レベルとなる。その結果、信号ＣＭＰ０〜ＣＭＰ３は“Ｈ”レベルとなる。
【００８４】
そして、クロックＣＬＫ１の立ち下がりエッジにおいて、信号ＣＭＰ０〜ＣＭＰ３がそれぞれ、マスク部８０のフリップフロップ８１−０〜８１−３に取り込まれる。
【００８５】
（時刻ｔ１〜ｔ２）  
次に、時刻ｔ０〜ｔ１の次のクロックサイクルである時刻ｔ１〜ｔ２について説明する。時刻ｔ１において、引き続き４ビットのデータＤＡＴＩ［３：０］＝“４ｂ１１１１”が入出力回路２４に入力される。従って時刻ｔ１〜ｔ２では、時刻ｔ０で入力されたデータＤＡＴＩ［３：０］＝“４ｂ００００”についての第２ステージＳ２の処理と、“４ｂ１１１１”についての第１ステージの処理とが同時実行される。以下、それぞれについて説明する。
【００８６】
・データ“４ｂ００００”について  
時刻ｔ１では、信号ＭＡＳＫ３＝“Ｈ”であるので、入力部３０におけるフリップフロップ３２−０〜３２−３の各々は、クロックＣＬＫ１が立ち上がりエッジに同期してデータＤＡＴＩ０〜ＤＡＴＩ３を取り込み、データＤＡＴＩＡ０〜ＤＡＴＩＡ３として出力する。つまり、データＤＡＴＩＡ［３：０］＝“４ｂ００００”となる。
【００８７】
・データ“４ｂ１１１１”について  
時刻ｔ１において、データＤＡＴＩ［３：０］＝“４ｂ１１１１”であり、データＤＡＴＩＡ［３：０］＝“４ｂ００００”であるから、ＥＸＯＲゲートの出力は全て“１（“Ｈ”レベル）”となる。すると、カウント部５０において、信号ＳＵＭ０＝“１ｄ１”となる。また加算器５１−１の出力である信号ＳＵＭ１は、ＥＸＯＲゲート４１−１の出力（“１”）＋ＳＵＭ０＝“１ｄ２”となる。同様にして、信号ＳＵＭ２＝“１ｄ３”、ＳＵＭ３＝“１ｄ４”となる。
【００８８】
この時点では、信号ＭＡＳＫ３＝“Ｈ”であるので、比較値生成部６０におけるＡＮＤゲート６３の出力は“Ｌ”レベルとなる。そのため、比較値は“１ｄ０”であり、比較値＋設定値＝“１ｄ２”である。
【００８９】
すると比較回路７２−０では、信号ＳＵＭ０＝“１ｄ１”であるので、“比較値＋設定値”≧ＳＵＭ０＞比較値なる関係が満たされ、信号ＣＭＰ０＝“Ｈ”となる。同様に比較回路７２−１では信号ＳＵＭ１＝“１ｄ２”であるので、信号ＣＭＰ１＝“Ｈ”となる。
【００９０】
他方、比較回路７２−２では、信号ＳＵＭ２＝“１ｄ３”であるので、“比較値＋設定値”≧ＳＵＭ０＞比較値なる関係が満たされず、信号ＣＭＰ２＝“Ｌ”となる。同様に比較回路７２−３では信号ＳＵＭ３＝“１ｄ４”であるので、信号ＣＭＰ３＝“Ｈ”となる。
【００９１】
以上の結果、信号ＭＡＳＫ０、ＭＡＳＫ１は“Ｈ”レベルを維持する一方、信号ＭＡＳＫ２、ＭＡＳＫ３は、クロックＣＬＫ１の立ち下がりエッジにおいて“Ｈ”レベルから“Ｌ”レベルに反転する。
【００９２】
（時刻ｔ２〜ｔ３）  
次に、時刻ｔ１〜ｔ２の次のクロックサイクルである時刻ｔ２〜ｔ３について説明する。時刻ｔ２においては、信号ＭＡＳＫ３が“Ｌ”レベルとされたことにより、すなわち信号ＤＡＴＡ＿ＷＡＩＴがアサートされたことにより、新たなデータＤＡＴＩの入力が禁止される。従って、データＤＡＴＩ［３：０］は“４ｂ１１１１”で不変である。
【００９３】
従って時刻ｔ２〜ｔ３では、時刻ｔ０で入力された“４ｂ００００”についての第３ステージＳ３の処理と、時刻ｔ１で入力された“４ｂ１１１１”についての第２ステージの処理と、“４ｂ１１１１”についての再度の第１ステージＳ１の処理とが実行される。
【００９４】
・データ“４ｂ００００”について  
時刻ｔ１〜ｔ２のクロックＣＬＫ１＝“Ｈ”レベル期間で信号ＭＡＳＫ０〜ＭＡＳＫ３は“Ｈ”レベルであったため、出力部９０のフリップフロップ９２−０〜９２−３は、クロックＣＬＫ１の立ち上がりエッジに同期してデータＤＡＴＩＡ３［３：０］＝“４ｂ００００”を取り込み、これをデータＤＡＴＯ［３：０］＝“４ｂ００００”として出力する。
【００９５】
・データ“４ｂ１１１１”の第２ステージＳ２の処理について  
時刻ｔ２において信号ＭＡＳＫ３＝“Ｌ”である。従って、クロックＣＬＫ２は“Ｌ”レベルで固定される。従って、入力部３０におけるフリップフロップ３２−０〜３２−３はデータＤＡＴＩ０〜ＤＡＴＩ３を取り込まない。すなわち、データＤＡＴＩＡ［３：０］は“４ｂ００００”を維持する。
【００９６】
・データ“４ｂ１１１１”の第１ステージＳ１の処理について  
時刻ｔ２においてデータＤＡＴＩ［３：０］は変化しないので、“４ｂ１１１１”について再度、第１ステージＳ１の処理が実行される。
【００９７】
時刻ｔ１〜ｔ２の場合と同様、ＥＸＯＲゲートの出力は全て“１（“Ｈ”レベル）”となる。よって、信号ＳＵＭ０＝“１ｄ１”、ＳＵＭ１＝“１ｄ２”、ＳＵＭ２＝“１ｄ３”、及びＳＵＭ３＝“１ｄ４”である。
【００９８】
但し、この時点では信号ＭＡＳＫ３＝“Ｌ”であるので、比較値生成部６０におけるＡＮＤゲート６３の出力は“Ｈ”レベルとなる。そのため比較値は、それまでの比較値“１ｄ０”に、設定値６６（“１ｄ２”）を加算した値に更新される。すなわち、比較値は“１ｄ２”である。
【００９９】
従って、比較値＝“１ｄ２”、比較値＋設定値＝“１ｄ４”となる。すると、“比較値＋設定値”≧ＳＵＭ０＞比較値なる関係は、時刻ｔ１〜ｔ２の場合とは逆に、比較回路７２−２、７２−３で満たされ、比較回路７２−０、７２−１で満たされない。すなわち、信号ＣＭＰ０＝ＣＭＰ１＝“Ｌ”、信号ＣＭＰ２＝ＣＭＰ３＝“Ｈ”となる。
【０１００】
以上の結果、クロックＣＬＫ１の立ち下がりエッジにおいて、信号ＭＡＳＫ０、ＭＡＳＫ１は“Ｈ”レベルから“Ｌ”レベルへ反転し、信号ＭＡＳＫ２、ＭＡＳＫ３は“Ｌ”レベルから“Ｈ”レベルに反転する。
【０１０１】
（時刻ｔ３〜ｔ４）  
次に、時刻ｔ２〜ｔ３の次のクロックサイクルである時刻ｔ３〜ｔ４について説明する。時刻ｔ３においては、信号ＭＡＳＫ３が“Ｈ”レベルとされたことにより、新たなデータＤＡＩＴＩ［３：０］＝“４ｂ１１１０”が入力される。
【０１０２】
従って時刻ｔ３〜ｔ４では、時刻ｔ０で入力された“４ｂ００００”についての第４ステージＳ４の処理と、時刻ｔ１で入力された“４ｂ１１１１”についての第３ステージＳ３及び第２ステージＳ２の処理と、“４ｂ１１１０”についての第１ステージＳ１の処理とが実行される。
【０１０３】
・データ“４ｂ００００”について  
時刻ｔ２〜ｔ３では、クロックＣＬＫ１＝“Ｈ”レベル期間で信号ＭＡＳＫ０は“Ｈ”レベルであり、ＣＬＫ１＝“Ｌ”レベル期間における信号ＦＯは“Ｈ”レベルである。従って、時刻ｔ３においてＮＡＮＤ型フラッシュメモリ５の入出力回路２４のフリップフロップ１００−０〜１００−３は、クロックＣＬＫ１の立ち上がりエッジに同期してデータＤＡＴＯ［３：０］＝“４ｂ００００”を取り込み、データＤＡＴＯＡ［３：０］＝“４ｂ００００”として出力する。
【０１０４】
以上より、データ“４ｂ００００”がカードコントローラ４からＮＡＮＤ型フラッシュメモリ５に転送され、ページバッファ２２や制御回路２３等に取り込まれる。
【０１０５】
・データ“４ｂ１１１１”の第２ステージＳ２の処理について  
時刻ｔ３において信号ＭＡＳＫ３＝“Ｈ”である。従って、入力部３０におけるフリップフロップ３２−０〜３２−３はデータＤＡＴＩ［３：０］を取り込み、これをデータＤＡＴＩＡ［３：０］として出力する。すなわち、データＤＡＴＩＡ［３：０］は、“４ｂ００００”から“４ｂ１１１１”に更新される。
【０１０６】
・データ“４ｂ１１１１”の第３ステージＳ３の処理について  
時刻ｔ２〜ｔ３のクロックＣＬＫ１＝“Ｈ”レベル期間で信号ＭＡＳＫ０、ＭＡＳＫ１は“Ｈ”レベルである。従って、出力部９０のフリップフロップ９２−０、９２−１は、データＤＡＴＩＡ０（“Ｈ”レベル）、ＤＡＴＩＡ１（“Ｈ”レベル）をクロックＣＬＫ１に同期して取り込み、これをデータＤＡＴＯ０、ＤＡＴＯ１として出力する。すなわち、データＤＡＴＯ０、ＤＡＴＯ１はそれぞれ“０”から“１”に更新される。
【０１０７】
他方、信号ＭＡＳＫ２、ＭＡＳＫ３は“Ｌ”レベルであるから、ＡＮＤゲート９１−２、９１−３の出力は“Ｌ”レベルに固定される。よって、フリップフロップ９２−２、９２−３は、データＤＡＴＩＡ２（“Ｈ”レベル）、ＤＡＴＩＡ３（“Ｈ”レベル）を取り込まない。すなわち、データＤＡＴＯ２、ＤＡＴＯ３は共に“０”のままである。  
その結果、データＤＡＴＯ［３：０］＝“４ｂ００１１”となる。
【０１０８】
・データ“４ｂ１１１０”について  
時刻ｔ３において、データＤＡＴＩ［３：０］＝“４ｂ１１１０”であり、データＤＡＴＩＡ［３：０］＝“４ｂ１１１１”であるから、信号ＳＵＭ０＝ＳＵＭ１＝ＳＵＭ２＝ＳＵＭ３＝“１ｄ１”となる。
【０１０９】
また信号ＭＡＳＫ３＝“Ｈ”であるので、比較値は“１ｄ０”である。よって、信号ＭＡＳＫ０＝ＭＡＳＫ１＝“Ｈ”、ＭＡＳＫ２＝ＭＡＳＫ３＝“Ｌ”となる。
【０１１０】
（時刻ｔ４〜ｔ５）  
次に、時刻ｔ３〜ｔ４の次のクロックサイクルである時刻ｔ４〜ｔ５について説明する。時刻ｔ３〜ｔ４では、時刻ｔ１で入力された“４ｂ１１１１”についての第３、第４ステージＳ３、Ｓ４の処理と、時刻ｔ２で入力された“４ｂ１１１０”についての第２ステージの処理とが実行される。なお、時刻ｔ４でデータＤＡＴＩ［３：０］として“４ｂ１１１０”が入力されているが、これについての処理は前述の通りであるので説明は省略する。
【０１１１】
・データ“４ｂ１１１１”の第４ステージＳ４の処理について  
時刻ｔ３〜ｔ４では、クロックＣＬＫ１＝“Ｈ”レベル期間で信号ＭＡＳＫ０は“Ｌ”レベルであり、ＣＬＫ１＝“Ｌ”レベル期間での信号ＦＯは“Ｌ”レベルである。よって、時刻ｔ４において出力部９０のＡＮＤゲート９４の出力は“Ｌ”レベルに固定される。従って、ＮＡＮＤ型フラッシュメモリ５の入出力回路２４はデータＤＡＴＯ［３：０］＝“４ｂ００１１”を取り込まない。すなわち、データＤＡＴＯＡ［３：０］は“４ｂ００００”を維持する。
【０１１２】
・データ“４ｂ１１１１”の第３ステージＳ３の処理について  
また、時刻ｔ３〜ｔ４のクロックＣＬＫ１＝“Ｈ”レベル期間で信信号ＭＡＳＫ２、ＭＡＳＫ３は“Ｈ”レベルである。従って、出力部９０のフリップフロップ９２−２、９２−３は、データＤＡＴＩＡ２（“Ｈ”レベル）、ＤＡＴＩＡ３（“Ｈ”レベル）をクロックＣＬＫ１に同期して取り込み、これをデータＤＡＴＯ２、ＤＡＴＯ３として出力する。すなわち、データＤＡＴＯ２、ＤＡＴＯ３はそれぞれ、“０”から“１”に更新される。
【０１１３】
他方、信号ＭＡＳＫ０、ＭＡＳＫ１は“Ｌ”レベルであるから、ＡＮＤゲート９１−０、９１−１の出力は“Ｌ”レベルに固定される。よって、フリップフロップ９２−０、９２−１は、データＤＡＴＩＡ２（“Ｈ”レベル）、ＤＡＴＩＡ３（“Ｈ”レベル）を取り込まない。つまり、データＤＡＴＯ０、ＤＡＴＯ１は不変であり、“１”を維持する。  
その結果、データＤＡＴＯ［３：０］＝“４ｂ１１１１”となる。
【０１１４】
・データ“４ｂ１１１０”の第２ステージＳ２の処理について  
時刻ｔ３において信号ＭＡＳＫ３＝“Ｈ”である。従って、入力部３０におけるフリップフロップ３２−０〜３２−３はデータＤＡＴＩ［３：０］を転送する。すなわち、データＤＡＴＩＡ［３：０］は“４ｂ１１１０”となる。
【０１１５】
（時刻ｔ５〜）  
次に、時刻ｔ４〜ｔ５の次のクロックサイクルである時刻ｔ５以降について説明する。
【０１１６】
時刻ｔ４〜ｔ５では、クロックＣＬＫ１＝“Ｈ”レベル期間で信号ＭＡＳＫ０は“Ｈ”レベルであるので、“Ｌ”レベル期間において信号ＦＯは“Ｈ”レベルである。従って、時刻ｔ５において、ＮＡＮＤ型フラッシュメモリ５の入出力回路２４はデータＤＡＴＯ［３：０］＝“４ｂ１１１１”を取り込む。すなわち、データＤＡＴＯＡ［３：０］は、“４ｂ００００”から“４ｂ１１１１”に更新される。これにより、データ“４ｂ１１１１”がカードコントローラ４からＮＡＮＤ型フラッシュメモリ５に転送され、ページバッファ２２や制御回路２３等に取り込まれる。
【０１１７】
また、出力部９０はＤＡＴＩＡ［３：０］＝“４ｂ１１１０”をデータＤＡＴＯ［３：０］として出力し、次のクロックサイクルにおいて、ＮＡＮＤ型フラッシュメモリ５内部に取り込まれる。
【０１１８】
以上のようにして、カードコントローラ４からＮＡＮＤ型フラッシュメモリ５へのデータ転送が行われる。
【０１１９】
＜効果＞  
上記のように、本実施形態に係る半導体装置、メモリシステム、及びデータ転送方法によれば、消費電流の増加を抑制出来る。本効果につき、以下説明する。
【０１２０】
背景技術で説明したように、ＬＳＩのＩ／Ｏバッファに流れる電流は、データ信号周波数、負荷容量、電圧、及び総データ信号数等に比例して増加する。特に近年の半導体メモリでは、その動作周波数は上昇傾向にあり、またデータ信号数（バス幅）も増加する傾向にある。その結果、Ｉ／Ｏバッファの消費電流は増加傾向にある。特に、Ｉ／Ｏバッファからの出力データのうち、値が変化するビット数が多い程、消費電流は増加する。そのため、半導体メモリの消費電力が増加し、またデータ転送時に大きなノイズが発生する等の問題があった。
【０１２１】
この点、本実施形態に係る構成であると、ｎビットの入力データのうちのｍビット（ｍ＜ｎ）を、値の変化を許容する最大ビット数（設定値）としている。そして、変化ビット数がｍビットを超えた場合には、１サイクル当たりの変化ビット数をｍビットとしつつ、（ｎ／ｍ）クロックサイクルをかけて、入力データを転送する。すなわち、ｎビットの入力データを、（ｎ／ｍ）クロックサイクルに分割してデータ転送を行う。
【０１２２】
例えば入力データが４ビット（ｎ＝４）であり、設定値が２ビット（ｍ＝２）である場合において、変化ビット数が２ビットを超えた場合、入力データは２クロックサイクルで転送される。すなわち、まず初めのクロックサイクルにおいては、４ビットのうちの下位２ビットが転送され、次のクロックサイクルにおいて上位２ビットが転送される。
【０１２３】
以上のように、バッファ１１０、１２０間を伝送するデータ（ＤＡＴＯ［３：０］）のうち、変化ビット数を予め定めた値を超えないようにすることで、バッファ１１０、１２０での消費電流の増加を抑制出来る。これにより、半導体メモリの消費電力を低減し、またデータ転送時のノイズを抑制出来る。
【０１２４】
なお、上記実施形態ではｎ＝４、ｍ＝２である場合を例に挙げて説明した。すなわち、転送すべきデータが４ビットであり、バッファ１１０からの出力信号の、１クロックサイクルにおいて許容する反転ビット数の最大ビット数が２ビットである場合について説明した。しかし、ｎが４ビットでｍが２ビットである場合に限られるものではない。例えばｎ＝８、ｍ＝２の場合であっても良い。この場合には、転送すべきデータは最大で（ｎ／ｍ）＝４クロックサイクルに分割されて、転送される。この場合について、図８を用いて説明する。図８は、ｎ＝８、ｍ＝２の場合における、データＤＡＴＩ［７：０］、ＤＡＴＯ［７：０］、及びＤＡＴＯＡ［７：０］のタイミングチャートである。図示するように、出力すべきデータは、順に“８ｂ００００００００”、“８ｂ１１１１１１１１”、及び“８ｂ００００１１１１”であったとする。
【０１２５】
図示するように、ＤＡＴＩ［７：０］が“８ｂ００００００００”から“８ｂ１１１１１１１１”に変化すると、ＤＡＴＯ［７：０］は、４クロックサイクルをかけて、“８ｂ００００００００”から“８ｂ１１１１１１１１”に変化する。すなわち、時刻ｔ３〜ｔ６に示すように、１クロックサイクル毎に、下位ビット側から２ビットずつ、ビットの値が“０”から“１”に反転する。従って、変化し始めてから４クロックサイクル目で、ＤＡＴＯ［７：０］の全ビットが“１”となる（更新される）。
【０１２６】
この期間、比較値は“１ｄ０（初期値）”から、“１ｄ２”、“１ｄ４”、及び“１ｄ６”の順に変化する。また、ＤＡＴＯ［７：０］の全ビットが“１”となるまでは、ＤＡＴＩ［７：０］の“８ｂ００００１１１１”への更新は禁止される。
【０１２７】
同様にして、ＤＡＴＩ［７：０］が“８ｂ１１１１１１１１”から“８ｂ００００１１１１”に変化すると、ＤＡＴＯ［７：０］は、２クロックサイクルをかけて、“８ｂ１１１１１１１１”から“８ｂ００００１１１１”に変化する。
【０１２８】
また、ＤＡＴＯＡ［７：０］は、ＤＡＴＯ［７：０］の全ビットが更新された後に、更新される。すなわち、時刻ｔ４〜ｔ６の期間は、ＤＡＴＯ［７：０］は更新の最中であるので、ＤＡＴＯＡ［７：０］は更新されず、“８ｂ００００００００”のままである。そして時刻ｔ６においてＤＡＴＯ［７：０］の全ビットの更新が完了すると、時刻ｔ７においてＤＡＴＯＡ［７：０］も更新される。これにより、ＮＡＮＤ型フラッシュメモリ５が不正なデータを取り込むことを防止出来る。
【０１２９】
また、上記実施形態では、複数のクロックサイクルをかけてＤＡＴＯを更新する場合、下位ビットから順にビットを反転していく場合を例に説明した。しかし、上位ビットから順に反転しても良い。すなわち、図７の時刻ｔ２〜ｔ５においてＤＡＴＯ［３：０］は、“４ｂ００００”→“４ｂ１１００”→“４ｂ１１１１”の順に変化しても良い。この場合、図５において、信号ＳＵＭ３をＥＸＯＲゲート４１−３の出力とし、信号ＳＵＭ２を信号ＳＵＭ３とＥＸＯＲゲート４１−２の出力との和とし、信号ＳＵＭ１を信号ＳＵＭ２とＥＸＯＲゲート４１−１の出力との和とし、信号ＳＵＭ０を信号ＳＵＭ１とＥＸＯＲゲート４１−０の出力との和とすれば良い。
【０１３０】
従って、上記実施形態に係る半導体装置は次のように説明できる。すなわち、半導体装置５は、回路ブロック（バッファ１５、フラッシュコントローラ１２等）と出力回路（入出力回路１６）とを具備する。そして回路ブロックは、ｎビット（ｎは２以上の自然数）の信号（ＤＡＴＩ）を出力する。また出力回路は、クロックに同期して前記回路ブロックから前記信号を受信し、前記信号のｎビットのうち、前記クロックの前後で値が変化したビットである第１ビットのビット数が、予め定められたｍビット（ｍ＜ｎ、ｍは１以上の自然数）を超えない場合、前記信号の全ビットを１クロックサイクルで外部へ出力し、前記ｍビットを超える場合、前記信号の全ビットを複数クロックサイクルで出力する出力回路とを具備する。そして前記出力回路は、前記第１ビットのビット数が前記ｍビットを超える場合、クロックサイクルの各々において出力する前記第１ビットのビット数を前記ｍビット以下とする。
【０１３１】
更に、前記出力回路は、検出部４０、カウント部５０、出力部９０、比較値生成部６０、比較部７０、及びマスク部８０を備える。検出部は、前記信号の各ビットがそれぞれ前記第１ビットであるか、または前記クロックの前後で値が変化しないビットである第２ビットであるかを検出する。カウント部は、前記信号の各ビットについて、該ビットとこれよりも下位または上位の前記ビットと、に含まれる前記第１ビットの累積値（信号ＳＵＭ）を生成する。出力部は、前記信号の各ビットを、前記クロックに同期して外部へ出力する。比較値生成部は、比較値を生成し、前記信号が更新される度に前記比較値を初期値にリセットし、前記累積値の最大値が、前記比較値と前記ｍとの和を超える場合には、前記クロックの前後で前記ｍを加算することにより前記比較値を更新する。比較部は、前記クロックに同期して、前記累積値、前記比較値、及び前記比較値と前記ｍとの和を比較する。マスク部は、前記出力部に対して、前記比較値よりも大きく且つ前記和以下である前記累積値、またはゼロである前記累積値に対応する前記ビットの出力を許可し、それ以外の前記累積値に対応する前記ビットの出力を禁止すると共に、前記累積値の最大値が前記和よりも大きい場合に、前記信号の更新を禁止する。
【０１３２】
また上記実施形態では、カードコントローラ４からＮＡＮＤ型フラッシュメモリ５へのデータ転送の場合を例に説明した。しかし、ＮＡＮＤ型フラッシュメモリ５からカードコントローラ４へのデータ転送時にも、同様の方法を用いることが出来る。また、ＮＡＮＤ型フラッシュメモリ５とカードコントローラ４との間のデータ転送に限らず、例えばカードコントローラ４とホスト機器２との間のデータ転送の場合であっても良く、転送すべきデータのビット数が大きいほど、上記効果は顕著となる。
【０１３３】
更に、上記実施形態で説明したメモリカード１は、例えばＳＤＴＭカードである。しかしメモリカード１は、ホスト機器２内に実装された半導体メモリ装置であっても良い。更に上記実施形態は、半導体メモリ装置を備えたメモリシステム内におけるデータ転送だけでなく、ＬＳＩ間における一般的なデータ転送に広く適用することが出来る。この際、“データ”とは、例えば画像や動画などの正味のデータに限らず、アドレス信号や制御信号等、ＬＳＩの動作制御に使用される信号をも含む。
【０１３４】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【０１３５】
【図１】この発明の一実施形態に係るメモリシステムのブロック図。
【図２】この発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図３】この発明の一実施形態に係るカードコントローラのブロック図。
【図４】この発明の一実施形態に係るフラッシュメモリのブロック図。
【図５】この発明の一実施形態に係る入出力回路の回路図。
【図６】この発明の一実施形態に係るデータ転送方法のフローチャート。
【図７】この発明の一実施形態に係るデータ転送時における各種信号のタイミングチャート。
【図８】この発明の一実施形態の変形例に係るデータ転送時における各種信号のタイミングチャート。
【符号の説明】
【０１３６】
１…メモリカード、２…ホスト機器、３…ホストバス、４…カードコントローラ、５…ＮＡＮＤ型フラッシュメモリ、６…ＮＡＮＤバス、７…信号ピン、１０…ホストインタフェースモジュール、１１…ＭＰＵ、１２…フラッシュコントローラ、１３…ＲＯＭ、１４…ＲＡＭ、１５…バッファ、１６、２４…入出力回路、２０…メモリセルアレイ、２１…ロウデコーダ、２２…ページバッファ、２３…制御回路、２５…メモリセルユニット、３０…入力部、３１、６３、７３、９１、９３、９４…ＡＮＤゲート、３２、６４、８１、９２、１００…フリップフロップ、４０…検出部、４１…ＥＸＯＲゲート、５０…カウント部、５１、６２…加算器、６０…比較値生成部、６１…レジスタ、６５、７４…インバータ、６６…設定値、７０、７１…比較部、７２…比較回路、７５…ＯＲゲート、８０…マスク部、９０…出力部、１１０、１２０…バッファ
【図１】
2010049476.tif 000003
【図２】
2010049476.tif 000004
【図３】
2010049476.tif 000005
【図４】
2010049476.tif 000006
【図５】
2010049476.tif 000007
【図６】
2010049476.tif 000008
【図７】
2010049476.tif 000009
【図８】
2010049476.tif 000010