(57)【要約】【課題】ロックアップ時間無しでＤＤＲインターフェースを備えたメモリにアクセスすることのできるインターフェース回路及びインターフェース回路を備えるメモリコントローラを提供する【解決手段】データストローブ信号（ＤＱＳ）の周期が基本クロックの周期の４ｎ倍（ｎは１以上の整数）になるようにする。このようにすることにより、データストローブ信号（ＤＱＳ）がハイレベルの期間又はローレベルの期間は、基本クロックの２ｎ周期分の期間と一致する。そして、データストローブ信号（ＤＱＳ）の立ち上がりエッジ又は立ち下がりエッジから基本クロックのｎ周期分に対応する時間が経過した時点を中心として、半周期分未満の時間差で読み出しデータ（ＤＱ）の信号がラッチする。【選択図】図３
2012037973.tif 000002
【特許請求の範囲】
【請求項１】
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号の立ち上がりエッジを起点として、周期がＴのクロックのｎ＋１番目の立ち上がりエッジを検出する第１の検出回路と、
前記データストローブ信号の立ち下がりエッジを起点として、前記クロックのｎ＋１番目の立ち上がりエッジを検出する第２の検出回路と、
前記データストローブ信号の立ち上がりエッジから前記第１の検出回路により検出される立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記第２の検出回路により検出される立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備えるインターフェース回路。
【請求項２】
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
周期がＴのクロックの立ち上がりエッジに同期した信号を出力する回路であって、メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号に、ｎＴに対応する時間より長く（ｎ＋１）Ｔに対応する時間より短い遅延時間を与えた遅延信号を出力する遅延回路と、
前記データストローブ信号の立ち上がりエッジから前記遅延信号の立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記遅延信号の立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備えるインターフェース回路。
【請求項３】
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号の立ち上がりエッジを起点として、周期がＴのクロックのｎ＋１番目の立ち下がりエッジを検出する第１の検出回路と、
前記データストローブ信号の立ち下がりエッジを起点として、前記クロックのｎ＋１番目の立ち下がりエッジを検出する第２の検出回路と、
前記データストローブ信号の立ち上がりエッジから前記第１の検出回路により検出される立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記第２の検出回路により検出される立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備えるインターフェース回路。
【請求項４】
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
周期がＴのクロックの立ち下がりエッジに同期した信号を出力する回路であって、メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号に、ｎＴに対応する時間より長く（ｎ＋１）Ｔに対応する時間より短い遅延時間を与えた遅延信号を出力する遅延回路と、
前記データストローブ信号の立ち上がりエッジから前記遅延信号の立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記遅延信号の立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備えるインターフェース回路。
【請求項５】
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するフラッシュメモリへのアクセスを制御するメモリコントローラであって、
請求項１乃至４のいずれか１項に記載のインターフェース回路を備え、
このインターフェース回路を介して、フラッシュメモリからデータを読み出すことを特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＤＲ（Double Data Rate）インターフェースを備えたメモリにアクセスするためのインターフェース回路及びインターフェース回路を備えるメモリコントローラに関する。
【背景技術】
【０００２】
近年、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）以外のメモリでも、ＤＤＲインターフェースを備えたものが製品化されている。ＤＤＲインターフェースを備えたメモリにアクセスするためのインターフェース回路では、データ読み出し時に、ＤＬＬ（Delay Locked Loop）回路を使用して、メモリから出力されるデータストローブ信号の位相を９０度ずらした内部基準信号を生成する。そして、この内部基準信号に基づいて、メモリから出力されるデータ信号をラッチする方法が広く知られている。
このＤＬＬ回路は、入力されたデータストローブ信号とデータストローブ信号に基づいて生成された内部基準信号との遅延量を調整する回路である。この遅延量を調整では、遅延量を変化させる毎に、位相比較が行われ、位相差が所定の値になったときに遅延量をロックする。このように遅延量がロックされた後にメモリからの読み出し操作が可能になる。この遅延量をロックするためにかかる処理時間であるロックアップ時間を短縮する技術が特許文献１に開示されている。この技術では、位相比較により検出された位相差が大きいときには、遅延量を大きく変化させて遅延量を調整することによりロックアップ時間を短縮している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２８５０１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＳＳＤ（Solid State Drive）等に用いられているＮＡＮＤ型フラッシュメモリにおいても、ＤＤＲインターフェースを備えたものが製品化されている。このＮＡＮＤ型フラッシュメモリへのアクセスを制御するメモリコントローラは、通常、ＰＬＬ（Phase Locked Loop）回路を用いて内部クロックを生成し、この内部クロックに基づいて動作している。このようなメモリコントローラでは、省電力化のために、内部クロックを停止させることがある。この内部クロックを停止させた場合、ＰＬＬ（Phase Locked Loop）回路により、内部クロックを再度生成した後に、ＤＬＬ回路による遅延量の調整も再度行わなければならない。
【０００５】
特許文献１に開示されている技術を用いることにより、このロックアップ時間を短縮することはできるが、ＤＬＬ回路を用いる限り、このロックアップ時間を無くすことはできない。
【０００６】
そこで、本発明は、ＤＬＬ回路を用いないことにより、ロックアップ時間無しでＤＤＲインターフェースを備えたメモリにアクセスすることのできるインターフェース回路及びインターフェース回路を備えるメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の側面に従うインターフェース回路は、
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号の立ち上がりエッジを起点として、周期がＴのクロックのｎ＋１番目の立ち上がりエッジを検出する第１の検出回路と、
前記データストローブ信号の立ち下がりエッジを起点として、前記クロックのｎ＋１番目の立ち上がりエッジを検出する第２の検出回路と、
前記データストローブ信号の立ち上がりエッジから前記第１の検出回路により検出される立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記第２の検出回路により検出される立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備える。
【０００８】
本発明の第２の側面に従うインターフェース回路は、
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
周期がＴのクロックの立ち上がりエッジに同期した信号を出力する回路であって、メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号に、ｎＴに対応する時間より長く（ｎ＋１）Ｔに対応する時間より短い遅延時間を与えた遅延信号を出力する遅延回路と、
前記データストローブ信号の立ち上がりエッジから前記遅延信号の立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記遅延信号の立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち下がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備える。
【０００９】
本発明の第３の側面に従うインターフェース回路は、
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号の立ち上がりエッジを起点として、周期がＴのクロックのｎ＋１番目の立ち下がりエッジを検出する第１の検出回路と、
前記データストローブ信号の立ち下がりエッジを起点として、前記クロックのｎ＋１番目の立ち下がりエッジを検出する第２の検出回路と、
前記データストローブ信号の立ち上がりエッジから前記第１の検出回路により検出される立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記第２の検出回路により検出される立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備える。
【００１０】
本発明の第４の側面に従うインターフェース回路は、
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するメモリ用のインターフェース回路であって、
周期がＴのクロックの立ち下がりエッジに同期した信号を出力する回路であって、メモリから出力される周期が４ｎＴ（ｎは１以上の整数）のデータストローブ信号に、ｎＴに対応する時間より長く（ｎ＋１）Ｔに対応する時間より短い遅延時間を与えた遅延信号を出力する遅延回路と、
前記データストローブ信号の立ち上がりエッジから前記遅延信号の立ち上がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第１のデータ取り込み回路と、
前記データストローブ信号の立ち下がりエッジから前記遅延信号の立ち下がりエッジまでの期間内において保持したデータを出力する回路であって、当該期間内における前記クロックの最後の立ち上がりエッジに同期して保持したデータを有効なデータとして出力する第２のデータ取り込み回路とを備える。
【００１１】
本発明の第５の側面に従うメモリコントローラは、
データストローブ信号の立ち上がりエッジと立ち下がりエッジに同期して読み出しデータを出力するインターフェースを有するフラッシュメモリへのアクセスを制御するメモリコントローラであって、
請求項１乃至４のいずれか１項に記載のインターフェース回路を備え、
このインターフェース回路を介して、フラッシュメモリからデータを読み出す。
【発明の効果】
【００１２】
本発明によれば、ＤＬＬ回路を用いずに、データストローブ信号のｎ倍の周波数のクロックに基づいて、ＤＤＲインターフェースを備えたメモリから出力されるデータをラッチするようにしたので、
【００１３】
ロックアップ時間を待つことなくＤＤＲインターフェースを備えたメモリへのアクセスを開始することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本実施の形態に係るメモリコントローラ１０を概略的に示すブロック図である。
【図２】図２は、本実施の形態に係るフラッシュメモリインターフェースブロック５を概略的に示すブロック図である。
【図３】図３は、本実施の形態に係る読み出し制御回路１２を示す回路図である。
【図４】図４は、読み出し制御回路１２の動作を説明するためのタイミングチャート（理想動作時）である。
【図５】図５は、読み出し制御回路１２の動作を説明するためのタイミングチャート（メタステーブル発生時）である。
【発明を実施するための形態】
【００１５】
ＤＤＲ（Double
Data Rate）インターフェースを備えたフラッシュメモリを制御するメモリコントローラを例として、本発明に係るインターフェース回路を説明する。図１は、本発明に係るインターフェース回路が組み込まれたメモリコントローラ１０を概略的に示している。図１には、インターフェース回路の動作を説明するために必要なメモリコントローラ１０の構成だけが示されている。
【００１６】
ホストシステム１は、メモリコントローラ１０を介してフラッシュメモリ６にアクセスする。例えば、ホストシステム１は、メモリコントローラ１０に対して、データの書き込み及びデータの読み出しを要求する。データの書き込みを要求するときに、ホストシステム１は、ホストインターフェースブロック２に、データの書き込みを要求するコマンドと、書き込むデータに対応する論理アドレスを与える。その後、ホストシステム１が書き込むデータを出力し、そのデータがホストインターフェースブロック２に与えられる。データの読み出しを要求するときに、ホストシステム１は、ホストインターフェースブロック２に、データの読み出しを要求するコマンドと、読み出すデータに対応する論理アドレスを与える。その後、ホストインターフェースブロック２からその論理アドレスに対応するデータが出力され、ホストシステム１はそのデータを受け取る。
【００１７】
バッファメモリ制御回路３は、バッファメモリ４への入力及びバッファメモリ４からの出力を制御する回路である。つまり、バッファメモリ制御回路３は、ホストインターフェースブロック２を介してホストシステム１から与えられるデータ、又はフラッシュメモリインターフェースブロック５を介してフラッシュメモリ６から読み出されるデータをバッファメモリ４に格納する。また、バッファメモリ制御回路３は、バッファメモリ４に格納されている読み出しデータを、ホストインターフェースブロック２を介してホストシステム１に転送し、バッファメモリ４に格納されている書き込みデータを、フラッシュメモリインターフェースブロック５を介してフラッシュメモリ６に転送する。
【００１８】
フラッシュメモリインターフェースブロック５は、フラッシュメモリ６へのデータの書き込み及びフラッシュメモリ６からのデータの読み出しを制御する。データを書き込むときに、フラッシュメモリインターフェースブロック５は、フラッシュメモリ６に、データの書き込みを要求するコマンド及び書き込み先の物理アドレスを与える。データを読み出すときに、フラッシュメモリインターフェースブロック５は、フラッシュメモリ６に、データの読み出しを要求するコマンド及び読み出し元の物理アドレスを与える。
【００１９】
フラッシュメモリ６は、ＤＤＲ（Double Data Rate）インターフェースを備えたフラッシュメモリである。
【００２０】
図２に示したように、フラッシュメモリインターフェースブロック５は、書き込み制御回路１１と読み出し制御回路１２を備えている。書き込み制御回路１１は、フラッシュメモリ６へのデータ書き込みを制御する回路であり、コマンド、物理アドレス及び書き込みデータ等の信号を適切なタイミングでフラッシュメモリ６に入力する。読み出し制御回路１２は、フラッシュメモリ６からのデータ読み出しを制御する回路であり、コマンド、物理アドレス等の信号を適切なタイミングでフラッシュメモリ６に入力し、フラッシュメモリ６から出力される読み出しデータの信号を適切なタイミングでラッチする。
【００２１】
読み出し制御回路１２は、メモリコントローラ１０内のＰＬＬ（Phase Locked Loop）回路により生成された基本クロックに基づいて動作している。この基本クロックを４分周したクロックが、メモリコントローラ１０のシステムクロックになっている。読み出し制御回路１２は、この基本クロックを８分周したクロックを制御クロックとして出力し、制御クロックはフラッシュメモリ６に入力される。そして、データの読み出しを要求するときに、読み出し制御回路１２は、この制御クロックと同期させて、データの読み出しを要求するコマンド及び読み出し元の物理アドレスの信号をフラッシュメモリ６に入力する。これに応答して、フラッシュメモリ６は、読み出しデータの信号を出力する。この読み出しデータの信号は、フラッシュメモリ６から出力されるデータストローブ信号に同期して出力される。このデータストローブ信号の周期は、メモリコントローラ１０からフラッシュメモリ６に入力される制御クロックと同じ周期になるが、両者には位相差がある。
【００２２】
図３は、読み出し制御回路１２の読み出しデータの信号をラッチする部分（データラッチ部）の回路図を示している。このデータラッチ部は、フリップフロップ２１−２３、２８−３１及びＯＲゲート２４−２７により構成されている。
【００２３】
フリップフロップ２１−２３のクロック入力端子には、クロックＣ（ＣＬＫＣ）が入力されている。クロックＣ（ＣＬＫＣ）は、ＯＲゲート２５、２７の入力端子にも入力されている。フリップフロップ２９、３２の反転クロック入力端子には、クロックＢ（ＣＬＫＢ）が入力されている。フリップフロップ３０、３３の反転クロック入力端子には、クロックＡ（ＣＬＫＡ）が入力されている。ここで、ＰＬＬ（Phase Locked Loop）回路により生成された基本クロックが、クロックＣ（ＣＬＫＣ）として使用されている。基本クロックを２分周したクロックが、クロックＢ（ＣＬＫＢ）として使用されている。基本クロックを４分周したクロック、つまり、システムクロックがクロックＡ（ＣＬＫＡ）として使用されている。
【００２４】
フラッシュメモリ６から出力されるデータストローブ信号（ＤＱＳ）は、フリップフロップ２１のデータ入力端子、ＯＲゲート２４の反転入力端子及びＯＲゲート２６の入力端子に入力されている。フラッシュメモリ６から出力される読み出しデータ（ＤＱ）の信号は、フリップフロップ２８、３１のデータ入力端子に入力されている。
【００２５】
フリップフロップ２１のデータ出力端子は、フリップフロップ２２のデータ入力端子に接続されている。フリップフロップ２２のデータ出力端子は、フリップフロップ２３のデータ入力端子に接続されている。フリップフロップ２３のデータ出力端子は、ＯＲゲート２４の入力端子及びＯＲゲート２６の反転入力端子に接続されている。ＯＲゲート２４の出力端子は、ＯＲゲート２５の入力端子に接続されている。ＯＲゲート２６の出力端子は、ＯＲゲート２７の入力端子に接続されている。ＯＲゲート２５の出力端子は、フリップフロップ２８の反転クロック入力端子に接続されている。フリップフロップ２８のデータ出力端子は、フリップフロップ２９のデータ入力端子に接続されている。フリップフロップ２９のデータ出力端子は、フリップフロップ３０のデータ入力端子に接続されている。ＯＲゲート２７の出力端子は、フリップフロップ３１の反転クロック入力端子に接続されている。フリップフロップ３１のデータ出力端子は、フリップフロップ３２のデータ入力端子に接続されている。フリップフロップ３２のデータ出力端子は、フリップフロップ３３のデータ入力端子に接続されている。
【００２６】
尚、読み出しデータ（ＤＱ）の信号は、８ビットのバスを介して読み出し制御回路１２に入力されるので、フリップフロップ２８は、ビット毎の８個のフリップフロップで構成されている。同様に、フリップフロップ２９−３３も、それぞれが８個のフリップフロップで構成されている。
【００２７】
次に、図３に示されたデータラッチ部の動作を、図４のタイミングチャートを参照して説明する。
【００２８】
フリップフロップ２１は、クロック入力端子に入力されているクロックＣ（ＣＬＫＣ）の立ち上がりエッジで、データ入力端子に入力されているデータストローブ信号（ＤＱＳ）の信号レベル（ハイレベル又はローレベル）を保持し、保持した信号レベルをデータ出力端子から出力する。つまり、データストローブ信号（ＤＱＳ）は、フリップフロップ２１により、クロックＣ（ＣＬＫＣ）に同期した信号ＤＱＳ＿１ｄに波形整形される。この波形整形の際に、データストローブ信号（ＤＱＳ）には、クロックＣ（ＣＬＫＣ）の１周期分より短い遅延が与えられる。
【００２９】
フリップフロップ２１のデータ出力端子から出力される信号ＤＱＳ＿１ｄは、フリップフロップ２２のデータ入力端子に入力される。フリップフロップ２２は、クロック入力端子に入力されているクロックＣ（ＣＬＫＣ）の立ち上がりエッジで、データ入力端子に入力されている信号ＤＱＳ＿１ｄの信号レベル（ハイレベル又はローレベル）を保持し、保持した信号レベルをデータ出力端子から出力する。従って、フリップフロップ２２は、信号ＤＱＳ＿１ｄにクロックＣ（ＣＬＫＣ）の１周期分に対応する遅延を与えた信号である信号ＤＱＳ＿２ｄをデータ出力端子から出力する。
【００３０】
フリップフロップ２２のデータ出力端子から出力される信号ＤＱＳ＿２ｄは、フリップフロップ２３のデータ入力端子に入力される。フリップフロップ２３は、クロック入力端子に入力されているクロックＣ（ＣＬＫＣ）の立ち上がりエッジで、データ入力端子に入力されている信号ＤＱＳ＿２ｄの信号レベル（ハイレベル又はローレベル）を保持し、保持した信号レベルをデータ出力端子から出力する。従って、フリップフロップ２３は、信号ＤＱＳ＿２ｄにクロックＣ（ＣＬＫＣ）の１周期分に対応する遅延を与えた信号である信号ＤＱＳ＿３ｄをデータ出力端子から出力する。
【００３１】
ＯＲゲート２４の反転入力端子にはデータストローブ信号（ＤＱＳ）が入力され、ＯＲゲート２４の入力端子には信号ＤＱＳ＿３ｄが入力される。従って、ＯＲゲート２４の出力端子からは、データストローブ信号（ＤＱＳ）の立ち上がりエッジに同期して立ち下がり、信号ＤＱＳ＿３ｄの立ち上がりエッジに同期して立ち上がる信号であるイネーブル信号ｅｎ＿ｒが出力される。
【００３２】
ＯＲゲート２６の入力端子にはデータストローブ信号（ＤＱＳ）が入力され、ＯＲゲート２４の反転入力端子には信号ＤＱＳ＿３ｄが入力される。従って、ＯＲゲート２６の出力端子からは、データストローブ信号（ＤＱＳ）の立ち下がりエッジに同期して立ち下がり、信号ＤＱＳ＿３ｄの立ち下がりエッジに同期して立ち上がる信号であるイネーブル信号ｅｎ＿ｆが出力される。
【００３３】
フリップフロップ２１―２３によって生成されて信号ＤＱＳ＿３ｄは、データストローブ信号（ＤＱＳ）にクロックＣ（ＣＬＫＣ）の２周期分より大きく３周期分より小さい遅延を与えた信号になるので、イネーブル信号ｅｎ＿ｒがローレベルの期間は、クロックＣ（ＣＬＫＣ）の２周期分より長く３周期分より短くなる。同様に、イネーブル信号ｅｎ＿ｆがローレベルの期間も、クロックＣ（ＣＬＫＣ）の２周期分より長く３周期分より短くなる。
【００３４】
ＯＲゲート２５の一方の入力端子にはイネーブル信号ｅｎ＿ｒが入力され、ＯＲゲート２５の他方の入力端子にはクロックＣ（ＣＬＫＣ）が入力される。従って、ＯＲゲート２５の出力端子からは、イネーブル信号ｅｎ＿ｒがローレベルの期間だけ、クロックＣ（ＣＬＫＣ）の立ち上がりエッジに同期して立ち上がり、クロックＣ（ＣＬＫＣ）の立ち下がりエッジに同期して立ち下がる信号である信号ｃｌｋ＿ｒが出力される。つまり、ＯＲゲート２５は、イネーブル信号ｅｎ＿ｒがローレベルの期間だけ、クロックＣ（ＣＬＫＣ）を通過させる。
【００３５】
ＯＲゲート２７の一方の入力端子にはイネーブル信号ｅｎ＿ｆが入力され、ＯＲゲート２７の他方の入力端子にはクロックＣ（ＣＬＫＣ）が入力される。従って、ＯＲゲート２７の出力端子からは、イネーブル信号ｅｎ＿ｆがローレベルの期間だけ、クロックＣ（ＣＬＫＣ）の立ち上がりエッジに同期して立ち上がり、クロックＣ（ＣＬＫＣ）の立ち下がりエッジに同期して立ち下がる信号である信号ｃｌｋ＿ｆが出力される。つまり、ＯＲゲート２７は、イネーブル信号ｅｎ＿ｆがローレベルの期間だけ、クロックＣ（ＣＬＫＣ）を通過させる。
【００３６】
フリップフロップ２８のデータ入力端子には読み出しデータ（ＤＱ）の信号が入力され、フリップフロップ２８の反転クロック入力端子には信号ｃｌｋ＿ｒが入力される。フリップフロップ２８は、信号ｃｌｋ＿ｒの立ち下がりエッジで読み出しデータ（ＤＱ）の信号レベル（ハイレベル又はローレベル）を保持し、保持した信号レベルをデータ出力端子から出力する。クロックＣ（ＣＬＫＣ）は、イネーブル信号ｅｎ＿ｒがローレベルの期間だけ、ＯＲゲート２５を通過してフリップフロップ２８の反転クロック入力端子に与えられるので、イネーブル信号ｅｎ＿ｒがローレベルの期間におけるクロックＣ（ＣＬＫＣ）の最後の立ち下がりエッジで保持した信号レベル（ハイレベル又はローレベル）を、最終的な信号レベルとして保持される。そして、イネーブル信号ｅｎ＿ｒが次にローレベルになるまでの期間、フリップフロップ２８は、この最終的な信号レベルを出力端子から出力する。つまり、イネーブル信号ｅｎ＿ｒがハイレベルの期間、フリップフロップ２８のデータ出力端子から出力される信号ｆｄ＿ｒ＿ｉｎの信号レベル（ハイレベル又はローレベル）は変化しない。この信号レベルは、直前のイネーブル信号ｅｎ＿ｒがローレベルの期間に最終的に保持された信号レベルに対応する。
【００３７】
フリップフロップ３１のデータ入力端子には読み出しデータ（ＤＱ）の信号が入力され、フリップフロップ３１の反転クロック入力端子には信号ｃｌｋ＿ｆが入力される。フリップフロップ３１は、信号ｃｌｋ＿ｆの立ち下がりエッジで読み出しデータ（ＤＱ）の信号レベル（ハイレベル又はローレベル）を保持し、保持した信号レベルをデータ出力端子から出力する。クロックＣ（ＣＬＫＣ）は、イネーブル信号ｅｎ＿ｆがローレベルの期間だけ、ＯＲゲート２７を通過してフリップフロップ３１の反転クロック入力端子に与えられるので、イネーブル信号ｅｎ＿ｆがローレベルの期間におけるクロックＣ（ＣＬＫＣ）の最後の立ち下がりエッジで保持した信号レベル（ハイレベル又はローレベル）が、最終的な信号レベルとして保持される。そして、イネーブル信号ｅｎ＿ｆが次にローレベルになるまでの期間、フリップフロップ３１は、この最終的な信号レベルを出力端子から出力する。つまり、イネーブル信号ｅｎ＿ｆがハイレベルの期間、フリップフロップ３１のデータ出力端子から出力される信号ｆｄ＿ｆ＿ｉｎの信号レベル（ハイレベル又はローレベル）は変化しない。この信号レベルは、直前のイネーブル信号ｅｎ＿ｆがローレベルの期間に最終的に保持された信号レベルに対応する。
【００３８】
読み出しデータ（ＤＱ）の信号をラッチするタイミングは、データストローブ信号（ＤＱＳ）がハイレベルの期間の中間点とローレベルの期間の中間点であることが好ましい。従って、図３に示されたデータラッチ部は、イネーブル信号ｅｎ＿ｒがローレベルの期間におけるクロックＣ（ＣＬＫＣ）の最後の立ち下がりエッジが、データストローブ信号（ＤＱＳ）がハイレベルの期間の中間点の近傍になるように設計されている。このように設計されているため、フリップフロップ２８は、データストローブ信号（ＤＱＳ）がハイレベルの期間の中間点の近傍で読み出しデータ（ＤＱ）の信号レベル（ハイレベル又はローレベル）を保持する。同様に、イネーブル信号ｅｎ＿ｆがローレベルの期間におけるクロックＣ（ＣＬＫＣ）の最後の立ち下がりエッジは、データストローブ信号（ＤＱＳ）がローレベルの期間の中間点の近傍になるように設計されている。このように設計されているため、フリップフロップ３１は、データストローブ信号（ＤＱＳ）がローレベルの期間の中間点の近傍で読み出しデータ（ＤＱ）の信号レベル（ハイレベル又はローレベル）を保持する。例えば、読み出しデータＤｎ、Ｄｎ＋２は、フリップフロップ２８に保持され、読み出しデータＤｎ＋１は、フリップフロップ３１に保持されている。
【００３９】
バッファメモリ制御回路３は、システムクロック、つまり、クロックＡ（ＣＬＫＡ）で動作している。このバッファメモリ制御回路３に、フリップフロップ２８に保持されたデータをシステムクロックと同期して転送するための回路として、フリップフロップ２９及びフリップフロップ３０は設けられている。フリップフロップ２８のデータ出力端子から出力された読み出しデータ（ｆｄ＿ｒ＿ｉｎ）の信号レベル（ハイレベル又はローレベル）は、クロックＢ（ＣＬＫＢ）の立ち下りでフリップフロップ２９に保持される。フリップフロップ２９のデータ出力端子から出力された読み出しデータ（ｆｄ＿ｒ＿ｉｎ）の信号レベル（ハイレベル又はローレベル）は、クロックＡ（ＣＬＫＡ）の立ち下りでフリップフロップ３０に保持される。フリップフロップ３０のデータ出力端子から出力された読み出しデータ（ｆｄ＿ｒ＿ｉｎ）は、バッファメモリ制御回路に入力される。同様に、フリップフロップ３１に保持されたデータを、システムクロックと同期してバッファメモリ制御回路に転送するための回路として、フリップフロップ３２及びフリップフロップ３３は設けられている。フリップフロップ３１のデータ出力端子から出力された読み出しデータデータ（ｆｄ＿ｒ＿ｉｎ）の信号レベル（ハイレベル又はローレベル）は、クロックＢ（ＣＬＫＢ）の立ち下りでフリップフロップ３２に保持される。フリップフロップ３２のデータ出力端子から出力された読み出しデータ（ｆｄ＿ｒ＿ｉｎ）の信号レベル（ハイレベル又はローレベル）は、クロックＡ（ＣＬＫＡ）の立ち下りでフリップフロップ３３に保持される。フリップフロップ３３のデータ出力端子から出力された読み出しデータ（ｆｄ＿ｒ＿ｉｎ）の信号は、バッファメモリ制御回路に入力される。
【００４０】
上記の実施の形態で、データストローブ信号（ＤＱＳ）の周期はクロックＣ（ＣＬＫＣ）の周期の８倍なので、データストローブ信号（ＤＱＳ）がハイレベルの期間は、クロックＣ（ＣＬＫＣ）の４周期分の期間と一致している。従って、読み出しデータ（ＤＱ）の信号をラッチするタイミングは、データストローブ信号（ＤＱＳ）の立ち上がりからクロックＣ（ＣＬＫＣ）の２周期分に対応する時間が経過した時点であることが好ましい。ここで、データストローブ信号（ＤＱＳ）とクロックＣ（ＣＬＫＣ）は同期していないため、データストローブ信号（ＤＱＳ）の立ち上がりエッジとクロックＣ（ＣＬＫＣ）の立ち上がりエッジとの間に、クロックＣ（ＣＬＫＣ）の１周期分未満の時間差が生じることは避けられない。つまり、データストローブ信号（ＤＱＳ）の立ち上がりエッジとクロックＣ（ＣＬＫＣ）の立ち上がりエッジとの間の時間差は、０に近い場合もあるが、クロックＣ（ＣＬＫＣ）の１周期分に近い場合もある。そして、この時間差は種々の条件により変動する。従って、データストローブ信号（ＤＱＳ）の立ち上がりエッジから、この立ち上がりエッジを起点としたクロックＣ（ＣＬＫＣ）の３番目の立ち上がりエッジまでの時間は、クロックＣ（ＣＬＫＣ）の２周期分より長く３周期分より短くなる。このクロックＣ（ＣＬＫＣ）の２番目の立ち上がりエッジと３番目の立ち上がりエッジの間にある立ち下がりエッジで、読み出しデータ（ＤＱ）の信号をラッチしている。従って、読み出しデータ（ＤＱ）の信号をラッチするタイミングは、データストローブ信号（ＤＱＳ）の立ち上がりエッジからクロックＣ（ＣＬＫＣ）の１．５周期分の時間が経過した時点と２．５周期分の時間が経過した時点の間に収まる。つまり、データストローブ信号（ＤＱＳ）の立ち上がりエッジからクロックＣ（ＣＬＫＣ）の２周期分に対応する時間が経過した時点を中心として、半周期分未満の時間差で読み出しデータ（ＤＱ）の信号がラッチされる。従って、この半周期分の時間差がフラッシュメモリ６によって許容されるように、クロックＣ（ＣＬＫＣ）の周期（周波数）が決められる。
【００４１】
データストローブ信号（ＤＱＳ）がローレベルの期間も、クロックＣ（ＣＬＫＣ）の４周期分の期間と一致している。従って、読み出しデータ（ＤＱ）の信号をラッチするタイミングは、データストローブ信号（ＤＱＳ）の立ち下がりエッジからクロックＣ（ＣＬＫＣ）の２周期分に対応する時間が経過した時点であることが好ましい。データストローブ信号（ＤＱＳ）がハイレベルの期間の場合と同様に、データストローブ信号（ＤＱＳ）の立ち下がりエッジから、この立ち下がりエッジを起点としたクロックＣ（ＣＬＫＣ）の３番目の立ち上がりエッジまでの時間は、クロックＣ（ＣＬＫＣ）の２周期分より長く３周期分より短くなる。このクロックＣ（ＣＬＫＣ）の２番目の立ち上がりエッジと３番目の立ち上がりエッジの間にある立ち下がりエッジで、読み出しデータ（ＤＱ）の信号をラッチしている。従って、読み出しデータ（ＤＱ）の信号をラッチするタイミングは、データストローブ信号（ＤＱＳ）の立ち下がりエッジからクロックＣ（ＣＬＫＣ）の１．５周期分の時間が経過した時点と２．５周期分の時間が経過した時点の間に収まる。つまり、データストローブ信号（ＤＱＳ）がローレベルの期間についても、データストローブ信号（ＤＱＳ）の立ち下がりエッジからクロックＣ（ＣＬＫＣ）の２周期分に対応する時間が経過した時点を中心として、半周期分未満の時間差で読み出しデータ（ＤＱ）の信号がラッチされる。
【００４２】
データストローブ信号（ＤＱＳ）の立ち上がりエッジとクロックＣ（ＣＬＫＣ）の立ち上がりエッジとの間の時間差が０に近い場合（時間差が非常に小さい場合）、データストローブ信号（ＤＱＳ）の立ち上がりエッジの近傍でメタステーブルが発生してフリップフロップ２１のデータ出力端子から出力される信号ＤＱＳ＿１ｄが不安定になる。図５を参照して、フリップフロップ２１おいて、メタステーブルが発生した場合について説明する。
【００４３】
データストローブ信号（ＤＱＳ）の立ち上がりエッジとクロックＣ（ＣＬＫＣ）の立ち上がりエッジとの間の時間差が０に近い場合、データストローブ信号（ＤＱＳ）の立ち上がりエッジの近傍でフリップフロップ２１のデータ出力端子から出力される信号ＤＱＳ＿１ｄが不安定になる。しかし、フリップフロップ２２は、フリップフロップ２１のデータ出力端子から出力される信号ＤＱＳ＿１ｄの信号レベルが安定した後に、信号ＤＱＳ＿１ｄの信号レベル（ハイレベル又はローレベル）を保持する。従って、フリップフロップ２２のデータ出力端子から出力される信号ＤＱＳ＿２ｄ及びフリップフロップ２３のデータ出力端子から出力される信号ＤＱＳ＿３ｄの信号レベルは不安定にならない。従って、フリップフロップ２８は、メタステーブルが発生しなかった場合と同様に、イネーブル信号ｅｎ＿ｒがローレベルの期間におけるクロックＣ（ＣＬＫＣ）の最後の立ち下がりエッジで読み出しデータ（ＤＱ）の信号を保持する。
【００４４】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
【００４５】
例えば、フリップフロップ２１−２３がクロック入力端子に入力されているクロックＣ（ＣＬＫＣ）の立ち下がりエッジで、データ入力端子に入力されている信号レベル（ハイレベル又はローレベル）を保持し、フリップフロップ２８−３３がクロック入力端子に入力されているクロック（ｃｌｋ＿ｒ／ｃｌｋ＿ｆ／ＣＬＫＢ／ＣＬＫＡ）の立ち上がりエッジで、データ入力端子に入力されている信号レベル（ハイレベル又はローレベル）を保持するようにしてもよい。イネーブル信号ｅｎ＿ｒ又はイネーブル信号ｅｎ＿ｆがローレベルの期間におけるクロックＣ（ＣＬＫＣ）の最後の立ち上がりエッジで読み出しデータ（ＤＱ）がラッチされる。
【００４６】
また、データストローブ信号（ＤＱＳ）の周期とクロックＣ（ＣＬＫＣ）の周期との相対関係も適宜変更することができる。例えば、データストローブ信号（ＤＱＳ）の周期がクロックＣ（ＣＬＫＣ）の周期の１２倍になるようにしてもよい。つまり、データストローブ信号（ＤＱＳ）がハイレベルの期間又はローレベルの期間を、クロックＣ（ＣＬＫＣ）の６周期分の期間と一致するようにしてもよい。この場合、データストローブ信号（ＤＱＳ）に遅延時間を与えるフリップフロップが４段になる。そして、データストローブ信号（ＤＱＳ）の立ち上がりエッジ又は立ち下がりエッジからクロックＣ（ＣＬＫＣ）の３周期分に対応する時間が経過した時点を中心として、半周期分未満の時間差で読み出しデータ（ＤＱ）の信号がラッチされる。データストローブ信号（ＤＱＳ）の周期がクロックＣ（ＣＬＫＣ）の周期の１６倍になるようにしてもよい。つまり、データストローブ信号（ＤＱＳ）がハイレベルの期間又はローレベルの期間を、クロックＣ（ＣＬＫＣ）の８周期分の期間と一致するようにしてもよい。この場合、データストローブ信号（ＤＱＳ）に遅延時間を与えるフリップフロップが５段になる。そして、データストローブ信号（ＤＱＳ）の立ち上がりエッジ又は立ち下がりエッジからクロックＣ（ＣＬＫＣ）の４周期分に対応する時間が経過した時点を中心として、半周期分未満の時間差で読み出しデータ（ＤＱ）の信号がラッチされる。
【００４７】
言い換えれば、データストローブ信号（ＤＱＳ）の周期をクロックＣ（ＣＬＫＣ）の周期の４ｎ倍（ｎは１以上の整数）になるようにしてもよい。つまり、データストローブ信号（ＤＱＳ）がハイレベルの期間又はローレベルの期間を、クロックＣ（ＣＬＫＣ）の２ｎ周期分の期間と一致するようにしてもよい。この場合、データストローブ信号（ＤＱＳ）に遅延時間を与えるフリップフロップが（ｎ＋１）段になる。そして、データストローブ信号（ＤＱＳ）の立ち上がりエッジ又は立ち下がりエッジからクロックＣ（ＣＬＫＣ）のｎ周期分に対応する時間が経過した時点を中心として、半周期分未満の時間差で読み出しデータ（ＤＱ）の信号がラッチされる。
【産業上の利用可能性】
【００４８】
本発明は、ＤＤＲ（Double Data Rate）インターフェースを備えたメモリにアクセスするためのインターフェース回路を備えるメモリコントローラ適用することができる。
【符号の説明】
【００４９】
５…フラッシュメモリインターフェースブロック、１２…読み出し制御回路
【図１】
2012037973.tif 000003
【図２】
2012037973.tif 000004
【図３】
2012037973.tif 000005
【図４】
2012037973.tif 000006
【図５】
2012037973.tif 000007