(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025004600
(43)【公開日】2025-01-15
(54)【発明の名称】半導体装置及びカウント方法
(51)【国際特許分類】
G11C 7/22 20060101AFI20250107BHJP
G11C 7/10 20060101ALI20250107BHJP
【FI】
G11C7/22 100
G11C7/10 220
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023104387
(22)【出願日】2023-06-26
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】平嶋 康伯
(72)【発明者】
【氏名】小内 俊之
(72)【発明者】
【氏名】松野 隼也
(72)【発明者】
【氏名】堂目 正人
(57)【要約】
【課題】半導体装置の処理能力を向上する。
【解決手段】実施形態によれば、半導体装置は、第1信号OSCを出力するオシレータ201と、第1信号OSCのサイクル数をカウントするカウンタ202とを含む。カウンタ202は、オシレータ201が第1信号のN番目(Nは2以上の整数)のサイクルを出力する前に、第1信号のサイクル数のカウント値CNTをNにする。
【選択図】
図12
【特許請求の範囲】
【請求項1】
第1信号を出力するオシレータと、
前記第1信号のサイクル数をカウントするカウンタと
を備え、
前記カウンタは、前記オシレータが前記第1信号のN番目(Nは2以上の整数)のサイクルを出力する前に、前記第1信号の前記サイクル数のカウント値をNにする、
半導体装置。
【請求項2】
前記カウンタは、前記オシレータが前記第1信号の(N-1)番目のサイクルの出力を開始してから0.5サイクル経過後に、前記第1信号の前記サイクル数の前記カウント値をNにする、
請求項1に記載の半導体装置。
【請求項3】
前記第1信号は、第1論理レベルから前記第1論理レベルと異なる第2論理レベルに移行する第1エッジと前記第2論理レベルから前記第1論理レベルに移行する第2エッジとを交互に繰り返し、
前記オシレータが前記第1信号の出力を開始して、最初に前記第1エッジが発生した場合、前記カウンタは前記第2エッジを用いて前記第1信号の前記サイクル数をカウントアップする、
請求項1に記載の半導体装置。
【請求項4】
前記カウンタは、加算器を含み、前記第1信号の前記サイクル数に1加算した値を前記カウント値として出力する、
請求項3に記載の半導体装置。
【請求項5】
前記カウンタは、前記オシレータが前記第1信号の出力を開始する前に受信したカウント動作の開始を通知する第2信号に基づいて、前記第1信号の前記サイクル数に1加算する、
請求項3に記載の半導体装置。
【請求項6】
前記第1信号は、第1論理レベルから前記第1論理レベルと異なる第2論理レベルに移行する第1エッジと前記第2論理レベルから前記第1論理レベルに移行する第2エッジとを交互に繰り返し、
前記オシレータが前記第1信号の出力を開始して、最初に前記第1エッジが発生した場合、前記カウンタは前記第1エッジを用いて前記第1信号の前記サイクル数をカウントアップする、
請求項1に記載の半導体装置。
【請求項7】
前記カウンタは、
前記第1信号の前記第1エッジに基づいて動作する第1フリップフロップと、
前記第1信号の前記第2エッジに基づいて動作する第2フリップフロップと、
前記第1フリップフロップの第1出力信号と前記第2フリップフロップの第2出力信号との排他的論理和演算を実行する第1回路と、
前記第1回路の演算結果に基づいて、前記第1信号の前記サイクル数に1加算するか否かを決定する論理回路と
を含む、
請求項6に記載の半導体装置。
【請求項8】
前記論理回路は、前記第1出力信号の論理レベルと、前記第2出力信号の論理レベルが同じである場合、前記第1信号の前記サイクル数に1加算し、前記第1出力信号の前記論理レベルと、前記第2出力信号の前記論理レベルとが異なる場合、前記第1信号の前記サイクル数に1加算しない、
請求項7に記載の半導体装置。
【請求項9】
前記第1信号が前記第1論理レベルであるときに、前記オシレータが前記第1信号の出力を終了した場合、前記カウンタは、前記第1信号の前記サイクル数に1加算し、
前記第1信号が前記第2論理レベルであるときに、前記オシレータが前記第1信号の出力を終了した場合、前記カウンタは、前記第1信号の前記サイクル数に1加算しない、
請求項6に記載の半導体装置。
【請求項10】
前記オシレータは、第3信号が前記第1論理レベルである期間、前記第1信号を出力し、
前記カウンタは、
前記第1信号と、前記第3信号との論理和演算の結果に基づいて第4信号を出力する第2回路と、
前記第4信号の前記第1エッジに基づいて動作する第3フリップフロップと
を含む、
請求項9に記載の半導体装置。
【請求項11】
前記オシレータは、
前記第1信号を出力する出力端子と、前記出力端子から出力された前記第1信号が入力される入力端子とを含む第3回路と、
前記第3回路の前記出力端子に接続されたプルアップ回路と
を含む、
請求項9に記載の半導体装置。
【請求項12】
外部から入力された第5信号を遅延させた第6信号に基づいて、前記外部から入力された第7信号を取り込むラッチ回路を更に備え、
前記第1信号の1サイクルは、前記第5信号に対する前記第6信号の遅延時間に等しい、
請求項1に記載の半導体装置。
【請求項13】
前記第5信号と前記第7信号とは、非同期に入力される、
請求項12に記載の半導体装置。
【請求項14】
前記カウンタがカウント動作を実行する第1期間の間に生じる前記カウント値の粒度誤差の最大値は、前記遅延時間を前記第1期間の長さで除算した値に等しい、
請求項12に記載の半導体装置。
【請求項15】
前記第1期間は、外部コントローラから受信したコマンドセットに基づき、
前記遅延時間は、前記外部コントローラから受信した前記第5信号と前記第7信号との間の時間差に基づく、
請求項14に記載の半導体装置。
【請求項16】
前記外部から前記第5信号が入力される第1パッドと、
前記外部から前記第7信号が入力される第2パッドと、
を更に備え、
前記第1パッドと前記ラッチ回路とを接続する第1経路に設けられる回路の個数は、前記第2パッドと前記ラッチ回路とを接続する第2経路に設けられる回路の個数よりも多い、
請求項12に記載の半導体装置。
【請求項17】
前記カウンタが出力した前記カウント値と前回計測されたカウントとの差分の絶対が予め設定された閾値よりも大きい場合、前記第5信号と前記第7信号とのタイミングを調整する動作を実行するように構成された制御回路を更に備える、
請求項12に記載の半導体装置。
【請求項18】
第1信号を出力するオシレータと、前記第1信号のサイクル数をカウントするカウンタとを用いたカウント方法であって、
前記第1信号の出力を開始することと、
前記第1信号のN番目(Nは2以上の整数)のサイクルが出力される前に、前記第1信号の前記サイクル数のカウント値をNにすること
を備える、
カウント方法。
【請求項19】
前記カウント値をNにすることは、前記第1信号の(N-1)番目のサイクルの出力が開始されてから0.5サイクル経過後に、前記第1信号の前記サイクル数の前記カウント値をNすること、
を含む、
請求項18に記載のカウント方法。
【請求項20】
前記第1信号の出力を開始することは、最初に第1論理レベルから前記第1論理レベルと異なる第2論理レベルに移行する第1エッジを発生させることを含み、
前記カウント値をNにすることは、前記第2論理レベルから前記第1論理レベルに移行する第2エッジに基づいて前記第1信号の前記サイクル数をカウントアップすることを含む、
請求項18に記載のカウント方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、カウンタを有する半導体装置及びカウント方法に関する。
【背景技術】
【0002】
周期的な信号の周期の数をカウントするカウンタを有する半導体装置が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2017/0287539号明細書
【特許文献2】米国特許出願公開第2022/0076769号明細書
【特許文献3】米国特許出願公開第2018/0197588号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一実施形態では、処理能力が向上できる半導体装置を提供する。
【課題を解決するための手段】
【0005】
実施形態に係る半導体装置は、第1信号を出力するオシレータと、第1信号のサイクル数をカウントするカウンタとを含む。カウンタは、オシレータが第1信号のN番目(Nは2以上の整数)のサイクルを出力する前に、第1信号のサイクル数のカウント値をNにする。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係る半導体装置を含むメモリシステムの全体構成の一例を示すブロック図。
【
図2】第1実施形態に係る半導体装置の構成の一例を示すブロック図。
【
図3】第1実施形態に係る半導体装置に含まれるメモリセルアレイの回路図。
【
図4】第1実施形態に係る半導体装置に含まれる入力回路の構成の一例を示すブロック図。
【
図5】第1実施形態に係る半導体装置に含まれる入力回路の回路構成の一例を示す図。
【
図6】第1実施形態に係る半導体装置における信号DQS及びbDQS並びに信号DQの振幅波形を示す図。
【
図7】第1実施形態に係る半導体装置に含まれるレプリカ回路の全体構成の一例を示す図。
【
図8】第1実施形態に係る半導体装置に含まれるカウンタの構成の一例を示す回路図。
【
図9】第1実施形態に係る半導体装置におけるステータスレジスタにおけるカウント値CNT<15:0>のアドレス情報の具体例を示すテーブル。
【
図10】第1実施形態に係る半導体装置におけるカウント動作のコマンドシーケンスの一例を示す図。
【
図12】第1実施形態に係る半導体装置に含まれるカウンタによるカウント動作におけるカウント値CNTの具体例を示す図。
【
図13】第1実施形態に係る半導体装置におけるカウント動作の流れの一例を示すフローチャート。
【
図14】第1実施形態の変形例に係る半導体装置の構成の一例を示すブロック図。
【
図15】第1実施形態の変形例に係る半導体装置における第1モード選択時のコマンド及びアドレス入力のコマンドシーケンスの一例を示す図。
【
図16】第1実施形態の変形例に係る半導体装置における第1モード選択時のゲットフィーチャ動作のコマンドシーケンスの一例を示す図。
【
図17】第1実施形態の変形例に係る半導体装置における第1モード選択時のカウント動作のコマンドシーケンスの一例を示す図。
【
図18】第2実施形態に係る半導体装置に含まれるカウンタの構成の一例を示す回路図。
【
図19】第2実施形態に係る半導体装置におけるカウント動作のコマンドシーケンスの一例を示す図。
【
図20】第2実施形態に係る半導体装置におけるカウント動作の流れの一例を示すフローチャート。
【
図21】第3実施形態に係る半導体装置に含まれるカウンタの構成の一例を示す回路図。
【
図22】第3実施形態に係る半導体装置に含まれるカウンタにおける各信号の具体例を示す図。
【
図23】第3実施形態に係る半導体装置におけるカウント動作の流れの一例を示すフローチャート。
【
図24】第4実施形態に係る半導体装置に含まれるカウンタの構成の一例を示す回路図。
【
図25】第4実施形態に係る半導体装置に含まれるカウンタにおける信号OSC及び信号OSC_CLK2並びにカウント値CNTの具体例を示す図。
【
図26】第4実施形態に係る半導体装置におけるカウント動作のコマンドシーケンスの一例を示す図。
【
図27】第4実施形態に係る半導体装置におけるカウント動作の流れの一例を示すフローチャート。
【
図28】第4実施形態の変形例に係る半導体装置に含まれるレプリカ回路の全体構成の一例を示す図。
【
図29】第4実施形態の変形例に係る半導体装置に含まれるカウンタの構成の一例を示す回路図。
【
図30】第4実施形態の変形例に係る半導体装置におけるカウント動作のコマンドシーケンスの一例を示す図。
【
図31】第4実施形態の変形例に係る半導体装置におけるカウント動作の流れの一例を示すフローチャート。
【
図32】第5実施形態の第1例に係る半導体装置の全体構成の一例を示すブロック図。
【
図33】第5実施形態の第2例に係る半導体装置の全体構成の一例を示すブロック図。
【
図34】第5実施形態の第2例に係る半導体装置に含まれるオシレータと入出力ポートとの接続の一例を示すブロック図。
【
図35】第5実施形態の第2例に係る半導体装置におけるカウント動作の流れの一例を示すフローチャート。
【発明を実施するための形態】
【0007】
以下に実施形態が図面を参照して記述される。各実施形態は、発明の技術的思想を具体化するための装置や方法を例示している。図面は模式的又は概念的なものであり、各図面の寸法及び比率等は必ずしも現実のものと同一とは限らない。ある実施形態についての記述は全て、明示的に又は自明的に排除されない限り、別の実施形態の記述としても当てはまる。本発明の技術的思想は、構成要素の形状、構造、配置等によって特定されるものではない。
【0008】
なお、以下の記述において、略同一の機能及び構成を有する構成要素については、同一の符号が付される。参照符号を構成する文字の後の数字は、同じ文字を含んだ参照符号によって参照され、且つ同様の構成を有する要素同士を区別するために使用される。同じ文字を含んだ参照符号で示される要素を相互に区別する必要がない場合、これらの要素はそれぞれ文字のみを含んだ参照符号により参照される。
【0009】
1.第1実施形態
まず、第1実施形態として、半導体装置がNAND型フラッシュメモリである場合について、説明する。なお、半導体装置は、NAND型フラッシュメモリに限定されない。オシレータ及びカウンタを有する半導体装置であればよい。
【0010】
1.1 構成
1.1.1 メモリシステムの構成
まず、
図1を参照して、半導体装置を有するメモリシステム1の構成の一例について説明する。
図1は、メモリシステム1の全体構成の一例を示すブロック図である。なお、
図1の例では、各構成要素間の接続の一部を矢印線で示しているが、各構成要素間の接続はこれらに限定されない。
【0011】
図1に示すように、メモリシステム1は、例えば、SSD(Solid State Drive)である。メモリシステム1は、図示せぬホストデバイスに接続される。例えば、ホストデバイスは、メモリシステム1を制御する。
【0012】
メモリシステム1は、不揮発性メモリ10及びメモリコントローラ20を含む。
【0013】
不揮発性メモリ10は、不揮発性の記憶媒体である。不揮発性メモリ10は、メモリコントローラ20から受信したデータを不揮発に記憶する。
【0014】
メモリコントローラ20は、例えば、SoC(System On a Chip)である。メモリコントローラ20は、例えばホストデバイスからの要求(命令)に基づいて、不揮発性メモリ10に、読み出し動作、書き込み動作、及び消去動作等を命令する。また、メモリコントローラ20は、不揮発性メモリ10のメモリ空間を管理する。
【0015】
次に、不揮発性メモリ10の内部構成の一例について説明する。不揮発性メモリ10は、複数のメモリチップ11を含む。複数のメモリチップ11は、それぞれが独立して動作し得る。各メモリチップ11は、NANDバスを介してメモリコントローラ20に接続される。なお、不揮発性メモリ10が有するメモリチップ11の個数は1個でもよい。
【0016】
メモリチップ11は、例えば、NAND型フラッシュメモリが搭載された半導体装置である。メモリチップ11は、データを不揮発に記憶する。なお、メモリチップ11は、他の不揮発性メモリであってもよい。
【0017】
メモリチップ11は、NANDバスを介して、メモリコントローラ20(より詳しくはメモリインターフェース回路27)と、例えば8ビットの信号DQ<7:0>並びに信号DQS及びbDQSの送受信を行う。以下、信号DQ<7:0>のいずれかを限定しない場合は、単に「信号DQ」と表記する。信号DQは、例えばデータ、アドレス、コマンド、またはステータス情報である。信号DQS及びbDQSは、信号DQがデータである場合に、信号DQの入出力に用いられるストローブ信号(クロック信号)である。信号bDQSは、信号DQSの反転信号である。
【0018】
本実施形態では、メモリコントローラ20からメモリチップ11にデータが送信される際、データ(信号DQ)の送信と、ストローブ信号(信号DQS及びbDQS)の送信とが非同期に実行される。以下、このようなデータ入力のインターフェース仕様を「Unmatched DQS」と表記する。
【0019】
メモリチップ11は、NANDバスを介して、メモリコントローラ20から各種制御信号を受信する。制御信号の詳細については、後述する。
【0020】
また、メモリチップ11は、NANDバスを介して、メモリコントローラ20にレディ/ビジー信号bRBを送信する。レディ/ビジー信号bRBは、メモリチップ11がメモリコントローラ20からコマンドを受信可能な状態か不可能な状態かを示す信号である。レディ状態は、メモリチップ11がメモリコントローラ20からコマンドを受信可能な状態である。ビジー状態は、メモリチップ11がメモリコントローラ20からコマンドを受信不可能な状態である。例えば、レディ/ビジー信号bRBは、メモリチップ11がビジー状態の際に“L”レベルとされる。
【0021】
次に、メモリコントローラ20の内部構成の一例について説明する。メモリコントローラ20は、ホストインターフェース回路(ホストI/F)21、CPU(Central Processing Unit)22、ROM(Read Only Memory)23、RAM(Random Access Memory)24、バッファメモリ25、ECC(Error Checking and Correcting)回路26、及びメモリインターフェース回路(メモリI/F)27を含む。これらの回路は、例えばメモリコントローラ20の内部バスにより、互いに接続されている。なお、ホストインターフェース回路21、ECC回路26、及びメモリインターフェース回路27の各機能は、専用回路により実現されてもよいし、CPU22がファームウェアを実行することにより実現されてもよい。
【0022】
ホストインターフェース回路21は、ホストデバイスに接続されるインターフェース回路である。ホストインターフェース回路21は、ホストデバイスとメモリコントローラ20との間の通信を制御する。ホストインターフェース回路21は、CPU22及びバッファメモリ25に、ホストデバイスから受信した要求及びデータをそれぞれ送信する。また、ホストインターフェース回路21は、CPU22による制御に基づいて、ホストデバイスに、バッファメモリ25内のデータを送信する。
【0023】
CPU22は、プロセッサである。CPU22は、メモリコントローラ20全体の動作を制御する。例えば、CPU22は、ホストデバイスの要求に基づいて、不揮発性メモリ10(メモリチップ11)に書き込み動作、読み出し動作、及び消去動作等を命令する。また、CPU22は、不揮発性メモリ10のメモリ領域を管理する。
【0024】
CPU22は、不揮発性メモリ10(メモリチップ11)に、例えば、ライトトレーニングを命令する。ライトトレーニングは、信号DQと信号DQS及びbDQSとの間のタイミング調整等を目的とした動作である。例えば、CPU22は、メモリチップ11にライトトレーニング用データの書き込み動作及び当該データの読み出し動作を実行させる。このとき、CPU22は、信号DQS及びbDQSに対する信号DQの遅延時間を変化させながら、メモリチップ11に、信号DQS及びbDQS並びに信号DQを送信する。そして、CPU22は、書き込みデータと読み出しデータの一致度が最も高い条件(信号DQS及びbDQSに対する信号DQの遅延時間)をデータの送信条件として設定する。以下、信号DQS及びbDQSに対する信号DQの遅延時間を時間tDQS2DQと表記する。
【0025】
例えば、メモリチップ11では、信号DQを取り込むラッチ回路までの伝送経路が、信号DQS及びbDQSと信号DQとで異なる。このため、メモリチップ11における電圧または温度等の変動により、時間tDQS2DQの最適値が変動する。これに対応するため、CPU22は、任意のタイミングでライトトレーニングを適宜実行する。
【0026】
また、CPU22は、例えば定期的に、メモリチップ11内のオシレータで発生させたクロック信号(後述する信号OSC)のカウント動作を実行させる。クロック信号は、メモリチップ11内で生成される、信号DQSの擬似信号である。カウント動作では、クロック信号のサイクル数(クロック数)のカウントが実行される。CPU22は、カウント動作の実行時間(以下、「カウント実行時間」とも表記する)を制御する。メモリチップ11におけるクロック信号のサイクル数(カウント数)は、時間tDQS2DQの変動と同様に、メモリチップ11における電圧または温度の変化等により変動する。CPU22は、サイクル数の変化量に基づいて、時間tDQS2DQの変動を予測し、ライトトレーニングの実行の有無を判断する。
【0027】
ROM23は、不揮発性メモリである。例えば、ROM23は、EEPROMTM(Electrically Erasable Programmable Read-Only Memory)である。ROM23は、ファームウェア及びプログラム等を記憶する非一時的記憶媒体である。例えば、CPU22は、ROM23からロードしたファームウェアをRAM24に展開する。
【0028】
RAM24は、揮発性メモリである。RAM24は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等である。RAM24は、CPU22の作業領域として使用され得る。例えば、RAM24は、不揮発性メモリ10を管理するためのファームウェアや、各種の管理テーブルを記憶する。例えば、RAM24には、カウント動作の結果が記憶される。
【0029】
バッファメモリ25は、揮発性メモリである。バッファメモリ25は、DRAMまたはSRAM等である。バッファメモリ25は、メモリコントローラ20が不揮発性メモリ10から読み出したデータや、ホストデバイスから受信したデータ等を一時的に保持する。
【0030】
ECC回路26は、ECC処理を実行する回路である。ECC処理は、データの符号化処理及び復号化処理を含む。例えば、ECC回路26は、データの書き込み動作時には、データの符号化処理を実行して、誤り訂正符号(パリティ)を生成する。そして、ECC回路26は、パリティをデータに付与する。また、ECC回路26は、データの読み出し動作時には、復号化処理を実行する。すなわち、ECC回路26は、パリティを用いてデータの誤り訂正処理を実行する。
【0031】
メモリインターフェース回路27は、メモリコントローラ20と不揮発性メモリ10との間の通信を制御する。メモリインターフェース回路27は、複数のチャネルCH(CH0、CH1、…)を有し得る。各チャネルCHには、NANDバスを介して、複数のメモリチップ11が接続され得る。メモリインターフェース回路27は、メモリチップ11に、信号DQ、信号DQS及びbDQS、並びに各種制御信号を送信する。また、メモリインターフェース回路27は、メモリチップ11から信号DQ、信号DQS及びbDQS、並びにレディ/ビジー信号bRBを受信する。
【0032】
1.1.2 メモリチップの構成
次に、
図2を参照して、メモリチップ11の構成の一例について説明する。
図2は、メモリチップ11(半導体装置)の構成の一例を示すブロック図である。なお、
図2の例では、各構成要素間の接続の一部を矢印線で示しているが、各構成要素間の接続は、これらに限定されない。
【0033】
図2に示すように、メモリチップ(NAND型フラッシュメモリ)11は、入出力回路101、レプリカ回路102、ロジック制御回路103、アドレスレジスタ104、コマンドレジスタ105、ステータスレジスタ106、シーケンサ107、レディ/ビジー回路108、電圧発生回路109、メモリセルアレイ120、ロウデコーダ121、センスアンプ122、データレジスタ123、及びカラムデコーダ124を含む。
【0034】
入出力回路101は、メモリコントローラ20と信号DQ及び信号DQS及びbDQSの入出力を行う回路である。入出力回路101は、信号DQ<7:0>並びに信号DQS及びbDQSに対応する複数のパッドPD(外部接続端子)を介して、メモリコントローラ2と接続される。また、入出力回路101は、ロジック制御回路103、アドレスレジスタ104、コマンドレジスタ105、ステータスレジスタ106、及びデータレジスタ123に接続される。
【0035】
入出力回路101は、入力回路131及び出力回路132を含む。
【0036】
入力回路131は、メモリコントローラ20から信号DQを受信する回路である。入力回路131は、信号DQがデータDATである場合、信号DQS及びbDQSに基づいて、信号DQを取り込む。そして、入力回路131は、データレジスタ123に、データDATを送信する。入力回路131は、信号DQがアドレスADDである場合、後述するライトイネーブル信号bWEに基づいて、信号DQを取り込む。そして、入力回路131は、アドレスレジスタ104に、アドレスADDを送信する。入力回路131は、信号DQがコマンドCMDである場合、ライトイネーブル信号bWEに基づいて、信号DQを取り込む。そして、入力回路131は、コマンドレジスタ105に、コマンドCMDを送信する。
【0037】
出力回路132は、メモリコントローラ20に信号DQを送信する回路である。出力回路132は、メモリコントローラ20に、信号DQS及びbDQSとともに、信号DQを送信する。出力回路132は、メモリコントローラ20に、信号DQとして、メモリセルアレイ120から読み出したデータDATまたはステータス情報STSを送信する。
【0038】
レプリカ回路102は、信号DQSに対応するクロック信号(後述する信号OSC)を生成し、クロック信号のサイクル数(クロック数)をカウントする回路である。レプリカ回路102は、クロック信号を生成するための帰還型のオシレータを含む。オシレータのフィードバック経路は、入力回路131における信号DQSの伝送経路と同様の構成を有している。このため、レプリカ回路102は、「DQSオシレータ」とも表記され得る。レプリカ回路102は、ステータスレジスタ106及びシーケンサ107に接続される。レプリカ回路102は、カウント動作によるカウント結果をステータスレジスタ106に送信する。
【0039】
ロジック制御回路103は、メモリチップ11のロジック制御を行う回路である。ロジック制御回路103は、各制御信号に対応する複数のパッドPDを介して、メモリコントローラ20と接続される。また、ロジック制御回路103は、入出力回路101及びシーケンサ107に接続される。ロジック制御回路103は、各種制御信号に基づいて、入出力回路101及びシーケンサ107を制御する。
【0040】
例えば、ロジック制御回路103は、制御信号として、チップイネーブル信号bCE、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号bWE、及びリードイネーブル信号RE及びbREを受信する。
【0041】
チップイネーブル信号bCEは、メモリチップ11をイネーブルにするための信号である。チップイネーブル信号bCEは、例えばLow(“L”)レベルでアサートされる。
【0042】
コマンドラッチイネーブル信号CLEは、信号DQがコマンドであることを示す信号である。コマンドラッチイネーブル信号CLEは、例えばHigh(“H”)レベルでアサートされる。
【0043】
アドレスラッチイネーブル信号ALEは、信号DQがアドレスであることを示す信号である。アドレスラッチイネーブル信号ALEは、例えば“H”レベルでアサートされる。
【0044】
ライトイネーブル信号bWEは、信号DQがコマンドCMDまたはアドレスADDである場合に、信号DQを取り込むための信号である。ライトイネーブル信号bWEは、メモリチップ11がコマンドCMDまたはアドレスADDを取り込むタイミングに、例えば“L”レベルでアサートされる。よって、ライトイネーブル信号bWEがトグルされる度に、コマンドCMDまたはアドレスADDがメモリチップ11に取り込まれる。
【0045】
リードイネーブル信号RE及びbREは、メモリコントローラ20が、メモリチップ11からデータを読み出すための信号である。リードイネーブル信号bREは、リードイネーブル信号REの反転信号である。リードイネーブル信号RE及びbREは、例えば“L”レベルでアサートされる。例えば、メモリチップ11は、データ出力の際、リードイネーブル信号RE及びbREに基づいて、信号DQS及びbDQSを生成する。
【0046】
アドレスレジスタ104は、アドレスADDを一時的に記憶するレジスタである。アドレスレジスタ104は、入出力回路101、シーケンサ107、ロウデコーダ121、及びカラムデコーダ124に接続される。アドレスADDは、ロウアドレスRADとカラムアドレスCADとを含む。アドレスレジスタ104は、ロウデコーダ121に、ロウアドレスRADを送信する。また、アドレスレジスタ104は、カラムデコーダ124に、カラムアドレスCADを送信する。
【0047】
コマンドレジスタ105は、コマンドCMDを一時的に記憶するレジスタである。コマンドレジスタ105は、入出力回路101及びシーケンサ107に接続される。コマンドレジスタ105は、シーケンサ107に、コマンドCMDを送信する。
【0048】
ステータスレジスタ106は、ステータス情報STSを一時的に記憶するレジスタである。ステータスレジスタ106は、入出力回路101、レプリカ回路102、及びシーケンサ107に接続される。例えば、ステータス情報STSは、書き込み動作、読み出し動作、及び消去動作等の結果についての情報を含む。また、ステータス情報STSは、レプリカ回路102におけるカウント動作の結果についての情報を含む。ステータス情報STSは、信号DQとして、メモリコントローラ20に送信される。
【0049】
シーケンサ107は、メモリチップ11全体の動作を制御する回路である。シーケンサ107は、レプリカ回路102、ロジック制御回路103、アドレスレジスタ104、コマンドレジスタ105、ステータスレジスタ106、レディ/ビジー回路108、電圧発生回路109、ロウデコーダ121、及びセンスアンプ122等に接続される。シーケンサ107は、レプリカ回路102、ステータスレジスタ106、レディ/ビジー回路108、電圧発生回路109、ロウデコーダ121、及びセンスアンプ122等を制御する。シーケンサ107は、コマンドCMDに基づいて、書き込み動作、読み出し動作、及び消去動作を実行する。シーケンサ107は、ライトトレーニングを実行する。また、シーケンサ107は、レプリカ回路102におけるカウント動作を制御する。
【0050】
レディ/ビジー回路108は、レディ/ビジー信号bRBを生成する回路である。レディ/ビジー回路108は、シーケンサ107に接続される。レディ/ビジー回路108は、シーケンサ107の制御に基づいて、レディ/ビジー信号bRBを生成する。レディ/ビジー回路108は、メモリコントローラ20に、レディ/ビジー信号bRBを送信する。
【0051】
電圧発生回路109は、シーケンサ107の制御に基づいて、書き込み動作、読み出し動作、及び消去動作に用いられる各種電圧を発生させる。電圧発生回路109は、各種電圧をメモリセルアレイ120、ロウデコーダ121、及びセンスアンプ122等に供給する。
【0052】
メモリセルアレイ120は、配列された複数のメモリセルトランジスタ(「メモリセル」とも表記する)の集合である。メモリセルアレイ120は、複数のブロックBLKを含む。ブロックBLKは、例えばデータを一括して消去される複数のメモリセルトランジスタの集合である。
図2の例では、メモリセルアレイ120は、4つのブロックBLK0、BLK1、BLK2、及びBLK3を含む。なお、メモリセルアレイ120内のブロックBLKの個数は任意である。
【0053】
ロウデコーダ121は、ロウアドレスRADのデコード回路である。ロウデコーダ121は、アドレスレジスタ104、シーケンサ107、電圧発生回路109、及びメモリセルアレイ120に接続される。ロウデコーダ121は、ロウアドレスRADのデコード結果に基づいて、いずれかのブロックBLKを選択する。ロウデコーダ121は、選択したブロックBLKのロウ方向の配線(後述するワード線及び選択ゲート線)に電圧を印加する。
【0054】
センスアンプ122は、データDATの書き込み及び読み出しを行う回路である。センスアンプ122は、シーケンサ107、電圧発生回路109、メモリセルアレイ120、及びデータレジスタ123に接続される。センスアンプ122は、読み出し動作時には、メモリセルアレイ120からデータDATを読み出す。また、センスアンプ122は、書き込み動作時には、書き込みデータDATに応じた電圧をメモリセルアレイ120に供給する。
【0055】
データレジスタ123は、データDATを一時的に記憶するレジスタである。データレジスタ123は、入出力回路101、シーケンサ107、センスアンプ122、及びカラムデコーダ124に接続される。データレジスタ123は、複数のラッチ回路を含む。各ラッチ回路は、書き込みデータまたは読み出しデータを一時的に記憶する。
【0056】
カラムデコーダ124は、カラムアドレスCADのデコードを行う回路である。カラムデコーダ124は、アドレスレジスタ104、シーケンサ107、及びデータレジスタ123に接続される。カラムデコーダ124は、アドレスレジスタ104からカラムアドレスCADを受信する。カラムデコーダ124は、カラムアドレスCADのデコード結果に基づいて、データレジスタ123内のラッチ回路を選択する。
【0057】
1.1.3 メモリセルアレイの回路構成
次に、
図3を参照して、メモリセルアレイ120の回路構成の一例について説明する。
図3は、メモリセルアレイ120の回路図である。なお、
図3の例は、1つのブロックBLKの回路構成を示している。
【0058】
図3に示すように、ブロックBLKは、複数のストリングユニットSUを含む。ストリングユニットSUは、例えば、書き込み動作または読み出し動作において一括して選択される複数のNANDストリングNSの集合である。
図3の例では、ブロックBLKは、4つのストリングユニットSU0~SU3を含む。なお、ブロックBLKに含まれるストリングユニットSUの個数は、任意である。
【0059】
次に、ストリングユニットSUの内部構成について説明する。ストリングユニットSUは、複数のNANDストリングNSを含む。NANDストリングNSは、直列に接続された複数のメモリセルトランジスタの集合である。例えば、ストリングユニットSU内のn+1個(nは1以上の整数)のNANDストリングNSは、n+1本のビット線BL0~BLnにそれぞれ接続される。
【0060】
次に、NANDストリングNSの内部構成について説明する。各NANDストリングNSは、複数のメモリセルトランジスタMC、並びに選択トランジスタST1及びST2を含む。
図3に示す例では、NANDストリングNSは8個のメモリセルトランジスタMC0~MC7を含む。なお、NANDストリングNS内のメモリセルトランジスタMCの個数は、任意である。
【0061】
メモリセルトランジスタMCは、データを不揮発に保持する。メモリセルトランジスタMCは、制御ゲート及び電荷蓄積層を含む。メモリセルトランジスタMCは、MONOS(Metal-Oxide-Nitride-Oxide-Silicon)型であってもよいし、FG(Floating Gate)型であってもよい。MONOS型は、電荷蓄積層に絶縁層を用いる。FG型は、電荷蓄積層に導電体層を用いる。
【0062】
選択トランジスタST1及びST2は、各種動作時におけるストリングユニットSUの選択に使用される。選択トランジスタST1及びST2の個数は任意である。選択トランジスタST1及びST2は、NANDストリングNSにそれぞれ1個以上含まれていればよい。
【0063】
各NANDストリングNS内のメモリセルトランジスタMC、並びに選択トランジスタST1及びST2の電流経路は、直列に接続される。より具体的には、選択トランジスタST2、メモリセルトランジスタMC0~MC7、及び選択トランジスタST1の順に、その電流経路は直列に接続される。選択トランジスタST1のドレインは、いずれか1つのビット線BLに接続される。選択トランジスタST2のソースは、ソース線SLに接続される。
【0064】
同一ブロックBLK内の複数のメモリセルトランジスタMC0~MC7の制御ゲートは、それぞれワード線WL0~WL7に共通に接続される。より具体的には、例えば、ブロックBLKは、4つのストリングユニットSU0~SU3を含む。そして、ストリングユニットSU0~SU3は、複数のメモリセルトランジスタMC0をそれぞれ含む。ブロックBLK内のこれら複数のメモリセルトランジスタMC0の制御ゲートは、1つのワード線WL0に共通に接続される。メモリセルトランジスタMC1~MC7も同様である。
【0065】
ストリングユニットSU内の複数の選択トランジスタST1のゲートは、1つの選択ゲート線SGDに共通に接続される。より具体的には、ストリングユニットSU0は、複数の選択トランジスタST1を含む。ストリングユニットSU0内の複数の選択トランジスタST1のゲートは、選択ゲート線SGD0に共通に接続される。同様に、ストリングユニットSU1内の複数の選択トランジスタST1のゲートは、選択ゲート線SGD1に共通に接続される。ストリングユニットSU2内の複数の選択トランジスタST1のゲートは、選択ゲート線SGD2に共通に接続される。ストリングユニットSU3内の複数の選択トランジスタST1のゲートは、選択ゲート線SGD3に共通に接続される。
【0066】
同一ブロックBLK内の複数の選択トランジスタST2のゲートは、1つの選択ゲート線SGSに共通に接続される。より具体的には、例えば、ブロックBLKは、4つのストリングユニットSU0~SU3を含む。そして、ストリングユニットSU0~SU3は、複数の選択トランジスタST2をそれぞれ含む。ブロックBLK内のこれら複数の選択トランジスタST2のゲートは、1つの選択ゲート線SGSに共通に接続される。なお、選択ゲート線SGDと同様に、ストリングユニットSU毎に異なる選択ゲート線SGSが設けられてもよい。
【0067】
ワード線WL0~WL7、選択ゲート線SGD0~SGD3、及び選択ゲート線SGSは、ロウデコーダ121にそれぞれ接続される。
【0068】
ビット線BLは、各ブロックBLKの各ストリングユニットSU内の1つのNANDストリングNSに共通に接続される。1つのビット線BLに接続された複数のNANDストリングNSには、同一のカラムアドレスCADが割り当てられる。各ビット線BLは、センスアンプ122に接続される。
【0069】
ソース線SLは、例えば複数のブロックBLK間で共有される。
【0070】
1つのストリングユニットSU内で、1つのワード線WLに接続された複数のメモリセルトランジスタMCの集合は、「セルユニットCU」と表記される。例えば、メモリセルトランジスタMCが1ビットデータを記憶する場合、セルユニットCUの記憶容量は、「1ページデータ」として定義される。メモリセルトランジスタMCが記憶するデータのビット数に基づいて、セルユニットCUは、2ページデータ以上の記憶容量を有し得る。
【0071】
1.1.4 入力回路の構成
1.1.4.1 入力回路の構成
次に、
図4を参照して、入力回路131の構成の一例について説明する。
図4は、入力回路131の構成の一例を示すブロック図である。なお、
図4の例は、信号DQがデータDATである場合、すなわち、信号DQS及びbDQSに基づいて信号DQを取り込む場合の構成を示す。
【0072】
図4に示すように、入力回路131は、入力レシーバ(IREC:Input RECeiver)141、遅延回路142、及びラッチ回路143を含む。
【0073】
入力レシーバ141は、信号DQS及びbDQSの受信回路である。入力レシーバ141の2つの入力端子は、信号DQSが入力されるパッドPDと、信号bDQSが入力されるパッドPDとにそれぞれ接続される。また、入力レシーバ141の出力端子は、遅延回路142に接続される。例えば、入力レシーバ141は、信号DQS及びbDQSに同期した反転信号を出力する。入力レシーバ141の出力信号は、遅延回路142に入力される。
【0074】
遅延回路142は、入力レシーバ141から受信した信号を遅延させる回路である。遅延回路142は、ラッチ回路143に接続される。なお、遅延回路142は、省略され得る。また、入力レシーバ141とラッチ回路143との間の配線経路には、信号送信を目的としたドライバ等が設けられてもよい。入力レシーバ141の出力信号は、遅延回路142、及び入力レシーバ141とラッチ回路143とを接続する配線経路による配線遅延により遅延して、ラッチ回路143に入力される。ラッチ回路143に入力される信号を信号CK及びbCKと表記する。信号CKは、信号DQSを遅延させたストローブ信号である。信号bCKは、信号CKの反転信号である。信号DQS及びbDQSに対する信号CK及びbCKの遅延時間が、時間tDQS2DQに相当する。すなわち、ラッチ回路143には、時間tDQS2DQ遅延された信号DQS及びbDQSが入力される。
【0075】
ラッチ回路143は、信号CK及びbCK(時間tDQS2DQ遅延された信号DQS及びbDQS)に基づいて、信号DQを取り込む回路である。ラッチ回路143は、信号DQ<0>~DQ<7>が入力される8個のパッドPDに接続される。例えば、ラッチ回路143は、信号CKに基づいて、各信号DQの奇数ビットのデータを取り込み、信号bCKに基づいて、各信号DQの偶数ビットのデータを取り込む。例えば、ラッチ回路143は、各信号DQに対応する複数のLTSA(Latch-Type voltage Sense Amplifier)を含んでいてもよいし、複数のDTSA(Double-Tail latch-type voltage Sense Amplifier)を含んでいてもよい。ラッチ回路143は、信号DQ<0>~<7>に対応する信号DQ_INT<0>~DQ_INT<7>を出力する。
【0076】
ラッチ回路143は、信号DQが入力されるパッドPDの比較的近傍に配置される。比較的近傍に配置されることにより、パッドPDとラッチ回路143とを結ぶ配線長を比較的短くできる。また、信号DQが入力されるパッドPDとラッチ回路143とを接続する経路に設けられる回路の個数は、信号DQSが入力されるパッドPDとラッチ回路143を接続する経路に設けられる回路(入力レシーバ141及び遅延回路142を含む)の個数よりも少ない。これにより、ラッチ回路143における信号DQのジッタ及びスキュー等を低減できる。なお、パッドPDとラッチ回路143との間に、信号劣化の補正を目的として、CTLE(Continuous Time Linear Equalizer)等を配置してもよい。CTLEは、挿入損失(インサーションロス)を補償して、ジッタを低減する回路である。
【0077】
1.1.4.2 入力回路の回路構成
次に、
図5を参照して、入力回路131の回路構成の一例について説明する。
図5は、入力回路131の回路構成の一例を示す図である。なお、
図5の例では、説明を簡略化するため、遅延回路142及び信号DQ<1>~DQ<6>の各々に対応するラッチ回路143が省略されている。また、
図5の例では、信号bCKが省略されている。
【0078】
図5に示すように、入力レシーバ141は、コンパレータ151を含む。コンパレータ151は、信号DQSが入力される第1入力端子、信号bDQSが入力される第2入力端子、及び出力端子を含む。第1入力端子は、信号DQSが入力されるパッドPDに接続される。第2入力端子は、信号bDQSが入力されるパッドPDに接続される。例えば、コンパレータ151は、信号DQS及びbDQSに同期した反転信号を出力する。出力端子は、ドライバ152及び153を介して、ラッチ回路143に接続される。例えば、ドライバ152は、コンパレータ151が出力する信号の振幅を増幅するCML(Current Mode Logic)回路である。また、例えば、ドライバ153は、ドライバ152により増幅された信号を、CMOSレベルに変換するC2C(Cml To Cmos)回路である。
【0079】
ラッチ回路143は、各信号DQに対応する複数のコンパレータ154を含む。なお、1つの信号DQに対して、複数のコンパレータ154が設けられてもよい。例えば、1つの信号DQに対して、信号CKに基づいて動作するコンパレータ154と、信号bCKに基づいて動作するコンパレータ154とが設けられてもよい。
【0080】
コンパレータ154は、第1入力端子、第2入力端子、クロック信号入力端子、及び出力端子を含む。第1入力端子は、対応する信号DQが入力されるパッドPDに接続される。第2入力端子には、例えば、参照電圧VREFが入力される。参照電圧VREFは、信号DQの論理レベルの判定に用いられる基準電圧である。クロック信号入力端子には、例えば、信号CKが入力される。クロック信号入力端子は、ドライバ153に接続される。コンパレータ151の出力端子とコンパレータ154のクロック信号入力端子とを接続する配線経路において生じる配線遅延が、時間tDQS2DQに相当する。コンパレータ154の出力端子から信号DQ_INTが出力される。
図5の例では、コンパレータ154は、信号CKがHigh(“H”)レベルの場合に、信号DQと参照電圧VREFとを比較した結果を出力する。例えば、コンパレータ154は、信号DQの電圧が参照電圧VREFよりも高い場合に、Low(“L”)レベルの信号DQ_INTを出力する。
【0081】
信号DQ毎に異なるコンパレータ154が設けられている。このため、コンパレータ154毎に、コンパレータ151の出力端子とコンパレータ154とのクロック信号入力端子とを接続する配線経路(配線長)が異なる。従って、信号DQ毎に、配線経路において生じる配線遅延の量が異なる。すなわち、信号DQ毎に、時間tDQS2DQが異なり得る。例えば、ライトトレーニングでは、信号DQ毎に最適な時間tDQS2DQが設定され得る。
【0082】
1.1.4.3 信号DQS及びbDQS並びに信号DQの入力タイミング
次に、
図6を参照して、信号DQS及びbDQS並びに信号DQの入力タイミングの一例について説明する。
図6は、信号DQS及びbDQS並びに信号DQの振幅波形を示す図である。
図6の例は、パッドPDにおける信号DQS及びbDQS並びに信号DQの振幅波形と、ラッチ回路143における信号CK及びbCK(遅延された信号DQS及びbDQS)並びに信号DQの振幅波形とを示している。
【0083】
図6に示すように、本実施形態では、メモリチップ11にデータ(信号DQ)とストローブ信号(信号DQS及びbDQS)とが非同期に入力される。すなわち、パッドPDにおける信号DQS及びbDQSの入力のタイミングは、信号DQの入力のタイミングと同期していない。信号DQS及びbDQSと信号DQとの時間差が、時間tDQS2DQである。
【0084】
ラッチ回路143は、信号DQに対応するパッドPDの比較的近傍に配置される。このため、ラッチ回路143は、パッドPDから信号DQを、遅延が比較的少ない状態で受信する。また、ラッチ回路143は、信号DQS及びbDQSを遅延させた信号CK及びbCKを受信する。ラッチ回路143では、信号CK及びbCKの入力タイミングと、信号DQの入力タイミングとが同期している。これにより、ラッチ回路143は、信号CK及びbCKに基づいて信号DQを取り込むことができる。ライトトレーニングでは、信号DQS及びbDQSに対応する信号CK及びbCKの遅延時間が時間tDQS2DQとなるように、信号DQのタイミングが最適化される。
【0085】
1.1.5 レプリカ回路の構成
1.1.5.1 レプリカ回路の全体構成
まず、
図7を参照して、レプリカ回路102の全体構成の一例について説明する。
図7は、レプリカ回路102の全体構成の一例を示す図である。
【0086】
図7に示すように、レプリカ回路102は、オシレータ201及びカウンタ202を含む。
【0087】
本実施形態では、レプリカ回路102が、信号DQ<0>~DQ<7>のいずれか1つの時間tDQS2DQに対応する、1つのオシレータ201及びカウンタ202の組を含む場合について説明する。なお、レプリカ回路102は、複数の信号DQに対応する複数のオシレータ201及びカウンタ202の組を含んでいてもよい。
【0088】
レプリカ回路102がオシレータ201及びカウンタ202の組を1つ含む場合、オシレータ201及びカウンタ202の組は、入力レシーバ141のコンパレータ151と、ラッチ回路143のコンパレータ154との間の配線長が最も長い(配線遅延が最も大きい)コンパレータ154に入力される信号DQに対応してもよい。または、オシレータ201及びカウンタ202の組は、上述の配線長が平均的な長さのコンパレータ154に入力される信号DQに対応してもよいし、上述の配線長が最も短いコンパレータ154に入力される信号DQに対応してもよい。すなわち、オシレータ201及びカウンタ202の組は、時間tDQS2DQが最も長い信号DQに対応してもよいし、時間tDQS2DQが平均的な長さの信号DQに対応してもよいし、時間tDQS2DQが最も短い信号DQに対応してもよい。
【0089】
オシレータ201は、帰還型の発振回路である。オシレータ201は、信号OSCを出力する。信号OSCは、クロック信号である。オシレータ201は、コンパレータ203並びにドライバ204及び205を含む。
【0090】
コンパレータ203は、例えば、入力レシーバ141のコンパレータ151と同様の構成を有する。コンパレータ203の出力端子は、コンパレータ203の第1入力端子及び第2入力端子に接続される。すなわち、出力信号がフィードバックされる。コンパレータ203は、第1入力端子に入力された信号の論理レベルを反転して出力する。このため、オシレータ201の出力信号は発振する。例えば、コンパレータ203は、第1入力端子に“L”レベルの信号(コンパレータ203の出力信号)が入力されると、“H”レベルの信号を出力する。
【0091】
コンパレータ203の出力端子と第1入力端子及び第2入力端子とを結ぶ配線経路(フィードバック経路)は、
図5を用いて説明した入力レシーバ141のコンパレータ151の出力端子とラッチ回路143のコンパレータ154のクロック信号入力端子とを接続する配線経路と同様の構成及び配線長を有する。例えば、コンパレータ203の出力端子と第1入力端子及び第2入力端子とを結ぶ配線経路には、入力回路131と同様に、ドライバ204及び205が設けられる。例えば、ドライバ204は、ドライバ152と同様の構成を有するCML回路である。例えば、ドライバ205は、ドライバ153と同様の構成を有するC2C回路である。コンパレータ203の出力端子と第1入力端子及び第2入力端子とを結ぶ配線経路において、入力回路131と同様に、時間tDQS2DQの配線遅延が生じる。このため、コンパレータ203の出力信号の論理レベルは、時間tDQS2DQ毎に反転する。従って、信号OSCの1サイクルの時間(1周期)は、時間tDQS2DQの2倍、すなわち、2×(tDQS2DQ)である。
【0092】
カウンタ202には、オシレータ201から出力された信号OSCが入力される。カウンタ202は、信号OSCのサイクル数をカウントする。カウンタ202は、カウント結果として、カウント値CNTを出力する。例えば、カウント値CNTは、16ビットの信号であってもよい。この場合、カウンタ202は、16ビットのカウント値CNT<15:0>を出力する。レプリカ回路102は、カウント値CNT<15:0>を、ステータスレジスタ106に送信する。なお、カウント値CNTのビット数は任意である。
【0093】
1.1.5.2 カウンタの構成
次に、
図8を参照して、カウンタ202の構成の一例について説明する。
図8は、カウンタ202の構成の一例を示す回路図である。
【0094】
図8に示すように、本実施形態のカウンタ202は、信号OSCの立ち下がりエッジ、すなわち、“H”レベルから“L”レベルに移行するタイミングでサイクル数をカウントアップする。そして、カウンタ202は、サイクル数に+1加算した結果を、カウント値CNT<15:0>として、出力する。
【0095】
カウンタ202は、インバータ211、AND回路212、複数のフリップフロップ213、及び加算器214を含む。例えば、カウント値CNTが16ビットの信号である場合、カウンタ202は、16個のフリップフロップ213を含む。以下、カウント値CNT<0>~CNT<15>にそれぞれ対応するフリップフロップ213を限定する場合、フリップフロップ213_0~213_15と表記する。
【0096】
インバータ211は、信号OSCを反転して出力する。インバータ211の入力端子は、オシレータ201に接続される。インバータ211の入力端子には、信号OSCが入力される。インバータ211の出力端子は、AND回路212の第1入力端子に接続される。
【0097】
AND回路212の第2入力端子には、イネーブル信号ENが入力される。イネーブル信号ENは、オシレータ201及びカウンタ202のイネーブル信号である。例えば、イネーブル信号ENが“H”レベルの間、オシレータ201は、信号OSCを出力する。また、カウンタ202は、カウント動作を実行する。イネーブル信号ENは、例えば、シーケンサ107から供給される。AND回路212の出力端子は、フリップフロップ213_0のクロック信号入力端子に接続される。AND回路212は、信号OSCの反転信号とイネーブル信号ENとを論理積(AND)演算した結果を、信号OSC_CLKとして出力する。信号OSC_CLKは、イネーブル信号ENが“H”レベルである場合、信号OSCを反転させたクロック信号である。例えば、イネーブル信号ENが“H”レベルであり且つ信号OSCの反転信号が“H”レベル(すなわち、信号OSCが“L”レベル)であるときに、信号OSC_CLKは、“H”レベルとされる。
【0098】
フリップフロップ213は、カウント値CNTのビット数に対応して複数設けられるDフリップフロップである。フリップフロップ213は、クロック信号入力端子、データ入力端子D、リセット信号入力端子R、出力端子Q、及び反転出力端子Qnを含む。
【0099】
フリップフロップ213は、クロック信号入力端子に入力されるクロック信号の立ち上がりエッジ、すなわち“L”レベルから“H”レベルに移行するタイミングで、データ入力端子Dから入力されるデータを取り込む(記憶する)。これにより、出力データが更新される。フリップフロップ213のデータ入力端子Dは、当該フリップフロップ213の反転出力端子Qnに接続される。従って、フリップフロップ213は、クロック信号入力端子に入力されるクロック信号の立ち上がりエッジで出力端子Q及び反転出力端子Qnから出力される信号を反転させる。フリップフロップ213のリセット信号入力端子Rには、リセット信号RSTが入力される。リセット信号入力端子Rに“H”レベルのリセット信号RSTが入力されると、フリップフロップ213はリセットされる。すなわち、フリップフロップ213の出力端子Qから“L”レベルの信号が出力され、反転出力端子Qnから“H”レベルの信号が出力される。リセット信号RSTは、例えば、シーケンサ107から供給される。
【0100】
フリップフロップ213_0~213_15は多段に接続される。より具体的には、フリップフロップ213_0のクロック信号入力端子には、信号OSC_CLKが入力される。フリップフロップ213_1~213_15のクロック信号入力端子には、前段のフリップフロップ213の出力端子Qから出力されたデータの反転データが入力される。例えば、フリップフロップ213を、変数k(kは1以上15以下の整数)を用いて、フリップフロップ213_kと表記する。この場合、フリップフロップ213_kのクロック信号入力端子には、前段のフリップフロップ213_(k-1)の出力端子Qから出力されたデータの反転データが入力される。
【0101】
例えば、フリップフロップ213の出力端子Qから出力される信号を信号preCNTと表記する。フリップフロップ213_0~213_15の出力端子Qから信号preCNT<0>~preCNT<15>がそれぞれ出力される。信号preCNT<0>~preCNT<15>は、信号OSCのサイクル数を示す。
【0102】
加算器214は、各フリップフロップ213の出力端子Qに接続される。加算器214は、信号preCNT<0>~preCNT<15>で表される16ビットのデータに+1加算した結果を、16ビットのカウント値CNT<0>~CNT<15>として出力する。すなわち、加算器214は、立ち下がりエッジでカウントされた信号OSCのサイクル数に+1加算する。
【0103】
1.1.6 ステータスレジスタにおけるカウント値CNTの割り当ての具体例
次に、
図9を参照して、ステータスレジスタ106におけるカウント値CNTの割り当ての具体例について説明する。
図9は、ステータスレジスタ106におけるカウント値CNT<15:0>のアドレス情報の具体例を示すテーブルである。
【0104】
図9に示すように、例えば、16ビットのカウント値CNT<15:0>は、ステータスレジスタ106のアドレス“Bx”及び“By”に対応するレジスタに記憶される。より具体的には、アドレス“Bx”に対応するレジスタには、信号DQ<0>~DQ<7>に対応してカウント値CNT<0>~CNT<7>が記憶される。そして、アドレス“By”に対応するレジスタには、信号DQ<0>~DQ<7>に対応してカウント値CNT<8>~CNT<15>が記憶される。なお、カウント値CNT<15:0>が記憶されるレジスタは適宜設定され得る。
【0105】
例えば、メモリコントローラ20は、対象のメモリチップ11に対して、ステータスレジスタ106からステータス情報STSを読み出す動作(以下、「ゲットフィーチャ動作」と表記する)を実行する。メモリコントローラ20は、ゲットフィーチャ動作を実行するコマンドセットを送信して、カウント値CNT<15:0>を含むステータス情報STSを読み出す。
【0106】
1.2 カウント動作
次に、レプリカ回路102における信号OSCのカウント動作について説明する。
【0107】
1.2.1 カウント動作のコマンドシーケンス
まず、
図10を参照して、カウント動作のコマンドシーケンスの一例について説明する。
図10は、カウント動作のコマンドシーケンスの一例を示す図である。なお、
図10の例では、信号DQS及びbDQS、チップイネーブル信号bCE、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0108】
図10に示すように、レプリカ回路102における信号OSCのカウント動作は、メモリコントローラ20から送信されるカウント動作に対応するコマンドセットに基づいて実行される。コマンドセットは、メモリチップ11が実行する動作に対応するコマンド、アドレス、及びデータ等の組み合わせである。
【0109】
時刻t100~t110の期間において、まず、メモリコントローラ20は、メモリチップ11に、コマンド“CMD”を送信すると共に、コマンドラッチイネーブル信号CLEを“H”レベルにしてアサートする。ここで送信されるコマンド“CMD”は、カウント動作の実行を指示するコマンドである。メモリチップ11は、ライトイネーブル信号bWEのトグルに合わせて、コマンド“CMD”を取り込む。
【0110】
次に、メモリコントローラ20は、メモリチップ11に、アドレス“LUN”を送信すると共に、アドレスラッチイネーブル信号ALEを“H”レベルにしてアサートする。アドレス“LUN”は、カウント動作の実行対象となるメモリチップ11のアドレス情報である。メモリチップ11は、ライトイネーブル信号bWEのトグルに合わせて、アドレス“LUN”を取り込む。
【0111】
次に、メモリコントローラ20は、メモリチップ11に、アドレス“xxh”を送信すると共に、アドレスラッチイネーブル信号ALEを“H”レベルにしてアサートする。アドレス“xxh”は、カウント動作の実行対象となるメモリチップ11が1つであるか、メモリインターフェース回路27の1つのチャネルCHに接続された全メモリチップ11が対象であるかを示す情報(レシピ)である。例えば、アドレス“xxh”が“00h”である場合、1つのメモリチップ11が対象とされる。また、アドレス“xxh”が“01h”である場合、1つのチャネルCHに接続された全メモリチップ11が対象とされる。メモリチップ11は、ライトイネーブル信号bWEのトグルに合わせて、アドレス“xxh”を取り込む。なお、
図10の例では、“xxh”がアドレスである場合を示しているが、これに限定されない。“xxh”は、コマンドであってもよい。この場合、コマンドラッチイネーブル信号が“H”レベルとされ、アドレスラッチイネーブル信号ALEが“L”レベルとされる。
【0112】
シーケンサ107は、アドレス“xxh”を受信すると、時刻t110~t120の期間において、レプリカ回路102に、“H”レベルの信号OSC_STを送信する。信号OSC_STは、レプリカ回路102(カウンタ202)にカウント動作の実行を通知する内部信号である。シーケンサ107は、1パルスの信号OSC_STを送信後、信号OSC_STを“L”レベルとする。
【0113】
続けて、シーケンサ107は、レプリカ回路102に“H”レベルのリセット信号RSTを送信する。“H”レベルのリセット信号RSTを受信すると、カウンタ202の各フリップフロップ213はリセットされる。すなわち、フリップフロップ213は、出力端子Qから“L”レベルの信号を出力し、反転出力端子Qnから“H”レベルの信号を出力する。シーケンサ107は、1パルスのリセット信号RSTを送信後、リセット信号RSTを“L”レベルとする。
【0114】
次に、時刻t120において、メモリコントローラ20は、メモリチップ11に、アドレス“00h”を送信すると共に、アドレスラッチイネーブル信号ALEを“H”レベルにしてアサートする。アドレス“xxh”の次に送信されるアドレス“00h”は、カウント動作の開始を指示する情報である。メモリチップ11は、ライトイネーブル信号bWEのトグルに合わせて、アドレス“00h”を取り込む。なお、
図10の例では、“00h”がアドレスである場合を示しているが、これに限定されない。“00h”は、コマンドであってもよい。
【0115】
シーケンサ107は、アドレス“00h”を受信すると、時刻t130において、“H”レベルのイネーブル信号ENをレプリカ回路102に送信する。オシレータ201は、“H”レベルのイネーブル信号ENを受信すると、信号OSCの発振を開始する。カウンタ202では、時刻t130~t150の期間、すなわち、イネーブル信号ENが“H”レベルである間、AND回路212から信号OSCを反転させた信号OSC_CLKが出力される。カウンタ202は、信号OSC_CLKの立ち上がりエッジに合わせてカウントアップする。すなわち、カウンタ202は、信号OSCの立ち下がりエッジに合わせてカウントアップする。カウンタ202は、カウントアップした結果に+1換算した値を、カウント値CNT<15:0>として出力する。
【0116】
次に、メモリコントローラ20は、カウント動作の開始を指示するアドレス“00h”を送信してから、予め設定された実行時間(以下、「カウント実行時間tRuntime」と表記する)が経過した後、時刻t140において、メモリチップ11に、再度、アドレス“00h”を送信すると共に、アドレスラッチイネーブル信号ALEを“H”レベルにしてアサートする。ここでのアドレス“00h”は、カウント動作の終了を指示する情報である。メモリチップ11は、ライトイネーブル信号bWEのトグルに合わせて、アドレス“00h”を取り込む。換言すると、カウント実行時間tRuntimeは、カウント動作の開始を指示するアドレス“00h”に対応するライトイネーブル信号bWEのトグルと、カウント動作の終了を指示するアドレス“00h”に対応するライトイネーブル信号bWEのトグルとの間隔である。なお、
図10の例では、“00h”がアドレスである場合を示しているが、これに限定されない。“00h”は、コマンドであってもよい。また、カウント動作の開始を指示するアドレスと、カウント動作の終了を指示するアドレスとは異なっていてもよい。
【0117】
シーケンサ107は、アドレス“00h”を受信すると、時刻t150において、イネーブル信号ENを“L”レベルとする。オシレータ201は、“L”レベルのイネーブル信号ENを受信すると、信号OSCの発振を終了する。カウンタ202では、イネーブル信号ENが“L”レベルとされると、AND回路212から“L”レベルの信号OSC_CLKが出力される。これにより、カウンタ202は、カウント動作を終了する。
【0118】
1.2.2 カウント値の具体例
次に、
図11及び
図12を参照して、カウント値CNTの具体例について説明する。
図11は、カウント動作の比較例を示す。
図12は、本実施形態のカウンタ202によるカウント動作におけるカウント値CNTの具体例を示す。
【0119】
以下の説明において、予め仕様で定められているカウント値CNTを、「CNT仕様値」と表記する。CNT仕様値は、カウント実行時間tRuntimeにおける信号OSCのサイクル数に基づいて設定される。従って、CNT仕様値は、信号OSCの立ち上がりエッジ(1サイクルの開始位置)に基づいてカウントアップされる値である。なお、以下の説明では、CNT仕様値及びカウント値CNTを10進数の数値を用いて説明する。
【0120】
まず、比較例について説明する。比較例として、CNT仕様値と同様に、カウント値CNTを信号OSCの立ち上がりエッジでカウントアップする場合について説明する。この場合、カウンタ202は、信号OSCの立ち上がりエッジでサイクル数(カウント数)をカウントアップし、カウントアップした値をそのままカウント値CNTとして出力する。
【0121】
図11に示すように、比較例では、オシレータ201が信号OSCの発振(出力)を開始すると、カウンタ202は、信号OSCの立ち上がりエッジでカウント値CNTのカウントアップを開始する。従って、カウント値CNTは、CNT仕様値と同様に信号OSCのサイクル数を表している。この場合、カウンタ202は、信号OSCの発振の開始位置(
図11の“Start”)で、カウント値CNT”1“を出力する。カウンタ202は、信号OSCの1サイクル毎に、カウント値CNTをカウントアップする。オシレータ201は、カウント実行時間tRuntime経過後、信号OSCの発振を終了する。信号OSCの発振の終了位置(
図11の“Stop”)は、信号OSCの波形に対してばらつく。
【0122】
例えば、CNT仕様値を“N”(Nは1以上の整数)とすると、カウント値CNTが同じく“N”である期間は、カウント値CNTが“N”にカウントアップされてから、“N+1”にカウントアップされる直前までの期間となる。例えば、信号OSCの発振の終了位置が、カウント値CNTが“N+1”にカウントアップされる直前である場合、CNT仕様値“N”に対する信号OSCの終了位置の誤差(以下、粒度誤差(Granularity Error)とも表記する)は、最大で信号OSCのほぼ1サイクル分に相当する。すなわち、信号OSCの最大1サイクル分がレプリカ回路102における粒度誤差となる。信号OSCの1サイクルは、2×(tDQS2DQ)である。従って、カウント実行時間tRuntimeの間に生じる粒度誤差の最大値は、2×(tDQS2DQ)/tRuntimeで表すことができる。
【0123】
次に、本実施形態のカウント動作について説明する。
【0124】
図12に示すように、カウンタ202は、信号OSCの立ち下がりエッジでサイクル数をカウントアップし、カウントアップした値に+1加算した結果をカウント値CNTとして出力する。従って、CNT仕様値がカウントアップするタイミングとカウント値CNTがカウントアップするタイミングとは異なる。カウンタ202は、信号OSCのサイクル数がN-1回目のサイクルの立ち下がりエッジでカウント値CNTをNにカウントアップする。すなわち、カウンタ202は、N-1回目のサイクルが0.5サイクル経過後、カウント値CNTをNにカウントアップする。換言すれば、カウント値CNTは、CNT仕様値(信号OSCのサイクル数)に対して0.5サイクル早くカウントアップされる。このため、カウント値CNTが“N”である期間は、信号OSCのN-1回目のサイクルの立ち下がりエッジから、N回目のサイクルの立ち下がりエッジまでである。従って、CNT仕様値“N”に対する信号OSCの終了位置の粒度誤差は、最大で信号OSCのほぼ0.5サイクル分に低減される。カウント実行時間tRuntimeの間に生じる粒度誤差の最大値は、tDQS2DQ/tRuntimeで表すことができる。
【0125】
1.2.3 カウント動作の流れ
次に、
図13を参照して、カウント動作の流れの一例について説明する。
図13は、カウント動作の流れの一例を示すフローチャートである。
【0126】
図13に示すように、まず、メモリコントローラ20のCPU22は、カウント動作の実行を指示するコマンドセットを発行する(S1)。CPU22は、メモリチップ11に、コマンドセットを送信する。例えば、メモリコントローラ20は、メモリチップ11に定期的にカウント動作を実行させる。なお、例えば、メモリシステム1は、メモリチップ11における電圧または温度等の変化をモニタする機構を有していてもよい。例えば、CPU22は、メモリチップ11における電圧または温度等のモニタ結果に基づいて、カウント動作の実行の有無を判断してもよい。
【0127】
メモリチップ11のシーケンサ107は、カウント動作のコマンドセットを受信すると、レプリカ回路102において、カウント動作を開始する(S2)。より具体的には、
図10を用いて説明したように、時刻t100~t110の期間に、シーケンサ107は、メモリコントローラ20からコマンド“CMD”、アドレス“LUN”、及びアドレス“xxh”を受信する。時刻t110~t120の期間にシーケンサ107は、1パルスの信号OSC_ST及びリセット信号RSTを送信する。
【0128】
オシレータ201は、信号OSCの出力を開始する(S3)。より具体的には、
図10を用いて説明した時刻t120において、シーケンサ107は、メモリコントローラ20からスタートを指示するアドレス“00h”を受信する。
図10を用いて説明した時刻t130において、シーケンサ107は、イネーブル信号ENを“H”レベルにする。“H”レベルのイネーブル信号ENに基づいて、オシレータ201は、信号OSCの出力を開始する。
【0129】
カウンタ202は、
図10を用いて説明した時刻t130~t150の期間、信号OSCの立ち下がりエッジで信号OSCのサイクル数をカウントアップする(S4)。
【0130】
カウンタ202は、サイクル数に+1加算(S5)した値をカウント値CNTとして出力する。カウント値CNTは、ステータスレジスタ106に記憶される。
【0131】
CPU22は、カウント動作が終了すると、メモリチップ11から、カウント値CNTを読み出す(S6)。例えば、CPU22は、ゲットフィーチャ動作のコマンドセットを発行して、メモリチップ11のステータスレジスタ106からカウント値CNTを読み出す。
【0132】
CPU22は、読み出したカウント値CNTと、前回実施したカウント動作のカウント値CNTとの差分を算出する(S7)。例えば、前回実施したカウント動作のカウント値は、RAM24に記憶されている。
【0133】
CPU22は、差分の絶対値が予め設定された閾値よりも大きいか確認する(S8)。
【0134】
差分の絶対値が予め設定された閾値よりも大きい場合(S8_Yes)、CPU22は、ライトトレーニングを実行する(S9)。すなわち、メモリチップ11のシーケンサ107は、CPU22の命令に基づいて、ライトトレーニングを実行する。
【0135】
他方で、差分の絶対値が予め設定された閾値以下である場合(S8_No)、CPU22は、カウント動作を終了する。
【0136】
1.3 本実施形態に係る効果
本実施形態に係る構成であれば、半導体装置の処理能力を向上できる。本効果につき詳述する。
【0137】
例えば、メモリチップ11に信号DQと信号DQS及びbDQSとが非同期に取り込まれる場合、信号DQと信号DQS及びbDQSとが同期して取り込まれる場合と比較して、時間tDQS2DQは大きくなる。時間tDQS2DQの最適値は、メモリチップ11における電圧または温度等の変動により変化する。このため、メモリコントローラ20は、例えば定期的にライトトレーニングを実行して、信号DQと信号DQS及びbDQSとを送信するタイミングを調整する。但し、ライトトレーニングの実行時間は、比較的長い。また、ライトトレーニング実行中は、書き込み動作及び読み出し動作等が実行できない。このため、ライトトレーニングの頻度が高くなると、メモリチップ11の処理能力が低下する。
【0138】
これに対し、本実施形態に係る構成であれば、メモリチップ11(半導体装置)は、信号OSCを出力するオシレータ201と信号OSCのサイクル数をカウントするカウンタ202とを含むレプリカ回路102を有する。メモリチップ11は、メモリコントローラ20の制御に基づいて、レプリカ回路102におけるカウント動作を実行できる。メモリコントローラ20は、カウント動作の結果に基づいて、ライトトレーニング実施の有無を判定できる。よって、ライトトレーニングの実施タイミングを最適化でき、メモリチップ11の処理能力を向上できる。
【0139】
更に、本実施形態に係る構成であれば、カウンタ202は、信号OSCのサイクル数よりも0.5サイクル早くカウントアップできる。このため、信号OSCのサイクル数に合わせてカウントアップする場合と比較して、カウント実行時間tRuntimeに対するカウント値CNTの粒度誤差を1/2にできる。従って、本実施形態に係る構成であれば、信号OSCのサイクル数に合わせてカウントアップする場合と同程度のカウント動作の精度を、1/2のカウント実行時間tRuntimeで達成できる。よって、メモリチップ11の処理能力を向上できる。
【0140】
更に、本実施形態に係る構成であれば、粒度誤差を1/2にできるため、カウント動作の精度を向上できる。
【0141】
1.4 第1実施形態の変形例
次に、第1実施形態の変形例について説明する。変形例では、コマンド及びアドレスの送信方法が第1実施形態と異なる場合について説明する。以下、第1実施形態と異なる点を中心に説明する。
【0142】
1.4.1 メモリチップの構成
まず、
図14を参照して、メモリチップ11の構成の一例について説明する。
図14は、メモリチップ11(半導体装置)の構成の一例を示すブロック図である。なお、
図14の例では、各構成要素間の接続の一部を矢印線で示しているが、各構成要素間の接続はこれらに限定されない。
【0143】
本例のメモリチップ11は、メモリコントローラ20との間のデータ及び情報等の入出力において、2つのモードを有する。
【0144】
第1モードは、信号DQを、データDATの入出力に使用し、コマンドCMD及びアドレスADDの入力並びにステータス情報STSの出力には使用しないモードである。第1モードのプロトコルを、「SCA(Separate Command Address input)プロトコル」とも表記する。第1モードでは、ロジック制御回路103において、コマンドCMD及びアドレスADDの入力並びにステータス情報STSの出力が実行される。なお、第1モードにおいて、ロジック制御回路103からレディ/ビジー信号bRBが出力されてもよい。この場合、レディ/ビジー回路108は、ロジック制御回路103に接続される。
【0145】
第2モードは、第1実施形態において説明した、信号DQを、データDATの入出力、コマンドCMD及びアドレスADDの入力並びにステータス情報STSの出力に使用するモードである。第2モードについては、第1実施形態と同様であるため、説明を省略する。
【0146】
図14に示すように、本例のメモリチップ(NAND型フラッシュメモリ)11は、第1実施形態の
図2と同様に、入出力回路101、レプリカ回路102、ロジック制御回路103、アドレスレジスタ104、コマンドレジスタ105、ステータスレジスタ106、シーケンサ107、レディ/ビジー回路108、電圧発生回路109、メモリセルアレイ120、ロウデコーダ121、センスアンプ122、データレジスタ123、及びカラムデコーダ124を含む。レプリカ回路102、アドレスレジスタ104、コマンドレジスタ105、ステータスレジスタ106、シーケンサ107、レディ/ビジー回路108、電圧発生回路109、メモリセルアレイ120、ロウデコーダ121、センスアンプ122、データレジスタ123、及びカラムデコーダ124の構成は、第1実施形態と同様である。
【0147】
入出力回路101は、第1モードが選択されている場合、ロジック制御回路103からコマンドCMD及びアドレスADDを受信する。また、入出力回路101は、ロジック制御回路103にステータス情報STSを送信する。
【0148】
ロジック制御回路103は、メモリコントローラ20から、信号CA_bCE、信号CA_CLK、リードイネーブル信号RE及びbRE、及び信号SCAを受信する。また、ロジック制御回路103は、メモリコントローラ20と、信号CA1及び信号CA0を送受信する。
【0149】
信号CA_bCEは、第1実施形態において説明したチップイネーブル信号bCEに相当する。信号CA_bCEは、例えばLow(“L”)レベルでアサートされる。
【0150】
信号CA0及び信号CA1は、第1モードでは、コマンド、アドレス、またはステータス情報STSを示す信号である。第2モードでは、信号CA1の入力端子に、コマンドラッチイネーブル信号CLEが入力される。また、信号CA0の入力端子に、アドレスラッチイネーブル信号ALEが入力される。
【0151】
信号CA_CLKは、第1モードでは、信号CA0及び信号CA1のストローブ信号である。例えば、ロジック制御回路103は、コマンドCMDまたはアドレスADD入力の際、信号CA_CLKの立ち上がりエッジ及び立ち下がりエッジで、信号CA0及び信号CA1を取り込む。また、ロジック制御回路103は、ステータス情報STS出力の際、信号CA_CLKに基づいて、信号CA0及び信号CA1を出力する。第2モードでは、信号CA_CLKに対応する端子に、ライトイネーブル信号bWEが入力される。
【0152】
リードイネーブル信号RE及びbREは、第1モードでは、信号DQの出力に用いられ、ステータス情報STSの出力には用いられない。
【0153】
信号SCAは、モード切替の制御信号である。例えば、信号SCAが“H”レベルの場合、第1モードが選択され、信号SCAが“L”レベルの場合、第2モードが選択される。
【0154】
1.4.2 第1モードにおけるコマンド及びアドレス入力のコマンドシーケンス
次に、
図15を参照して、第1モードにおけるコマンド及びアドレス入力のコマンドシーケンスの一例について説明する。
図15は、第1モードにおけるコマンド及びアドレス入力のコマンドシーケンスの一例を示す図である。なお、
図15の例では、信号DQ、信号DQS及びbDQS、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0155】
図15に示すように、第1モードでは、6ビットの信号CA0と6ビットの信号CA1との組み合わせにより、情報の種類と8ビットの情報とが示される。以下、信号CA0と信号CA1との組み合わせを「フレーム」と表記する。情報の種類は、例えば、コマンドCMD、アドレスADD、またはステータス情報STSのいずれかであるかを示している。
【0156】
フレームは、情報の種類を示すヘッダセットと情報の内容を示すボディセットとの組み合わせにより構成される。
【0157】
ヘッダセットは、信号CA0の先頭2ビットと信号CA1の先頭2ビットにより構成される4ビット(各ビットを「ヘッダ」と表記する)のセットである。信号CA0及び信号CA1の各々において、ヘッダセット内の第1ビットを第1ヘッダと表記する。ヘッダセット内の第2ビットを第2ヘッダと表記する。
【0158】
ボディセットは、信号CA0の後方4ビットと信号CA1の後方4ビットにより構成される8ビット(各ビットを「ボディ」と表記する)のセットである。信号CA0及び信号CA1の各々において、ボディセット内の第1ビットを第1ボディと表記する。ボディセット内の第2ビットを第2ボディと表記する。ボディセット内の第3ビットを第3ボディと表記する。ボディセット内の第4ビットを第4ボディと表記する。例えば、信号CA0の第1ボディが第2モードにおける信号DQ<0>に対応し、信号CA1の第1ボディが第2モードにおける信号DQ<1>に対応する。信号CA0の第2ボディが第2モードにおける信号DQ<2>に対応し、信号CA1の第2ボディが第2モードにおける信号DQ<3>に対応する。信号CA0の第3ボディが第2モードにおける信号DQ<4>に対応し、信号CA1の第3ボディが第2モードにおける信号DQ<5>に対応する。信号CA0の第4ボディが第2モードにおける信号DQ<6>に対応し、信号CA1の第4ボディが第2モードにおける信号DQ<7>に対応する。
【0159】
メモリコントローラ20は、第1モードを選択する場合、信号CA_bCEを“L”レベルにし且つ信号SCAを“H”レベルにする。これにより、対象のメモリチップ11では、第1モードが選択される。
【0160】
まず、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1の第1ヘッダを送信する。メモリチップ11は、時刻t0における信号CA_CLKの立ち上がりエッジに合わせて、第1ヘッダを取り込む。
【0161】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1の第2ヘッダを送信する。メモリチップ11は、時刻t1における信号CA_CLKの立ち下がりエッジに合わせて、第2ヘッダを取り込む。
【0162】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1の第1ボディを送信する。メモリチップ11は、時刻t2における信号CA_CLKの立ち上がりエッジに合わせて、第1ボディを取り込む。
【0163】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1の第2ボディを送信する。メモリチップ11は、時刻t3における信号CA_CLKの立ち下がりエッジに合わせて、第2ボディを取り込む。
【0164】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1の第3ボディを送信する。メモリチップ11は、時刻t4における信号CA_CLKの立ち上がりエッジに合わせて、第3ボディを取り込む。
【0165】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1の第4ボディを送信する。メモリチップ11は、時刻t5における信号CA_CLKの立ち下がりエッジに合わせて、第4ボディを取り込む。
【0166】
例えば、メモリコントローラ20は、フレームの送信が終了すると、信号CA_bCEを“H”レベルにし且つ信号SCAを“L”レベルにする。
【0167】
上述で説明したように、第1モードが選択されている場合、コマンドCMD及びアドレスADDの入力には、信号DQ、信号DQS及びbDQS、並びに信号RE及びbREが用いられない。このため、コマンドCMD及びアドレスADDの入力は、信号DQ並びに信号DQS及びbDQSを用いたデータDATの入出力と並列に実行され得る。メモリコントローラ20は、信号DQ並びに信号DQS及びbDQSを用いずに、メモリチップ11に、カウント動作の実行を指示できる。
【0168】
1.4.3 第1モードにおけるゲットフィーチャ動作のコマンドシーケンス
次に、
図16を参照して、第1モードにおけるゲットフィーチャ動作のコマンドシーケンスについて説明する。
図16は、第1モードにおけるゲットフィーチャ動作のコマンドシーケンスの一例を示す図である。なお、
図16の例では、信号DQ、信号DQS及びbDQS、信号CA_bCE、信号SCA、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0169】
図16に示すように、まず、時刻t10~t15において、ゲットフィーチャ動作の実行を指示するコマンドCMDに対応するフレームの入力動作が実行される。時刻t10~t21における各時刻の間隔を「tCLK1」と表記する。
【0170】
より具体的には、まず、時刻t10において、第1ヘッダとして、例えば、“0”を示す信号CA0と、“0”を示す信号CA1とが入力される。
【0171】
次に、時刻t11において、第2ヘッダとして、例えば、“1”を示す信号CA0と、“1”を示す信号CA1とが入力される。例えば、“0”、“0”、“1”、“1”のヘッダセットは、次に入力されるボディセットがコマンドCMDであることを示す。
【0172】
次に、時刻t12~t15の間に、コマンドCMDのボディセットが入力される。より具体的には、時刻t12において、第1ボディを示す信号CA0及び信号CA1が入力される。次に、時刻t13において、第2ボディを示す信号CA0及び信号CA1が入力される。次に、時刻t14において、第3ボディを示す信号CA0及び信号CA1が入力される。次に、時刻t15において、第4ボディを示す信号CA0及び信号CA1が入力される。
【0173】
次に、時刻t16~t21において、ステータスレジスタ106のアドレスADDに対応するフレームの入力動作が実行される。
【0174】
より具体的には、まず、時刻t16において、第1ヘッダとして、例えば、“0”を示す信号CA0と、“0”を示す信号CA1とが入力される。
【0175】
次に、時刻t17において、第2ヘッダとして、例えば、“0”を示す信号CA0と、“1”を示す信号CA1とが入力される。例えば、“0”、“0”、“0”、“1”のヘッダセットは、次に入力されるボディセットがアドレスADDであることを示す。
【0176】
つぎに、時刻t18~t21の間に、アドレスADDのボディセットが入力される。より具体的には、時刻t18において、第1ボディを示す信号CA0及び信号CA1が入力される。次に、時刻t19において、第2ボディを示す信号CA0及び信号CA1が入力される。次に、時刻t20において、第3ボディを示す信号CA0及び信号CA1が入力される。次に、時刻t21において、第4ボディを示す信号CA0及び信号CA1が入力される。
【0177】
シーケンサ107は、時刻t21において、アドレスADDの入力が完了すると、レディ/ビジー信号bRBを“L”レベルにして、ステータスレジスタ106の対象アドレスからロジック制御回路103へのステータス情報STS(例えば、カウント値CNT)の読み出し動作を開始する。レディ/ビジー信号bRBが“L”レベルにされている期間tFEATに、読み出し動作が実行され、読み出されたステータス情報STSは、ロジック制御回路103の図示せぬレジスタに記憶される。シーケンサ107は、読み出し動作が完了すると、レディ/ビジー信号bRBを“H”レベルにする。
【0178】
メモリコントローラ20は、“H”レベルのレディ/ビジー信号bRBを受信すると、メモリチップ11にステータス情報STSの出力(DOUT)を指示するヘッダセットを送信する。
【0179】
より具体的には、まず、時刻t22において、第1ヘッダとして、例えば、“0”を示す信号CA0と、“0”を示す信号CA1とが入力される。
【0180】
次に、時刻t22において、第2ヘッダとして、例えば、“0”を示す信号CA0と、“0”を示す信号CA1とが入力される。例えば、“0”、“0”、“0”、“0”のヘッダセットは、ロジック制御回路103からのステータス情報STSの出力を指示するヘッダセットである。
【0181】
このヘッダセットが入力されてから所定の待機時間(期間tW2R)が経過した後、メモリコントローラ20は、メモリチップ11に、信号CA_CLKを送信して、ステータス情報STSを出力するタイミングを指定する。より具体的には、時刻t24において、メモリコントローラ20は、メモリチップ11に、“H”レベルの信号CA_CLKを送信する。また、時刻t25において、メモリコントローラ20は、メモリチップ11に、“L”レベルの信号CA_CLKを送信する。時刻t25以降、メモリコントローラ20は、信号CA_CLKのトグル(“L”レベルと“H”レベルの切り替わり)を繰り返す。例えば、ステータス情報STSの出力動作における信号CA_CLKのトグルの間隔(信号CA_CLKの立ち上がりと立ち下がりとの間隔)を期間tCLK2とする。期間tCLK2は、期間tCLK1よりも短くてもよい。
【0182】
信号CA_CLKに基づいて、ステータス情報STSの出力動作が実行される。ロジック制御回路103は、ステータス情報STSとして、信号CA1を出力する。また、ロジック制御回路103は、信号CA1のストローブ信号として、信号CA0を出力する。ロジック制御回路103は、信号CA_CLKに基づいて、信号CA0を生成する。従って、信号CA0のトグルの間隔は、信号CA_CLKと同じく、期間tCLK2である。
【0183】
ステータス情報STSは、信号CA0の立ち上がり及び立ち下がりにタイミングに合わせて、信号CA1として出力される。従って、信号CA1の8ビットのボディセットは、ステータス情報STSの8ビットのデータ出力に対応する。なお、信号CA0の立ち上がりまたは立ち下がりエッジに合わせて信号CA1は、出力される。従って、信号CA1として、連続して“0”が出力される場合や、連続して“1”が出力される場合であっても、データの区切りを判別することは可能である。
【0184】
ステータス情報STSの出力動作に際しては、例えば、
図16に示すように、データを出力することを指示するヘッダセットを1回入力した後、ステータス情報STSを構成する複数のボディセットが、連続して出力されてもよい。即ち、ステータス情報STSの出力が終了するまで、ヘッダセットの入力が省略されてもよい。
【0185】
1.4.4 カウント動作のコマンドシーケンス
次に、
図17を参照して、カウント動作のコマンドシーケンスの一例について説明する。
図17は、第1モードにおけるカウント動作のコマンドシーケンスの一例を示す図である。なお、
図17の例では、信号DQ、信号DQS及びbDQS、信号CA_bCE、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0186】
図17に示すように、本例では、第1モードに対応して、メモリコントローラ20からメモリチップ11に信号CA0、信号CA1、及び信号CA_CLKが送信される。なお、メモリチップ11内で生成される内部信号(信号OSC_ST、リセット信号RST、イネーブル信号EN、信号OSC、信号OSC_CLK、及びカウント値CNT<15:0>)は、第1実施形態の
図10と同様である。
【0187】
より具体的には、時刻t100~t110の期間において、まず、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1として、コマンド“CMD”に対応するフレームを送信する。メモリチップ11は、信号CA_CLKの立ち上がりエッジ及び立ち下がりエッジに合わせて、信号CA0及び信号CA1を取り込む。
【0188】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1として、アドレス“LUN”に対応するフレームを送信する。メモリチップ11は、信号CA_CLKの立ち上がりエッジ及び立ち下がりエッジに合わせて、信号CA0及び信号CA1を取り込む。
【0189】
次に、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1として、アドレス“xxh”に対応するフレームを送信する。メモリチップ11は、信号CA_CLKの立ち上がりエッジ及び立ち下がりエッジに合わせて、信号CA0及び信号CA1を取り込む。なお、“xxh”は、コマンドであってもよい。
【0190】
シーケンサ107は、アドレス“xxh”を受信すると、時刻t110~t120の期間において、レプリカ回路102に“H”レベルの信号OSC_STを送信する。シーケンサ107は、1パルスの信号OSC_STを送信後、信号OSC_STを“L”レベルとする。
【0191】
続けて、シーケンサ107は、レプリカ回路102に“H”レベルのリセット信号RSTを送信する。“H”レベルのリセット信号RSTを受信すると、カウンタ202の各フリップフロップ213はリセットされる。シーケンサ107は、1パルスのリセット信号RSTを送信後、リセット信号RSTを“L”レベルとする。
【0192】
次に、時刻t120において、メモリコントローラ20は、メモリチップ11に、信号CA0及び信号CA1として、アドレス“00h”に対応するフレームを送信する。メモリチップ11は、信号CA_CLKの立ち上がりエッジ及び立ち下がりエッジに合わせて、信号CA0及び信号CA1を取り込む。なお、“00h”は、コマンドであってもよい。
【0193】
シーケンサ107は、アドレス“00h”を受信すると、時刻t130において、“H”レベルのイネーブル信号ENをレプリカ回路102に送信する。オシレータ201は、“H”レベルのイネーブル信号ENを受信すると、信号OSCの発振(出力)を開始する。カウンタ202では、時刻t130~t150の期間、すなわち、イネーブル信号ENが“H”レベルである間、AND回路212から信号OSCを反転させた信号OSC_CLKが出力される。カウンタ202は、信号OSC_CLKの立ち上がりエッジに合わせてカウントアップする。すなわち、カウンタ202は、信号OSCの立ち下がりエッジに合わせてカウントアップする。カウンタ202は、カウントアップした結果に+1換算した値を、カウント値CNT<15:0>として出力する。
【0194】
次に、メモリコントローラ20は、カウント動作の開始を指示するアドレス“00h”を送信してから、カウント実行時間tRuntimeが経過した後、時刻t140において、メモリチップ11に、信号CA0及び信号CA1として、アドレス“00h”に対応するフレームを送信する。メモリチップ11は、信号CA_CLKの立ち上がりエッジ及び立ち下がりエッジに合わせて、信号CA0及び信号CA1を取り込む。なお、“00h”は、コマンドであってもよい。また、カウント動作の開始を指示するアドレスと、カウント動作の終了を指示するアドレスとは異なっていてもよい。
【0195】
シーケンサ107は、アドレス“00h”を受信すると、時刻t150において、イネーブル信号ENを“L”レベルとする。オシレータ201は、“L”レベルのイネーブル信号ENを受信すると、信号OSCの発振を終了する。カウンタ202では、イネーブル信号ENが“L”レベルとされると、AND回路212から“L”レベルの信号OSC_CLKが出力される。すなわち、カウンタ202は、カウント動作を終了する。
【0196】
1.4.5 第1実施形態の変形例に係る効果
本変形例に係る構成であれば、第1実施形態と同様の効果が得られる。
【0197】
更に、本変形例に係る構成であれば、メモリチップ11にコマンド及びアドレスが入力される際に、SCAプロトコルを適用できる。SCAプロトコルでは、コマンド及びアドレスの入力に信号DQ、信号DQS及びbDQS、並びにリードイネーブル信号RE及びbREを使用しない。このため、コマンド及びアドレスの入力と、データの入出力を並列に実行できる。すなわち、カウント動作の実行と、データの入出力動作を並列に実行できる。このため、メモリチップ11において、カウント動作による処理能力の低下を抑制できる。
【0198】
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、第1実施形態と異なるカウンタ202について説明する。以下、第1実施形態と異なる点を中心に説明する。
【0199】
2.1 カウンタの構成
まず、
図18を参照して、カウンタ202の構成の一例について説明する。
図18は、カウンタ202の構成の一例を示す回路図である。
【0200】
図18に示すように、本実施形態のカウンタ202は、信号OSC_STの立ち上がりと、信号OSCの立ち下がりエッジとに基づいて、サイクル数をカウントアップする。そして、カウンタ202は、カウントアップした結果を、カウント値CNT<15:0>として、出力する。
【0201】
カウンタ202は、インバータ211、AND回路212、複数のフリップフロップ213、遅延回路221、及びOR回路222を含む。例えば、カウンタ202は、第1実施形態と同様に、カウント値CNT<0>~CNT<15>にそれぞれ対応するフリップフロップ213_0~213_15を含む。
【0202】
インバータ211及びAND回路212の構成は、第1実施形態の
図8を用いて説明したカウンタ202の構成と同様である。AND回路212の出力端子は、OR回路222の第1入力端子に接続される。
【0203】
遅延回路221は、信号OSC_STを遅延させる回路である。遅延回路221の入力端子には信号OSC_STが入力される。遅延回路221の出力端子は、OR回路222の第2入力端子に接続される。遅延回路221は、信号OSC_STを遅延させた信号OSC_ST_DLを出力する。
【0204】
OR回路222の出力端子は、フリップフロップ213_0のクロック信号入力端子に接続される。OR回路222は、信号OSC_CLKと信号OSC_ST_DLとを論理和(OR)演算した結果を、信号CNT_CLKとして出力する。信号CNT_CLKは、信号OSC_CLK及び信号OSC_ST_DLの少なくとも1つが“H”レベルである場合に、“H”レベルとされる。
【0205】
フリップフロップ213は、クロック信号入力端子、データ入力端子D、リセット信号入力端子R、出力端子Q、及び反転出力端子Qnを含む。
【0206】
フリップフロップ213の構成は、第1実施形態の
図8と同様である。フリップフロップ213_0のクロック信号入力端子には、信号CNT_CLKが入力される。
【0207】
本実施形態では、フリップフロップ213_0~213_15の出力端子Qから出力される信号が、16ビットのカウント値CNT<0>~CNT<15>として出力される。
【0208】
上述に説明したように、本実施形態のカウンタ202においても、第1実施形態と同様のタイミングでカウントアップしたカウント値CNTが出力される。
【0209】
2.2 カウント動作のコマンドシーケンス
次に、
図19を参照して、カウント動作のコマンドシーケンスの一例について説明する。
図19は、カウント動作のコマンドシーケンスの一例を示す図である。なお、
図19の例では、信号DQS及びbDQS、チップイネーブル信号bCE、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0210】
図19に示すように、時刻t100~t110の期間において、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、メモリチップ11に、コマンド“CMD”、アドレス“LUN”、及びアドレス“xxh”を順次送信する。
【0211】
シーケンサ107は、アドレス“xxh”を受信すると、時刻t110~t120の期間において、レプリカ回路102に“H”レベルの信号OSC_STを送信する。シーケンサ107は、1パルスの信号OSC_STを送信後、信号OSC_STを“L”レベルとする。
【0212】
続けて、シーケンサ107は、レプリカ回路102に“H”レベルのリセット信号RSTを送信する。“H”レベルのリセット信号RSTを受信すると、カウンタ202の各フリップフロップ213はリセットされる。シーケンサ107は、1パルスのリセット信号RSTを送信後、リセット信号RSTを“L”レベルとする。
【0213】
時刻t111において、カウンタ202では、“H”レベルのリセット信号RSTを受信して、フリップフロップ213をリセットした後、信号OSC_STを遅延させた信号OSC_ST_DLが“H”レベルに立ち上がる。これにより、信号CNT_CLKは、“H”レベルに立ち上がる。カウンタ202は、信号CNT_CLKの立ち上がりエッジで、カウントアップする。従って、カウンタ202は、オシレータ201が信号OSCの発振を開始させる前に、信号OSC_STの1パルスに対応してカウント値CNTを+1カウントアップする。すなわち、カウント値CNTは“1”とされる。
【0214】
次に、時刻t120において、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、メモリチップ11に、カウント動作の開始を指示するアドレス“00h”を送信する。
【0215】
シーケンサ107は、アドレス“00h”を受信すると、時刻t130において、“H”レベルのイネーブル信号ENをレプリカ回路102に送信する。オシレータ201は、“H”レベルのイネーブル信号ENを受信すると、信号OSCの発振を開始する。カウンタ202では、時刻t130~t150の期間、すなわち、イネーブル信号ENが“H”レベルである間、AND回路212から信号OSCを反転させた信号OSC_CLKが出力される。そして、OR回路222から、信号OSC_CLKに同期した信号CNT_CLKが出力される。カウンタ202は、信号CNT_CLKの立ち上がりエッジに合わせてカウントアップする。すなわち、カウンタ202は、信号OSCの立ち下がりエッジに合わせてカウントアップする。このとき、カウンタ202は、カウント値CNTが“1”の状態からカウントアップする。
【0216】
次に、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、カウント動作の開始を指示するアドレス“00h”を送信してから、カウント実行時間tRuntimeが経過した後、時刻t140において、メモリチップ11に、再度、アドレス“00h”を送信する。
【0217】
シーケンサ107は、アドレス“00h”を受信すると、時刻t150において、イネーブル信号ENを“L”レベルとする。オシレータ201は、“L”レベルのイネーブル信号ENを受信すると、信号OSCの発振を終了する。カウンタ202は、カウント動作を終了する。
【0218】
2.3 カウント動作の流れ
次に、
図20を参照して、カウント動作の流れの一例について説明する。
図20は、カウント動作の流れの一例を示すフローチャートである。
【0219】
図20に示すように、まず、ステップS1及びS2が実行される。ステップS1及びS2の動作は、第1実施形態の
図13の説明と同様である。
【0220】
カウンタ202は、信号OSC_STの1パルスの信号に対応して、カウント値CNTを1にカウントアップする(S21)。より具体的には、
図19を用いて説明した時刻t111において、信号OSC_STを遅延させた信号OSC_ST_DLが“H”レベルに立ち上がる。これにより、信号CNT_CLKは、“H”レベルに立ち上がる。カウンタ202は、信号CNT_CLKの立ち上がりエッジで、カウント値を1にカウントアップする。
【0221】
次に、ステップS3及びS4が実行される。ステップS3及びS4の動作は、第1実施形態の
図13の説明と同様である。
【0222】
次に、ステップS6~S9が実行される。ステップS6~S9の動作は、第1実施形態の
図13の説明と同様である。
【0223】
2.4 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。
【0224】
なお、本実施形態に第1実施形態の変形例を適用できる。
【0225】
3.第3実施形態
次に、第3実施形態について説明する。第3実施形態では、第1及び第2実施形態と異なるカウンタ202について説明する。以下、第1及び第2実施形態と異なる点を中心に説明する。
【0226】
3.1 カウンタの構成
まず、
図21を参照して、カウンタ202の構成の一例について説明する。
図21は、カウンタ202の構成の一例を示す回路図である。
【0227】
図21に示すように、本実施形態のカウンタ202は、信号OSCの立ち上がりエッジに基づいて、サイクル数をカウントアップする。そして、カウンタ202は、信号OSCの立ち上がりエッジに対応する1ビットのデータと、信号OSCの立ち下がりエッジに対応する1ビットのデータとを排他的論理和(exOR)演算した結果に基づいて、サイクル数に0または+1加算した結果を、カウント値CNT<15:0>として、出力する。
【0228】
カウンタ202は、複数のフリップフロップ213、AND回路231、インバータ232、AND回路233、フリップフロップ234、exOR回路235、及び論理回路236を含む。例えば、カウンタ202は、第1実施形態と同様に、カウント値CNT<0>~CNT<15>にそれぞれ対応するフリップフロップ213_0~213_15を含む。
【0229】
AND回路231の第1入力端子には信号OSCが入力される。AND回路231の第1入力端子は、オシレータ201に接続される。AND回路231の第2入力端子には、イネーブル信号ENが入力される。AND回路231の出力端子は、フリップフロップ213_0のクロック信号入力端子に接続される。AND回路231は、信号OSCとイネーブル信号ENとを論理積(AND)演算した結果を、信号OSC_CLK_riseとして出力する。信号OSC_CLK_riseは、イネーブル信号ENが“H”レベルである場合、信号OSCと同期したクロック信号である。
【0230】
フリップフロップ213は、クロック信号入力端子、データ入力端子D、リセット信号入力端子R、出力端子Q、及び反転出力端子Qnを含む。
【0231】
フリップフロップ213の構成は、第1実施形態の
図8と同様である。フリップフロップ213_0のクロック信号入力端子には、信号OSC_CLK_riseが入力される。フリップフロップ213_0は、信号OSC_CLK_rise、すなわち信号OSCの立ち上がりエッジでデータを取り込む。従って、フリップフロップ213_0~213_15は、信号OSCの立ち上がりエッジでカウントアップする。
【0232】
例えば、フリップフロップ213の出力端子Qから出力される信号を信号CNT_riseと表記する。フリップフロップ213_0~213_15の出力端子Qから信号CNT_rise<0>~CNT_rise<15>がそれぞれ出力される。
【0233】
インバータ232は、信号OSCを反転して出力する。インバータ232の入力端子は、オシレータ201に接続される。インバータ232の入力端子には、信号OSCが入力される。インバータ232の出力端子は、AND回路233の第1入力端子に接続される。
【0234】
AND回路233の第2入力端子には、イネーブル信号ENが入力される。AND回路233の出力端子は、フリップフロップ234のクロック信号入力端子に接続される。AND回路233は、信号OSCの反転信号とイネーブル信号ENとを論理積(AND)演算した結果を、信号OSC_CLK_fallとして出力する。信号OSC_CLK_fallは、イネーブル信号ENが“H”レベルである場合、信号OSCを反転させたクロック信号である。例えば、イネーブル信号ENが“H”レベルであり且つ信号OSCの反転信号が“H”レベル(すなわち、信号OSCが“L”レベル)であるときに、信号OSC_CLK_fallは、“H”レベルとされる。
【0235】
フリップフロップ234は、クロック信号入力端子、データ入力端子D、リセット信号入力端子R、出力端子Q、及び反転出力端子Qnを含む。
【0236】
フリップフロップ234の構成は、フリップフロップ213と同様である。フリップフロップ234のクロック信号入力端子には、信号OSC_CLK_fallが入力される。フリップフロップ234は、信号OSC_CLK_fallの立ち上がりエッジ、すなわち信号OSCの立ち下がりエッジでデータを取り込む。フリップフロップ234のデータ入力端子Dは、当該フリップフロップ234の反転出力端子Qnに接続される。従って、フリップフロップ234は、クロック信号入力端子に入力される信号OSC_CLK_fallの立ち上がりエッジで出力端子Q及び反転出力端子Qnから出力される信号を反転させる。フリップフロップ234のリセット信号入力端子Rには、リセット信号RSTが入力される。
【0237】
例えば、フリップフロップ234の出力端子Qから出力される信号を信号CNT_fall<0>と表記する。
【0238】
exOR回路235の第1入力端子は、フリップフロップ213_0の出力端子Qに接続される。exOR回路235の第1入力端子には、信号CNT_rise<0>が入力される。exOR回路235の第2入力端子は、フリップフロップ234の出力端子Qに接続される。exOR回路235の第2入力端子には、信号CNT_fall<0>が入力される。exOR回路235は、信号CNT_rise<0>と信号CNT_fall<0>とを排他的論理和(exOR)演算した結果を出力する。例えば、信号CNT_rise<0>及び信号CNT_fall<0>がともに“H”レベル(“1”)または“L”レベル(“0”)である場合、exOR回路235の出力信号は、“L”レベル(exOR=0)とされる。また、信号CNT_rise<0>及び信号CNT_fall<0>のいずれか1つが“H”レベル(“1”)である場合、exOR回路235の出力信号は、“H”レベル(exOR=1)とされる。
【0239】
論理回路236は、各フリップフロップ213の出力端子Q及びexOR回路235の出力端子に接続される。論理回路236には、信号CNT_rise<0>~CNT_rise<15>及びexOR回路235の出力信号が入力される。論理回路236は、exOR回路235の出力信号に基づいて、信号CNT_rise<0>~CNT_rise<15>で表される16ビットのデータに、0または+1加算した結果を、16ビットのカウント値CNT<0>~CNT<15>として出力する。より具体的には、exOR=0である場合、論理回路236は、信号CNT_rise<0>~CNT_rise<15>で表される16ビットのデータに、+1加算した結果を、カウント値CNT<0>~CNT<15>として出力する。他方で、exOR=1である場合、論理回路236は、信号CNT_rise<0>~CNT_rise<15>で表される16ビットのデータを、カウント値CNT<0>~CNT<15>として出力する。
【0240】
3.2 カウント値の具体例
次に、
図22を参照して、カウント値CNTの具体例について説明する。
図22は、カウンタ202における各信号の具体例を示す図である。なお、
図22の例では、説明を簡略化するため、CNT仕様値、信号CNT_rise<15:0>、及びカウント値CNTを10進数で表記している。
【0241】
図22に示すように、時刻t200において、オシレータ201が信号OSCの発振を開始すると、CNT仕様値は、信号OSCの立ち上がりエッジで“1”にカウントアップする。信号CNT_rise<0>は、信号OSCの立ち上がりエッジで“H”レベルに反転して“1”を出力する。信号CNT_fall<0>は“0”(“L”レベル)であるため、exOR回路235は、“1”(“H”レベル)を出力する。従って、論理回路236は、信号CNT_rise<15:0>に加算しない。信号CNT_rise<15:0>は、“1”であるため、カウンタ202は、カウント値CNTとして“1”を出力する。
【0242】
次に、時刻t201において、信号CNT_fall<0>は、信号OSCの立ち下がりエッジで“H”レベルに反転して“1”を出力する。信号CNT_rise<0>及び信号CNT_fall<0>がともに“1”であるため、exOR回路235は、“0”を出力する。従って、論理回路236は、信号CNT_rise<15:0>に+1加算する。この結果、カウンタ202は、カウント値CNTとして“2”を出力する。
【0243】
次に、時刻t202において、CNT仕様値は、“2”にカウントアップする。信号CNT_rise<0>は、信号OSCの立ち上がりエッジで“L”レベルに反転して“0”を出力する。信号CNT_fall<0>は“1”であるため、exOR回路235は、“1”を出力する。従って、論理回路236は、信号CNT_rise<15:0>に加算しない。信号CNT_rise<15:0>は、“2”であるため、カウンタ202は、カウント値CNTとして、引き続き“2”を出力する。
【0244】
次に、時刻t203において、信号CNT_fall<0>は、“L”レベルに反転して“0”を出力する。信号CNT_rise<0>及び信号CNT_fall<0>がともに“0”であるため、exOR回路235は、“0”を出力する。従って、論理回路236は、信号CNT_rise<15:0>に+1加算する。この結果、カウンタ202は、カウント値CNTとして“3”を出力する。
【0245】
次に、時刻t204において、CNT仕様値は、“3”にカウントアップする。信号CNT_rise<0>は、信号OSCの立ち上がりエッジで“L”レベルに反転して“0”を出力する。信号CNT_fall<0>は“1”であるため、exOR回路235は、“1”を出力する。従って、論理回路236は、信号CNT_rise<15:0>に加算しない。信号CNT_rise<15:0>は、“3”であるため、カウンタ202は、カウント値CNTとして、引き続き“3”を出力する。
【0246】
次に、時刻t205において、信号CNT_fall<0>は、“H”レベルに反転して“1”を出力する。信号CNT_rise<0>及び信号CNT_fall<0>がともに“1”であるため、exOR回路235は、“0”を出力する。従って、論理回路236は、信号CNT_rise<15:0>に+1加算する。この結果、カウンタ202は、カウント値CNTとして“4”を出力する。
【0247】
次に、時刻t206において、CNT仕様値は、“4”にカウントアップする。信号CNT_rise<0>は、信号OSCの立ち上がりエッジで“H”レベルに反転して“1”を出力する。信号CNT_fall<0>は“0”であるため、exOR回路235は、“1”を出力する。従って、論理回路236は、信号CNT_rise<15:0>に加算しない。信号CNT_rise<15:0>は、“4”であるため、カウンタ202は、カウント値CNTとして、引き続き“4”を出力する。
【0248】
上述に説明したように、本実施形態のカウンタ202においても、第1実施形態と同様のタイミングでカウントアップしたカウント値CNTが出力される。
【0249】
3.3 カウント動作の流れ
次に、
図23を参照して、カウント動作の流れの一例について説明する。
図23は、カウント動作の流れの一例を示すフローチャートである。
【0250】
図23に示すように、まず、ステップS1~S3が実行される。ステップS1~S3の動作は、第1実施形態の
図13の説明と同様である。
【0251】
カウンタ202は、
図22を用いて説明したように、信号OSC(OSC_CLK_rise)の立ち上がりエッジで信号OSC(OSC_CLK_rise)のサイクル数をカウントアップする(S31)。
【0252】
exOR回路235は、信号CNT_rise<0>と信号CNT_fall<0>とを排他的論理和(exOR)演算を実行する。演算結果が0(exOR=0)である場合(S32_Yes)、論理回路236は、サイクル数に+1加算(S33)した値をカウント値CNTとして出力する。
【0253】
他方で、演算結果が1(exOR=1)である場合(S32_No)、論理回路236は、サイクル数をカウント値CNTとして出力する。
【0254】
次に、ステップS6~S9が実行される。ステップS6~S9の動作は、第1実施形態の
図13の説明と同様である。
【0255】
3.4 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。
【0256】
なお、本実施形態に第1実施形態の変形例を適用できる。
【0257】
4.第4実施形態
次に、第4実施形態について説明する。第4実施形態では、第1乃至第3実施形態と異なるカウンタ202について説明する。以下、第1乃至第3実施形態と異なる点を中心に説明する。
【0258】
4.1 カウンタの構成
まず、
図24を参照して、カウンタ202の構成の一例について説明する。
図24は、カウンタ202の構成の一例を示す回路図である。
【0259】
図24に示すように、本実施形態のカウンタ202は、信号OSC(信号OSC_CLK2)の立ち上がりエッジに基づいて、サイクル数をカウントアップする。そして、カウンタ202は、信号OSCが“L”レベルの状態でカウント実行時間tRuntimeを終了した場合、信号OSC_CLK2を“H”レベルにして、サイクル数を+1加算する。カウンタ202は、サイクル数を、カウント値CNT<15:0>として、出力する。
【0260】
カウンタ202は、複数のフリップフロップ213及びOR回路241を含む。例えば、カウンタ202は、第1実施形態と同様に、カウント値CNT<0>~CNT<15>にそれぞれ対応するフリップフロップ213_0~213_15を含む。
【0261】
OR回路241の第1入力端子には信号OSCが入力される。AND回路231の第1入力端子は、オシレータ201に接続される。OR回路241の第2入力端子には、イネーブル信号bENが入力される。イネーブル信号bENは、カウント動作を実行しない場合、“H”レベルとされる。イネーブル信号bENが“L”レベルの間、カウント動作が実行される。すなわち、イネーブル信号bENが“L”レベルの間、オシレータ201は、信号OSCを発振させる。OR回路241の出力端子は、フリップフロップ213_0のクロック信号入力端子に接続される。OR回路241は、信号OSCとイネーブル信号bENとを論理和(OR)演算した結果を、信号OSC_CLK2として出力する。このため、信号OSC_CLK2は、イネーブル信号bENが“H”レベルである場合、“H”レベルとされる。また、信号OSC_CLK2は、イネーブル信号bENが“L”レベルである場合、信号OSCと同期したクロック信号である。
【0262】
フリップフロップ213は、クロック信号入力端子、データ入力端子D、リセット信号入力端子R、出力端子Q、及び反転出力端子Qnを含む。
【0263】
フリップフロップ213の構成は、第1実施形態の
図8と同様である。フリップフロップ213_0のクロック信号入力端子には、信号OSC_CLK2が入力される。フリップフロップ213_0は、信号OSC_CLK2、すなわち信号OSCの立ち上がりエッジでデータを取り込む。
【0264】
本実施形態では、フリップフロップ213_0~213_15の出力端子Qから出力される信号が、16ビットのカウント値CNT<0>~CNT<15>として出力される。
【0265】
4.2 カウント値の具体例
次に、
図25を参照して、カウント値CNTの具体例について説明する。
図25は、カウンタ202における信号OSC及び信号OSC_CLK2並びにカウント値CNTの具体例を示す図である。なお、
図25の例では、説明を簡略化するため、CNT仕様値及びカウント値CNTを10進数で表記している。
【0266】
図25に示すように、カウンタ202は、信号OSC_CLK2(すなわち、信号OSC)の立ち上がりエッジでサイクル数をカウントアップする。カウンタ202のOR回路241に、“H”レベルのイネーブル信号bENが入力されると、オシレータ201は、信号OSCの発振を終了する。カウント動作の終了位置(
図25の“Stop”)において信号OSCが“L”レベルである場合、OR回路241は、イネーブル信号bENが“H”レベルであるため、“H”レベルの信号OSC_CLK2を出力する。すなわち、信号OSC_CLK2は、“H”レベルに立ち上がる。これにより、カウンタ202は、信号OSCのサイクル数に+1加算されたカウント値CNTを出力する。従って、信号OSCのN-1回目のサイクルにおいて、“L”レベルである期間、カウント値CNTは、“N”とされる。
【0267】
また、カウント動作の終了位置において信号OSCが“H”レベルである場合、OR回路241は、“H”レベルの信号OSC_CLK2の出力を維持する。これにより、カウンタ202は、+1加算されていないカウント値CNTを出力する。従って、信号OSCのN回目のサイクルにおいて、“H”レベルである期間、カウント値CNTは、“N”とされる。
【0268】
従って、カウント値CNTが“N”である期間は、第1実施形態と同様に、信号OSCのN-1回目のサイクルの立ち下がりエッジから、N回目のサイクルの立ち下がりエッジまでである。この結果、CNT仕様値“N”に対する信号OSCの終了位置の粒度誤差は、最大で信号OSCのほぼ0.5サイクルに低減される。
【0269】
上述に説明したように、本実施形態のカウンタ202においても、第1実施形態と同様のタイミングでカウントアップしたカウント値CNTが出力される。
【0270】
4.3 カウント動作のコマンドシーケンス
次に、
図26を参照して、カウント動作のコマンドシーケンスの一例について説明する。
図26は、カウント動作のコマンドシーケンスの一例を示す図である。なお、
図26の例では、信号DQS及びbDQS、チップイネーブル信号bCE、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0271】
図26に示すように、時刻t100~t110の期間において、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、メモリチップ11に、コマンド“CMD”、アドレス“LUN”、及びアドレス“xxh”を順次送信する。
【0272】
シーケンサ107は、アドレス“xxh”を受信すると、時刻t110~t120の期間において、レプリカ回路102に“H”レベルの信号OSC_STを送信する。シーケンサ107は、1パルスの信号OSC_STを送信後、信号OSC_STを“L”レベルとする。
【0273】
続けて、シーケンサ107は、レプリカ回路102に“H”レベルのリセット信号RSTを送信する。“H”レベルのリセット信号RSTを受信すると、カウンタ202の各フリップフロップ213はリセットされる。シーケンサ107は、1パルスのリセット信号RSTを送信後、リセット信号RSTを“L”レベルとする。
【0274】
次に、時刻t120において、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、メモリチップ11に、カウント動作の開始を指示するアドレス“00h”を送信する。
【0275】
シーケンサ107は、アドレス“00h”を受信すると、時刻t130において、“H”レベルのイネーブル信号bENを“H”レベルから“L”レベルにする。オシレータ201は、“L”レベルのイネーブル信号bENを受信すると、信号OSCの発振を開始する。カウンタ202では、時刻t130~t150の期間、すなわち、イネーブル信号bENが“L”レベルである間、OR回路241から信号OSCと同期した信号OSC_CLK2が出力される。カウンタ202は、信号OSC_CLK2の立ち上がりエッジに合わせてカウントアップする。すなわち、カウンタ202は、信号OSCの立ち上がりエッジに合わせてカウントアップする。
【0276】
次に、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、カウント動作の開始を指示するアドレス“00h”を送信してから、カウント実行時間tRuntimeが経過した後、時刻t140において、メモリチップ11に、再度、アドレス“00h”を送信する。
【0277】
シーケンサ107は、アドレス“00h”を受信すると、時刻t150において、イネーブル信号bENを“H”レベルとする。オシレータ201は、“H”レベルのイネーブル信号bENを受信すると、信号OSCの発振を終了する。このとき、信号OSCが“L”レベルである場合、OR回路241は、“H”レベルのイネーブル信号bENに基づいて、“H”レベルの信号OSC_CLK2を出力する。カウンタ202は、“H”レベルの信号OSC_CLK2に基づいて、サイクル数をカウントアップさせた後、カウント動作を終了する。
【0278】
4.4 カウント動作の流れ
次に、
図27を参照して、カウント動作の流れの一例について説明する。
図27は、カウント動作の流れの一例を示すフローチャートである。
【0279】
図27に示すように、まず、ステップS1~S3が実行される。ステップS1~S3の動作は、第1実施形態の
図13の説明と同様である。
【0280】
カウンタ202は、
図26を用いて説明した時刻t130~t150の期間、信号OSC_CLK2(すなわち、信号OSC)の立ち上がりエッジで信号OSCのサイクル数をカウントアップする(S41)。
【0281】
オシレータ201は、
図26を用いて説明した時刻t150において、“H”レベルのイネーブル信号bENを受信すると、信号OSCの出力を終了する(S42)。
【0282】
信号OSC_CLK2(すなわち、信号OSC)が“L”レベルのときに信号OSCの出力が終了した場合(S43_Yes)、
図25を用いて説明したように、OR回路241は、“H”レベルのイネーブル信号bENに基づいて、信号OSC_CLK2を“H”レベルにシフトさせる(S44)。この結果、カウント値CNTが+1加算される。
【0283】
他方で、信号OSC_CLK2(すなわち、信号OSC)が“H”レベルのときに信号OSCの出力が終了した場合(S43_No)、OR回路241は、“H”レベルの信号OSC_CLK2を維持する。この結果、カウント値CNTに+1加算されない。
【0284】
次に、ステップS6~S9が実行される。ステップS6~S9の動作は、第1実施形態の
図13の説明と同様である。
【0285】
4.5 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。
【0286】
なお、本実施形態に第1実施形態の変形例を適用できる。
【0287】
4.6 第4実施形態の変形例
次に、第4実施形態の変形例について説明する。変形例では、レプリカ回路102の構成が第1実施形態と異なる場合について説明する。以下、第1乃至第4実施形態と異なる点を中心に説明する。
【0288】
4.6.1 レプリカ回路の全体構成
まず、
図28を参照して、レプリカ回路102の全体構成の一例について説明する。
図28は、レプリカ回路102の全体構成の一例を示す図である。
【0289】
図28に示すように、レプリカ回路102は、オシレータ201及びカウンタ202を含む。
【0290】
オシレータ201は、信号OSCを出力(発振)する。オシレータ201は、コンパレータ203、ドライバ204及び205、プルアップ回路251、並びに無効(Disable)回路252を含む。
【0291】
コンパレータ203並びにはドライバ204及び205は、第1実施形態の
図7を用いた説明と同様である。
【0292】
プルアップ回路251は、コンパレータ203の出力信号、すなわち信号OSCを“H”レベルに吊り上げる。プルアップ回路251は、PチャネルMOSトランジスタ301を含む。
【0293】
トランジスタ301のソースには、例えば電源電圧が印加される。トランジスタ301のドレインは、コンパレータ203の出力端子に接続される。すなわち、トランジスタ301のドレインは、信号OSCを伝送する配線経路に接続される。トランジスタ301のゲートには、イネーブル信号ENが入力される。トランジスタ301は、“L”レベルのイネーブル信号ENが入力されると、オン状態とされる。すなわち、カウント動作を実行していない期間、信号OSCは、“H”レベルに吊り上げられる。
【0294】
無効回路252は、コンパレータ203の動作を停止させる(“L”レベルを出力させる)。回路である。無効回路252は、NチャネルMOSトランジスタ302を含む。
【0295】
トランジスタ302のドレインは、コンパレータ203に接続される。トランジスタ302のソースは、接地される(接地配線に接続される)。トランジスタ302のゲートには、イネーブル信号bENが入力される。トランジスタ302は、“H”レベルのイネーブル信号bENが入力されると、オン状態とされる。すなわち、カウント動作を実行していない期間、コンパレータ203の出力は、“L”レベルとされる。
【0296】
4.6.2 カウンタの構成
次に、
図29を参照して、カウンタ202の構成の一例について説明する。
図29は、カウンタ202の構成の一例を示す回路図である。
【0297】
図29に示すように、本実施形態のカウンタ202は、信号OSCの立ち上がりエッジに基づいて、サイクル数をカウントアップする。そして、カウンタ202は、サイクル数を、カウント値CNT<15:0>として、出力する。
【0298】
カウンタ202は、複数のフリップフロップ213を含む。例えば、カウンタ202は、第1実施形態と同様に、カウント値CNT<0>~CNT<15>にそれぞれ対応するフリップフロップ213_0~213_15を含む。
【0299】
フリップフロップ213は、クロック信号入力端子、データ入力端子D、リセット信号入力端子R、出力端子Q、及び反転出力端子Qnを含む。
【0300】
フリップフロップ213の構成は、第1実施形態の
図8と同様である。フリップフロップ213_0のクロック信号入力端子には、信号OSCが入力される。フリップフロップ213_0は、信号OSCの立ち上がりエッジでデータを取り込む。
【0301】
本実施形態では、フリップフロップ213_0~213_15の出力端子Qから出力される信号が、16ビットのカウント値CNT<0>~CNT<15>として出力される。
【0302】
4.6.3 カウント動作のコマンドシーケンス
次に、
図30を参照して、カウント動作のコマンドシーケンスの一例について説明する。
図30は、カウント動作のコマンドシーケンスの一例を示す図である。なお、
図30の例では、信号DQS及びbDQS、チップイネーブル信号bCE、リードイネーブル信号RE及びbRE、並びにレディ/ビジー信号bRBは省略されている。
【0303】
図30に示すように、時刻t100~t110の期間において、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、メモリチップ11に、コマンド“CMD”、アドレス“LUN”、及びアドレス“xxh”を順次送信する。
【0304】
シーケンサ107は、アドレス“xxh”を受信すると、時刻t110~t120の期間において、レプリカ回路102に“H”レベルの信号OSC_STを送信する。シーケンサ107は、1パルスの信号OSC_STを送信後、信号OSC_STを“L”レベルとする。
【0305】
続けて、シーケンサ107は、レプリカ回路102に“H”レベルのリセット信号RSTを送信する。“H”レベルのリセット信号RSTを受信すると、カウンタ202の各フリップフロップ213はリセットされる。シーケンサ107は、1パルスのリセット信号RSTを送信後、リセット信号RSTを“L”レベルとする。
【0306】
次に、時刻t120において、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、メモリチップ11に、カウント動作の開始を指示するアドレス“00h”を送信する。
【0307】
シーケンサ107は、アドレス“00h”を受信すると、時刻t130において、“L”レベルのイネーブル信号ENを“L”レベルから“H”レベルにする。また、“H”レベルのイネーブル信号bENを“H”レベルから“L”レベルにする。オシレータ201は、“H”レベルのイネーブル信号EN及び“L”レベルのイネーブル信号bENを受信すると、信号OSCの発振を開始する。カウンタ202では、時刻t130~t150の期間、すなわち、イネーブル信号bENが“L”レベルである間、OR回路241から信号OSCと同期した信号OSC_CLK2が出力される。カウンタ202は、信号OSC_CLK2の立ち上がりエッジに合わせてカウントアップする。すなわち、カウンタ202は、信号OSCの立ち上がりエッジに合わせてカウントアップする。
【0308】
次に、メモリコントローラ20は、第1実施形態の
図10を用いた説明と同様に、カウント動作の開始を指示するアドレス“00h”を送信してから、カウント実行時間tRuntimeが経過した後、時刻t140において、メモリチップ11に、再度、アドレス“00h”を送信する。
【0309】
シーケンサ107は、アドレス“00h”を受信すると、時刻t150において、イネーブル信号ENを“L”レベルとし、イネーブル信号bENを“H”レベルとする。オシレータ201は、“H”レベルのイネーブル信号bENを受信すると、信号OSCの発振を終了する。このとき、信号OSCが“L”レベルである場合、オシレータ201のプルアップ回路251がオン状態とされるため、オシレータ201は、“H”レベルの信号OSCを出力する。カウンタ202は、“H”レベルの信号OSCに基づいて、サイクル数をカウントアップさせた後、カウント動作を終了する。
【0310】
4.6.4 カウント動作の流れ
次に、
図31を参照して、カウント動作の流れの一例について説明する。
図31は、カウント動作の流れの一例を示すフローチャートである。
【0311】
図31に示すように、まず、ステップS1~S3が実行される。ステップS1~S3の動作は、第1実施形態の
図13の説明と同様である。
【0312】
カウンタ202は、
図30を用いて説明した時刻t130~t150の期間、信号OSCの立ち上がりエッジで信号OSCのサイクル数をカウントアップする(S51)。
【0313】
オシレータ201は、
図30を用いて説明した時刻t150において、“H”レベルのイネーブル信号bENを受信すると、信号OSCの出力を終了する(S52)。より具体的には、プルアップ回路251は、“L”レベルのイネーブル信号ENに基づいて、オン状態とされる。すなわち、信号OSCを“H”レベルに吊り上げる。また、無効回路252は、“H”レベルのイネーブル信号bENに基づいて、オン状態とされる。
【0314】
信号OSCが“L”レベルのときに信号OSCの出力が終了した場合(S53_Yes)、信号OSCは、“H”レベルに吊り上げられる。この結果、カウント値CNTが+1加算される。
【0315】
他方で、信号OSCが“H”レベルのときに信号OSCの出力が終了した場合(S53_No)、信号OSCは、“H”レベルを維持する。従って、カウント値CNTに+1加算されない。
【0316】
次に、ステップS6~S9が実行される。ステップS6~S9の動作は、第1実施形態の
図13の説明と同様である。
【0317】
4.6.5 本変形例に係る構成
本変形例に係る構成であれば、第1実施形態と同様の効果が得られる。
【0318】
なお、本実施形態に第1実施形態の変形例を適用できる。
【0319】
5.第5実施形態
次に、第5実施形態について説明する。第5実施形態では、レプリカ回路を異なる半導体装置に適用した2つの例を示す。以下、第1乃至第4実施形態と異なる点を中心に説明する。
【0320】
5.1 第1例
第1例では、半導体装置がDRAMである場合について説明する。
【0321】
図32を参照して、半導体装置400の全体構成の一例について説明する。
図32は、半導体装置400の全体構成の一例を示すブロック図である。なお、
図32では、各構成要素の接続の一部を矢印線により示しているが、構成要素間の接続はこれらに限定されない。
【0322】
図32に示すように、半導体装置400は、例えば、メモリセルアレイ401、ロウデコーダ402、カラムデコーダ403、論理制御回路404、コマンド/アドレス入力回路405、センスアンプ回路406、レプリカ回路407、転送ゲート408、読み出し/書き込みアンプ回路(RWAMP:Read/Write Amplifier)409、入出力回路410、クロック入出力回路411、及び電圧生成回路412を含む。
【0323】
メモリセルアレイ401は、複数のメモリセルMCを含む。半導体装置400のメモリセルMCのそれぞれは、セルキャパシタCCと、セルトランジスタCTとを含む。セルトランジスタCTのゲートは、複数のワード線WLのうち対応する1つに接続される。セルトランジスタCTの電流経路の一端は、ビット線BLに接続される。セルトランジスタCTの電流経路の他端は、セルキャパシタCCの一端に接続される。セルキャパシタCCの他端は、接地ノードに接続される。セルキャパシタCCは、記憶すべきデータに応じた量の電荷を格納できる。セルトランジスタCTは、メモリセルMCとビット線BLとの間の導通/非導通(メモリセルの選択/非選択)をスイッチングする。複数のメモリセルMCは、メモリセルアレイ401内において、2次元アレイ状または3次元アレイ状に配列されている。例えば、メモリセルアレイ401は、複数のバンクを含む。各バンクは、複数のメモリセルMCを含む制御単位である。複数のバンクは、互いに独立に動作し得る。
【0324】
ロウデコーダ402は、アドレス情報のデコード結果とコマンドのデコード結果とに基づいて、メモリセルアレイ401のロウ方向の配線(例えば、ワード線WL)の選択/非選択を制御する。
【0325】
カラムデコーダ403は、アドレス情報のデコード結果とコマンドのデコード結果とに基づいて、メモリセルアレイ401のカラム方向の配線(例えば、ビット線BL)の選択/非選択を制御する。
【0326】
論理制御回路404は、半導体装置400全体の論理制御を実行する回路である。
【0327】
論理制御回路404は、例えば、ライトトレーニングを適宜実行する。第1乃至第4実施形態と同様に、信号DQと信号DQS及びbDQSとの間のタイミング調整等を目的としてライトトレーニングが実行される。
【0328】
また、論理制御回路404は、例えば定期的に、レプリカ回路407において、クロック信号のカウント動作を実行させる。クロック信号は、信号DSQの擬似信号である。論理制御回路404は、カウント値の変化量に基づいて、ライトトレーニングの実行の有無を判断する。
【0329】
論理制御回路404は、アドレスデコーダ421、モードレジスタ422、コマンドデコーダ423を含む。
【0330】
アドレスデコーダ421は、コマンド/アドレス入力回路405から受け取ったアドレス情報をデコードする。そして、アドレスデコーダ421は、アドレス情報のデコード結果を、ロウデコーダ402及びカラムデコーダ403のそれぞれに送る。
【0331】
モードレジスタ422には、レプリカ回路407から受信したカウント値が記憶される。
【0332】
コマンドデコーダ423は、コマンド/アドレス入力回路405から受け取ったコマンドをデコードする。そして、コマンドデコーダ423は、コマンドのデコード結果を、ロウデコーダ402及びカラムデコーダ403のそれぞれに送る。
【0333】
コマンド/アドレス入力回路405は、外部(図示せぬ外部機器)から供給されるコマンド/アドレス信号CAを受ける。コマンド/アドレス信号CAは、コマンド及びアドレス情報を含む。コマンド/アドレス入力回路405は、コマンド及びアドレス情報を、コマンドデコーダ423及びアドレスデコーダ421にそれぞれ送る。
【0334】
センスアンプ回路406は、読み出し動作時において、メモリセルMCからの信号をセンス及び増幅する。センスアンプ回路406は、メモリセルMCからの信号を読み出しデータとして、転送ゲート408及びRWAMP409を介して、入出力回路410に送る。センスアンプ回路406は、入出力回路410からの書き込みデータを、転送ゲート408及びRWAMP409を介して受け取る。センスアンプ回路406は、書き込みデータに応じた信号を、ビット線BLに出力する。
【0335】
レプリカ回路407は、信号DQSに対応するクロック信号を生成し、クロック信号のサイクル数(クロック数)をカウントする回路である。レプリカ回路407は、クロック信号を生成するための帰還型のオシレータ及び第1乃至第4実施形態のいずれかで説明したカウンタを含む。オシレータのフィードバック経路は、信号DQSの伝送経路と同様の構成を有している。レプリカ回路407は、カウント動作によるカウント結果を、モードレジスタ422に送信する。
【0336】
転送ゲート408は、センスアンプ回路406とRWAMP409との間のデータ転送を制御する。
【0337】
RWAMP409は、読み出しデータに応じた信号のレベル(信号値)、及び、書き込みデータに応じた信号のレベルを増幅する。
【0338】
入出力回路410は、メモリセルアレイ401と半導体装置400の外部との間で転送される信号DQのインターフェース回路として機能する。入出力回路410は、クロック入出力回路411から受信した内部クロック信号CLKに同期したタイミングで、書き込みデータを、メモリセルアレイ401に送る。また、入出力回路410は、読み出しデータを、半導体装置400の外部のデバイスに送る。例えば、入出力回路410は、データマスク信号DMを受ける。入出力回路410は、データマスク信号DMに基づいて、信号DQ(データ)に対してマスク処理を行う。
【0339】
クロック入出力回路411は、信号DQS及びbDQSの送受信回路である。クロック入出力回路411は、半導体装置400と外部との間で、信号DQS及びbDQSの送受信を行う。半導体装置400にデータ入力される場合、クロック入出力回路411は、外部から受信した信号DQS及びbDQSに基づく内部クロック信号CLKを入出力回路410に送信する。本例の内部クロック信号CLKは、信号DQSを遅延させた信号である。入出力回路410では、内部クロック信号CLKの入力タイミングと、信号DQの入力タイミングとが同期している。これにより、入出力回路410は、内部クロック信号CLKに基づいて信号DQを取り込むことができる。ライトトレーニングでは、信号DQS及びbDQSに対応する信号CLKの遅延時間が時間tDQS2DQとなるように、信号DQのタイミングが最適化される。このため、信号DQSに対する内部クロック信号CLKの遅延時間が、時間tDQS2DQに相当する。また、半導体装置400がデータ出力する場合、クロック入出力回路411は、生成した信号DQS及びbDQSを外部に出力する。
【0340】
電圧生成回路412は、外部からの電源電圧(電源ノードVDDに印可される電圧及び接地ノードVSSに印可される電圧)を用いて、半導体装置400の各種の動作シーケンスのそれぞれに用いられる複数の電圧を生成する。電圧生成回路412は、生成された電圧を、他の回路(例えば、RWAMP409)に送る。
【0341】
なお、第5実施形態の第1例では、半導体装置400がDRAMである場合が例示されているが、これに限定されない。半導体装置400は、DRAM以外のランダムアクセスメモリであってもよい。例えば、半導体装置400が、SRAM(Static RAM)であってもよい。
【0342】
第5実施形態の第1例に係る半導体装置400では、例えば、上記第1乃至第4実施形態で説明されたレプリカ回路102が、レプリカ回路407に適用され得る。
【0343】
5.2 第2例
第1例では、半導体装置500がマイクロコントローラである場合について説明する。
【0344】
5.2.1 半導体装置の構成
まず、
図33を参照して、半導体装置500の全体構成の一例について説明する。
図33は、半導体装置500の全体構成を示すブロック図である。なお、
図33では、各構成要素の接続の一部を矢印線により示しているが、構成要素間の接続はこれらに限定されない。
【0345】
図33に示すように、半導体装置500は、例えば、プロセッサ501、バス制御回路502、フラッシュメモリ503、RAM504、DA変換回路505、AD変換回路506、タイマ507、入出力(I/O)ポート508、オシレータ509、割り込みコントローラ510、スキュー測定回路511、及びレプリカ回路512を含む。半導体装置500のバスは、プロセッサ501、バス制御回路502、フラッシュメモリ503、RAM504、DA変換回路505、AD変換回路506、タイマ507、入出力ポート508、オシレータ509、割り込みコントローラ510、スキュー測定回路511、及びレプリカ回路512に接続されている。半導体装置500のバスは、半導体装置500内における、信号及びデータの伝送経路である。
【0346】
プロセッサ501は、半導体装置500内の各種の処理を実行する。プロセッサ501は、供給されたデータに対する各種の処理を行う。プロセッサ501は、例えば、CPUである。
【0347】
プロセッサ501は、例えば、トレーニングを適宜実行する。本例では、入出力ポート508で受信される信号と内部クロックCLK及びbCLKとの間のタイミング調整等を目的としてトレーニングが実行される。
【0348】
また、プロセッサ501は、例えば定期的に、レプリカ回路512において、クロック信号のカウント動作を実行させる。クロック信号は、内部クロックCLKの擬似信号である。プロセッサ501は、カウント値の変化量に基づいて、トレーニングの実行の有無を判断する。
【0349】
バス制御回路502は、半導体装置500のバスを制御する。バス制御回路502は、プロセッサ501内に設けられてもよい。
【0350】
フラッシュメモリ503は、データを不揮発に記憶可能な記憶装置である。フラッシュメモリ503は、例えば、NOR型フラッシュメモリである。なお、フラッシュメモリ503は、NAND型フラッシュメモリであってもよい。
【0351】
RAM504は、データを一時的に記憶する記憶装置である。RAM504は、例えば、SRAM又はDRAMのようなランダムアクセスメモリである。
【0352】
DA変換回路505は、デジタル信号(デジタル値)をアナログ信号(アナログ値)に変換する。
【0353】
AD変換回路506は、アナログ信号をデジタル信号に変換する。
【0354】
タイマ507は、半導体装置500内の時間(動作タイミング)を管理する。
【0355】
入出力ポート508は、半導体装置500におけるインターフェース回路として機能する。入出力ポート508は、例えば、4つのポートP1、P2、P3及びP4を含む。入出力ポート508が備えるポートの数は、3つ以下であってもよいし、5つ以上であってもよい。入出力ポート508は、オシレータ509から受信した内部クロックCLK及びbCLKに同期したタイミングで、信号の入出力を行う。すなわち、入出力ポート508は、ポートP1、P2、P3及びP4の各々を介して、データやアドレスなどを含む信号を、半導体装置500の外部(例えば図示しないホスト)から受ける。入出力ポート508は、ポートP1、P2、P3及びP4の各々を介して、データなどの信号を、半導体装置500の外部へ送る。入出力ポート508は、例えば、GPIO(General Purpose Input/Output)規格、USART(Universal Synchronous/Asynchronous Receiver Transmitter)規格、またはI2C(Inter-integrated Circuit)規格などに準拠する。
【0356】
オシレータ509は、同期信号としてのクロック信号を、プロセッサ501に出力する。クロック信号は、或る周期(クロック数)を有する。これによって、プロセッサ501は、クロック信号に同期したタイミングで、各種の処理を行う。クロック信号の周期は、例えば、4MHz、8MHz、12MHzまたは24MHzなどである。また、オシレータ509は、入出力ポート508に内部クロックCLK及びbCLKを出力する。内部クロックbCLKは、内部クロックCLKの反転信号である。
【0357】
割り込みコントローラ510は、外部割込み命令を受ける。例えば、割り込みコントローラ510は、割り込み要求のステータスを管理するためのレジスタを有する。割り込みコントローラ510は、受けた外部割込み命令に基づいて、プロセッサ501に各種の割り込み要求を送る。プロセッサ501は、割り込み要求に応じて、実行中の処理を一時的に中断し、割り込み要求の処理を実行する。割り込み要求の処理の完了後、プロセッサ501は、中断中の処理を再開する。
【0358】
スキュー測定回路511は、入出力ポート508における内部クロックCLK及びbCLKと入力信号との間のタイミングのズレ(スキュー)を測定する回路である。
【0359】
また、スキュー測定回路511は、プロセッサ501の制御に基づいて、レプリカ回路512に、クロック信号のカウント動作を実行させる。レプリカ回路512で用いられるクロック信号は、内部クロックCLKの擬似信号である。
【0360】
レプリカ回路512は、内部クロックCLKに対応するクロック信号を生成し、クロック信号のサイクル数(クロック数)をカウントする回路である。レプリカ回路512は、クロック信号を生成するための帰還型のオシレータ及び第1乃至第4実施形態で説明したカウンタを含む。オシレータのフィードバック経路は、内部クロックCLK2の伝送経路と同様の構成を有している。レプリカ回路512は、カウント動作によるカウント結果を、プロセッサ501に送信する。
【0361】
なお、半導体装置500は、システムオンチップ(SoC)、システムインパッケージ(SIP)、システムオンパッケージ(SoP)であってもよい。半導体装置500は、例えば、組み込みシステムに使用される。半導体装置500は、例えば、車載デバイス、家電製品、コンピュータ、産業機械、鉄道車両、航空機、及び船舶などに使用されてもよい。
【0362】
また、半導体装置500は、バス幅、メモリ構造、及び、命令セットなどに基づいて、分類されてもよい。バス幅は、データバスのサイズを示している。例えば、半導体装置500は、バス幅に基づいて、8ビット-マイクロコントローラ、16ビット-マイクロコントローラ、または、32ビット-マイクロコントローラに分類される。半導体装置500は、高いバス幅によって、より良い性能を得ることができる。
【0363】
また、第5実施形態の第2例に係る半導体装置500では、例えば、上記第1乃至第4実施形態で説明されたレプリカ回路102が、レプリカ回路512に適用され得る。
【0364】
5.2.2 オシレータと入出力ポートの接続
次に、
図34を参照して、オシレータ509と入出力ポート508との接続の一例について説明する。
図34は、オシレータ509と入出力ポート508との接続の一例を示すブロック図である。
【0365】
図34に示すように、半導体装置500は、入力レシーバ520及び遅延回路521を更に含む。また、入出力ポート508は、ラッチ回路522を含む。
【0366】
入力レシーバ520は、内部クロックCLK及びbCLKの受信回路である。入力レシーバ520の出力端子は、遅延回路521に接続される。例えば、入力レシーバ520は、内部クロックCLK及びbCLKに同期した信号を出力する。
【0367】
遅延回路521は、入力レシーバ520から受信した信号を遅延させる回路である。遅延回路521は、ラッチ回路522に接続される。入力レシーバ520の出力信号は、遅延回路521、及び入力レシーバ520とラッチ回路522とを接続する配線経路による配線遅延により遅延して、ラッチ回路522に入力される。このときの遅延時間を、時間tSkewと表記する。すなわち、ラッチ回路522には、時間tSkew遅延された内部クロックCLK及びbCLKが入力される。
【0368】
ラッチ回路522は、遅延された内部クロックCLK及びbCLKに基づいて、ポートP1、P2、P3及びP4の各々を介して、入力された信号を取り込む回路である。ラッチ回路522は、ポートP1、P2、P3及びP4に接続される。
【0369】
5.2.3 カウント動作の流れ
次に、
図35を参照して、カウント動作の流れの一例について説明する。
図35は、カウント動作の流れの一例を示すフローチャートである。
【0370】
図35に示すように、まず、プロセッサ501は、スキュー測定回路511に、レプリカ回路512におけるカウント動作の実行を命令する(S101)。
【0371】
スキュー測定回路511は、プロセッサ501からカウント動作の命令を受けると、レプリカ回路512に、カウント動作を実行させる(S102)。
【0372】
レプリカ回路512は、カウント動作が終了すると、プロセッサ501に、カウント値CNTを送信する(S103)。
【0373】
プロセッサ501は、受信したカウント値CNTと、前回実施したカウント動作のカウント値CNTとの差分を算出する(S104)。
【0374】
プロセッサ501は、差分が予め設定された閾値以上であるか確認する(S105)。
【0375】
差分が予め設定された閾値以上である場合(S105_Yes)、プロセッサ501は、トレーニングを実行(S106)して、スキュー(時間tSkew)を調整する。
【0376】
他方で、差分が予め設定された閾値未満である場合(S105_No)、プロセッサ501は、カウント動作を終了する。
【0377】
5.3 本実施形態に係る効果
本実施形態の第1例及び第2例に係る構成であれば、第1実施形態と同様の効果が得らえる。
【0378】
6.変形例等
上記実施形態に係る半導体装置(11)は、第1信号(OSC)を出力するオシレータ(201)と、第1信号のサイクル数をカウントするカウンタ(202)とを含む。カウンタは、オシレータが第1信号のN番目(Nは2以上の整数)のサイクルを出力する前に、第1信号のサイクル数のカウント値をNにする。
【0379】
上記実施形態を適用することにより、処理能力を向上できる半導体装置を提供できる。
【0380】
なお、実施形態は上記で説明した形態に限られず、種々の変形が可能である。
【0381】
上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【0382】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0383】
1…メモリシステム、10…不揮発性メモリ、11…メモリチップ、20…メモリコントローラ、21…ホストインターフェース回路、22…CPU、23…ROM、24、504…RAM、25…バッファメモリ、26…ECC回路、27…メモリインターフェース回路、101、410…入出力回路、102、407、512…レプリカ回路、103…ロジック制御回路、104…アドレスレジスタ、105…コマンドレジスタ、106…ステータスレジスタ、107…シーケンサ、108…レディ/ビジー回路、109…電圧発生回路、120、401…メモリセルアレイ、121、402…ロウデコーダ、122…センスアンプ、123…データレジスタ、124、403…カラムデコーダ、131…入力回路、132…出力回路、141、520…入力レシーバ、142、221、521…遅延回路、143、522…ラッチ回路、151、154、203…コンパレータ、152、153、204、205…ドライバ、201、509…オシレータ、202…カウンタ、211、232…インバータ、212、231、233…AND回路、213、234…フリップフロップ、214…加算器、222、241…OR回路、235…exOR回路、236…論理回路、251…プルアップ回路、252…無効回路、301…PチャネルMOSトランジスタ、302…NチャネルMOSトランジスタ、400、500…半導体装置、404…論理制御回路、405…コマンド/アドレス入力回路、406…センスアンプ回路、408…転送ゲート、411…クロック入出力回路、412…電圧生成回路、421…アドレスデコーダ、422…モードレジスタ、423…コマンドデコーダ、501…プロセッサ、502…バス制御回路、503…フラッシュメモリ、505…DA変換回路、506…AD変換回路、507…タイマ、508…入出力ポート、510…割り込みコントローラ、511…スキュー測定回路、BL…ビット線、BLK…ブロック、MC…メモリセルトランジスタ、SGD…選択ゲート線、ST1、ST2…選択トランジスタ、SU…ストリングユニット、WL…ワード線