(58)【調査した分野】(Int.Cl.,DB名)
複数のサンプリングフリップフロップを用いてストローブ信号をオーバーサンプリングするステップをさらに備え、前記複数のサンプリングフリップフロップの各々は、異なる位相で、かつ前記ストローブ信号の周波数とおよそ同じ周波数を有するクロック信号によってクロック制御され、
前記方法はさらに、
前記ソース同期装置に送られる読出要求を検出するステップと、
前記ストローブ信号をオーバーサンプリングする前記複数のサンプリングフリップフロップから受信した値に従って前記読出要求と前記ストローブ信号の第1のパルスとの間の時間の量を判断するステップと、
後続の読出要求に応答して、前記時間の量に対して前記ストローブ信号をスケルチングするステップとを備える、請求項8〜11のいずれかに記載の方法。
【発明を実施するための形態】
【0031】
図面の詳細な説明
明細書は新規であるとして見なされる1つ以上の実施例の特徴を規定する請求項で終えているが、それら1つ以上の実施例は図面とあわせた記載の考察から一層よく理解されると考えられる。必要に応じて、1つ以上の詳細な実施例がここに開示されるが、開示される1つ以上の実施例は単に例示的であることが理解されるべきである。したがって、この明細書内に開示される具体的な構造上および機能上の詳細は限定的に解釈されるべきではなく、単に、請求項に対する基礎、および事実上任意の適切に詳細な構造において発明の構成をさまざまに用いるよう当業者に教示する代表的な基礎として解釈されるべきである。さらに、ここに用いられる用語および語句は、限定的であるようには意図されず、ここに開示される1つ以上の実施例の理解可能な記載をあたえるよう意図される。
【0032】
この明細書内に開示される1つ以上の実施例は、集積回路(IC)、およびより特に、IC内における使用のための入力および出力のバンクに関する。ここに開示される1つ以上の実施例によれば、ソース同期装置との通信を容易にする、入力および出力のバンク(I/Oバンク)に対するアーキテクチャがあたえられる。このアーキテクチャにより、I/Oバンクは、オフチップに位置された1つ以上のソース同期装置と通信するための独立して設定可能な1つ以上のインタフェースとして利用できる。
【0033】
1つの局面においては、I/Oバンク自体内において、たとえば、ソース同期インタフェースを実現するために用いられるI/Oバンクの特定のピンに対して局在してクロックリソースを含み得る。クロック機能に対するより大きな制御レベルは、I/Oバンク自体内におけるクロック生成および管理リソースの包含を通して達成することができる。クロック機能に対するさらなる制御は、各クロックリソースによって制御されるI/Oバンク内のピンの数を制限することによって、容易になり得る。制限されたピンの組に対するI/Oバンク内のクロック生成および管理のこの局所的な方策は、他の従来のI/Oバンクアーキテクチャより低いスキューおよびより高い性能をあたえる。従来のI/Oバンクは、たとえば、典型的には、ICの全体にわたって多くの回路素子を駆動する1つ以上の大域クロックを含むか、またはそのような大域クロックによって駆動される。大域クロック信号は、I/Oバンクに関して局所的には生成されず、クロック信号においてジッタ、遅延などを誘発するローディング効果の影響を受け、それによって、同期インタフェースとしてI/Oバンクの精度および信頼性を低減する。
【0034】
図1は、この明細書内に開示される実施例に従う集積回路のI/Oバンク100を例示する第1のブロック図である。I/Oバンク100は、I/Oバンク100が配置されるICとさまざまな異なる種類のソース同期装置のいずれかとの間の通信を容易にするソース同期インタフェースを実現するよう構成され得る。ある実施例において、I/Oバンク100のような1つ以上のI/Oバンクを実現することができるICは、プログラマブルICであり得る。しかしながら、ここに開示される1つ以上の実施例は、プログラマブルIC内における実現または使用に限定されるようには意図されない。むしろ、I/Oバンク100は、さまざまな異なる種類のICの任意のものにおいて実現することができる。たとえば、I/Oバンク100は、内蔵メモリコントローラ、特定用途向けIC、混合信号ICまたは他の種類の非プログラマブルICを有するプロセッサ内において実現することができる。
【0035】
I/Oバンク100に結合され得るソース同期装置の一例は、メモリ装置である。I/Oバンク100は、さまざまなデュアルデータレート(DDR)同期ダイナミックRAM(SDRAM)装置のうちの任意のものに結合され得る。DDRタイプのSDRAM装置の例は、DDRタイプのメモリ装置、DDR2タイプのメモリ装置、DDR3タイプのメモリ装置、低パワーDDR(LPDDRまたはモバイルDDR)タイプのメモリ装置などを含み得るが、それらに限定はされない。さらなる例は、クアッドデータレートII(QDRII)、レイテンシ低減ダイナミックRAM(RLDRAMII)、ネットワーキングソース、マルチメディアソースなどを含み得るが、それらに限定はされない。
【0036】
一般に、I/Oバンク100は、複数のIOB105、複数のI/O相互接続タイル(IOI)110、相互接続ブロック115、および複数のI/O先入れ先出しメモリ(I/O FIFO)120を含み得る。I/Oバンク100は、さらに、位相ロックループ(PLL)125、物理インタフェースコントローラ(PHYコントローラ)130、および複数の位相器135を含み得る。まとめて、IOB105およびIOI110はI/Oバンク100のI/O回路を形成する。IOB105は、入出力機能を実施する1つ以上の回路素子を表す。各IOBは、たとえば、双方向動作に対して構成され得、したがって、入力バッファと出力バッファとを含み得る。入力バッファおよび出力バッファは、信号、たとえば単一のビット信号を出力バッファを介してICの外部の目標に出力することができるか、または入力バッファを介してICの外部のソースから信号を受信することが可能なICのパッドに結合され得る。IOB105はIOI110に結合される。一般に、IOI110は複数の並直列変換器および複数の直並列変換器を含み得る。
【0037】
示されるように、IOI110は相互接続ブロック115に結合され得、それは次いでI/O FIFO120に結合される。1つ以上の実施例においては、相互接続ブロック115は、回路の2つの異なるコラムにおいて構成可能な回路素子を結合するよう用いられる相互接続回路として実現することができる。この点において、I/O FIFO120はIOI110によって分離される一方で、相互接続ブロック115は少なくとも一部が構成可能であり得るルーティングリソースを含むので、I/O FIFO120はIOI110に隣接して配置されると言うことができる。
【0038】
相互接続ブロック115は、IOI110とI/O FIFO120との間のプログラマブルなルーティングを容易にするよう相互接続をあたえる。たとえば、ICがプログラマブルICである場合に、I/O FIFO120をIOI110と結合する経路は、プログラマブルICの設定メモリセルにロードされる設定データに従って判断することができる。相互接続ブロック115は、さらに、たとえば、ICがフィールドプログラマブルゲートアレイ(FPGA)のようなプログラマブルICとして構成されるときに、ICのユーザに指定された回路を実現するプログラマブルなファブリックからIOI110へのアクセスをあたえる。
【0039】
相互接続ブロック115は、IOI110とI/O FIFO120との間において、プログラマブルな接続性をあたえるが、ここに記載される1つ以上の信号は、相互接続ブロック115によって表される領域にわたって直接ルーティングすることができる。直接的なルートは、より感度のよい信号に対するより高速かつ効率的な信号ルーティングを容易にする。信号ルートは、たとえば、「ハード化された」と考えることができるか、または「ハード回路」であると言える。したがって、ハード化されたルートは、プログラマブルなルートと比較して、信号においてジッタおよび遅延のようなより少数のアーティファクトを誘導する。
【0040】
「ハード回路」は、IC内において実現される回路ブロックあるいはワイヤである、予め定められ、したがって予め設定される回路、たとえば経路を指す。ハード回路は、たとえば、時にはいくつかの点において少なくとも部分的に設定可能であるが、プログラマブルICに設定データをロードすることによっては具体化されない。ハード回路は、設定データがロードされるかどうかに関係なくプログラマブルICに存在し、一般には、ここに記載されるさまざまなブロックがそうであるように、特定の目的に専用である。
【0041】
比較して、「ソフト回路」は、ソフトウェア、たとえば、ハードウェア記述言語、ネットリストなどを用いて指定される回路のプログラムの記述を用いて指定される回路設計を指す。回路設計のプログラムの記述は変換され、たとえば、プログラマブルICの設定メモリセルにロードされ得る設定データ内にコンパイルされる。設定データを設定メモリセルにロードすることは、プログラマブルIC内において回路設計を効果的に具体化する。特に、設定データは、プログラマブルICにロードされると、プログラマブルIC内において一般的なプログラマブルまたは設定可能な回路を構成して、指定された回路設計および/またはルート、たとえば配線を実施する。
【0042】
I/O FIFO120は、1つ以上の入力FIFOメモリおよび1つ以上の出力FIFOメモリを含み得る。各出力FIFOメモリは、ICからソース同期装置にデータおよび/またはコマンドを送るよう構成され得る。各入力FIFOメモリは、IC内においてソース同期装置からデータを受取るよう構成され得る。I/O FIFO120の各々は、非同期クロックドメイン境界を実現するよう構成され得る。たとえば、I/O FIFO120の各々は、ソース同期装置の動作周波数(SSD周波数)とおよそ等しい第1の周波数で動作するよう構成される1つのポート、およびIC内における1つ以上の他のシステムが動作するよう構成されるかまたはされ得る、第2の、典型的にはより遅い周波数(IC周波数)で動作するよう構成される第2のポートを含み得る。
【0043】
PLL125は、たとえば、PHYコントローラ130および位相器135によって利用される1つ以上のクロック信号を生成することができる。PHYコントローラ130は位相器135に対する集中制御をあたえることができる。たとえば、一般に、PHYコントローラ130は、メモリコントローラのようなユーザ回路から受信した制御ワードに応答してI/O FIFO120を介したデータの転送を制御することができる。1つ以上の実施例においては、PHYコントローラ130は、さらに、IC周波数に対応するレートで制御ワードを受信することによって、非同期クロック境界を容易にすることができる。しかしながら、PHYコントローラ130は、SSD周波数またはその周波数の付近で、位相器135を介して、受信した制御ワードを実行するとともに、I/O FIFO120の少なくとも一部の動作を制御することができる。
【0044】
位相器135は、さまざまなクロック生成およびクロック管理機能をあたえるよう構成可能なクロックリソースの一種である。位相器135の各々は、たとえば、I/Oバンク100内で用いられる読出インタフェースクロックおよび/または書込インタフェースクロックを生成することができる。位相器135は、SSD周波数で動作するI/Oバンク100内の構成要素への分配のためのクロック信号を生成することができる。位相器135の各々は、たとえば、継続的な周波数基準クロックを受信するよう構成され得、位相器135の1つ以上は非継続的な移相基準を受信するよう構成され得る。さらに、付加的な制御信号および/またはリセット信号を、位相器135の各々にあたえることができる。
【0045】
示されるように、位相器135は、I/O FIFO120のように、I/O回路およびたとえばIOI110に直接近接する列内に配置することができる。I/O回路に近接して位相器135を設けることは、クロックルーティングを直接的でありかつ短くすることを可能にし、それによって、多段の回路の使用から、ならびに信号線の結合および/または交差から生じるジッタ注入点を低減および/または除去する。
【0046】
位相器135の各々は、たとえば、PLL125によってあたえられ得る連続的な周波数基準クロックで周波数ロックを確立することができる。一旦、周波数ロックが達成されると、位相器135の各々は、位相基準クロックに固定された位相関係を有する1つ以上の信号を出力することができる。位相基準クロックは、たとえば、外部ピンを介してソース同期装置から受信されたデータストローブ信号、たとえば「DQS信号」であり得る。位相器135の1つ以上は、さらに、たとえば、ストローブ信号検出を実行し、受信ストローブ信号が終端するかまたはパルスを中止するとき、ストローブ信号に位相および周波数が整列されたさらなるクロックパルスを捕捉および生成することができる。付加的なパルスは、IC内における1つ以上の他のシステムまたは回路素子への出力のために、データがI/Oバンク100を介してクロック制御されることを可能にする。
【0047】
1つ以上の実施例においては、位相器135の各々は、たとえば、およそ基準信号またはSSD周波数と同じ周波数を有するフルレートクロック、および1つ以上の分割されたクロックを生成するよう構成され得る。各分割されたクロックはフルレートクロックの分周されたバージョンであり得る。用いられる除数は選択可能であり得、たとえば1、2、4などである。分周されたクロックの各々は、さらに、フルレートクロックに関して選択可能な位相変動または関係を有することができる。たとえば、位相器135の各々は1つ以上の分割されたクロックを出力することができる。各分割されたクロックの位相は、各位相器135内において、たとえば、フルレートクロックの周期の約2分の1の増分で設定することができる。位相器135の各々内に配置された分割する回路は、プログラマブルであり得る。したがって、位相器135がリセットされると、位相器135のプログラマビリティを介して指定される位相関係は、維持されるか、そうでなければ維持される。
【0048】
たとえば、分周されたクロックがフルレートクロックの約2分の1である周波数を有する場合、位相変動は、フルレートクロックとおよそ同相または約180度違相にあることに関して選択可能であり得る。分周されたクロックがフルレートクロックの約4分の1である周波数を有する場合、位相変動は、フルレートクロックとおよそ同相、約90度度違相、約180度違相、または約225度度違相にあることに関して、選択可能であり得る。
【0049】
I/Oバンク100内においてソース同期インタフェースを実現することにおける使用のために専用化されたクロック制御回路を含むことによって、クロック制御信号におけるひずみおよびジッタを最小限にすることができる。1つ以上の実施例においては、1つの入力位相器および1つの出力位相器を、限られた数のIOB105に対して実現することができる。たとえば、12個のIOB105の各組を、場合に応じて1つの入力位相器および/または1つの出力位相器によって制御することができる。位相器135の特定の1つによって制御されるパッドの数を制限することは、クロック信号における負荷を低減し、クロック信号におけるひずみおよび/またはジッタをさらに低減する。
【0050】
比較して従来のI/Oバンクは、重負荷を受ける大域クロック信号を利用するだけでなく、典型的に各ピンおよびその関連付けられるI/O回路が同じクロック信号によってクロック制御される。したがって、各I/Oバンクが約40〜50本のピンを含む場合、40〜50ピンの各々は同じクロック信号によって制御される。この点において、従来のI/Oバンクは、ソース同期インタフェースを実現するために必要であるようなクロック/データ整列の目的のためのクロック信号に対する制御をほとんどあたえない。
【0051】
図2は、この明細書内において開示される別の実施例に従って集積回路のI/Oバンクの一部を例示する第2のブロック図である。特に、
図2は、別の実施例に従ったI/Oバンク100のバイトクロック群200を例示する。注目されるように、バイトクロック群200は、I/Oバンク100の限られた部分を表す。1つ以上の実施例においては、バイトクロック群200は12個のIOB105を含み得、各IOBはパッド205A〜205Lとして例示される12個のパッドの1つに結合される。各IOB105は双方向動作のために構成され得る。たとえば、1つ以上の実施例においては、I/Oバンク100は
図2において示される種類の4つのバイトクロック群を含み得る。示されるように、バイトクロック群200は、バイトクロック群200内における要素によりもっぱら使用するための、専用のクロック生成およびクロック管理リソースを含む。この点において、I/Oバンク100内に含まれる各バイトクロック群は、そこにおいて用いられるクロック信号を、同じI/Oバンク内における互いのバイトクロック群から独立して制御することができる。
【0052】
IOI110は複数の出力並直列/直並列変換器(SERDES)210および複数の入力SERDES215を含み得る。1つ以上の実施例においては、バイトクロック群200は12個の出力SERDES210および12個の入力SERDES215を含み得る。たとえば、各IOB105は1つの出力SERDES210および1つの入力SERDES215に結合され得る。各出力SERDES210は、ICの内部からデータを受信し、データを直列化した後にIOB105および対応するパッド205A〜205Lを介してソース同期装置に送るよう構成され得る。各入力SERDES215は、ソース同期装置からデータを受信し、受信したデータを非直列化した後に、IC内における他の要素またはシステムに、たとえば相互接続ブロック115を介して、FIFO220などにおいて、データをあたえるよう構成され得る。
【0053】
相互接続ブロック115はIOI110とI/O FIFO120との間においてプログラマブルなルーティングを容易にするようプログラマブルな相互接続をあたえる。注目されるように、たとえば、ICがプログラマブルICであるときには、相互接続ブロック115は、さらに、ICのプログラマブルなファブリックからIOI110へのアクセスをあたえる。この点において、信号285は、バイトクロック群200内において受信した1つ以上の信号をICのプログラマブルなファブリックに送るよう、またはソース同期装置への出力のためにプログラマブルなファブリックから1つ以上の信号を受信するよう、プログラマブルなファブリックに結合され得る1つ以上の信号を表すことができる。
【0054】
出力用位相器(phaser out)220および入力用位相器(phaser in)225は、バイトクロック群200に対して位相を調整されたクロック信号を生成するための機構をあたえる。一般に、出力用位相器220は書込みインタフェースクロックを生成するよう構成され得る。ある場合には、出力用位相器220は、さらに、読出しインタフェースクロックを生成するよう用いることができる。入力用位相器225は、読出しインタフェースクロックを生成するよう構成され得る。位相器は、出力用位相器220および入力用位相器225の両方を参照して、多重データレーンまたはチャネルを含むソース同期インタフェースを実現するよう用いることができる。各データレーンまたはチャネルは、一般に、同じクロック信号を利用することができるが、各クロック信号は独自の位相を有することができる。出力用位相器220および入力用位相器225は、各々、出力SERDES210および入力SERDES215、ならびに12個のIOB105のうちの10個にクロック信号をあたえる。
【0055】
一般に、出力用位相器220および入力用位相器225は、周波数ロックされかつ電圧制御された遅延線を利用して、ソース同期データおよび/または制御信号を移相することができる。たとえば、入力用位相器225を参照して、調整されることができる入来クロック(図示せず)は、たとえばDDR2および/またはDDR3の場合には、入来データストローブ信号であり得、またはQDRII、RLDRAMII、ネットワーキング、マルチメディアなどの場合には、フリーランニングクロックであり得る。出力用位相器220は、いずれのデータおよび/または制御信号とともに用いられる、たとえば信号260および/または265のような出力クロックを調整するよう構成され得る。
【0056】
出力用位相器220および入力用位相器225の動作は、この明細書により詳しく記載されるPHYコントローラ130によって調整または制御することができる。出力用位相器220および入力用位相器225は、PLL125から、基準信号230、たとえば周波数基準信号を受信することができる。信号230はSSD周波数にあり得る。受信した基準信号230から、出力用位相器220は、SSD周波数において、変動する位相オフセットを有する1つ以上のクロック信号を生成することができる。たとえば、出力用位相器220は、SSD周波数で複数のクロック信号を生成し、各クロック信号は、異なる、たとえば独自の位相オフセットを有し得る。出力用位相器220は信号240を介して出力FIFO235に結合されるとともに、信号245を介して各出力SERDES210に結合される。信号240および245は、SSD周波数で動作するデータ出力経路の部分を制御するために、出力用位相器220によって、変動する位相オフセットを有するSSD周波数において生成されかつあたえられる1つ以上のクロック信号を、少なくとも一部、表すことができる。たとえば、出力用位相器220は、SSD周波数に対応したレートまたはクロック制御されたレートで出力SERDES210および出力FIFO235の出力ポートを動作させるのに必要なクロック制御信号をあたえることができる。
【0057】
出力用位相器220は、およそSSD周波数での出力クロック信号、出力クロック信号の分周されたもの、および位相が選択的に変更可能な出力クロック信号の位相調整されたものを生成することができる。出力クロック信号、たとえばフルレートクロック信号は、周波数基準信号、たとえば信号230と周波数一致させられ得る。出力クロック信号は、受信した位相基準信号(図示せず)と比較して、固定された位相オフセットを有し得る。位相基準信号は、たとえば、所定の範囲内において維持される非継続的信号であり得る。一例において、位相基準信号はストローブ信号またはDQS信号であり得る。
【0058】
出力用位相器220は、さらに、バイトクロック群200を使用して、DDR3、QDRII、RLDRAMII、ネットワーキング、マルチメディアなどの種類の装置と通信するためのインタフェースを実現する際に利用することができる、フルレートクロック信号の移相されたもの、たとえば90度移相されたものを生成することができる。1つ以上の実施例においては、出力用位相器220は、位相調整を実行するために周波数ロックされかつ電圧制御された遅延線を利用することができる。フルレートクロックとフルレートクロックの移相されたものとの間の位相関係は、位相増分/減分制御信号を用いて指定することができる。各増分制御信号は、所定量の遅延、たとえば出力用位相器220内において遅延線によってあたえることができるようなフルレートクロック信号の周期の1/32のようななんらかの分数が、フルレートクロックの移相されたものに加えられるようにすることができる。各減分制御信号は、所定量の遅延が、フルレートクロックの移相されたものから除去されるようにすることができる。このように、フルレートクロックの移相されたものは、フルレートクロックに関して、所望の位相オフセットに位相調整することができる。
【0059】
注目されるように、分周されたクロック信号はフルレートクロック信号と位相整列することができる。1つ以上の実施例においては、出力用位相器220から出力される分周された信号クロック信号の位相オフセットを選択することができる。分周された信号の位相オフセットは、およそ基準信号の周期の約1/2の粗い増分で指定することができる。
【0060】
出力FIFO235は互いに関して非同期で動作することができる入力ポートおよび出力ポートを有するデュアルポートメモリとして構成され得る。出力FIFO235の入力ポートは、たとえば、IC周波数に対応するレートでデータが受信されるとともに、出力FIFO235にクロック制御される信号250を介して、メモリコントローラ(図示せず)のようなユーザ回路に結合され得る。1つ以上の実施例においては、出力FIFOメモリ235の入力ポートは、たとえば信号250を介して出力FIFO235にデータをあたえることができ、さらに、出力FIFO235の入力ポートの書込み可能化を制御することができるユーザ回路によって制御することができる。
【0061】
出力FIFO235の出力ポートは、信号255を介し、相互接続ブロック115を通して、出力SERDES210にデータを出力することができる。出力FIFO235の出力ポートは、出力用位相器220によって生成されるとともに、信号240によって少なくとも一部が表されるSSD周波数でのクロック信号に従ってクロック制御することができる。出力用位相器220は、さらに、出力FIFO235の出力ポート、たとえば出力ポートの読出し可能化を制御して、出力FIFO235から出力SERDES110に出力されるデータの流れを制御することができる。出力用位相器220は、PHYコントローラ130から信号280を介して受信したコマンドに応答して出力FIFO235から出力されるデータの流れを制御する。出力SERDES210は、出力FIFO235から受信したデータを直列化し、結果として生じる直列化されたデータをIOB105ならびにパッド205A〜205Eおよび205H〜205Lに出力することができる。
【0062】
1つ以上の実施例においては、出力FIFO235は12個のデータ入力および12個のデータ出力を有する第1のモードにおいて動作するよう構成され得る。各データ入力および各データ出力は、4ビット幅であるよう構成され得る。出力FIFO235は、たとえば、8つのエントリに対応するよう、このモードにおいて構成され得る。第2および代替のモードにおいては、出力FIFO235は、10個のデータ入力を有し、その各々は8ビット幅であるよう構成され得る。出力FIFO235は、10個のデータ出力を有し、各データ出力は4ビット幅であるよう構成され得る。第2のモードにおいては、出力FIFO235は8つのエントリに対応することができる。第2のモードにおいては、2:1マルチプレクサを出力データ経路に追加し、入力データをより小さな出力データ幅に直列化するために用いることができる。たとえば、出力FIFO235の出力ポートを制御する出力クロックが、出力FIFO235の入力ポートを駆動する周波数の約2倍である場合には、第2の動作モードを用いることができる。
【0063】
出力用位相器220と同様に、入力用位相器225は1つ以上のクロック信号をSSD周波数で生成することができる。1つ以上の実施例においては、入力用位相器225は、SSD周波数で複数のクロック信号を生成し、各クロック信号は異なる位相を有する。入力用位相器225は信号260を介して入力FIFO240に結合されるとともに、信号265を介して入力SERDES215に結合される。信号260および265は、SSD周波数で動作するデータ入力経路の部分を制御するためにSSD周波数で入力用位相器225によって生成されあたえられる1つ以上のクロック信号を、少なくとも一部、表すことができる。たとえば、入力用位相器225は、SSD周波数に対応するレート、たとえばSSD周波数によってクロック制御されたレートで入力SERDES215および入力FIFO240の入力ポートを動作させるのに必要なクロック制御信号をあたえることができる。
【0064】
たとえば、入力用位相器225は、入来する、たとえば読み込まれたデータを捕捉するために用いられるクロック信号の微調整を実行するよう構成され得る。入力用位相器225は、さらに、ソース同期装置からのストローブの第1のパルスを検出するような機能を実行し、受信されかつ検出されるストローブ信号と位相整列されるフリーランニングクロックを生成することができる。入力用位相器225は、出力用位相器220とは異なり、たとえば、スケルチ制御信号(図示せず)に応答して、位相基準信号のような受信基準信号を同期してスケルチングすることができるスケルチコントローラを含み得る。「スケルチ」または「スケルチング」とは、信号をHレベルまたはLレベルのいずれかに引き込むとともに、ある期間、たとえば信号がスケルチングされることになっている期間の間、その状態を保持することを指し得る。信号がHレベルまたはLレベルに引かれるかどうかは、信号があたえられている特定の回路の構成に従って変動し得る。
【0065】
入力FIFO240は互いに関して非同期で動作することができる入力ポートおよび出力ポートを有するデュアルポートメモリとして構成され得る。入力FIFO240の出力ポートは、たとえば、信号270を介して、メモリコントローラのようなユーザ回路に結合され、データはIC周波数に対応するレートで入力FIFO240から読み出される。1つ以上の実施例においては、入力FIFO240の出力ポートは、たとえば、信号270を介して入力FIFO240からデータを読み出すことができ、さらに、入力FIFO240の出力ポートの読出し可能化を制御することができるユーザ回路によって制御することができる。
【0066】
入力FIFO240の入力ポートは、データを、信号275を介して、入力SERDES215から、相互接続ブロック115を通して受信することができる。入力ポートは、入力用位相器225によって生成され、信号260によって少なくとも一部が表されるSSD周波数でのクロック信号に従ってクロック制御することができる。入力用位相器225は、入力FIFO240の入力ポート、たとえば入力ポートの書込み可能化を制御して、各入力SERDES215から入力FIFO240へのデータの流れを制御することができる。入力用位相器225は、たとえば、PHYコントローラ130の制御下で動作して、信号280を介して受取られたコマンドに応答する。各入力SERDES215は、パッド205A〜205Eおよび205H〜205Lを介してソース同期装置から受信したデータを非直列化することができる。各入力SERDES215は、結果として生じる非直列化されたデータを、入力FIFO240に出力することができる。
【0067】
1つ以上の実施例においては、入力FIFO240は12個のデータ入力および12個のデータ出力を有する第1のモードにおいて動作するよう構成され得る。各データ入力および各データ出力は、4ビット幅であるよう構成され得る。入力FIFO240は、このモードにおいて、たとえば、8つのエントリに対応するように構成され得る。第2および代替のモードにおいては、入力FIFO240は、10個のデータ入力を有し、その各々は8ビット幅であるよう、構成され得る。出力FIFO235は、10個のデータ出力を有し、各データ出力は4ビット幅であるよう構成され得る。第2のモードにおいては、入力FIFO240は8つのエントリに対応することができる。第2のモードにおいては、データは、非多重化されて、より大きな出力幅を形成する。たとえば、入力FIFO240の出力ポートが、入力FIFO240の入力ポートをクロック制御する周波数の約1/2でクロック制御される場合に、第2の動作モードを用いることができる。
【0068】
1つ以上の実施例においては、出力FIFO235および入力FIFO240は、示されるように、バイトクロック群200内において物理的に整列され得る。したがって、4つのバイトクロック群を含む所与のI/Oバンク内では、たとえば4つの入力FIFOおよび4つの出力FIFOに対応する合計8つのFIFOの各々が、I/O FIFOと同じバイトクロック群に属する特定のIOBと物理的に整列されることができる。
【0069】
1つ以上の実施例においては、I/O FIFOとIOIとの間の接続は、データが相互接続ブロックを介して単一のホップまたはワイヤを用いて転送されることを可能にするような態様において構成され得る。単一のホップで構成される接続は、たとえば、IOBとI/O FIFOとの間の信号の固定されたマッピングを用いて実施することができる。同様に、各位相器によってあたえられるクロック信号、ならびに各位相器によってあたえられる読出および/または書込み可能化信号は、典型的にはプログラマブルIC内において用いられる相互接続ファブリックからルーティングされるクロックではなく、専用の、たとえばハード化された接続であり得る。
【0070】
示されるように、出力用位相器220および入力用位相器225の各々は、IOB205Fおよび205Gに結合され得る1つ以上の直接的および専用の信号接続を有することができる。出力用位相器220は、IOB205Fに信号280を介して直接結合され得る。入力用位相器225は、IOB205Gに信号285を介して直接結合され得る。信号280および285は、相互接続ブロック115および/またはIOI110を効果的に回避する1つ以上の信号を表すことができる。たとえば、信号280および285は、相互接続ブロック115またはIOI110の一部でなく、したがって、プログラマブルでない直接的なワイヤを用いて実現することができる。信号280および285は、先に記載されたI/O FIFOとIOIとの間の接続と対比することができ、なぜならば、そのような接続は、単一のホップに限定される一方、依然として相互接続ブロック115の一部であり、相互接続ブロック115を流れるからである。さらに、信号280および285は、IOB105に直接流れて、示されるように、IOI110を回避する。
【0071】
たとえば、信号280は、ICがデータを書込んでいるときに、ICからSSDに出力されるデータをクロック制御するために用いることができるストローブ信号を出力するように出力用位相器220によって用いられ得る。信号285は、ICがデータを読出しているときに、SSDから送られるストローブ信号を受取るように入力用位相器225によって用いられ得る。例示においては、バイトクロック群200は12個のIOB105を含み得るが、IOB105のうちの10個は、データを通信、たとえば送信または受信するために取っておくことができる。IOB105の2つはクロック信号のために取っておくことができ、信号280および/または285に結合され得る。たとえば、パッド205Fおよび205Gは信号280および/または285にそれぞれ結合するために取っておくことができるが、他のパッドおよび/または対応するIOB105は所望のように取っておくことができる。示されるように、パッド205Fおよび205Gは、相対的に直接的で真っすぐな信号経路が出力用位相器220とパッド205Fと入力用位相器225とパッド205Gとの間において存在するように、実質的に整列され得る。
【0072】
1つ以上の実施例においては、出力用位相器220および入力用位相器225は約125MHzから約1066MHzの周波数範囲を有するよう構成され得る。この周波数範囲は、DDR2構成のための約250MbpsからDDR3構成のための約2133Mbpsまでのデータレートを容易にする。DDR3 DIMMインタフェースの場合においては、たとえば、I/OバンクにおけるすべてのI/Oはデータ(DQ)ピンまたはデータストローブ(DQS)ピンとして構成され得る。別の例においては、12個のI/Oおよび関連付けられる位相器、たとえば出力用位相器220および入力用位相器225を含む各バイトクロック群は、独立して用いることができる。
【0073】
DDR3構成の場合においては、双方向データストローブおよびデータを利用し、バイトクロック群200の出力用位相器220および入力用位相器225の両方、たとえば、DDR3のためのバイトクロック群における任意の出力用位相器または入力用位相器が用いられる。比較して、RLDRAMIIの場合においては、一方向のデータピンを利用し、出力用位相器220または入力用位相器225のみが、バイトクロック群200がデータを読出すかまたは書込むためのどちらに用いられるかどうかに依存して用いられ得る。別の例をとって、QDRIl+インタフェースの場合においては、CQ/CQ#と呼ばれる読出データクロックは、名目上は相補的な信号であるが、別々の位相要件を有する。入力用位相器225はCQ信号を生成するよう構成され得、出力用位相器220は二次的な入力用位相器として機能してCQ#信号を処理するよう構成され得る。
【0074】
図3は、この明細書内において開示される別の実施例に従って構成されるI/Oバンクの別の局面を例示する第3のブロック図である。
図3は、バイトクロック群200のためのデータアーキテクチャの例を例示する。例示の目的のために、単一のIOI110および単一のIOB105のみが示される。バイトクロック群200は、出力用位相器220、入力用位相器225、出力FIFO235、入力FIFO240およびPHYコントローラ130を含み得る。IOI110は、出力SERDES210および入力SERDES215を含むよう構成され得る。IOB105は出力バッファ335および入力バッファ340を含み得る。
【0075】
出力用位相器220および入力用位相器225はクロック信号230を受信することができ、それはSSD周波数にあり得る。1つ以上の実施例においては、クロック信号230は、ソース(図示せず)によって局所的に生成することができる。出力用位相器220は、次いで、1つ以上のクロック信号をSSD周波数で生成することができる。1つ以上の実施例においては、出力用位相器220は、SSD周波数で複数のクロック信号を生成し、各クロック信号は異なる位相オフセットを有することができる。出力用位相器220は信号240を介して出力FIFO235に結合され、信号245を介して出力SERDES210に結合される。信号240および245は、メモリ装置の周波数で動作するデータ出力経路の部分を制御するためにSSD周波数において出力用位相器220によって生成されかつあたえられる1つ以上のクロック信号を、少なくとも一部表すことができる。
【0076】
出力SERDES210は、データの直列化を容易にするよう、付加的なクロック信号を要求し得ることが、十分に理解されるべきである。したがって、1つ以上の実施例においては、信号245は、SSD周波数における第1のクロック信号、およびSSD周波数の分数である周波数を有する第2のクロック信号を表すことができ、用いられる分数は、出力SERDES210によって実行されている直列化の度合に依存する。第2のクロック信号は、たとえば、1/2、1/3、1/4、1/6、1/7、1/8などであり得る。
【0077】
出力FIFO235は互いに関して非同期で動作することができる入力ポートおよび出力ポートを有するデュアルポートメモリとして構成され得る。出力FIFO235の入力ポートは、信号250を介して、メモリコントローラまたは他のユーザ回路に結合され、それにわたって、データが受取られ、したがってクロック信号350によってIC周波数でクロック制御される。1つ以上の実施例においては、出力FIFO235の入力ポートをメモリコントローラを介して書込み可能化することができる。出力FIFO235の出力ポートは、間接的に、PHYコントローラ130によって、信号280および370を介して制御されて、メモリコントローラからの受信したPHY制御ワードに応答して、出力FIFO235からデータを読出すことができる。たとえば、PHYコントローラ130は、信号280を介して、出力用位相器220に対して、信号370を介して出力FIFO235の出力ポートを読出し可能化するように指示することができる。示されるように、PHYコントローラ130は、さらに、IC周波数に対応するクロック信号350およびSSD周波数に対応するクロック信号230を受信することができる。受信したPHY制御ワードに属するかまたはそれ(ら)と関連付けられるデータが利用可能なときに限り、データは出力FIFO235から読出すことができる。
【0078】
出力FIFO235の出力ポートは、信号255を介して出力SERDES210にデータを出力することができる。出力ポートは、出力用位相器220によって生成され、信号240によって少なくとも一部が表されるSSD周波数でのクロック信号に従ってクロック制御することができる。出力用位相器220は、出力FIFO235の出力ポート、たとえば出力ポートの読出し可能化を調整して、出力FIFO235から出力SERDES210へのデータの流れを信号370を介して制御することができる。出力SERDES210は、信号255を介して出力FIFO235から受信したデータを直列化し、結果として生じる直列化されたデータを信号375を介して出力バッファ335に出力する。次いで、出力バッファ335は直列データをピン380を介してメモリ装置に出力する。
【0079】
入力用位相器225は、出力用位相器220のように、1つ以上のクロック信号をSSD周波数で生成することができる。1つ以上の実施例においては、入力用位相器225は、SSD周波数で複数のクロック信号を生成し、各クロック信号は異なる位相を有することができる。入力用位相器225は信号260を介して入力FIFO240に結合されるとともに、信号265を介して入力SERDES215に結合される。信号260および265は、メモリ装置の周波数で動作するデータ入力経路の部分を制御するためにSSD周波数で入力用位相器225によって生成されかつあたえられる1つ以上のクロック信号を、少なくとも一部表すことができる。
【0080】
入力SERDES215は、出力SERDES210のように、データの非直列化を容易にするための付加的なクロック信号を要求し得る。したがって、1つ以上の実施例においては、信号265は、SSD周波数における第1のクロック信号、およびSSD周波数の分数である周波数を有する第2のクロック信号を表すことができ、用いられる分数は、入力SERDES215によって実行されている非直列化の度合に依存する。第2のクロック信号は、たとえば、1/2、1/3、1/4、1/6、1/7、1/8などであり得る。
【0081】
入力FIFO240は互いに関して非同期で動作することができる入力ポートおよび出力ポートを有するデュアルポートメモリとして構成され得る。入力FIFO225の出力ポートは、信号270を介してメモリコントローラに結合され、データが送られる。1つ以上の実施例においては、入力FIFO240の出力ポートを、メモリコントローラを介して読出し可能化し、クロック信号350によってクロック制御することができる。入力FIFO240の入力ポートは、PHYコントローラ130によって、たとえば信号280および390を介して間接的に制御されて、メモリコントローラからの受信したPHY制御ワードに応答して、データを入力FIFO240に書出すことができる。たとえば、PHYコントローラ130は、入力用位相器225に対して、信号390を介して入力FIFO240の入力ポートを書込み可能化するように信号280を介して指示することができる。
【0082】
入力SERDES215は、ピン380からの入力バッファ340から受信したデータを非直列化する。入力バッファ340は、信号396を介して入力SERDES215にデータを伝える。入力SERDES215は、結果として生じる非直列化されたデータを、信号275を介して入力FIFO240の入力ポートに出力する。入力FIFO240の入力ポートは、信号275を通して、入力SERDES215から、データを受取ることができる。入力FIFO240の入力ポートは、入力用位相器225によって生成され、かつ信号260によって少なくとも一部が表されるSSD周波数でのクロック信号に従ってクロック制御することができる。入力用位相器225は、入力FIFO240の入力ポート、たとえば入力ポートの書込み可能化を調整して、入力SERDES215から入力FIFO240へのデータの流れを信号390を介して制御することができる。
【0083】
1つ以上の他の実施例においては、
図3のそれに類似するデータアーキテクチャを、I/Oバンク100内において制御経路アーキテクチャのために実現することができる。そのような構成においては、制御経路は、
図3において示されるアーキテクチャを利用することができるが、入力FIFO240、入力用位相器225、入力SERDES215および入力バッファ340のような構成要素を除外することができる。
【0084】
図4は、別の実施例に従ってI/Oバンクの別の局面を例示する第4のブロック図である。
図4は、
図1〜
図3を参照して例示したよりも詳細にPHYコントローラ130の例を例示する。示されるように、PHYコントローラ130は、コマンドFIFOメモリ405、コマンドパーサ410、PHYクロックモジュール430および複数のタイマブロックを含み得る。
【0085】
一般に、PHYコントローラ130は、データインタイマブロック(data in timer block)415およびデータアウトタイマブロック(data out timer block)420を含む2つのデータタイマブロック、コマンドタイマブロック425、補助出力タイマブロック430、435、440および445として示される4つの補助タイマ、ならびにPHYタイマブロック460を含み得る。
図4内において例示される各タイマブロックは、この明細書内において記載される目的のために利用可能な1つ以上の、たとえば複数の個々のタイマを表すことができることが十分に理解されるべきである。
【0086】
コマンドFIFOメモリ405は入力ポートおよび出力ポートを有する非同期FIFOとして構成され得る。コマンドFIFOメモリ405は、IC周波数に対応するメモリコントローラのそれとSSD周波数に対応するメモリ装置との間のクロックドメインクロッシングのための機構をあたえる。コマンドFIFOメモリ405の入力ポートはメモリコントローラに信号450を介して結合され得、クロック信号350によってIC周波数でクロック制御することができる。コマンドFIFOメモリ405の第2のポートはコマンドパーサ410に信号455を介して結合され得、信号465を介してSSD周波数でクロック制御される。PHYコントローラ130の
図4内における互いの回路素子は信号465によってSSD周波数でクロック制御される。
【0087】
PHYクロックモジュール430はクロック信号230をSSD周波数で入力信号として受信し、クロック信号465のような1つ以上のクロック信号を出力として生成することができる。クロック信号465は、およそSSD周波数であり、メモリ装置と同じ近似の速度で動作する回路をクロック制御する。コマンドFIFOメモリ405は、メモリコントローラから信号450を介して送信されるPHY制御ワードを受信し、それは、クロック信号465に従って読出すことができる。例示の目的のために、信号455は、コマンドパーサ410によって制御されるコマンドFIFOメモリ405の出力ポートのための読出し可能化信号に加えて、コマンドFIFOメモリ405からのデータの転送を表すことができる。
【0088】
コマンドパーサ410は、コマンドFIFOメモリ405からPHYコマンドワードを読出し、PHYコマンドワードの実行に応じて、実行されたPHYコマンドワードによって判断された特定のタイマ値を、データインタイマブロック415、データアウトタイマブロック420、コマンドタイマブロック425、補助出力タイマブロック430〜445および/またはPHYタイマブロック460内に書込む。利用可能なタイマ、たとえば利用可能なデータタイマおよび/またはコマンドタイマがある限り、コマンドパーサ410はコマンドFIFOメモリ405から連続的に読出すことができる。データタイマおよび/またはコマンドタイマがすべて使用中のとき、たとえば、タイマが利用可能でないとき、コマンドパーサ410はコマンドFIFOメモリ405からPHYコマンドワードを読出すことを停止し得る。PHYコマンドワードの読出しを中止することによって、コマンドパーサ410はメモリコントローラにバックプレッシャーをあたえ、それによって、コマンドFIFOメモリ405の満杯状態または充填状態を検出するメモリコントローラは、コマンドの流れを絞るようにする。
【0089】
一般に、データインタイマブロック415、データアウトタイマブロック420および/またはコマンドタイマブロック425は、I/Oバンクのバイトクロック群に出入りするデータおよびコマンドの管理の制御を、コマンド発行とデータ利用可能性との間の関係のタイミングを計ることによって行うことができる。たとえば、コマンドタイマ425は、読出イベントを開始するCASストローブを送るイベントを引起すことができる。データインタイマブロック415は、データが入力SERDESの出力で利用可能でありかつユーザへの転送のために利用可能な場合、CASストローブのアサートの後において、クロックサイクル数を判断する。データインタイマブロック415によって生成されるタイマイベントは、データの利用可能性を示す。したがって、データインタイマブロック415および/またはデータアウトタイマブロック420内におけるタイマは、いつクロックを開始または停止するか、およびいつFIFOのうちの1つのポートを可能化するかを示すイベントを生成することができる。このように、データインタイマブロック415、データアウトタイマブロック420およびコマンドタイマブロック425は、データおよびコマンドの流れを制御することができる。補助出力タイマブロック430〜445は、汎用タイミング動作を実行するよう構成される複数のタイマを含み得る。補助出力タイマブロック430〜445は、たとえば、タイマと関連付けられるコマンドが実行されるのと同時にコマンドパーサ410によって起動することができる。
【0090】
1つ以上の実施例においては、タイマブロック415〜445からの出力は多重化することができる。たとえば
図3を参照して例示されるようなデータ経路に対応する回路素子は、データタイマブロック415、420および/または補助出力タイマブロック430〜445の1つにマルチプレクサを介して結合され得る。
図3を参照して記載されるPHYコントローラ130からの制御信号は、データインタイマブロック415および/またはデータアウトタイマブロック420から場合に応じてあたえられるかまたは出力されることができる。たとえば、コマンド経路に対応する回路素子は、コマンドタイマブロック425に結合され得る。コマンドに関する制御信号は、コマンドタイマブロック425からあたえられるかまたは出力されることができる。
【0091】
たとえば、
図3を
図4と組合せて再び参照すると、データインタイマブロック415は入力SERDESからのデータの受信タイミングを計ることができる。データインタイマブロック415は、さらに、入力用位相器へのインタフェースを管理することができる。データインタイマブロック415内におけるアクティブなタイマがターミナルカウントに到達すると、データインタイマブロック415はデータ経路を制御する入力用位相器に「In_Burst_Pending」信号を送る。入力用位相器は、入力SERDESからデータバーストを受信するための、書込可能化信号および必要なクロック信号を生成することができる。入力用位相器は、さらに、それに応答して、入力FIFOにデータバーストを書込むことができる。「In_Burst_Pending」信号とともに、データインタイマブロック415は、さらに、読出されている現在のDDRランクを入力用位相器に送ることができる。
【0092】
データアウトタイマブロック420は、いつデータが出力FIFOから読出され出力SERDESに転送されるかのタイミングを計ることができる。データアウトタイマブロック420は、出力FIFOから読み出されるデータの各DDRバーストに対して、メモリ装置の周波数において1つのクロックサイクルの間に「Out_Burst_Pending」信号をHレベルに駆動することができる。出力FIFOから読出されるデータの量は「BURST_MODE」属性によって示すことができる。たとえば、「BURST_MODE」属性は8つのトランザクションのバースト長に対してHレベルにセットされ得、4つのトランザクションのバースト長に対してLレベルにセットされ得る。
【0093】
コマンドタイマブロック425は、アドレス情報および/またはコマンド情報をメモリにあたえるよう構成される出力FIFOからそのようなアドレス情報および/またはコマンド情報がいつ読出されるかのタイミングを計るために用いられ得る。コマンドタイマブロック425は、さらに、いつアドレス情報および/またはコマンド情報が出力SERDESに転送されるかのタイミングを計ることができる。コマンドタイマブロック425からの位相器またはトライステート信号の制御の必要はない。各コマンドタイマブロック425イベントに対して1ニブルだけが出力FIFOから読出される。
【0094】
PHYタイマブロック460は、より高レベルの機能およびタイミング関係を制御するよう構成される1つ以上のタイマを含み得る回路ブロックである。PHYタイマブロック460は、
図4において示される他のタイミングブロックと異なり、PHYコントローラ130の外部で分配されるアウトバウンド信号を生成しない。むしろ、PHYタイマブロック460はコマンドパーサ410と通信してPHYコントローラ130内における異なる機能を制御する。コマンドパーサ410との通信において、PHYタイマブロック460は、たとえば、コマンドパーサ410がタイマブロック415〜445のうちの他のタイマブロックに新しいタイマイベントを送るかどうかを制御する。
【0095】
この点において、PHYタイマブロック460は、イベント、たとえばタイマイベントを、当該タイマイベントを開始するコマンドの発生より時間において後で生じさせることができる。したがって、コマンドパーサ410から始まるタイマイベントは、PHYタイマブロック460の制御下で遅延させることができる。タイマイベントは、PHYタイマブロック460の制御下でイベント持続時間と呼ばれるプログラマブルな持続時間の間アクティブなままであることができる。補助出力タイマブロック430〜445は、データ転送またはコマンドと全く同じときには生じないメモリ装置への信号を生成することができる。信号は互い違いに配列することができる。補助出力タイマブロック430〜445は、さらに、インタフェース内において、「ダイ上終端(on-die termination)」または「ODT」信号を実現するために用いることができる。たとえば、PHYタイマブロック460内におけるタイマは、メモリ装置内における同じ列または一般的な位置に向けられるもののような連続的な読出しコマンドおよび/または書込みコマンドをシーケンス化するために用いることができる。別の例においては、PHYタイマブロック460内におけるタイマは、さらに、メモリ装置に発行されるコマンド間の間隔および指定された期間にわたって発行されるコマンドの数を制御するよう用いることができる。
【0096】
PHYタイマブロック460を通して達成することができる機能性のさらなる例示では、PHYタイマブロック460内における1つ以上のタイマは、行/バンクタイマを実現するために用いることができる。行/バンクタイマは、メモリインタフェースが所与のメモリ装置の異なるバンクまたはページとどのように通信するかを支配する規則を執行する。たとえば、行/バンクタイマは、異なるバンクへのアクセスが互いに関して時間においてどれくらい接近して生じ得るかを制御することができる。さらなる別の例においては、PHYタイマブロック460内におけるタイマは、読出し/書込みまたは書込み/読出しターンアラウンドを制御することができる。読出し/書込みターンアラウンドタイマは、どれだけの時間が読出しコマンドに続く書込みコマンドを分離しなければならないか制御する。同様に、書込み/読出しターンアラウンドタイマは、どれだけの時間が書込みコマンドに続く読出しコマンドを分離しなければならないか制御することができる。
【0097】
図5は、この明細書内において開示される別の実施例に従うI/Oバンク500を例示する第5のブロック図である。I/Oバンク500は、4つのバイトクロック群502、504、506および508を含む例示的なI/Oバンクアーキテクチャを例示する。例示されるように、バイトクロック群502〜508の各々は12個のIOB510および12個のIOI512を含む。ストローブ信号の授受において使用するために取っておくことができるIOB510は影付で例示され、専用IOB510が配置されるバイトクロック群の特定の位相器への直接的な接続をさらに含み得る。
【0098】
バイトクロック群502は入力FIFO514および出力FIFO516を含み得る。例示のため、入力用位相器および出力用位相器は、まとめて単一の位相器ブロックによって表される。したがって、バイトクロック群502は、入力FIFO514、出力FIFO516、バイトクロック群502内におけるIOI512およびバイトクロック群502内におけるIOB510にクロック信号をあたえることに専用化された位相器518を含み得る。バイトクロック群504は入力FIFO520および出力FIFO522を含み得る。したがって、バイトクロック群504は、入力FIFO520、出力FIFO522、バイトクロック群504内におけるIOI512およびバイトクロック群504内におけるIOB510にクロック信号をあたえることに専用化された位相器524を含み得る。PLL526は、位相器518および524の各々に基準信号をあたえることができる。バイトクロック群506は入力FIFO528および出力FIFO530を含み得る。バイトクロック群506は、入力FIFO528、出力FIFO530、バイトクロック群506内におけるIOI512およびバイトクロック群506内におけるIOB510にクロック信号をあたえることに専用化された位相器532を含み得る。バイトクロック群508は入力FIFO534および出力FIFO536を含み得る。したがって、バイトクロック群508は、入力FIFO534、出力FIFO536、バイトクロック群508内におけるIOI512およびバイトクロック群508内におけるIOB510にクロック信号をあたえることに専用化された位相器538を含み得る。PLL540は、位相器532および538の各々に基準信号をあたえることができる。
【0099】
位相器518、524、532および538の各々はPHYコントローラ542によって制御することができる。
図5は、I/O回路、たとえばIOB510およびIOI512がI/Oバンク500内におけるさまざまなクロックリソースに隣接する、例示的なアーキテクチャを例示する。I/Oバンク500は、大域クロック信号のような、典型的にはI/Oバンク内において利用可能な付加的なクロックリソース(図示せず)を含み得ることが、十分に理解されるべきである。しかしながら、
図5において示されるアーキテクチャは、1つ以上のソース同期インタフェースを形成するという目的のために付加的なクロックリソースをI/Oバンク内において配置することができることを例証する。バイトクロック群502〜508の各々は、専用のクロックリソースで4つの可能なソース同期インタフェースの1つを形成するよう、独立して構成され得る。
【0100】
ある実施例においては、メモリインタフェースシステムの制御層と物理インタフェース層との間に非同期境界を組込んだIC内における使用のためのスケーラブルなメモリインタフェースシステムにI/Oバンク100を組込むことができる。メモリインタフェースシステムは、別個の独立したクロックドメイン内において動作することができるメモリコントローラおよび物理インタフェースブロックを含み得る。たとえば、メモリコントローラは1つのクロックドメイン内において動作するよう構成され得、一方、物理インタフェースブロックは、一般に、異なるクロックドメイン内において動作する。物理インタフェースブロックのクロックドメインは、物理インタフェースブロックがメモリ装置に結合されるのと同じかまたはその付近の周波数で動作することができる。メモリインタフェースシステム内に非同期クロック境界を置くことによって、制御層の動作周波数は、物理層およびメモリ装置の動作周波数から独立して維持することができる。したがって、制御層の動作周波数は、必要に応じて、およびメモリインタフェースシステムの制御層との通信において他のシステム要素と一致するようにスケーリングすることができる。
【0101】
図6は、この明細書内において開示される別の実施例に従ってIC600内において配置されるメモリインタフェースシステム(システム)605を例示する第6のブロック図である。システム605は、IC600内に実現されて、メモリ装置630のようなSSDとの通信を容易にする。示されるように、システム605は、アービタ610、メモリコントローラ615、およびI/Oバンク100のようなI/Oバンクを含み得る。IC600は、先に記載されるようなプログラマブルICまたは非プログラマブルICとして実現することができる。ここに開示される1つ以上の実施例は、プログラマブルIC内における実現または使用に限定されるようには意図されない。むしろ、IC600はさまざまな異なるタイプのICの任意のものとして実現することができる。たとえば、IC600は、内蔵メモリコントローラ、特定用途向けIC、混合信号ICまたは他の種類の非プログラマブルICを有するプロセッサの形態で実現することができる。
【0102】
メモリ装置630は、さまざまなDDR SDRAM装置のうちの任意のものとして実現することができる。たとえば、メモリ装置630は、DDRタイプのメモリ装置、DDR2タイプの装置、DDR3タイプの装置、標準メモリインタフェースを有する低パワーDDR(LPDDRまたはモバイルDDR)タイプの装置の形態で実現することができる。アービタ610はIC600内において実施されるユーザ回路設計625に結合され得る。アービタ610は1つ以上のチャネル635を介してユーザ回路設計625に結合され得る。アービタ610は、チャネル635にわたってなされるメモリ装置630へのアクセスに対するユーザ要求に対して監視することができる。たとえば、アービタ610は、メモリ装置630へのアクセスに対する1つ以上のユーザ要求の検出に応答して、チャネル優先順位を決定することができる。ユーザ要求優先順位の決定に応答して、アービタ610は、受信したユーザ要求を1つ以上のDDRアクセス要求に細分し、DDR要求を順序づけ、DDR要求をメモリコントローラ615に信号640を介して提出することができる。
【0103】
メモリコントローラ615は、メモリ装置630に出入りするデータの流れを管理することができる。メモリコントローラ615は、メモリ装置630においてデータを書込みおよび読出すためのコマンドを生成することができる。メモリコントローラ615は、コマンドがI/Oバンク100によって実行される順序を決定するような機能をさらに実行することができる。たとえば、メモリコントローラ615は、ユーザ指定チャンネル優先順位に従ってアービタ610から受信したDDR要求を再順序付けすることができ、1つのチャネルにおいて受信した要求は他のチャネルからの先に存在する要求の存在にもかかわらず別の要求を越えて優先順位をあたえられる。
【0104】
この明細書内では、同じ参照符号は、端子、信号線、ワイヤおよびそれらの対応する信号を指すよう用いられる。この点において、用語「信号」、「ワイヤ」、「接続」、「端子」および「ピン」は、この明細書内において、時として、交換可能に用いられてもよい。用語「信号」、「ワイヤ」などは、1つ以上の信号、たとえば単一配線を介する単一ビットの伝達または複数の平行なワイヤを介する複数の並列のビットの伝達を表すことができることも、十分に理解されるべきである。さらに、各ワイヤまたは信号は、場合に応じて信号またはワイヤで接続される2つ以上の構成要素間の双方向通信を表してもよい。
【0105】
I/Oバンク100は、信号645を介してメモリコントローラ615に結合されるとともに、信号650を介してメモリ装置630に結合される。一般に、I/Oバンク100は、メモリコントローラ615およびアービタ610を含み得るクロックドメイン1と、メモリ装置630に結合するIC600の物理的な入出力(I/O)回路、たとえばI/Oバンク100を含み得るクロックドメイン2との間の非同期境界を実現する。したがって、I/Oバンク100はメモリ装置630によってサポートされる十分な動作周波数でメモリ装置630と通信し、異なる独立した周波数でメモリコントローラ615と通信することができる。たとえば、メモリコントローラ615は、I/Oバンク100およびしたがってメモリ装置630の周波数に非同期である周波数で動作することができる。
【0106】
1つ以上の実施例によれば、I/Oバンク100は、典型的には従来のメモリコントローラによって実現されるさまざまなリアルタイム処理機能を実現する。I/Oバンク100内にリアルタイム処理機能を含むことによって、メモリコントローラ615は、I/Oバンク100またはメモリ装置630とは異なる動作周波数で動作することができる。たとえば、I/Oバンク100は、メモリコントローラ615によって通常実行されるさまざまなクロック信号生成、信号整列、およびトランザクション管理機能を実行することができる。I/Oバンク100内におけるそのような機能の再配置によって、クロック線上のひずみに対するより大きな制御を達成することができる。さらに、メモリコントローラ615はより高いレベルの抽象化で機能することができる。たとえば、メモリコントローラ615は、この明細書内においてより詳しく記載されるリアルタイムイベントの管理に対する配慮なしでデータフロー動作を実行することができる。
【0107】
注目されるように、IC600はプログラマブルICとして実現することができる。システム605がプログラマブルIC内において実現される1つ以上の実施例においては、システム605は、ハード化された回路と「ソフト」回路との組合せを用いて実現することができる。いくつかの場合では、プログラマブルICのプログラマブルな回路は、現代のメモリ装置より遅い周波数で動作する。この明細書内において記載されるような非同期境界を用いることは、アービタ610およびメモリコントローラ615のような要素がプログラマブルICのプログラマブルな回路を用いて実現されることを可能にする。したがって、アービタ610およびメモリコントローラ615はメモリ装置630より遅いクロックレートで動作することができる「ソフト回路」の形態において実現することができる。I/Oバンク100は、メモリ装置630と通信し、メモリ装置630の運用周波数で、たとえば、アービタ610および/またはメモリコントローラ615より高速に機能する1つ以上のハードな回路の形態において実現することができる。
【0108】
動作中、アービタ610は、チャネル635の1つ以上を介してユーザ回路設計625から受信したユーザ要求に対して監視を行なう。アービタ610は、メモリコントローラ615によって処理するためのユーザ要求を適正に選択しかつ順序づけるための、選択されたアービトレーションスキームを実現することができる。ユーザ回路設計625の1つ以上の部分およびアービタ610は、クロックドメイン1を規定しユーザ回路設計625の1つ以上の部分に対応する動作周波数で動作し、したがって通信することができる。クロックドメイン1、およびしたがってクロックドメイン1を規定する動作周波数は、IC動作周波数と呼ぶことができる。
【0109】
メモリコントローラ615は、メモリ装置630に関して効率的な読出し/書込みアクセスのために、アービタ610から受信したユーザ要求を優先順位付けし再順序付けすることができる。メモリコントローラ615はアービタ610によって最初に決定された任意の順序から独立してユーザ要求を再順序付けすることができる。メモリコントローラ615は、アービタ610のように、IC周波数で動作することができる。メモリコントローラ615は、受信したユーザ要求を処理し、メモリ装置630における読出しおよび/または書込みのサポートにおいて任意のデータを交換することとともに、信号645を介してI/Oバンク100に1つ以上のPHY制御ワードを発行することができる。
【0110】
I/Oバンク100はメモリ装置630へのアクセスの制御のためにメモリコントローラ615からPHY制御ワードを受信することができる。I/Oバンク100は、メモリ装置630へのデータおよびコマンドの送信、メモリコントローラ615からのPHY制御ワードの受信、およびメモリ装置630から読出されるデータの受信をサポートする、記載されるような1つ以上のFIFOメモリを含み得る。一般に、FIFOメモリは、クロックドメイン1とクロックドメイン2との間で交差することを容易にする。一旦、データ、コマンドおよびPHY制御ワードが、クロック制御により、I/Oバンク100内に位置するFIFOメモリ内に入れられると、I/Oバンク100の残りはクロックドメイン2を規定する異なる動作周波数で動作することができる。メモリ装置630およびI/Oバンク100の残りの部分は、SSD周波数と呼ばれるこの異なる動作周波数で動作することができる。したがって、チャネル635ならびに信号640および645は、IC周波数でクロック制御することができる。I/Oバンク100およびメモリ装置630を結合する信号650は、SSD周波数でクロック制御することができる。
【0111】
論じられるように、位相器ブロック、たとえば位相器135は、ICのようなシステムにデータをクロック制御で入力するためにストローブ信号の管理に関する機能を実行することができる。この点において、基準信号を、データを送るSSDから受信したストローブ信号と同期させることができる。ストローブ信号上のパルスがデータと終端すると、基準信号はストローブ信号の代わりに1つ以上のサブシステムに伝搬され得る。ストローブ信号の代わりに基準信号をあたえることによって、システムが受信したデータを宛先サブシステムにクロック制御で入れることを完了することができる。基準信号は、SSDから受信したデータの捕捉および伝搬を完了するために、効果的にストローブ信号を置き換える。
【0112】
基準信号を利用するためには、基準信号はストローブ信号と位相および周波数の両方が整列しなければならない。1つ以上の実施例においては、遅延線を、1つ以上の分周器回路との組合せで用いることができる。高周波数基準信号を用いて、ストローブ信号と位相整列および周波数整列した、より低い周波数基準信号を生成することができる。たとえば、高周波数基準信号は、ストローブ信号およびしたがってより低い周波数基準信号より高い所与の倍数である周波数を有することができる。
【0113】
遅延線は、高周波数基準信号の周期とおよそ等しい最大量の遅延をあたえるように構成され得る。分周器は、各信号が異なる位相を有する、いくつかの異なる分周された信号をあたえるよう構成され得る。各分周された信号間の位相差は、高周波数基準信号の周期とおよそ等しくすることができる。遅延線を介して高周波数基準信号の周期までの遅延を達成することができる一方で、高周波数基準信号の周期を越える遅延は、遅延線によってあたえられる遅延の量を調整することとの組合せで出力する、所望の位相変動を有する、異なる分周された信号を選択することによって達成することができる。遅延線を1つ以上の分周器との組合せで用いることは、同じ周波数範囲にわたって動作するよう必要とされる数およびサイズの遅延線を含む場合よりも、必要とされる領域が少ない。
【0114】
図7は、この明細書内に開示される別の実施例に従ってストローブ信号を管理するためのシステム700を例示する第7のブロック図である。システム700は、メモリのようなSSD(ソース)との通信を容易にするよう、IC、たとえばターゲット内において位相器135のような位相器の形式で実現することができる。たとえば、ソースは、さまざまなSDRAM装置のうちの任意のものを含み得る。しかしながら、メモリは例示の目的でこの明細書内において用いられている一方で、ここに開示される1つ以上の実施例はもっぱらメモリとの使用に限定されることは意図されないことが十分に理解されるべきである。
【0115】
システム700は、遅延モジュール705、位相検出器710、パルスコントローラ715およびマルチプレクサ720を含み得る。メモリコントローラ725も含まれ得る。遅延モジュール705は、基準信号730、たとえば第1の基準信号を受信するとともに、選択された量の遅延を基準信号730に適用して、信号735として示される、基準信号730の遅延されたバージョンを生成および/または出力することができる。信号735はさらに第2の基準信号とも呼ぶことができる。遅延モジュール705によって基準信号730に適用される遅延の量は、制御信号740を介して位相検出器710によって指定および/または決定することができる。
【0116】
位相検出器710は信号735およびストローブ信号745を入力として受信することができる。位相検出器710は、信号735をストローブ信号745と比較し、2つの信号間の位相差を測定することができる。基準信号735のエッジがストローブ信号745の同様のエッジに先立って生じることを位相検出器710が検出すると(たとえば、「同様の」は、両方のエッジが立ち上がるかまたは立ち下がることを指す)、位相検出器710は遅延モジュール705に対して基準信号735に適用される遅延の量を増分するように指示することができる。基準信号735のエッジがストローブ信号745の同様のエッジの後に生じることを位相検出器710が検出すると、位相検出器710は遅延モジュール705に対して基準信号735に適用される遅延の量を減分するように指示することができる。
【0117】
整列または実質的に整列されると、遅延モジュール705は、たとえば、信号735に適用される遅延の量を増分することと減分することとの間を行き来して切換えることができる。したがって、遅延の量が相対的に一定にとどまる場合、たとえば、2つの異なる量の遅延の間を絶えず行き来して循環するとき、位相検出器710は、信号735はストローブ信号745と位相および周波数が整列していると判断することができる。
【0118】
1つ以上の実施例においては、基準信号730はストローブ信号745とおよそ同じ周波数を有することができる。その場合、遅延モジュール705は、たとえば遅延線を用いて、遅延の追加または除去によってタイムシフトを実行することができる。ここにより詳しく記載される1つ以上の他の実施例においては、基準信号730は、ストローブ信号745より高い周波数に設定することができる。たとえば、基準信号730は、ストローブ信号745の周波数の倍数、たとえば2倍、4倍などの周波数を有することができる。
【0119】
基準信号730がストローブ信号745の周波数の倍数である周波数を有するとき、遅延モジュール705は、遅延線および1つ以上の分周器を含むよう構成され得る。遅延線は、制御信号740によって指定されるように、基準信号730に可変の遅延量をあたえるよう制御されることができる。分周器は信号735の周波数をストローブ信号745の周波数まで下げる。基準信号730のより高周波なバージョンを、分周器および遅延線と組合せて用いることにより、システム700は、遅延線のサイズを周波数分割なしで遅延線を単独で用いるときよりも小さく保持しながら、より大きな周波数範囲にわたってストローブ信号との位相整列を達成することができる。
【0120】
パルスコントローラ715は、ストローブ信号745およびメモリコントローラ725に関するいくつかの処理機能を実行するよう構成される回路を含み得る。1つの局面においては、パルスコントローラ715は、信号735またはストローブ信号745をマルチプレクサ720を通して渡し、マルチプレクサ720にそれに応じて制御信号760を介して指示するべきであるかどうかを決定することができる。別の局面においては、パルスコントローラ715は、メモリコントローラ725によってソース(図示せず)へ発行される、読出要求750のような読出要求を検出するよう構成され得る。読出要求750の検出に応答して、パルスコントローラ715は、ソースから返されるデータ量のような読出要求750のさまざまな属性を判断することができる。パルスコントローラ715は、さらに、読出要求750は複数の連続的な(back-to-back)読出要求の一部かどうかを決定することができる。たとえば、パルスコントローラ715は、読出要求750に続く所定の期間内に生じるメモリコントローラ725からの後の読出要求の発行に対する監視を行なうことができる。後の読出要求が所定の期間内に生じる場合、読出要求は連続的であると考えられる。
【0121】
動作中、メモリコントローラ725は、ソース、たとえばメモリに読出要求750を発行することができる。読出要求750は、要求されるデータ量を指定する。パルスコントローラ715は読出要求750を検出するとともに、要求されるデータ量に少なくとも一部基づいて、読出要求750に応答して、ストローブ信号745において期待されるパルスの数を決定することができる。たとえば、ソースがDDRタイプのSRAMである場合を考える。その場合、読出要求750が4ビットのデータを要求するときには、データがストローブ信号745のパルスの各エッジにおいてクロック制御されるので、わずか2つのパルスがストローブ信号745上に期待される。同様に、8ビットのデータが読出要求750によって要求されるときには、パルスコントローラ715は4つのパルスがストローブ信号745上に期待されると判断する。
【0122】
注目されるように、ソース同期装置からの受信データが停止すると、データに伴うストローブ信号745上のパルスも停止する。注目されるように、いくつかの場合には、読出要求は複数の連続的な読出要求の一部であり得る。連続的な読出要求に関して、ストローブ信号745上のパルスは連続的で、連続的な読出要求の最後に応じてソースから送られるデータの最後の部分でしか終了しない。ストローブ信号745上のパルスが停止すると、システム700が配置されるICの付加的な回路へ、受信データをクロック制御するための、付加的なパルスが必要とされ得る。
【0123】
たとえば、システム700がプログラマブルIC内に配置される場合を考える。付加的なパルスは、プログラマブルICのプログラマブルなファブリックのような付加的な回路に任意の受信データを伝搬するために必要とされ得る。ソースからの受信データは、直並列変換器内、およびFIFOタイプのメモリ内に伝搬することができる。FIFOメモリから、データはプログラマブルICのファブリック内に伝搬されることができる。したがって、付加的なパルスが、直並列変換器およびFIFOメモリの両方を介して、受信データをクロック制御するために必要であり、なぜならば、ストローブ信号745上のパルスは、SSDから送られるデータの最終ビットとともに停止するからである。
【0124】
位相検出器710は、信号735とストローブ信号745との間の位相差を測定することができる。注目されるように、信号735およびストローブ信号745はおよそ同じ周波数であり得る。位相検出器710は、上述のように、信号735がストローブ信号745と位相整列されるまで、基準信号730に適用される遅延の量を増分または減分するように、遅延モジュール705に対して指示することができる。
【0125】
データが読出要求750に応じて受信されると、パルスコントローラ715は、ストローブ信号745を信号755として通過させるように、マルチプレクサ720に対して指示することができる。したがって、初めに、ストローブ信号745を、さまざまなサブシステム、たとえば直並列変換器、FIFOメモリなどに伝搬して、ストローブ信号745とともに受信したデータをクロック制御することができる。パルスコントローラ715は、読出要求750に応じて受信したパルスをカウントすることができる。期待された数のパルスが受信されると、たとえば、期待された数のパルスの最後のパルスが検出されると、パルスコントローラ715は、ストローブ信号745の代わりに信号735を信号755として通過させるように、マルチプレクサ720に指示する。したがって、ストローブ信号745は、信号735と効果的に置換される。したがって、パルスがストローブ信号745上で停止している間、ソースから受信したデータを伝搬し続けるために必要とされる付加的なパルスが、信号735からサブシステムにあたえられる。
【0126】
1つ以上の実施例においては、パルスコントローラ715は、信号735からの所定数のパルスが信号755として伝搬することを可能にし、その後ストローブ信号745を再び信号755として通過させるようマルチプレクサ720に指示するように構成され得る。1つ以上の他の実施例においては、パルスコントローラ715は、さらなる、つまり後続の読出要求、たとえば読出要求750の直後に続く読出要求が、メモリコントローラ725から発行されることを検出することに応答して、ストローブ信号745を通過させるようマルチプレクサ720に指示することができる。
【0127】
注目されるように、読出要求が複数の連続的な読出要求の一部であるとき、さらなるパルスは、複数の連続的な読出要求の最後に対応する最後のパルスの後にのみ必要である。したがって、パルスコントローラ715は、読出要求が複数の連続的な読出要求の一部であるかどうか、および、もしそうであれば、その読出要求が複数の連続的な読出要求の最後であるかどうか、を判断することができる。ストローブ信号745の代わりに信号735を通過させる手順は、たとえば、個別の読出要求の最後のパルスであれ、複数の連続的な読出要求の最後の要求の最後のパルスであれ、最後のパルスがパルスコントローラ715によって検出されると、開始することができる。
【0128】
図8は、この明細書内に開示される別の実施例に従って信号を遅延させるためのシステムを例示する第8のブロック図である。特に、
図8は、
図7を参照して記載される遅延モジュール705の例示的な実現例を例示する。
図8は、基準信号730が、ストローブ信号の周波数より高い周波数、たとえばその倍数に設定される、遅延モジュール705の実施例を例示する。たとえば、基準信号730の周波数は、ストローブ信号の周波数の1倍、2倍、3倍、4倍などであり得る。その場合、遅延線は、
図8に示されるような1つ以上の分周器との組合せにおいて用いることができる。分周器はストローブ信号とおよそ同じ周波数において信号735の生成を容易にする。しかしながら、1つ以上の他の実施例においては、基準信号730およびストローブ信号はおよそ同じ周波数を有し得ることが十分に理解されるべきである。基準信号730およびストローブ信号がおよそ同じ周波数を有するときは分周器は必要ではなく、遅延線を用いて、信号735とストローブ信号との間の位相整列を達成するために必要とされる遅延の量の全体を供給することができる。
【0129】
図8を続けて参照して、遅延モジュール705は、遅延線805、カウンタ820、1つ以上の分周器825および830、ならびに出力セレクタ835を含み得る。遅延線805は、基準信号730に可変の遅延量をあたえるよう構成される多タップ遅延線として実現することができる。示されるように、遅延線805は複数の遅延素子810
1〜810
nを含み得る。遅延素子810
1〜810
nの各々は、所定の、および/またはおよそ等価な遅延量をあたえることができる。遅延素子810
1〜810
nの各々の、タップとも呼ばれる出力は、ワイヤを介して遅延セレクタ815に結合され得る。
【0130】
遅延セレクタ815は、特定のタップを、制御信号740によって指定されるように、信号838として通過させる回路を含み得る。このように、遅延線805の出力が採用される特定の遅延素子810を選択することによって、基準信号730に適用される遅延の量は動的に調整することができる。したがって、
図7を参照して記載されるように、位相検出器は、遅延セレクタ815、およびしたがって遅延線805によって基準信号730に適用される遅延の量を制御するために信号740を生成することができる。
【0131】
たとえば、遅延線805は、64のタップ、たとえば64の異なる遅延素子810を含み得る。遅延素子810
1〜810
nの各々は、「n」が遅延素子810の総数である場合に、「n」で除された基準信号730の周期とおよそ等しい遅延の量をあたえるよう構成され得る。制御信号740は、たとえば、増分信号および減分信号を含む2つの異なる制御信号をあたえるよう構成され得る。位相検出器(図示せず)によって決定される増分信号のアサートは、基準信号730の信号経路に遅延素子810を追加する。遅延素子810を追加することは、「遅延を1つのタップ分だけ増大する」とも言われる。位相検出器によって決定される減分信号のアサートは、基準信号730の信号経路から遅延素子810を取除く。遅延素子810を除去することは、「遅延を1つのタップ分だけ減ずる」とも言われる。増分信号および減分信号は、遅延セレクタ815によって通過させられる特定のタップを効果的に選択する。
【0132】
左端の信号、つまり信号832が信号838として遅延セレクタ815を通して通過する場合、単一の遅延素子810のみが基準信号730の信号経路に置かれ、それによって、遅延線805から利用可能な最少量の遅延を適用する。遅延線805から利用可能な最少量の遅延は、およそ、遅延素子810の数、つまり「n」で除された基準信号730の周期である。右端の信号、つまり信号834が信号835として通過する場合、遅延線805から利用可能な最大量の遅延が基準信号730に適用される。遅延線805から利用可能な最大量の遅延は基準信号730のおよそ全周期である。
【0133】
1つ以上の実施例においては、遅延セレクタ815は、順方向および逆方向においてロールオーバー(roll over)するよう構成され得る。たとえば遅延線805内において利用可能な最大量の遅延が適用され、遅延の量が増分されることになることを制御信号740が示す場合、遅延セレクタ815は、信号834を通過させることから、遅延線805から利用可能な最少量の遅延に対応する信号832を通過させることに、ロールオーバーする。遅延線805が既に最大量の遅延をあたえているときに、基準信号730に適用される遅延の量を増大することは、「順方向ロールオーバー」と呼ばれ得る。
【0134】
同様に、遅延線805から利用可能な最少量の遅延が適用され、遅延の量が減分されることになることを制御信号740が示すとき、遅延セレクタ815は、信号832を通過させることから、遅延線805から利用可能な最大量の遅延に対応する信号834を通過させることに、ロールオーバーする。遅延線805が既に最少量の遅延をあたえているときに、基準信号730に適用される遅延の量を低減することは、「逆方向ロールオーバー」と呼ばれ得る。
【0135】
カウンタ820は信号840を介して遅延セレクタ815に結合される。カウンタ820は、遅延素子810が基準信号730の信号経路に追加されると、そこに記憶されたカウントの値を増分することができる。カウンタ820は、遅延素子810が基準信号730の信号経路から取除かれると、そこに記憶されたカウントの値を減分することができる。1つ以上の実施例においては、カウンタ820は、遅延線805内における遅延素子810の数に対応する「n」、または0から「n−1」まで、カウントアップするよう構成され得る。したがって、カウンタ820は順方向および逆方向の両方においてロールオーバーすることができる。最高値、たとえば「n」を越えてカウンタを増分すると順方向ロールオーバーを引起し得、カウンタ820はロールオーバーするかまたはリセットし、カウントアップを継続する。たとえば0にあるときにカウンタ820を減分することは、逆方向ロールオーバーを引起し得、カウンタ820は、逆方向に、最大カウント値にロールオーバーし、カウントダウンを継続する。いずれにせよ、カウンタ820は、順方向または逆方向で、出力セレクタ835にロールオーバーを通知し、信号845もしくは850、または、865、870、875もしくは880のいずれかのうちの異なる1つを、その結果つまり信号735として出力させることができる。
【0136】
分周器825は、信号838、たとえば基準信号730を遅延したバージョンの周波数を、2で除するよう構成され得る。示されるように、分周器825は、受信信号838から、信号845および850を出力として生成することができる。信号845および850の各々は、信号838の周波数の約2分の1の周波数を有することができる。信号845は信号838と位相整列され、一方、信号850は信号845の反転つまり位相を180度ずらしたバージョンであり得る。
【0137】
一般に、出力セレクタ835は複数のモードの1つにおいて動作するよう構成され得る。第1のモードにおいては、出力セレクタ835は信号838を出力するよう構成され得る。第1の動作モードは、周波数分割は必要ではなく、信号735はストローブ信号の周波数と同じ周波数を有する動作モードに対応する。第2のモードにおいては、出力セレクタ835はカウンタ820からの制御信号855に応じて信号845または信号850のいずれかを出力するよう構成され得る。基準信号730がストローブ信号の周波数の約2倍であるとき、第2のモードを用いることができる。第3のモードにおいては、出力セレクタ835は、制御信号855に応答して信号865、870、875、または880を通過させるよう構成され得る。基準信号730がストローブ信号の周波数の約4倍であるとき、第3のモードを用いることができる。
【0138】
出力セレクタ835は、さまざまな技術のうちの任意のものを用いて、第1のモード、第2のモードまたは第3のモードに置くことができる。たとえば、制御信号(図示せず)を出力セレクタ835にあたえて、出力セレクタ835を第1、第2、または第3のモードに置くことができる。別の例においては、システムが配置されるICがプログラマブルICであるとき、プログラマブルICにロードされる設定データによって、出力セレクタ835が置かれるべき特定のモードを指定することができる。
【0139】
注目されるように、遅延線805は基準信号730に全周期の遅延をあたえることができる。基準信号730がストローブ信号の約2倍の周波数を有する場合を見ると、遅延線805は信号845および850のいずれかにわずか1/2周期の遅延のみをあたえることがわかり、なぜならば、信号845および850の各々は、基準信号730の約2分の1の周波数およびしたがって周期の2倍を有するからである。信号735のストローブ信号との位相整列のために必要になり得る遅延の残りの半分の周期を達成するために、たとえば、信号845または850の1つが信号735として出力セレクタ835を通過するとき、カウンタ820は、遅延線がロールオーバーするかどうかに基づいて信号845または信号850を通過させることを出力セレクタ835に指示するよう構成され得る。
【0140】
例示において、遅延セレクタ815が信号834を信号838として通過させる状態で、遅延線805が基準信号730に最大量の遅延を適用している場合を考える。出力セレクタ835は、最初に信号845を信号735として通過させるよう構成され得る。したがって、信号838は、遅延線805から利用可能な最大量、つまり信号845または850のいずれかの周期の2分の1によって、基準信号730が遅延されたバージョンである。信号838は分周され信号845として出力することができ、それは出力セレクタ835を通して信号735として通過させることができる。制御信号740が遅延素子810の追加によって遅延の量を増分するよう遅延セレクタ815に指示すると、遅延線805は順方向にロールオーバーして最少量の遅延をあたえ、たとえば信号832を信号838として通過させる。カウンタ820も順方向にロールオーバーし、出力セレクタ835に順方向ロールオーバーの通知をあたえる。
【0141】
順方向ロールオーバーを示す信号855を介するカウンタ820からの命令に応答して、出力セレクタ835は信号850を信号845の代りに通過させる。信号850は、信号845の反転したものであり、したがって、信号845と180度位相がずれていることを想起されたい。したがって、単に845の代りに信号850を通過させることによって信号735にあたえられる遅延の量は、約180度、たとえば基準信号730の周期の約2分の1である。遅延線805におけるロールオーバー状態は、最大量の遅延をあたえることから、利用可能な最少量の遅延をあたえることに、遅延線を遷移させる。
【0142】
遅延線805における順方向ロールオーバーの結果において適用され、信号850を信号845の代りに通過させる純遅延は、結果として、信号735の遅延における1つのタップ、つまり1つの遅延素子の純増加になる。制御信号740についてのさらなる増分は基準信号730の信号経路に遅延素子810を再び追加することによって実行することができる。このように、遅延線805が、必要とされる遅延のわずか1/2しかあたえないにもかかわらず、(信号845および850を参照して)全周期の遅延までを達成することができる。
【0143】
同様の手順を、たとえば、より少ない遅延が必要なときに、反対方向において実行することができる。たとえば、遅延セレクタ815が信号832を信号838として通過させる状態で、遅延線805が基準信号730に最少量の遅延を適用している場合を考える。出力セレクタ835は、最初に信号850を信号735として通過させるよう構成され得る。したがって、信号838は、遅延線805から利用可能な最少量の遅延、つまり1つの遅延素子810によって、基準信号730が遅延されたバージョンである。信号838は分周されるとともに、信号850として出力することができ、それは出力セレクタ835を通して信号735として通過させることができる。制御信号740が遅延素子810の除去によって遅延の量を減分するよう遅延セレクタ815に指示すると、遅延線805は逆方向にロールオーバーして最大量の遅延をあたえ、たとえば信号834を信号838として通過させる。カウンタ820も逆方向にロールオーバーし、出力セレクタ835に逆方向ロールオーバーの通知をあたえる。
【0144】
逆方向ロールオーバーを示す信号855を介するカウンタ820からの命令に応答して、出力セレクタ835は信号845を信号850の代りに通過させる。信号845は、信号850の反転したバージョンであり、したがって、信号850と180度位相がずれていることを想起されたい。したがって、単に850の代りに信号845を通過させることによって信号735にあたえられる遅延の量は、約180度、たとえば基準信号730の周期の約2分の1である。遅延線805における逆方向ロールオーバー状態は、最少量の遅延をあたえることから、利用可能な最大量の遅延をあたえることに、遅延線を遷移させる。遅延線805における逆方向ロールオーバーの結果において適用され、信号845を信号850の代りに通過させる純遅延は、結果として、信号735の遅延における1つのタップ、つまり1つの遅延素子の純低減になる。制御信号740についてのさらなる低減は基準信号730の信号経路から遅延素子810を再び除去することによって実行することができる。
【0145】
遅延線805の分周器825との組合せは、ストローブ信号の周波数より高い基準周波数が用いられるときに遅延線805を通してのみ利用可能な遅延より大きな遅延が達成可能な1つの態様を例示する。分周器830の追加を通して、さらに大きな柔軟性に到達することができる。
【0146】
分周器830は分周器825から出力信号860を受信することができる。信号860は、基準信号730の周波数の約2分の1の周波数を有する。したがって、分周器830は、各々が基準信号730の周波数の約1/4の周波数を有する信号865〜880を生成する。1つ以上の実施例においては、信号865は、信号860の位相と実質的に等しい位相を有することができる。信号865〜880の各々は、互いに関して約90度の位相変動を有することができる。たとえば、信号870の位相は信号865の位相より約90度進んでいる。信号875の位相は信号870の位相より約90度進んでいる。信号880の位相は信号875の位相より約90度進んでいる。
【0147】
出力セレクタ835は、カウンタ820がいつロールオーバーするか、およびロールオーバーの方向、つまり、順方向か逆方向かによって、信号865〜880の1つを信号735として出力、つまり通過させるよう構成され得る。信号865〜880の各々が基準信号730の周波数の約1/4の周波数を有するので、遅延線805は遅延に関して信号865〜880の最大で1/4の周期をあたえることが十分に理解できる。したがって、カウンタ820を用いて、遅延セレクタ815が4分の1周期境界と交差するかどうか、たとえば、信号832を通過させることから834に移動するか、または834を通過させることから信号832に移動するかを決定することができる。
【0148】
例示においては、信号834を通過させることから信号832への遷移、つまり順方向ロールオーバーは、カウンタ820が、出力セレクタ835に対して、現在通過している信号より90度進んだ位相変動を有する信号を通過させるように指示させる。たとえば、順方向ロールオーバーが生じる場合に、信号865が通過させられるときは、出力セレクタ835は信号865の代わりに信号870を通過させる。同様に、信号832を通過させることから信号834への遷移、つまり逆方向ロールオーバーは、カウンタ820が、出力セレクタ835に対して、現在通過している信号より90度遅れた位相変動を有する信号を通過させるように指示させる。たとえば、逆方向ロールオーバーが生じる場合に信号870が通過させられると、出力セレクタ835は信号870の代わりに信号865を通過させる。遅延線805によって適用される変動する遅延の量と組み合わされた信号865〜880の1つを選択することにより、信号735は、単一の遅延素子810によってあたえられるおよその遅延から、基準信号730の周期の約4倍、つまり信号865のような信号の1つの全周期である遅延の量までにわたって、調整可能な遅延を有することができる。
【0149】
付加的なストローブ信号処理機能はIC内におけるストローブ信号の動的な検出を含み得る。タイミング関係は、制御信号とストローブ信号の第1のパルスとの間において決定することができる。特に、制御信号は、ターゲットからSSDに送ることができる。制御信号に応答して、SSDはストローブ信号を介して基準信号を指定し始めることができる。たとえばストローブ信号上の第1のパルスを検出することができる。
【0150】
制御信号と第1のパルスとの間において測定される時間を用いて、ストローブ信号を後続のトランザクションにおいてスケルチングすることができる。したがって、ストローブ信号は、測定されたタイミング関係を用いて、制御信号によって示される時間からソース同期装置と通信するターゲットシステムによって使用可能である信頼性のある基準信号を指定することにストローブ信号が遷移するおよその時間まで、効果的にゲート制御される。
【0151】
図9は、この明細書内において開示される別の実施例に従ってストローブ信号を処理するためのシステム900を例示する第9のブロック図である。
図9は、メモリ930のようなSSDと通信するIC905を例示する。たとえば、メモリ930は、さまざまなSDRAM装置のうちの任意のものとして実現することができる。メモリがこの明細書内において例示の目的で用いられることが十分に理解されるべきである。この明細書内において開示される1つ以上の実施例は、さまざまな異なるSSDのうちの任意のものに適用することができ、メモリとの使用に限定されない。
【0152】
示されるように、IC905は、物理インタフェース910、たとえばI/Oバンク100、ストローブ検出器915、メモリコントローラ920、およびクロックソース925を含み得る。物理インタフェース910は、IC905とメモリ930との間を通過する信号が伝搬される入出力(I/O)ブロック、ピンなどのような回路を含み得る。
【0153】
ストローブ検出器915は、メモリコントローラ920とメモリ930との間の通信を容易にするように信号の整列および/または検出に関するさまざまな機能を実行することができる。1つ以上の実施例においては、ストローブ検出器915は、読出要求がいつメモリコントローラ920から開始、たとえば送られ、メモリ930に向けられるかを検出することができる。ストローブ検出器915は、読出要求の送信または開始と、トライステート状態から有効な基準信号が指定される状態へのストローブ信号の遷移との間の時間の量を決定することができる。ストローブ信号はデータストローブ信号であり、DQS信号とも呼ばれる。
【0154】
メモリコントローラ920は、メモリ930に対して読出しおよび書込みを行うよう構成される回路を含み得る。たとえば、メモリ930がDRAMとして実現される場合、メモリコントローラ920は、メモリ930と通信して、メモリ930に対して読出しまたは書込みを行うことができる。その場合、メモリコントローラ920は、さらに、メモリ930に電流または電力をあたえることによってメモリ930を「リフレッシュする」ための回路を含み得る。
【0155】
クロックソース925は、物理インタフェース910、ストローブ検出器915およびメモリコントローラ920の各々に分配されるクロック信号を生成するよう構成される回路を含み得る。たとえば、ストローブ検出器915は複数の異なるクロック信号を利用することができ、各々はメモリ930からのストローブ信号のような選択された信号のオーバーサンプリングを達成するよう位相調整される。クロックソース925は、残りの図を参照してこの明細書内においてより詳しく記載されるように、ストローブ信号をオーバーサンプリングするようストローブ検出器915によって必要とされる必要クロック信号を生成することができる。クロックソース925はさらに物理インタフェース910およびメモリコントローラ920を駆動するのに必要なクロック信号を生成することができる。クロックソース925は、1つ以上の受信基準クロック信号から必要とされる信号を生成するか、または必要とされるクロック信号を内部で生成することができる。
【0156】
動作中、メモリコントローラ920は、物理インタフェース910を介してメモリ930に送られる読出要求を開始することができる。1つ以上の実施例においては、読出要求はストローブ検出器915を通って伝搬されることができる。たとえば、メモリコントローラ920からの読出要求の受信に応答して、ストローブ検出器915は、読出要求を物理インタフェース910に転送することができる。1つ以上の他の実施例においては、メモリコントローラ920は、読出要求を物理インタフェース910に直接送信し、読出要求のコピーをストローブ検出器915にあたえることができる。
【0157】
読出要求がメモリコントローラ920によって開始されたかまたは送信されたという決定に応答して、ストローブ検出器915は、メモリ930から受信したストローブ信号上における第1のパルスの発生に対して監視を始めることができる。一般に、使用されていないとき、メモリ930はストローブ信号をトライステートに保つ。たとえば、メモリコントローラ920からの要求に応答するまで、ストローブ信号はハイインピーダンス状態、または「ハイz」状態のままである。読出要求に応答して、メモリ930は、プリアンブルを生成し、それをストローブ信号上に送信することができる。一実施例においては、プリアンブルは、ストローブ信号によってあたえられる基準の周波数における1クロックサイクルまたは約1クロックサイクルの間、ストローブ信号の電圧をLレベルに引くように、規定することができる。プリアンブルの後、ストローブ信号は、メモリ930から受信したデータを読出す際にメモリコントローラ920によって用いられるべき基準信号を形成する一連のパルスの第1のパルスを指定する。
【0158】
ストローブ検出器915は、ストローブ信号のプリアンブルに続く第1のパルスを検出し、したがって、読出要求と第1のパルスの検出との間の時間の量を計算するよう構成され得る。時間の量は、読出要求がメモリ930に送られるときとメモリ930からのストローブ信号がメモリ930からのデータの獲得および処理のために必要とされる基準信号をあたえ始めるときとの間の「往復の」時間である。読出要求が発行される場合、ストローブ信号はトライステートであるため、ストローブ信号は、ストローブ信号が信頼性のある基準信号をあたえることに遷移するまで、IC905のシステムに入ることを妨げられるべきである。したがって、ストローブ信号は、読出要求が送信される時間から、およそ第1のパルスがプリアンブルに続いて受信されるまで、ゲート制御され得る。一般に、ストローブ検出器915は、読出要求の検出に応答して、ストローブ信号をスケルチング、たとえば抑制し、測定された時間の量、たとえば先の読出要求と先の読出要求に続く第1のパルスとの間の時間の量が経過した後、ストローブ信号をゲート制御することを停止することができる。ゲート制御は予期される態様で先の測定値を用いて実行することができる。たとえば、読出要求と読出要求に続く第1のパルスとの間の時間の量は、各読出要求に応答して決定することができる。各読出要求に応答して計算された時間の量は、後続の、または後の読出要求のために、ストローブ信号をスケルチングするのに用いることができる。したがって、ストローブ検出器915によって実行されるスケルチングの継続期間は、温度および/または電圧における変動に起因し得るストローブ信号のタイミングにおける変化を斟酌するよう継続的に更新することができる。
【0159】
1つ以上の実施例においては、ストローブ検出器915は物理インタフェース910内に組込むことができる。たとえば、ストローブ検出器915は、IC905のI/Oバンク内に配置することができる。別の例においては、ストローブ検出器915は、先に記載されたような位相器135のような位相器内において、またはその一部として実現することができる。1つ以上の他の実施例においては、クロックソース925を、さらに、物理インタフェース910とともに配置することができる。たとえば、クロックソース925は、IC905のI/Oバンク内に配置することができる。
【0160】
図10は、別の実施例に従ってストローブ検出器を例示する第2のブロック図である。特に、
図10は、
図1を参照して記載されるストローブ検出器915を例示する。示されるように、ストローブ検出器915は、検出器コントローラ1002、カウンタ1004、複数のサンプリングフリップフロップ(FF)1010〜1024およびスケルチ回路1070を含み得る。
【0161】
検出器コントローラ1002は信号1006を介してカウンタ1004に結合される。信号1006を通して、検出器コントローラ1002は、カウンタ1004を開始し、カウンタ1004を停止し、カウンタ1004内において記憶されたカウンタ値を読出し、および/またはカウンタ1004をリセットすることができる。1つ以上の実施例においては、カウンタ1004は、監視される信号の約8倍の周波数で動作するよう構成され、この場合には信号はストローブ信号である。したがって、カウンタ1004は、そこに記憶されたカウンタ値を、経過するストローブ信号のクロックサイクルの1/8毎に、1だけ増分することができる。ストローブ信号が一定の基準信号をあたえない間、ストローブ信号の周波数またはクロック周期への参照は、たとえば、プリアンブルに続いて有効な基準信号が指定されるときにストローブ信号の周波数および/またはクロック周期を指すことが理解されるべきである。
【0162】
検出器コントローラ1002は、さらに、信号1008を介してスケルチ回路1070に結合される。スケルチ回路1070は所定の時間量に対してストローブ信号をスケルチングするよう構成される。たとえば、スケルチ回路1070は、コントローラ1002によって決定されるカウンタ1004からのカウンタ値によって決定される時間の量の間ストローブ信号をゲート制御することができる。注目されるように、ストローブ信号はDQS信号であり得る。したがって、スケルチ回路1070は、低静的信号または高静的信号であるよう構成される静的な値を、ストローブ信号がゲート制御されている間に、メモリコントローラ920に渡すことができる。
【0163】
サンプリングFF1010〜1024は、クロック信号1030〜1044によってそれぞれクロック制御することができる。クロック信号1030〜1044はクロックソース925によって生成するか、またはあたえることができる。サンプリングFF1010〜1024は、検出器コントローラ1002に、信号1050〜1064をそれぞれ出力することができる。クロック信号1030〜1044はストローブ信号とおよそ同じ周波数を有することができる。クロック信号1030〜1044の各々の周波数が実質的に同じまたは同様であり得る一方で、クロック信号1030〜1044の各々の位相は互い違いまたは異なることができる。
【0164】
例示の目的のために、クロック信号1030の位相を、クロック信号1032〜1044の各々の位相が変化あるいは調整され得るベースライン位相と考える。たとえば、クロック信号1030の位相を「θ」と示すと、クロック信号1032の位相は、Nを所定の値として、「θ+N」であり得る。クロック信号1034の位相は「θ+2N」であり得る。クロック信号1036〜1044の位相は、それぞれ、「θ+3N」、「θ+4N」、「θ+5N」、「θ+6N」および「θ+7N」であり得る。1つ以上の実施例においては、Nは整数値であるよう選択することができる。Nの値は、たとえばストローブ信号をサンプリングするために用いられるサンプリングFFの数で360度を除することによって判断することができる。
図10を参照して、Nの値は「360/8」であると決定することができ、それは45度である。したがって、約45度の位相変動が、クロック信号対1030〜1032、1032〜1034、1034〜1036、1036〜1038、1038〜1040、1042〜1044の各々の間において存在する。
【0165】
したがって、サンプリングFF1012は、サンプリングFF1010の後、ストローブ信号クロックサイクルの約1/8でストローブ信号の値を捕捉する。サンプリングFF1014は、サンプリングFF1012の後、ストローブ信号クロックサイクルの約1/8でストローブ信号の値を捕捉し、以下同様である。検出器コントローラ1002は、サンプリングFF1010〜1024からのそれぞれの信号1050〜1064の各々を監視することによって、ストローブ信号のクロックサイクルの1/8の間隔でストローブ信号の状態を判断し、ストローブ信号の8倍のオーバーサンプリングを効果的に達成する。
【0166】
図10に示されるように、信号1026はメモリコントローラ920から生成され、メモリ930にあたえることができる。信号1026は検出器コントローラ1002に結合され得る。検出器コントローラ1002は、信号1026を監視し、読出要求がいつメモリコントローラ920によってメモリ930に発行されるかを検出することができる。信号1026上に読出要求を検出することに応答して、検出器コントローラ1002はカウンタ1004を開始することができる。論じられるように、データがメモリコントローラ920に送られることになっている場合、メモリ930によって実行されるまで、ストローブ信号は「ハイz状態」に置かれるかまたはトライステートである。ストローブ信号は、たとえばメモリ930がプリアンブルを送信する時間までトライステートであり得る。検出器コントローラ1002は、サンプリングFF1010〜1024を介して、変動する時間においてストローブ信号をサンプリングして、プリアンブル、およびメモリコントローラ920からの読出要求に応じてメモリ930から送信されるプリアンブルに続く第1のパルスを検出することができる。
【0167】
検出器コントローラ1002は、信号1026上の読出要求に応答してカウンタ1004を開始し、カウンタ1004が動作し続ける、たとえば、サンプリングFF1010〜1024をまとめて用いてストローブ信号をサンプリングすることによって、所定のビットパターンが検出されるような時間までカウントし続けることを可能にする。示されるように、ストローブ信号はサンプリングFF1010〜1024の各々に入力としてあたえられる。1つ以上の実施例においては、ストローブ信号のオーバーサンプリングは読出要求の検出に応答して開始することができる。しかしながら、1つ以上の他の実施例においては、ストローブ信号のオーバーサンプリングは、読出要求がメモリコントローラ920から検出されていない場合に、検出器コントローラ1002がストローブ信号のサンプリングされた値を無視することによって、継続的に実行され得る。
【0168】
いずれの場合においても、検出器コントローラ1002は、所定のビットパターンの発生に対して、信号1050〜1064を介してストローブ信号のサンプリングされた値を監視することができる。たとえば、所定のビットパターンは000011、0000011、00000011などであり得る。特定のビットパターンは、達成されるオーバーサンプリングの量およびストローブ信号の周波数に従って変動し得る。複数の検出された0の値に1つ以上の1の値が後続すると、それは、ストローブ信号内におけるプリアンブルに直ちに続く第1のパルスの立上りエッジの検出を示す。検出器コントローラ1002は、信号1050〜1064の各々からの値をビットのシリアルストリームとして評価することができる。たとえば、検出器コントローラ1002は、信号1050、1052、1054、1056、1058、1060、1062および1064によって連続して指定される、サンプリングされたビット値を読出し、次いで、サンプリングされたビット値の連続的なストリームを形成するよう繰り返すことができる。
【0169】
プリアンブルの後、ストローブ信号は発振を開始し、たとえば、基準信号をあたえることができる。1つ以上の実施例においては、ストローブ信号はプリアンブルに続き、約50−50デューティサイクルを有することができる。所定のビットパターンの検出に応答して、検出器コントローラ1002は、信号1006を介してカウンタ1004内におけるカウンタ値を決定することができる。たとえば、カウンタ1004は、ストローブ信号の立上りエッジの検出に応答して、停止される。カウンタ値は、読出され、検出器コントローラ1002においてレジスタ内に記憶され得る。そして、検出器コントローラ1002はカウンタ1004をクリアすることができる。
【0170】
ストローブ信号が読出要求の発行に先立って最初にトライステートであることを想起して、検出器コントローラ1002は、いくつかの場合には、誤判定を検出し得る。特に、検出器コントローラ1002は、ノイズまたはストローブ信号上におけるプリアンブルに続く第1のパルスの発生以外の状態により所定のビットパターンを検出し得る。たとえば、ストローブ信号は最初にハイz状態にあるため、ストローブ信号に対してサンプリングされる値はランダムであり得、結果として、ランダムなパターンが、所定のビットパターンと一致し得るビットのストリーム内において検出され得る。
【0171】
誤判定を回避するために、検出器コントローラ1002は、ストローブ信号をオーバーサンプリングし、所定のビットパターンの最後に検出されたインスタンスまたは発生に対する監視を行い、その後、ストローブ信号は有効な基準信号として発振を開始した旨を決定する。一般に、一旦、ストローブ信号が、プリアンブルに続く有効な基準信号を指定し始めると、デューティサイクルは固定され、たとえば、50−50であり得る。検出器コントローラ1002は、50−50のデューティサイクルでストローブ信号のオーバーサンプリングから生成されたパターンを、プリアンブルに続く第1のパルスを示す所定のビットパターンから区別することができる。たとえば、50−50デューティサイクルは、所定のビットパターンの後に続いておよそ4つの1が生じ、その後におよそ4つの0が続き、50−50のデューティサイクル基準信号に対応するおよそ4つの1の後におよそ4つの0が続く繰り返すパターンを伴うことを認識することによって、検出器コントローラ1002により検出することができる。
【0172】
注目されるように検出器コントローラ1002によって判断されたカウンタ値は、後の読出トランザクションにおいて用いるために記憶することができる。特定的には、カウンタ値は、スケルチ回路1070内において記憶するか、またはそうでなければ、それにあたえることができる。次の読出要求に応答して、検出器コントローラ1002は、あたえられたカウンタ値、たとえば先の読出要求に応答して決定されるカウンタ値によって指定される時間の量の間ストローブ信号をスケルチングするようスケルチ回路1070に指示することができる。したがって、ストローブ信号がスケルチングまたはゲート制御される時間の量は、各読出要求に応答して更新することができる。カウンタ値によって指定される更新される時間の量は、スケルチ回路によって、将来、つまり次の読出要求に応答して用いることができる。
【0173】
図11は、この明細書内において開示される別の実施例に従って検出および/または測定することができるストローブ信号の異なる状態を例示する信号
図1100である。示されるように、
図11は、読出要求1105がメモリコントローラから送信される場合は、ストローブ信号が最初はトライステートであることを示す。ストローブ検出器はストローブ信号のカウンタおよびサンプリングを開始する。読出要求1105の受信に応答して、メモリは、ストローブ信号をローに引き込み、プリアンブル開始1110によって例示されるようなプリアンブル1115を指定する。第1のパルスの立上りエッジ1120はプリアンブル1115の終わりを示す。ストローブ検出器は、所定のビットパターン1125の最後のインスタンスまたは発生を観察した後、ストローブ信号がプリアンブル1115から約50−50のデューティサイクルに遷移するのを観察することによって、第1のパルスの立上りエッジ1120を検出する。ストローブ検出器は、プリアンブル1115に続く第1のパルスの立上りエッジ1120を検出することに応答して、カウンタ値を読出すかそうでなければ決定して、時間の量1130を決定する。
【0174】
読出し動作の後、ストローブ信号は再びトライステートであり、後の読出要求1135がメモリコントローラから送信される場合には、トライステートのままである。ストローブ検出器は再びカウンタを開始することができ、それはまずリセットされて、ストローブ信号をサンプリングすることができる。読出要求1135の受信に応答して、メモリは、ストローブ信号をローに引き込み、プリアンブル開始1140によって例示されるようなプリアンブル1145を指定することができる。第1のパルスの立上りエッジ1150はプリアンブル1145の終わりを示す。ストローブ検出器は、所定のビットパターン1155の最後のインスタンスまたは発生を観察した後、ストローブ信号がプリアンブル1145から約50−50のデューティサイクルに遷移するのを観察することによって、第1のパルスの立上りエッジ1150を検出する。ストローブ検出器は、プリアンブル1145に続く第1のパルスの立上りエッジ1150を検出することに応答して、カウンタ値を読出すかそうでなければ決定することにより、さらなる読出要求(図示せず)に応答して、ストローブ信号のゲート制御またはスケルチングにおける使用のための時間の量1160を決定することができる。
【0175】
注目されるように、読出要求1105から決定されるような時間の量1130が、ストローブ信号を読出要求1135に応答してゲート制御するために用いられる。時間の量1130は、ストローブ信号が読出要求1135に応答してゲート制御されるべきである実際の時間の近似、つまり時間の量1160である。各読出要求に応答してカウンタ値を継続的に更新することによって、信号タイミングにおける変動、たとえば、システムにおける電圧および温度の影響によるストローブ信号におけるドリフトを、低減および/または最小限にすることができる。
【0176】
図12は、この明細書内に開示される別の実施例に従ってストローブ信号をオーバーサンプリングすることによって判断されるビットのストリームの例である。
図12は、この明細書の
図9〜
図11を参照して記載されるようなストローブ検出器によって検出することができる、異なるアーティファクトおよび状態遷移の例を例示する。セグメント1は、誤判定の例を例示し、所定のビットパターンは、プリアンブルに続く第1のパルスの立上りエッジの結果においてではなく、ノイズ、ストローブ信号をトライステートにすること、またはストローブ信号に現れる他のなんらかのアーティファクトの結果において検出される。セグメント2も、所定のビットパターンに対応し、ストローブ信号上においてプリアンブルに続く第1のパルスの立上りエッジの発生を示す。セグメント2は、セグメント3による誤判定と区別することができ、なぜならば、セグメント3は、約50−50のデューティサイクルを識別するビットパターンに対応し、ストローブ信号が有効な基準信号を指定することに遷移したことを示すからである。したがって、ストローブ検出器は、セグメント2が基準信号を示すビットパターンが直後に続き、セグメント1と区別されるように誤判定ではない、と判断する。
【0177】
図は、さまざまな実施例に従ってシステムおよび方法の可能な実現例のアーキテクチャ、機能性および動作を例示する。ある代替的な実現例においては、ブロックに記される機能は図に記される順序外で生じるかもしれないことが注記されるべきである。たとえば、連続して示される2つのブロックは実際は実質的に同時に実行されてもよく、または、ブロックは、ときには、伴われる機能性に依存して、逆の順序で実行されてもよい。
【0178】
実施例はハードウェアまたはハードウェアとソフトウェアとの組合せで実現することができる。実施例は、1つのシステムにおいて集中化された態様において、または異なる要素がいくつかの相互接続されたシステムにわたって広げられる分散された態様において、実現することができる。ここに記載される方法の実行のために適合されるどのような種類のデータ処理システムまたは他の装置も好適である。
【0179】
ここで用いられる「或る(a/an)」という語は、1つまたは1つより多いものとして規定される。ここで用いられる「複数」という語は、2または2を超えるとして規定される。ここで用いられる「別の(another)」という語は、少なくとも第2のものまたはそれよりより多くのものとして規定される。ここで用いられる「含む」および/または「有する」という語は、含むこととして、つまり開いた文言として規定される。ここで用いられる「結合される(coupled)」という語は、特段の記載がなければ、いかなる介在要素もなしに直接接続されるか、または1つ以上の介在要素を伴って間接的に接続されるものとして規定される。2つの要素は、さらに、機械的にまたは電気的に結合され、あるいは通信チャネル、経路、ネットワークまたはシステムを介して、通信でリンクされる。
【0180】
ここに開示される実施例は、それの精神または本質的な属性から逸脱せずに、他の形式で実施することができる。したがって、前述の明細書ではなく、特許請求の範囲が、実施例の範囲を示すとして参照されるべきである。