説明

受信回路、システム装置、及びタイミング調整方法

【課題】データを取り込むタイミングを調整すること。
【解決手段】メモリインタフェース回路12のマスク生成部37は、データ列DQと同期したストローブ信号DQS(内部ストローブ信号IRS)に基づいて、データ列DQを受け取る期間に応じた内部マスク信号CKMを生成する。DLL回路41は、レジスタ41aの設定値に応じて内部クロック信号CK2を遅延した内部クロック信号CKSを生成する。フリップフロップ回路33,34は、アンド回路38により内部マスク信号CKMと内部クロック信号CKSを合成した内部ストローブ信号CSTに応じて受信データ列RDQをラッチする。調整回路50は、DLL回路51,52の出力信号に基づいて、内部マスク信号CKMと内部ストローブ信号CSTの位相関係を検出し、レジスタ41aの設定値を更新して内部ストローブ信号CSTの位相を調整する。

【発明の詳細な説明】
【技術分野】
【0001】
受信回路、システム装置、及びタイミング調整方法に関する。
【背景技術】
【0002】
従来、半導体記憶装置としてDRAM(Dynamic Random Access Memory)が用いられている。また、近年では、システムの動作速度の高速化に対応するため、クロックの立ち上がりと立ち下がりの双方でデータを入出力するダブルデータレート方式が採用されている。このような半導体記憶装置は、DDR−SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory)、DDR2−SDRAMやDDR3−SDRAMと呼ばれる。
【0003】
例えばシステム装置がDDR−SDRAM(メモリ)からデータを読み出す場合、DDR−SDRAMは、リードデータと、そのリードデータに同期したデータストローブ信号を出力する。システム装置内の受信回路は、タイミングを調整したデータストローブ信号、又はクロック信号に基づいてリードデータを取り込む(例えば、特許文献1,2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−334943号公報
【特許文献2】特開2010−122842号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、データ列DQとストローブ信号DQSとの間の相対的なタイミングのずれは、システム回路の環境温度の変化や、システム回路の動作電源電圧の変化によっても生じる。このようなタイミングのずれは、リードデータに誤りを生じさせる。
【課題を解決するための手段】
【0006】
本発明の一観点によれば、クロック信号に対応する内部ストローブ信号を生成する第1の信号生成回路と、前記内部ストローブ信号に応答してデータをラッチするラッチ回路と、外部ストローブ信号に応じて前記データを受け取る期間に応じたマスク信号を生成する第2の信号生成回路と、前記マスク信号と前記内部ストローブ信号との位相関係に応じて前記内部ストローブ信号の位相を調整する調整回路と、を有する。
【発明の効果】
【0007】
本発明の一観点によれば、データを取り込むタイミングを調整することができる。
【図面の簡単な説明】
【0008】
【図1】システムの概略ブロック図である。
【図2】メモリインタフェースの一部ブロック回路図である。
【図3】リード動作のタイミング図である。
【図4】タイミング調整に係る信号を示すタイミング図である。
【図5】タイミング調整に係る信号を示すタイミング図である。
【図6】タイミング調整に係る信号を示すタイミング図である。
【図7】トレーニングシーケンスを示すフローチャートである。
【図8】(a)(b)はトレーニングシーケンスの説明図である。
【図9】トレーニングシーケンスにおけるタイミング図である。
【図10】(a)〜(c)は、トレーニングシーケンスの説明図である。
【発明を実施するための形態】
【0009】
以下、一実施形態を添付図面に従って説明する。
図1に示すように、このシステムは、システム回路10と、システム回路10によりアクセスされるメモリ20を有している。システム回路10は、例えば1つのチップ(System on Chip:SoC)であり、所定構造(例えば、BGA:Ball Grid Array)のパッケージ(PKG)に形成され、このパッケージは基板(例えば、プリント配線板(PCB:Printed Circuit Board)に実装されている。メモリ20は、同期式半導体記憶装置、例えばダブルデータレート方式のダイナミックランダムアクセスメモリ(Double Data Rate Synchronous Dynamic Random Access Memory:DDR3−SDRAM)である。メモリ20は、チップを含む所定構造(例えば、BGA)のパッケージに形成され、このパッケージは、上記の基板に実装されている。システム回路10はシステム装置の一例であり、メモリ20は対象回路の一例である。
【0010】
システム回路10のコア回路11は、例えば中央処理装置(Central Processing Unit:CPU)とメモリコントローラを有する回路である。コア回路11は、クロック信号CKをメモリ20に供給する。また、コア回路11は、メモリ20に対するコマンドを、メモリインタフェース回路(メモリI/Fと表記)12を介してメモリ20に供給する。また、システム回路10は、コマンドの種類に応じて、アドレス,データ等をメモリ20に供給する。例えば、システム回路10は、メモリ20のデータを読み込むためのリードコマンドと、そのデータが格納されたアドレスをメモリインタフェース回路12に出力する。また、コア回路11は、メモリ20にデータを書き込むためのライトコマンドと、データと、そのデータを格納するアドレスをメモリインタフェース回路12に出力する。
【0011】
メモリインタフェース回路12は、メモリ20に対して、クロック信号CKに基づいて生成したストローブ信号DQSを出力する。また、メモリインタフェース回路12は、ストローブ信号DQSに同期してデータ列DQをメモリ20に出力する。メモリ20は、ライトコマンドに応答して、ストローブ信号DQSに基づいて取り込んだデータ列DQを記憶する。また、メモリ20は、リードコマンドに応答して、クロック信号CKに基づいて生成したストローブ信号DQS及びデータ列DQを出力する。メモリインタフェース回路12は、ストローブ信号DQSに基づいてデータ列DQを取り込み、その取り込んだデータ列DQをコア回路11に出力する。
【0012】
また、システム回路10は、メモリインタフェース回路12においてデータ列DQを取り込むタイミングを調整するトレーニング回路13を有している。トレーニング回路13は、所定のタイミング(例えば、システム回路10の動作開始時)に、データ列DQを取り込むタイミングを調整する。例えば、トレーニング回路13は、メモリインタフェース回路12に含まれる遅延回路の遅延時間を変更して所定値のデータをメモリ20から読み出す動作を繰り返すことにより、データを取り込むためのストローブ信号の位相を調整する。
【0013】
次に、メモリインタフェース回路12において、データ列DQを取り込む回路部を説明する。
図2に示すように、データ列DQは、メモリインタフェース回路12の入力端子P1を介して、メモリインタフェース回路12のバッファ回路31に供給される。また、ストローブ信号DQSは、入力端子P2を介して、メモリインタフェース回路12のバッファ回路32に供給される。
【0014】
バッファ回路31の出力端子は、D型フリップフロップ回路(FF回路)33,34のデータ入力端子に接続されている。バッファ回路31は、データ列DQに応答して受信データ列RDQを出力する。D型フリップフロップ回路33,34はラッチ回路の一例である。
【0015】
バッファ回路32の出力端子は、アンド回路35に接続されている。バッファ回路32は、ストローブ信号DQSに応答して受信ストローブ信号RDSを出力する。
アンド回路35には、マスク生成部39と遅延同期ループ回路(Delay Locked Loop (DLL)回路)40により生成されたマスクシフト信号DMSが供給される。アンド回路35は、受信ストローブ信号RDSとマスクシフト信号DMSとを互いに論理積演算し、演算結果に応じた内部ストローブ信号IRSを出力する。この内部ストローブ信号IRSは、カウンタ36とマスク生成部37に供給される。
【0016】
マスク生成部39は、内部ストローブ信号IRSに基づいてストローブマスク信号DSMを生成する。図1に示すストローブ信号DQSを伝達する伝送路は、双方向通信の伝送路として用いられ、通信されていないときにハイインピーダンス状態にある。伝送路のハイインピーダンス状態は、システム回路10(メモリインタフェース回路12)に含まれる通信回路とメモリ20に含まれる通信回路により設定される。データを出力する通信回路とデータを入力する入力回路の設定により、伝送路は、大きく分けて、プリアンブル期間、データ送信期間、ポストアンブル期間、の3つの状態となる。例えば、図1に示すシステム回路10は、データ入力に備えて終端回路(ODT:On Die Termination)を有効にする。それにより、伝送路は、第1のレベル(例えば、伝送路の振幅の1/2のレベル)となり、第2のレベル(例えばLレベル)へと遷移する。その後、メモリ20は、クロック信号CKに応じてストローブ信号DQSを変化させ、データ列DQを出力する。所定数のデータ列DQを出力すると、システム回路10の終端回路(ODT)により、伝送路は第2のレベルへと遷移する。その後、終端回路(ODT)が無効状態に設定されると、伝送路はハイインピーダンス状態となる。図2に示すマスク生成部39は、内部ストローブ信号IRSのレベルに基づいてプリアンブル期間(第2のレベル)を検出し、Hレベルのストローブマスク信号DSMを出力する。また、マスク生成部は、ポストアンブル(第2のレベルへの遷移)を検出し、Lレベルのストローブマスク信号DSMを出力する。マスク生成部39は検出回路の一例である。なお、プリアンブルとポストアンブルを検出する検出回路をマスク生成部39と別に備え、マスク生成部39は検出回路の出力に応じてストローブマスク信号DSMを生成するようにしてもよい。
【0017】
DLL回路40は、レジスタ40aに格納された設定値(遅延コードDC1)に応じた時間だけ、入力信号(ストローブマスク信号DSM)を遅延(位相シフト)したマスクシフト信号DMSを出力する。このマスクシフト信号DMSは、上記のアンド回路35に供給される。
【0018】
カウンタ36には、バースト長(Burst Length:BL)BLNが例えば図1に示すコア回路11から設定される。バースト長BLNはメモリ20が連続的に入出力するデータの数であり、設定値は例えば「4」である。また、カウンタ36には、DLL回路41によって内部クロック信号CK2から生成された内部クロック信号CKSが供給される。
【0019】
内部クロック信号CK2の周波数は、メモリ20に供給するクロック信号CKの周波数と同じである。DLL回路41は、レジスタ41aに格納された設定値(遅延コードDC2)に応じた時間だけ、内部クロック信号CK2を遅延させ、位相シフトした内部クロック信号CKSを生成する。
【0020】
カウンタ36は、内部クロック信号CKSに基づいて動作し、内部ストローブ信号IRSをカウントする。そして、カウンタ36は、カウント値が設定されたバースト長BLNと等しくなると、終了検出信号BLEを出力する。この終了検出信号BLEは、マスク生成部37に供給される。
【0021】
マスク生成部37は、終了検出信号BLEがLレベルのとき、Hレベルの内部ストローブ信号IRSに応答してHレベルの内部マスク信号CKMを出力する。これにより、マスク生成部37は、内部ストローブ信号IRSの最初の立ち上がりタイミングで内部マスク信号CKMをHレベルに立ち上げる。また、マスク生成部37は、Hレベルの終了検出信号BLEに応答してLレベルの内部マスク信号CKMを出力する。アンド回路35,カウンタ36,マスク生成部37は第2の信号生成回路に含まれる。
【0022】
アンド回路38には、シフトされた内部クロック信号CKSと、マスク生成部37から出力される内部マスク信号CKMが供給される。アンド回路38は、内部クロック信号CKSと内部マスク信号CKMとを演算(論理積演算)し、演算結果に応じた内部ストローブ信号CSTを出力する。例えば、アンド回路38は、Lレベルの内部マスク信号CKMに応答してLレベルの内部ストローブ信号CSTを出力し、Hレベルの内部マスク信号CKMに応答して内部クロック信号CKSと実質的に等しいタイミングで立ち上がり/立ち下がる内部ストローブ信号CSTを出力する。DLL回路41とアンド回路38は第1の信号生成回路に含まれる。アンド回路38は合成回路の一例である。この内部ストローブ信号CSTは、フリップフロップ回路33,34のクロック入力端子に供給される。
【0023】
フリップフロップ回路33は、Hレベルの内部ストローブ信号CSTに応答して受信データ列RDQをラッチし、ラッチしたレベルと等しいレベルのリードデータRD1を出力する。フリップフロップ回路34は、Lレベルの内部ストローブ信号CSTに応答して受信データ列RDQをラッチし、ラッチしたレベルと等しいレベルのリードデータRD2を出力する。
【0024】
即ち、フリップフロップ回路33は、内部ストローブ信号CSTの立ち上がりタイミングで、受信データ列RDQをラッチする。フリップフロップ回路34は、内部ストローブ信号CSTの立ち下がりタイミングで、受信データ列RDQをラッチする。従って、フリップフロップ回路33が受信データ列RDQをラッチするタイミングと、フリップフロップ回路34が受信データ列RDQをラッチするタイミングは、互いに180度ずれている。
【0025】
従って、メモリインタフェース回路12に含まれる受信回路は、内部クロック信号CK2に基づいて生成した内部ストローブ信号CSTに応答してデータ列DQ(受信データ列RDQ)を取り込む。従って、図1に示すシステム回路10とメモリ20との間の伝送路で発生するスキュ(Skew)の影響を受けることなくデータ列DQを取り込むことができる。
【0026】
内部ストローブ信号CSTは、シフトされた内部クロック信号CKSと等しいタイミングで変化する。内部クロック信号CKSは、内部クロック信号CK2に基づいて、DLL回路41により、レジスタ41aに記憶された設定値に従って生成される。
【0027】
次に、内部クロック信号CKSとマスクシフト信号DMSのタイミングの調整を説明する。
上記マスク生成部37により生成された内部マスク信号CKMは、調整回路50のDLL回路51に供給される。DLL回路51は、内部マスク信号CKMに第1の遅延量(例えば、内部クロック信号CK2の位相の2/4周期(180度)分)を与えて遅延マスク信号DCMを生成する。DLL回路51は第1の遅延回路の一例である。
【0028】
上記アンド回路38から出力される内部ストローブ信号CSTは、DLL回路52に供給される。DLL回路52は、内部ストローブ信号CSTに第2の遅延量(例えば、内部クロック信号CK2の位相の1/4周期(90度)分)を与えて遅延ストローブ信号DSTを生成する。DLL回路52は第2の遅延回路の一例である。
【0029】
位相検出部53は、遅延ストローブ信号DSTと遅延マスク信号DCMとの位相関係を検出し、検出結果に応じた位相検出信号PDRを生成する。詳しくは、位相検出部53は、遅延ストローブ信号DSTの最初の立ち上がりエッジ(1st Rise Edge)と遅延マスク信号DCMの位相関係(ストローブ信号DSTの1st Rise Edgeに対する遅延マスク信号DCMの進み・遅れ)を検出する。そして、位相検出部53は、検出結果に応じたレベルの位相検出信号PDRを出力する。
【0030】
上記したように、内部マスク信号CKMは、内部ストローブ信号IRSの最初の立ち上がりタイミングでHレベルに立ち上がる。内部ストローブ信号IRSは、図1に示すメモリ20から出力されるストローブ信号DQSに対応し、メモリ20から出力されるデータ列DQと同じ位相である。内部ストローブ信号CSTは、データ列DQを取り込むために、後述するように、データ列DQのデータウインドウの中央、つまり、データ列DQから90度位相が遅れている。従って、電源電圧の変動や周囲温度の変動が無いとき、遅延マスク信号DCMの位相は、遅延ストローブ信号DSTの位相と等しい。
【0031】
例えば、図1に示すシステムにおいて、電源電圧の変動や周囲温度の変動により、チップ間の伝送路における遅延量が変化する。この遅延量の変化により、内部クロック信号CKSのタイミングに対し、受信ストローブ信号RDSのタイミングに進み又は遅れが生じる。受信ストローブ信号RDSの位相が内部クロック信号CKSよりも進むと、遅延ストローブ信号DSTの最初の立ち上がりタイミングにおいて、遅延マスク信号DCMはHレベルである。このとき、位相検出部53は、Hレベルの位相検出信号PDRを出力する。
【0032】
受信ストローブ信号RDSの位相が内部クロック信号CKSよりも遅れると、遅延ストローブ信号DSTの最初の立ち上がりタイミングにおいて、遅延マスク信号DCMはLレベルである。このとき、位相検出部53は、Lレベルの位相検出信号PDRを出力する。
【0033】
演算部54は、位相検出部53から出力される位相検出信号PDRに基づいて、更新コードUCを生成する。
そして、演算部54は、データ列DQの受け取りに影響しないタイミングで、各DLL回路40,41のレジスタ40a,41aの設定値を、生成した更新コードUCにより更新する。レジスタ40a,41aの設定値の更新には、例えば、終了検出信号BLEが用いられる。終了検出信号BLEは、リードコマンドに対応するデータの受信(リード動作)が終了したことを示す。従って、演算部54は、リード動作の終了を待って、レジスタ40a,41aの設定値を更新する。
【0034】
例えば、演算部54は、カウンタ36から出力される終了検出信号BLEに応答して更新コードUCを出力する。終了検出信号BLEは、リードコマンドに対応するデータの受信(リード動作)が終了したことを示す。従って、演算部54は、リード動作の終了を待って、生成した更新コードUCを出力する。
【0035】
第1のタイミング制御部55と第2のタイミング制御部56はそれぞれ、終了検出信号BLEを受け取る。第1のタイミング制御部55は、終了検出信号BLEを所定時間遅延した信号に基づくタイミングで、更新コードUCに応じた遅延コードDC1をレジスタ40aに格納する。同様に、第2のタイミング制御部56は、終了検出信号BLEを所定時間遅延した信号に基づくタイミングで、更新コードUCに応じた遅延コードDC2をレジスタ41aに格納する。終了検出信号BLEに対する遅延時間を調整することにより、第1のレジスタ40aに対する遅延コードDC1の設定タイミングと、第2のレジスタ41aに対する遅延コードDC2の設定タイミングを、同期させる。
【0036】
次に、メモリインタフェース回路12とトレーニング回路13の動作を説明する。
[トレーニング処理の概要]
図1に示すメモリインタフェース回路12及びトレーニング回路13は、次に示す各処理を実行し、データ列DQを取り込むタイミングを調整する。
(a)システム起動。
(b)ゲートトレーニング(Gate Traning)。
(c)データアイトレーニング(Data Eye Traning)。
(d)遅延コード算出(Read Delay Code Cal.)。
(e)遅延コード更新(Read Delay Code Update)。
【0037】
トレーニング回路13は、上記(b)の処理を実行し、図2に示すDLL回路40のレジスタ40aに格納する設定値を調整する。また、トレーニング回路13は、上記(c)の処理を実行し、図2に示すDLL回路41のレジスタ41aに格納する設定値を調整する。メモリインタフェース回路12は、上記(d),(e)の処理を繰り返し実行し、レジスタ40a,41aの設定値を調整する。
【0038】
[タイミング調整(1)]
次に、上記(c)データアイトレーニング(Data Eye Traning)の動作を説明する。
図1に示すトレーニング回路13は、図7に示すフローチャートに従ってメモリインタフェース回路12を介してメモリ20をアクセスし、データ列DQを取り込むタイミングを調整する。
【0039】
先ず、初期化処理において、内部クロック信号CKSを生成するDLL回路41のレジスタ41aに格納した遅延値Nを初期値(=0)にセットする(ステップ61)。
次いで、判定処理において、所定の遅延値Nまで処理を終了したか否かを判定する(ステップ62)。例えば、遅延値Nを初期値(=0)から所定の遅延時間(Delay)に対応する値まで変更する。遅延時Nと遅延時間(Delay)の一例を図8(a)に示す。この例では、遅延時間を8段階に調整する。従って、遅延値Nが「8」になるまで、次に示す処理を繰り返し実行する。
【0040】
次いで、遅延値設定処理(Delay Set)において、遅延値Nを図2に示すレジスタ41aに設定する(ステップ63)。図8(a)に示す例では、遅延値Nが初期値(=0)のとき、図2に示すDLL回路41は、内部クロック信号CK2に対して、「0」の遅延時間、即ち内部クロック信号CK2と同じタイミングの内部クロック信号CKSを生成する。そして、遅延値Nを最大(=7)としたとき、図2に示すDLL回路41は、内部クロック信号CK2に対して、「140psec(ピコ秒)」の遅延時間、内部クロック信号CK2から遅れたタイミングの内部クロック信号CKSを生成する。
【0041】
次いで、書き込み処理(Write)において、ライトコマンドにより、図1に示すメモリインタフェース回路12を介してメモリ20に対して書き込み動作を行う(ステップ64)。このとき、書き込むデータ列は、連続する複数のデータをそれぞれ識別可能に設定され、例えば、8ビットのデータ列DQの各ビットは「01010101」である。これにより、連続するデータ(例えば、データD0(=0)とデータD1(=1))を識別することが可能となる。
【0042】
次いで、読み出し処理(Read)において、リードコマンドにより、先に書き込んだデータを読み出す(ステップ65)。
次いで、読み出したデータが書き込んだデータと一致している(Pass)か異なる(Fail)かを判定し、判定結果をレジスタに順次格納する(ステップ66)。
【0043】
次いで、遅延値Nを切り替え(N=N+1)(ステップ67)、ステップ62へ遷移する。
ステップ62において、所定数(例えば「8」)のデータ列DQの読み込みを終了すると(判定:YES)、ステップ66において順次記憶した判定結果に基づいて、図2に示すDLL回路41の遅延値を設定する(ステップ68)。例えば、パス領域(パスと判定した複数の遅延値N)の中央の遅延値を、設定値として図2に示すレジスタ41aに設定する。例えば、図8(b)に示すように、遅延値Nが「1」から「5」の領域においてパス(Pass)と判定した。従って、「1」から「5」の領域の中央の遅延値N(=3)を算出し、その算出した遅延値を図2に示すレジスタ41aに設定する。
【0044】
なお、上記したタイミング調整において、内部クロック信号CKSの調整範囲を1周期とし、遅延時間の調整ステップは、可能な限り小さいほうがよい。
例えば、図9に示すように、遅延値Nが初期値(=0)における内部クロック信号CKS(実線で示す波形)に対して、遅延値Nを準時増加し、タイミングが互いに異なる複数の内部クロック信号CKS(破線で示す波形)を生成する。タイミングが異なる複数の内部クロック信号CKSの立ち上がりエッジのタイミングで、図1に示すメモリ20から読み出したデータ列DQを取り込み、そのデータ(リードデータ)と、メモリ20に書き込んだデータ(ライトデータ)とを比較する。両データが一致しているときパス(Pass)と判定し、両データが互いに異なるときフェイル(Fail)と判定する。
【0045】
パスと判定した内部クロック信号CKSに対応する複数の遅延値Nのうちの中央の値を設定値とする。従って、内部クロック信号CKSの遅延時間を調整するステップ(遅延時間)は、細かい(短い)ほうがよい。これにより、データ列DQを取り込むフリップフロップ回路33,34において、セットアップ(Setup)におけるタイミングマージンと、ホールド(Hold)におけるタイミングマージンを、互いに等しくすることができる。
【0046】
また、上記したタイミング調整において、複数(例えばバースト長と等しい数)のデータが連続するデータ列DQのうち、パス−フェイルの判定に、先頭のデータを除くデータ、つまり2つ目以降のデータを用いるとよい。2つ目以降のデータを用いて内部ストローブ信号CST(内部クロック信号CKS)のタイミング調整を行うことで、データが有効な期間(データウインド)の中央付近に、内部ストローブ信号CSTのエッジを合わせることができる。
【0047】
即ち、図2に示すアンド回路38は、Lレベルの内部マスク信号CKMに応答してLレベルの内部ストローブ信号CSTを出力し、Hレベルの内部マスク信号CKMに応答して内部クロック信号CKSと等しいレベルの内部ストローブ信号CSTを出力する。内部マスク信号CKMの立ち上がりタイミングは、ストローブ信号DQSの立ち上がりタイミングに対応し、ストローブ信号DQSの立ち上がりタイミングは、データ列DQのタイミングと等しい。従って、図10(a)に示すように、内部マスク信号CKMの立ち上がりからデータ列DQ(データD0)のパス−フェイルを判定することで、パスと判定する期間、つまりデータウインドウの開始と終了を判定することができる。
【0048】
しかし、図10(b)に示すように、何らかの要因によって内部マスク信号CKMの立ち上がりタイミングが遅れると、データD0の途中から判定を行うことになる。その結果、データD0のデータウインドウを正しく判定することができない。このように判定したデータウインドウによって調整される内部ストローブ信号CSTの立ち上がりタイミングは、正しいデータウインドウの中央から遅れることになり、ホールド(Hold)のタイミングマージンが少なくなる。
【0049】
このため、図10(c)に示すように、データD1に対してパス−フェイル判定を行うことで、データD1に対してパスと判定する期間、つまりデータウインドウの開始と終了を正しく判定することができる。これにより、データが有効な期間(データウインドウ)の中央付近に内部ストローブ信号CSTのエッジを合わせることができる。そして、セットアップ(Setup)におけるタイミングマージンと、ホールド(Hold)におけるタイミングマージンを、互いに等しくすることができる。
【0050】
[データの取り込み]
次に、データ列DQを取り込む動作を説明する。
図3に示すように、受信ストローブ信号RDSのプリアンブル(Lレベルへの遷移)を検出し、Hレベルのストローブマスク信号DSMを生成する。
【0051】
Hレベルのストローブマスク信号DSMに基づいて、受信ストローブ信号RDSに応じて内部ストローブ信号IRSが出力される。
マスク生成部37は、内部ストローブ信号IRSの最初の立ち上がりエッジを検出すると、Hレベルの内部マスク信号CKMを出力する。アンド回路38は、Hレベルの内部マスク信号CKMに基づいて、内部クロック信号CKSに応じた内部ストローブ信号CSTを出力する。この内部ストローブ信号CSTの立ち上がりのタイミングと立ち下がりのタイミングでそれぞれ受信データ列RDQがラッチされ、データD0〜D7として出力される。
【0052】
カウンタ36は、Hレベルの内部ストローブ信号IRSに応答して、内部クロック信号CKSのサイクル数(パルス数)をカウントする。そのカウント値がバースト長BLNと等しくなると、内部ストローブ信号IRSの立ち下がりに基づいてHレベルの終了検出信号BLEが出力される。
【0053】
マスク生成部37は、Hレベルの終了検出信号BLEに基づいて、Lレベルの内部マスク信号CKMを出力する。アンド回路38は、Lレベルの内部マスク信号CKMに応答してLレベルの内部ストローブ信号CSTを出力する。
【0054】
[タイミングの調整(2)]
次に、上記の(d)遅延コード算出と(e)遅延コード更新の動作を説明する。
図4に示すように、内部マスク信号CKMをDLL回路51により第1の遅延時間(例えば、内部クロック信号CK2の位相180°分)遅らせ、遅延マスク信号DCMを生成する。内部ストローブ信号CSTをDLL回路52により第2の遅延時間(例えば、内部クロック信号CK2の位相90°分)遅らせ、遅延ストローブ信号DSTを生成する。
【0055】
図2に示す位相検出部53は、遅延ストローブ信号DSTと遅延マスク信号DCMの位相関係を検出する。例えば、位相検出部53は、遅延ストローブ信号DSTの最初の立ち上がりエッジを検出し、その立ち上がりエッジのタイミングにおける遅延マスク信号DCMのレベルを検出する。そして、位相検出部53は、検出した遅延マスク信号DCMのレベルに応じたレベルの位相検出信号PDRを出力する。例えば、位相検出部53は、Hレベルの遅延マスク信号DCMを検出するとHレベルの位相検出信号PDRを出力し、Lレベルの遅延マスク信号DCMを検出するとLレベルの位相検出信号PDRを出力する。
【0056】
演算部54は、Hレベルの位相検出信号PDRに基づいて、次のリード時に、マスクシフト信号DMSと内部クロック信号CKSを生成する遅延時間を増加させるか減少させるかを判定し、更新コードUCを生成する。更新コードUCは例えば1ビットの信号であり、遅延時間を増加させるときに「1」の更新コードUCを生成し、遅延時間を減少させるときに「0」の更新コードUCを生成する。
【0057】
タイミング制御部55は、演算部54から出力される更新コードUCに基づいて、レジスタ40aの設定値を更新する。同様に、タイミング制御部56は、演算部54から出力される更新コードUCに基づいて、レジスタ41aの設定値を更新する。レジスタ40a,41aに格納された設定値は、上記の[タイミング調整(1)]において説明したように、トレーニング回路13により実行されるデータアイトレーニングにおいて設定されている。
【0058】
システム装置の動作環境(周辺温度)や動作電源の電圧が変動(VT変動)すると、内部ストローブ信号CSTのタイミングと、データ列DQ及びストローブ信号DQSのタイミングとが、相対的に変化する。内部マスク信号CKMは、ストローブ信号DQSに基づいて生成され、受信データ列RDQと同様に変化する。
【0059】
例えば、図5に示すように、受信ストローブ信号RDS(内部マスク信号CKM)が早くなると、遅延ストローブ信号DSTの最初の立ち上がりエッジのタイミングにおいて、遅延マスク信号DCMはHレベルであるため、Hレベルの位相検出信号PDRが出力される。演算部54は、Hレベルの位相検出信号PDRに基づいて、次のリード時に、内部クロック信号CKSを生成するための遅延時間を減少させるように「1」(Hレベル)の更新コードUCを出力する。
【0060】
図2に示すタイミング制御部56は、演算部54から出力される更新コードUCに基づいて、レジスタ41aの設定値を更新(減少)する。例えば、タイミング制御部56は、レジスタ41aの設定値に対し、所定の調整ステップを減算した値をレジスタ41aに格納する、つまり、レジスタ41aの設定値を減少させる。これにより、DLL回路41は、内部クロック信号CK2に基づいて、設定値に応じた遅延時間にて生成される内部クロック信号CKSのタイミングが早くなる。
【0061】
同様に、タイミング制御部55は、演算部54から出力される更新コードUCに基づいて、レジスタ40aの設定値を更新(減少)する。これにより、DLL回路40は、ストローブマスク信号DSMに基づいて、設定値に応じた遅延時間にて生成されるマスクシフト信号DMSのタイミングが早くなる。
【0062】
また、図6に示すように、受信ストローブ信号RDS(内部マスク信号CKM)が遅くなると、遅延ストローブ信号DSTの最初の立ち上がりエッジのタイミングにおいて、遅延マスク信号DCMはLレベルであるため、Lレベルの位相検出信号PDRが出力される。演算部54は、Lレベルの位相検出信号PDRに基づいて、次のリード時に、内部クロック信号CKSを生成するための遅延時間を増加させるように「0」(Hレベル)の更新コードUCを出力する。
【0063】
図2に示すタイミング制御部56は、演算部54から出力される更新コードUCに基づいて、レジスタ41aの設定値を更新する。例えば、タイミング制御部56は、レジスタ41aの設定値から、所定の調整ステップを加算した値をレジスタ41aに格納する、つまり、レジスタ41aの設定値を増加させる。これにより、DLL回路41は、内部クロック信号CK2に基づいて、設定値に応じた遅延時間にて生成される内部クロック信号CKSのタイミングが遅くなる。
【0064】
同様に、タイミング制御部55は、演算部54から出力される更新コードUCに基づいて、レジスタ40aの設定値を更新(増加)する。これにより、DLL回路40は、ストローブマスク信号DSMに基づいて、設定値に応じた遅延時間にて生成されるマスクシフト信号DMSのタイミングが遅くなる。
【0065】
このように、調整回路50は、遅延マスク信号DCMの位相と、遅延ストローブ信号DSTの位相を等しくするように、内部クロック信号CKSを生成するDLL回路41の遅延量(レジスタ41aに格納される設定値)を調整する。これにより、内部マスク信号CKMと内部クロック信号CKSの位相差、つまり内部マスク信号CKMと内部ストローブ信号CSTの位相差が90度となり、内部ストローブ信号CSTのエッジタイミングは、データ列DQ(受信データ列RDQ)のデータウインドウにおける中央となる。
【0066】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)内部クロック信号CK2をDLL回路41により遅延して内部クロック信号CKSを生成する。その内部クロック信号CKSを、ストローブ信号DQSに基づいて生成した内部マスク信号CKMによりマスクして内部ストローブ信号CSTを生成する。そして、フリップフロップ回路33は、内部ストローブ信号CSTの立ち上がりエッジのタイミングで受信データ列RDQをラッチしてリードデータRD1を出力し、フリップフロップ回路34は、内部ストローブ信号CSTの立ち下がりエッジのタイミングで受信データ列RDQをラッチしてリードデータRD2を出力する。
【0067】
従って、このメモリインタフェース回路12は、メモリ20とメモリインタフェース回路12との間の伝送路における信号反射やクロストークノイズなどの要因に起因するタイミングマージンの減少を抑制することができる。
【0068】
(2)メモリインタフェース回路12の受信回路は、データ列DQと同期したストローブ信号DQSに基づいて、データ列DQを受け取る期間に応じた内部マスク信号CKMを生成する。調整回路50は、内部マスク信号CKMと内部ストローブ信号CSTの位相関係に応じて、内部ストローブ信号CSTの位相を調整する。従って、VT変動により内部マスク信号CKMのタイミング、つまりデータ列DQのタイミングに応じて、そのデータ列DQをラッチするための内部ストローブ信号CSTの位相を調整することで、データ列DQを取り込むタイミングマージンの減少を抑制し、正しいデータを取り込むことができる。
【0069】
(3)メモリインタフェース回路12は、内部ストローブ信号IRSに応答してクロック信号CKSをカウントするカウンタ36を備え、このカウンタ36は、カウント値がバースト長BLNと等しくなると、終了検出信号BLEを出力する。調整回路50の演算部54は、終了検出信号BLEに応じて更新コードUCを出力する。タイミング制御部56は、終了検出信号BLEに応じて、内部クロック信号CKSを生成するDLL回路41のレジスタ41aに格納された設定値を、更新コードUCに応じて更新する。従って、メモリインタフェース回路は、メモリ20からデータ列DQを受け取る毎に、内部クロック信号CKS、つまり内部ストローブ信号CSTのタイミングを調整する。従って、VT変動に追従して内部ストローブ信号CSTのタイミングを合わせることができる。また、メモリ20からデータを読み出す毎にタイミングを調整するため、動作中にトレーニング回路13を動作させてタイミング調整を行う必要がない。従って、タイミング調整のためにコア回路11の読み出し動作を抑制(停止)させる必要が無く、メモリ20からのデータ読み出しに対するオーバーヘッドを低減することができる。
【0070】
尚、上記各実施形態は、以下の態様で実施してもよい。
・図1に示すシステムにおいて、システム回路10とメモリ20の少なくとも一方をチップが直接基板に実装されてもよい。
【0071】
・内部クロック信号CK2に基づいて生成した内部ストローブ信号CSTの立ち上がりエッジと立ち下がりエッジのタイミングでデータ列DQを取り込むメモリインタフェース回路12に具体化したが、内部ストローブ信号CSTの立ち上がりエッジのタイミング、又は立ち下がりエッジのタイミングでデータ列DQを取り込むメモリインタフェース回路に具体化してもよい。
【0072】
・メモリインタフェース回路12に限定されず、データ列DQとストローブ信号DQSにより通信を行う装置に具体化してもよい。
・上記実施形態では、内部マスク信号CKMと内部ストローブ信号CSTの位相差が、データ列DQを取り込むために好適な位相差(例えば内部クロック信号CK2の1/4周期(90度))であるか否かを検出可能であれば、図2に示すDLL回路51,52の遅延量は、上記の実施形態で説明した遅延量に限定されない。例えば、内部マスク信号CKMを90度遅延させた信号と、内部ストローブ信号CSTを位相検出部53に供給するようにする。例えば、DLL回路51の遅延量を45度分とし、DLL回路52の遅延量を135度分(=90度+45度)としてもよい。また、DLL回路51の遅延量を90度分とし、DLL回路52の遅延量を0度分としてもよい。
【符号の説明】
【0073】
33,34 ラッチ回路
36 カウンタ
37,39 マスク生成部
40,41 遅延同期ループ回路(DLL回路)
50 調整回路
51,52 遅延同期ループ回路(DLL回路)
53 位相検出部
54 演算部
55,56 タイミング制御部
CK2 クロック信号
CST 内部ストローブ信号
CKM マスク信号
DQ データ列
D0〜D7 データ
DQS ストローブ信号

【特許請求の範囲】
【請求項1】
クロック信号に対応する内部ストローブ信号を生成する第1の信号生成回路と、
前記内部ストローブ信号に応答してデータをラッチするラッチ回路と、
外部ストローブ信号に応じて前記データを受け取る期間に応じたマスク信号を生成する第2の信号生成回路と、
前記マスク信号と前記内部ストローブ信号との位相関係に応じて前記内部ストローブ信号の位相を調整する調整回路と、
を有する受信回路。
【請求項2】
前記第1の信号生成回路は、
前記クロック信号を設定値に応じて遅延させた遅延クロック信号を生成する遅延回路と、
前記遅延クロック信号と前記マスク信号を合成して前記内部ストローブ信号を生成する合成回路と、
を含む、請求項1に記載の受信回路。
【請求項3】
前記調整回路は、
前記マスク信号を遅延する第1の遅延回路と、
前記内部ストローブ信号を遅延する第2の遅延回路と、
前記第1の遅延回路の出力信号と前記第2の遅延回路の出力信号との位相を検出する位相検出部と、
前記位相検出部の検出結果に応じて、前記第1の遅延回路の出力信号の位相に前記第2の遅延回路の出力信号の位相を等しくするように更新コードを生成する演算部と、
前記更新コードに応じて前記第1の遅延回路の設定値を更新する制御部と、
を含む、請求項1又は2に記載の受信回路。
【請求項4】
前記外部ストローブ信号のプリアンブルを検出して第1の信号を出力する検出回路と、
設定値に応じて前記第1の信号を遅延させて第2の信号を生成する第2の遅延回路と、
を含み、
前記第2の信号生成回路は、前記第2の信号に基づいて前記マスク信号を生成する、請求項3に記載の受信回路。
【請求項5】
前記調整回路は、前記更新コードに応じて前記第2の遅延回路の設定値を更新する第2の制御部を含む、請求項4に記載の受信回路。
【請求項6】
前記第2の信号生成回路は、
前記第2の信号と前記外部ストローブ信号を合成してストローブ信号を生成する合成回路と、
前記ストローブ信号に応答して前記遅延クロック信号をカウントし、カウント値がデータ列に応じた設定値に達したときに終了信号を出力するカウンタと、
前記ストローブ信号と前記終了信号とに基づいて前記マスク信号を生成するマスク生成部と、
を含む、請求項4又は5に記載の受信回路。
【請求項7】
コア回路と、インタフェース回路とを有し、
前記コア回路は、前記インタフェース回路を介して対象回路からデータを読み出し、
前記インタフェース回路は、前記対象回路から出力されるデータとストローブ信号を受信する受信回路を有し、
前記受信回路は、
クロック信号に対応する内部ストローブ信号を生成する第1の信号生成回路と、
前記内部ストローブ信号に応答してデータをラッチするラッチ回路と、
外部ストローブ信号に応じて前記データを受け取る期間に応じたマスク信号を生成する第2の信号生成回路と、
前記マスク信号と前記内部ストローブ信号との位相関係に応じて前記内部ストローブ信号の位相を調整する調整回路と、
を含む、システム装置。
【請求項8】
クロック信号に対応する内部ストローブ信号を生成し、
前記内部ストローブ信号に応答してデータをラッチするラッチ回路と、
外部ストローブ信号に応じて前記データを受け取る期間に応じたマスク信号を生成し、
前記マスク信号と前記内部ストローブ信号との位相に応じて前記クロック信号を遅延する遅延時間を調整し、
前記クロック信号を遅延した信号に基づいて前記内部ストローブ信号を生成する、して遅延クロック信号を生成する内部ストローブ信号の位相を調整する、
ことを特徴とするタイミング調整方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−248082(P2012−248082A)
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願番号】特願2011−120580(P2011−120580)
【出願日】平成23年5月30日(2011.5.30)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】