(57)【特許請求の範囲】
【請求項１】
回路を備える装置であって、前記回路は、
第１の速度で動作する第１のクロック信号に応答して入力データをパラレルに受信するデータ入力受信部と、
前記第１の速度に同期し、前記第１の速度とは異なる第２の速度で動作する第２のクロック信号に応答して前記回路から出力データをシリアルに送信するデータ出力送信部と、
前記第２のクロック信号に応答してカウントし、カウント値を出力するカウンタを含むロード信号生成器とを有し、前記ロード信号生成器は前記第２のクロック信号の多数のサイクルの発生に応答してロード信号を生成するように構成され、前記ロード信号は前記データ出力送信部に前記データ入力受信部からのデータを受信させ、さらに
誤り検出部を有し、前記誤り検出部は、
比較値を記憶する記憶素子と、
前記記憶素子および前記カウンタに結合される比較器とを含み、前記比較器は前記カウント値のビットを前記比較値と比較するように構成され、さらに前記誤り検出部は、
前記比較器に結合されかつ前記第１のクロック信号の各々のサイクルで前記比較器の出力を捕捉するように構成される捕捉部を含み、前記誤り検出部は、前記比較器の捕捉された前記出力が前記カウント値と比較値とが異なることを示すことに応答して、誤り検出信号を生成するように構成され、さらに前記誤り検出部は、
前記誤り検出信号を受信するとともに、前記ロード信号生成器に結合される制御回路を含み、前記制御回路は、前記第１のクロック信号の少なくとも最後の３サイクルの間、前記誤り検出信号に応答して、前記データ入力受信部から前記データ出力送信部への並列データワードの再送信を制御するように構成される、装置。
【請求項２】
前記比較値は複数のビットを有し、前記カウント値は複数のビットを有し、
前記比較器は、前記比較器の前記出力に結合される出力を有し、かつ複数の入力を有するＮＡＮＤゲートを含むとともに、複数の排他的ＮＯＲゲートを含み、前記複数の排他的ＮＯＲゲートの各々は、前記記憶素子において前記比較値のそれぞれのビットを受信する入力と、前記カウント値のそれぞれのビットを受信する別の入力と、前記ＮＡＮＤゲートのそれぞれの入力に結合される出力とを有する、請求項１に記載の装置。
【請求項３】
前記データ出力送信部は、前記データ入力受信部に結合される複数の入力と、前記ロード信号に応答する制御入力と、前記第２のクロック信号に応答するクロック入力と、出力とを有するシフトレジスタを含み、前記シフトレジスタの前記複数の入力は、前記制御入力における前記ロード信号の発生に応答して前記データ入力受信部からのデータのそれぞれのビットをパラレルに受信し、前記シフトレジスタは、前記制御入力における前記ロード信号の発生がない場合に前記第２のクロック信号に応答してその出力でシリアルにデータを出力する、請求項１または２に記載の装置。
【請求項４】
前記データ入力受信部は前記第１の速度で動作する前記第１のクロック信号に応答し、前記データ出力送信部は前記第２の速度で動作する前記第２のクロック信号に応答する、請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記データ入力受信部は前記入力データをパラレルに受信し、
前記ロード信号生成器は、前記データ入力受信部から前記データ出力送信部にデータをパラレルに転送し、
前記データ出力送信部は前記出力データをシリアルに送信し、
前記第２の速度は前記第１の速度よりも大きい、請求項１から４のいずれか１項に記載の装置。
【請求項６】
データ入力受信部およびデータ出力送信部を有する回路を動作させる方法であって、
第１の速度で動作する第１のクロック信号に応答して前記データ入力受信部でパラレルにデータを受信するステップと、
第２のクロック信号のサイクルをカウントし、カウント値を生成するステップと、
前記第２のクロック信号の多数のサイクルの発生に応答してロード信号を生成するステップと、
前記ロード信号に応答して前記データ入力受信部から前記データ出力送信部へデータを転送するステップと、
第２の速度で動作する前記第２のクロック信号に応答して前記データ出力送信部からシリアルにデータを出力するステップとを備え、前記第２の速度は前記第１の速度に同期し、かつ前記第１の速度とは異なっており、さらに
比較値を記憶するステップと、
前記記憶された比較値と前記カウント値のビットとを比較するステップと、
前記第１のクロック信号の各々のサイクルで比較器の出力を捕捉するステップと、
前記比較器の捕捉された前記出力が前記カウント値と前記比較値とが異なることを示すことに応答して誤り検出信号を生成するステップと、
前記第１のクロック信号の少なくとも最後の３サイクルの間、前記誤り検出信号に応答して、前記データ入力受信部から前記データ出力送信部への並列データワードの再送信を制御するステップとを備える、方法。
【請求項７】
前記誤り検出信号を生成するステップは、前記第１のクロック信号のエッジに同期する、請求項６に記載の方法。
【請求項８】
シフトレジスタを有するように前記データ出力送信部を構成するステップを含み、前記シフトレジスタは、前記ロード信号の発生に応答して前記データ入力受信部からデータを受信し、前記シフトレジスタは、前記ロード信号の発生がない場合に前記第２のクロック信号に応答してデータをシリアルに出力する、請求項６に記載の方法。
【請求項９】
前記受信するステップはデータをパラレルに受信するステップを含み、
前記転送するステップはデータをパラレルに転送するステップを含み、
前記出力するステップはデータをシリアルに出力するステップを含み、
前記第２の速度は前記第１の速度よりも大きい、請求項６から８のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は集積回路デバイス（ＩＣ）に関する。より特定的には、この発明はＩＣにおける誤り検出および訂正に関する。
【背景技術】
【０００２】
背景
プログラマブルロジックデバイス（ＰＬＤ）は、特定された論理機能を実行するようにプログラム可能な周知の種類の集積回路である。ＰＬＤの一種であるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は典型的に、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入力／出力ブロック（ＩＯＢ）、コンフィギュラブルロジックブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）などを含み得る。
【０００３】
各々のプログラマブルタイルは典型的に、プログラマブルインターコネクトおよびプログラマブルロジックの両者を含む。プログラマブルインターコネクトは典型的に、プログラマブルインターコネクトポイント（ＰＩＰ）によって相互接続された異なる長さの多数のインターコネクト配線を含む。プログラマブルロジックは、たとえば、関数生成器、レジスタ、算術論理などを含み得るプログラマブル素子を用いてユーザ設計のロジックを実現する。
【０００４】
プログラマブルインターコネクトおよびプログラマブルロジックは典型的に、プログラマブル素子がどのように構成されるかを規定する内部構成メモリセルにコンフィギュレーションデータのストリームをロードすることによってプログラムされる。コンフィギュレーションデータは外部デバイスによりメモリから（たとえば外部ＰＲＯＭから）読み出されたりＦＰＧＡに書き込まれたりし得る。そうして、個別のメモリセルの集合的な状態がＦＰＧＡの機能を決める。
【０００５】
別の種類のＰＬＤはコンプレックスプログラマブルロジックデバイスまたはＣＰＬＤである。ＣＰＬＤは、共に接続されるとともに、インターコネクトスイッチマトリックスによって入力／出力（Ｉ／Ｏ）リソースに接続された２つ以上の「機能ブロック」を含む。ＣＰＬＤの各々の機能ブロックは、プログラマブルロジックアレイ（ＰＬＡ）およびプログラマブルアレイロジック（ＰＡＬ）デバイスで用いられるものと同様の２レベルＡＮＤ／ＯＲ構造を含む。ＣＰＬＤにおいて、コンフィギュレーションデータは典型的に不揮発性メモリ内のチップ上に記憶される。いくつかのＣＰＬＤでは、コンフィギュレーションデータは不揮発性メモリ内のチップ上に記憶され、次に初期コンフィギュレーション（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【０００６】
これらのプログラマブルロジックデバイス（ＰＬＤ）のすべてについて、デバイスの機能性は、その目的のためにデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ（たとえばＦＰＧＡおよびいくつかのＣＰＬＤのようなスタティックメモリセル）、不揮発性メモリ（たとえばいくつかのＣＰＬＤにおけるようなＦＬＡＳＨメモリ）、またはいずれの他の種類のメモリセルにも記憶可能である。
【０００７】
他のＰＬＤは、デバイス上のさまざまな素子をプログラマブルに相互接続する金属層などの処理層を適用することによってプログラムされる。これらのＰＬＤはマスクプログラマブルデバイスとして公知である。ＰＬＤは、たとえば、ヒューズまたはアンチヒューズ技術を用いる他のやり方で実現することもできる。「ＰＬＤ」および「プログラマブルロジックデバイス」という用語はこれらの例示的なデバイスを含むがこれらに限定されるものではなく、部分的にしかプログラマブルでないデバイスも包含する。たとえば、１つの種類のＰＬＤは、ハードコードされたトランジスタロジックとハードコードされたトランジスタロジックをプログラマブルに相互接続するプログラマブルスイッチファブリックとの組合せを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１および図２に示される種類のＦＰＧＡは、しばしば、パラレル−シリアル変換回路を含む。回路は２つのクロック信号を用い、そのうち一方は１つの速度を有する遅いクロックであり、そのうち他方は異なる速度を有する速いクロックである。速いクロックは遅いクロックの周波数の整数倍である周波数を有し、整数はパラレル−シリアル変換回路に供給される並列データワード中のビット数である。回路は遅いクロックを用いて並列データを受信し、速いクロックを用いてこのデータをシリアルにシフトアウトする。適切な回路動作のためには、速いクロックと遅いクロックとの間の比率を維持しなければならない。速いクロック信号中のグリッチはこの比率を途絶させ、これによりシリアル送信データに誤りを生じる可能性がある。既存のパラレル−シリアル回路はこの種類の不具合を検出することができない。したがって、既存のパラレル−シリアル変換回路は一般的にそれらの意図される目的には十分であったが、それらはあらゆる点において完全に満足のいくものであったわけではなかった。
【課題を解決するための手段】
【０００９】
要約
装置の実施形態は、第１の速度で入力データを受信するデータ入力受信部と、第１の速度に同期し、かつ第１の速度とは異なる第２の速度で回路から出力データを送信するデータ出力送信部と、データ入力受信部からデータ出力送信部にデータを転送するデータ転送部と、第１の速度と第２の速度との間の同期性をモニタし、第１の速度と第２の速度との間の同期性の途絶に応答して、出力において誤り検出信号を生成する誤り検出部とを有する回路を含むことができる。
【００１０】
データ入力受信部は第１の速度で動作する第１のクロック信号に応答することができ、データ出力送信部は第２の速度で動作する第２のクロック信号に応答することができる。誤り検出部は、第１のクロック信号の選択された数のサイクルの間に生じるべき第２のクロック信号のサイクルの数を示す比較値を記憶する記憶素子と、クロックサイクル値が比較値と最後に等価であって以降実際に生じた第２のクロック信号のサイクルの数を表わすクロックサイクル値と比較値とを比較する比較器とを含むことができる。比較器は、誤り検出部の出力に結合された出力を有することができる。
【００１１】
誤り検出部は、比較器の出力と誤り検出部の出力との間に結合され、誤り検出信号として機能する、比較器の出力における信号を捕捉することができる捕捉部を含むことができる。
【００１２】
捕捉部は、比較器の出力に結合される入力と、第１のクロック信号を受信するクロック入力と、誤り検出回路の出力に結合される出力とを有するフリップフロップを含むことができる。
【００１３】
比較値は複数のビットを有することができ、クロックサイクル値は複数のビットを有することができる。比較器は、出力が比較器の出力に結合されたＮＡＮＤゲートを含むことができ、複数の入力を含むことができ、複数の排他的ＮＯＲゲートを含むことができる。複数の排他的ＮＯＲゲートの各々は、記憶素子において比較値のそれぞれのビットを受信する入力と、クロックサイクル値のそれぞれのビットを受信する別の入力と、ＮＡＮＤゲートのそれぞれの入力に結合される出力とを有することができる。
【００１４】
誤り検出部は、比較器の出力と誤り検出部の出力との間に結合され、誤り検出信号として働く、比較器の出力における信号を捕捉することができる捕捉部を含むことができる。
【００１５】
捕捉部は、比較器の出力に結合される入力と、第１のクロック信号を受信するクロック入力と、誤り検出回路の出力に結合される出力とを有するフリップフロップを含むことができる。
【００１６】
データ転送部は、第１のクロック信号の選択された数のサイクルにおいて生じるべき第２のクロック信号の多数のサイクルの発生に応答してロード信号を生成するロード信号生成器を含むことができ、ロード信号は、データ出力送信部にデータ入力受信部からのデータを受信させる。
【００１７】
データ出力送信部は、データ入力受信部に結合される複数の入力と、ロード信号に応答する制御入力と、第２のクロック信号に応答するクロック入力と、出力とを有するシフトレジスタを含むことができる。シフトレジスタの複数の入力は、制御入力におけるロード信号の発生に応答してデータ入力受信部からデータのそれぞれのビットをパラレルに受信することができ、シフトレジスタは、制御入力におけるロード信号の発生がない場合に第２のクロック信号に応答してその出力でデータをシリアルに出力することができる。
【００１８】
データ入力受信部は第１の速度で動作する第１のクロックに応答することができ、データ出力送信部は第２の速度で動作する第２のクロックに応答する。
【００１９】
データ入力受信部は入力データをパラレルに受信することができる。データ転送部は、データ入力受信部からデータ出力送信部にデータをパラレルに転送させることができる。データ出力送信部は出力データをシリアルに送信することができる。第２の速度は第１の速度よりも大きいものであり得る。
【００２０】
方法の実施形態は、データ入力受信部で第１の速度でデータを受信するステップと、データ入力受信部からデータ出力送信部へデータを転送するステップと、第１の速度に同期し、かつ第１の速度とは異なる第２の速度でデータ出力送信部からデータを出力するステップと、途絶が起こった場合に同期性の途絶を検出するステップを含む第１の速度と第２の速度との間の同期性をモニタするステップと、同期性の途絶の検出に応答して誤り検出信号を生成するステップとを含むことができる。
【００２１】
方法は、第１の速度で動作する第１のクロック信号に応答してデータ入力受信部を動作させるステップと、第２の速度で動作する第２のクロック信号に応答してデータ出力送信部を動作させるステップとを含むことができる。モニタするステップは、第１のクロック信号の選択された数のサイクルの間に生じるべき第２のクロック信号のサイクルの数を示す比較値を維持するステップを含むことができる。さらに、モニタするステップは、クロックサイクル値が比較値と最後に等価であった時点以降実際に生じた第２のクロック信号のサイクルの数を表わすクロックサイクル値を維持するステップを含むことができ、比較値とクロックサイクル値とを比較するステップを含むことができる。誤り検出信号を生成するステップは、比較するステップの結果の関数として実行可能である。
【００２２】
誤り検出信号を生成するステップは、比較値とクロックサイクル値とが異なることを示す比較ステップに応答して起こり得る。
【００２３】
誤り検出信号を生成するステップは、第１のクロック信号のエッジに同期可能である。
方法は、第１のクロック信号の選択された数のサイクルにおいて生じるべき第２のクロック信号の多数のサイクルの発生に応答してロード信号を生成するステップを含むことができる。さらに、方法は、シフトレジスタを有するようにデータ出力送信部を構成するステップを含むことができ、シフトレジスタは、ロード信号の発生に応答してデータ入力受信部からデータを受信し、シフトレジスタは、ロード信号の発生がない場合に第２のクロック信号に応答してデータをシリアルに出力する。
【００２４】
方法は、第１の速度で動作する第１のクロック信号に応答してデータ入力受信部を動作させるステップと、第２の速度で動作する第２のクロック信号に応答してデータ出力送信部を動作させるステップとを含むことができる。
【００２５】
受信するステップは、データをパラレルに受信するステップを含むことができ、転送するステップはデータをパラレルに転送するステップを含むことができ、出力するステップはデータをシリアルに出力するステップを含むことができ、第２の速度は第１の速度よりも大きいものであり得る。
【００２６】
装置の別の実施形態は、第１のクロック速度で入力データを受信するデータ入力受信部と、第１のクロック速度に同期し、かつ第１のクロック速度とは異なる第２のクロック速度で回路から出力データを送信するデータ出力送信部と、データ入力受信部およびデータ出力送信部に結合され、第２のクロック速度によって駆動されるカウンタを含むプログラマブルロード生成器と、値を含むレジスタと、プログラマブルロード生成器およびレジスタに結合され、その値をカウンタの出力と比較する比較器と、比較器に結合され、第１のクロック速度で動作する第１のクロックの立下がりエッジで比較器の出力を検査して、第１のクロック速度と第２のクロック速度との間の比率が途絶しているか否かを判定する制御回路とを有する回路を含むことができる。
【００２７】
制御回路は、第１のクロック速度と第２のクロック速度との間の比率が途絶している場合はリセット信号を出力することができる。
【図面の簡単な説明】
【００２８】
【図１】いくつかの異なる種類のプログラマブルロジックブロックを含む高度なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）アーキテクチャの概略図である。
【図２】図１のＦＰＧＡの代替的な実施形態であり、いくつかの異なる種類のプログラマブルロジックブロックを含む別のＦＰＧＡアーキテクチャの概略図である。
【図３】図１および図２のＦＰＧＡアーキテクチャの各々の一部分であるパラレル−シリアル変換回路を示す回路模式図である。
【図４】図３の回路の動作の局面を示すタイミング図である。
【図５】図３の回路の構成要素であるプログラマブルロード生成器、および図３の回路内で用いられる速いクロックと遅いクロックとの間の比率の途絶を検出する誤り検出回路を示す回路模式図である。
【発明を実施するための形態】
【００２９】
詳細な説明
図１は、いくつかの異なる種類のプログラマブルロジックブロックを含む高度なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）アーキテクチャ１００の概略図である。たとえば、図１のＦＰＧＡアーキテクチャ１００は、マルチギガビットトランシーバ（ＭＧＴ）１０１、コンフィギュラブルロジックブロック（ＣＬＢ）１０２、ランダムアクセスメモリブロック（ＢＲＡＭ）１０３、入力／出力ブロック（ＩＯＢ）１０４、コンフィギュレーションおよびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１０５、デジタル信号処理ブロック（ＤＳＰ）１０６、専用入力／出力ブロック（Ｉ／Ｏ）１０７（たとえばコンフィギュレーションポートおよびクロックポート）、ならびにデジタルクロックマネージャ、アナログ−デジタル変換器、システムモニタロジックなどの他のプログラマブルロジック１０８を含む多数の異なるプログラマブルタイルを有する。ＦＰＧＡ１００は専用プロセッサブロック（ＰＲＯＣ）１１０も含む。
【００３０】
ＦＰＧＡ１００において、各々のプログラマブルタイルは、各々の隣接するタイル中の対応のインターコネクト素子へおよびそれからの標準化された接続部を有するプログラマブルインターコネクト素子（ＩＮＴ）１１１を含む。したがって、プログラマブルインターコネクト素子は、図示されるＦＰＧＡのためのプログラマブルインターコネクト構造を共に実現する。プログラマブルインターコネクト素子（ＩＮＴ）１１１は、図１の上部に含まれる例によって示されるように、同じタイル内にプログラマブルロジック素子へのおよびそれからの接続部も含む。
【００３１】
たとえば、ＣＬＢ１０２は、単一のプログラマブルインターコネクト素子（ＩＮＴ）１１１と共にユーザロジックを実現するようにプログラム可能なコンフィギュラブルロジック素子（ＣＬＥ）１１２を含むことができる。ＢＲＡＭ１０３は、１つ以上のプログラマブルインターコネクト素子に加えてＢＲＡＭロジック素子（ＢＲＬ）１１３を含むことができる。典型的に、タイルに含まれるインターコネクト素子の数はタイルの高さに依存する。図示される実施形態では、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数（たとえば４つ）を用いることも可能である。ＤＳＰタイル１０６は適切な数のプログラマブルインターコネクト素子に加えてＤＳＰロジック素子（ＤＳＰＬ）１１４を含むことができる。ＩＯＢ１０４は、たとえば、プログラマブルインターコネクト素子（ＩＮＴ）１１１の１つのインスタンスに加えて入力／出力ロジック素子（ＩＯＬ）１１５の２つのインスタンスを含むことができる。当業者には明らかなように、たとえばＩ／Ｏロジック素子１１５に接続される実際のＩ／Ｏパッドは典型的に、入力／出力ロジック素子１１５の領域に閉じ込められていない。
【００３２】
図示される実施形態では、（図１に影付きで示される）ダイの中央近くの列状の領域がコンフィギュレーションロジック、クロックロジックおよび他の制御ロジックのために用いられる。この列から延在する水平方向の領域１０９はＦＰＧＡの幅に亘ってクロックおよびコンフィギュレーション信号を分配するのに用いられる。他の実施形態では、コンフィギュレーションロジックは、ダイの角などのようなＦＰＧＡダイの異なる領域に位置してもよい。
【００３３】
図１に図示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大きな部分を構成する規則的な列状構造を分断する付加的なロジックブロックを含む。付加的なロジックブロックはプログラマブルブロックおよび／または専用ロジックであり得る。たとえば、図１に示されるプロセッサブロックＰＲＯＣ１１０は、ＣＬＢおよびＢＲＡＭのいくつかの列に跨っている。
【００３４】
図１は１つの例示的なＦＰＧＡアーキテクチャを図示する。たとえば、１列の中のロジックブロックの数、列の相対的な幅、列の数および順番、列に含まれるロジックブロックの種類、ロジックブロックの相対的なサイズ、アレイ内のロジックブロックの位置、ならびに図１の上部に含まれるインターコネクト／ロジック実現例は純粋に例示的なものである。実際のＦＰＧＡでは、ＣＬＢの１つよりも多くの隣接する列は典型的にＣＬＢが現れる場所であればどこでも含まれて、ユーザロジックの効率的な実現を容易にするが、隣接するＣＬＢ列の数はＦＰＧＡの全体的なサイズと共に変化する。
【００３５】
図２は図１のＦＰＧＡの代替的な実施形態を示し、これはいくつかの異なる種類のプログラマブルロジックブロックを含む。図２のＦＰＧＡ２００は、ＣＬＢ２０２、ＢＲＡＭ２０３、（各々が４０個のＩ／Ｏパッドおよび付随するロジックを含む）「Ｉ／Ｏバンク」２０４に分割されるＩ／Ｏブロック、コンフィギュレーションおよびクロッキングロジック２０５、ＤＳＰブロック２０６、クロックＩ／Ｏ２０７、クロック管理回路（ＣＭＴ）２０８、コンフィギュレーションＩ／Ｏ２１７、ならびにコンフィギュレーションおよびクロック分配領域２０９を含む。
【００３６】
図２のＦＰＧＡ２００では、例示的なＣＬＢ２０２は、単一のプログラマブルインターコネクト素子（ＩＮＴ）２１１ならびに２つの異なる「スライス」、すなわちスライスＬ（ＳＬ）２１２およびスライスＭ（ＳＭ）２１３を含む。いくつかの実施形態では、２つのスライスは同じである（たとえばスライスＬの２つのコピーまたはスライスＭの２つのコピー）。他の実施形態では、２つのスライスは異なる能力を有する。いくつかの実施形態では、いくつかのＣＬＢは２つの異なるスライスを含み、いくつかのＣＬＢは２つの同様のスライスを含む。たとえば、いくつかの実施形態では、いくつかのＣＬＢ列は２つの異なるスライスを有するＣＬＢのみを含む一方で、他のＣＬＢ列は２つの同様のスライスを有するＣＬＢのみを含む。
【００３７】
図３は、図１および図２のＦＰＧＡアーキテクチャの各々の一部分であるパラレル−シリアル変換回路３０１を示す回路模式図である。図３の左側に、回路３０１は、各々のワードが６つまでのデータビットｄ１からｄ６を内蔵できる、入力データワードを並列に受信するデータ入力受信部３０２を有する。回路３０１は、シリアル出力３０３で、シリアル形式の出力データとして各々のそのようなワードを出力するデータ出力送信部３０５も有する。回路３０１は６ビットスライスであり、幅が２ビットからビットまでの並列ワードを扱うことができる。たとえば、４ビットのワードならデータ入力ｄ１からｄ４に供給され、シリアル出力３０３でシリアルに出力される。６ビットワードならデータ入力ｄ１からｄ６に供給され、シリアル出力３０３でシリアルに出力される。さらに、６ビットよりも大きなサイズの並列ワードを扱うため、回路３０１は、他の回路のシリアル入力３０６への１つのそのような回路のシリアル出力３０３の接続部を含む別の同一の回路とカスケード接続可能である。
【００３８】
回路３０１の内部構造を参照して、この考察のために、データ入力受信部３０２に供給される並列入力ワードは６ビットの幅を有すると仮定する。データ入力受信部３０２は、データ入力ｄ１からｄ６と、６つのＤタイプフリップフロップ３１１から３１６によって規定される入力レジスタとを有する。各々の６ビット入力ワードはデータ入力ｄ１からｄ６へ並列な形式で供給され、６つの２入力１出力セレクタ３４１−３４６を通過し、入力レジスタ（フリップフロップ３１１から３１６）にロードされる。以上で論じたように、図１および図２に示される種類のＦＰＧＡアーキテクチャは、エンドユーザによって構成されるまたはプログラムされる能力を有する。このプログラミングプロセスの一部として、ユーザは、関連のデータ入力ｄ１からｄ６に存在する反転または非反転信号を関連のフリップフロップ３１１から３１４に与えるように、セレクタ３４１から３４６の各々を構成する。この考察の目的のため、セレクタ３４１から３４６はユーザにより非反転となるように構成されていると仮定する。
【００３９】
入力レジスタ（フリップフロップ３１１−３１６）に６ビットのデータワードがロードされた後、（後でより詳細に論じる）回路３０１の動作シーケンス中の好適なポイントで、この６ビットワードはデータ出力送信部３０５にパラレルに転送される。データ出力送信部３０５は、６個の２入力１出力セレクタ３２１から３２６と、６個のＤタイプフリップフロップ３３１から３３６によって規定されるレジスタとを含む。６ビットワードは２入力１出力セレクタ３２１から３２６を通してパラレルに受信され、レジスタ（フリップフロップ３３１から３３６）にロードされる。フリップフロップ３３１−３３６がロードされた後、２入力１出力セレクタ３２１−３２６は交互モードに切換えられ、セレクタ３２１−３２５はフリップフロップ３３２から３３６のうちそれぞれの１つの出力を各々のフリップフロップ３３１から３３５のデータ入力に供給する一方で、セレクタ３２６はフリップフロップ３３６のデータ入力に（上記のように別の回路３０１のシリアル出力３０４にオプションで結合可能な）シリアル入力３０６の状態を供給する。その結果、フリップフロップ３３１−３３６は次にシリアルシフトレジスタとして機能し、その中のデータはシリアル出力３０３でシリアルに出力される。
【００４０】
クロック信号oclkdiv_bは、フリップフロップ３１１から３１６の各々のクロック入力に供給され、異なるクロック信号oclk_bはフリップフロップ３３１から３３６の各々のクロック入力に供給される。フリップフロップ３３１から３３６のためのクロック信号oclk_bは、フリップフロップ３１１から３１６のためのクロック信号oclkdiv_bの整数倍の周波数を有し、整数は並列ワードのビット数に等しい。このように、この考察のために、回路３０１に６ビットを有する並列ワードが供給されると仮定しているので、クロックoclk_bはクロック信号oclkdiv_bの周波数または速度の６倍の周波数または速度を有する。便宜上、クロック信号oclk_bは本明細書中では速いクロックと称されることがあり、クロック信号oclkdiv_bは遅いクロックと本明細書中で称されることがある。
【００４１】
回路３０１は、プログラマブルロード生成器３５１を含むデータ転送部３５０を有する。プログラマブルロード生成器３５１は、フリップフロップ３３１から３３６と同じクロック信号oclk_bを受信する４ビットクロックサイクルカウンタ３５２を含む。ロード生成器３５１は、クロック信号oclk_bのＸ個のパルス毎に１個の出力パルスを発生する出力を有し、Ｘは並列入力ワードのビット数である。本考察の目的のため、Ｘは６個のパルスである。データ転送部３５０は、ロード生成器３５１から出力を受ける１つの入力と、制御信号SERIAL ENABLEを受信する別の入力とを有するＡＮＤゲート３５３も含む。パラレル−シリアル変換を利用する場合、信号SERIAL ENABLEは常に論理ハイである。ＡＮＤゲート３５３の出力は２入力１出力セレクタ３２１から３２６の各々に制御信号として供給されるLOAD信号として働く。プログラマブルロード生成器３５１およびＡＮＤゲート３５３は共にロード信号生成器として働く。LOAD信号が停止されると、セレクタ３２１から３２６は、フリップフロップ３３１−３３６が５クロックサイクルの間シリアルシフトレジスタとして機能するように設定される。LOAD信号が作動すると、セレクタ３２１から３２６は１クロックサイクルの間並列ロードモードに切換わり、これによりフリップフロップ３３１から３３６が、フリップフロップ３１１から３１６からのデータで並列にロード可能となる。回路３０１は、プログラマブルロード生成器３５１へ、フリップフロップ３１１から３１６の各々へ、かつフリップフロップ３３１から３３６の各々へ供給されるリセット信号sr_bを有する。図４は回路３０１の動作の局面を示すタイミング図である。
【００４２】
以上で論じたように、図１および図２に示される種類のＦＰＧＡアーキテクチャは、エンドユーザによって構成されるまたはプログラムされる能力を有する。このプログラミングプロセスの一部として、ユーザは、並列データワード中のビット数Ｘと整合する態様でプログラマブルロード生成器３５１を構成する。こうして、並列データワードがＸ＝４ビットを有する場合、プログラマブルロード生成器３５１は、速いクロックoclk_bの４個のパルス毎に１個のパルスを出力するように構成される。並列ワードがＸ＝６ビットを有する場合、ロード生成器３５１は、速いクロックoclk_bの６個のパルス毎に１個のパルスを出力するように構成される。並列ワードがＸ＝１０ビットである場合、ロード生成器３５１は、速いクロックoclk_bの１０個のパルス毎に１個のパルスを出力するように構成される。
【００４３】
回路３０１が適切に動作するためには、遅いクロックoclkdiv_bと速いクロックoclk_bとの速度の比率を維持しなければならない。速いクロックoclk_bに何らかの不規則性または「グリッチ」が存在すれば、比率が乱され、フリップフロップ３１１から３１６を内蔵するレジスタとフリップフロップ３３１から３３６を内蔵するレジスタとの間の同期性が途絶してしまう。
【００４４】
図５は、プログラマブルロード生成器３５１と、図３には示されていないが図３の回路３０１の一部分である誤り検出回路３６１とを示す回路模式図である。誤り検出回路３６１は、遅いクロックoclkdiv_b（図３）と速いクロックoclk_bとの速度の間の比率の途絶を検出する。回路３６１は記憶素子である４ビットレジスタ３６６を含む。開示される実施形態では、レジスタ３６６は、別個に図示されていない４つのメモリセルで実現される。以上で論じたように、図１および図２に示される種類のＦＰＧＡアーキテクチャは、エンドユーザによって構成されるまたはプログラムされる能力を有している。このプログラミングプロセスの一部として、ユーザは、レジスタ３６６に永続的に記憶されるべき４ビットバイナリ比較値を特定する。速いクロックと遅いクロックとの間の比率に途絶が発生しなかったならば、遅いクロックoclkdiv_bの各々の立下がりエッジの直前に、ロード生成器３５１は（図４では１６進数「ｄ」として表わされる）同じ４ビットクロックサイクル値を常に出力していることが、図４において気付くであろう。ＦＰＧＡアーキテクチャが構成されているとき、図５のレジスタ３６６は、同じ１６進数値「ｄ」を表わすビットを内蔵するようにプログラムされる。図３および図４はシングルデータレート（「ＳＤＲ」）モードで動作するパラレル−シリアル変換回路を示すが、この発明の１つ以上の実施形態は、パラレル−シリアル変換回路がダブルデータレート（「ＤＤＲ」）モードで動作するように構成される場合も適用される。
【００４５】
誤り検出回路３６１は比較器回路３６８を含む。比較器回路３６８は４個の排他的ＮＯＲゲート３７１から３７４を含む。以上で言及したように、ロード生成器３５１は４ビットクロックサイクルカウンタを内蔵し、このカウンタの４ビットのうち各々は４つのゲート３７１から３７４のうちそれぞれ１つの一方の入力に結合される。レジスタ３６６中の４つのメモリセルのうちの各々は、ゲート３７１から３７４のうちそれぞれ１つの他方の入力に結合される。比較器３６８は、出力を有し、かつゲート３７１から３７４のそれぞれ１つの出力に各々が結合される４つの入力を有するＮＡＮＤゲート３７７をさらに含む。誤り検出回路３６１は、後で論じるＤタイプフリップフロップ３８０をオプションで含むことができる。このフリップフロップは、これがオプションであることを反映するために破線で示されている。当面の間、フリップフロップ３８０は存在しないと仮定する。ＮＡＮＤゲート３７７の出力はパラレル−シリアル変換回路３０１のための制御回路３８６に供給される誤り検出信号である。
【００４６】
制御回路３８６は、比較器３６８が各々の遅いクロックの立下がりエッジにおいて有する出力状態を検査する。比較器３６８の出力が（比較値とクロックサイクル値とが等価であるため）バイナリ「０」である場合、速いクロックと遅いクロックとの間の比率は途絶しておらず、回路３０１は適切に動作している筈である。他方で、比較器３６８の出力が（比較値とクロックサイクル値とが異なるため）バイナリ「１」である場合、速いクロックと遅いクロックとの間の比率はたとえば速いクロックにおけるグリッチのために途絶している。そこで、制御回路３８６は、回路３０１へまたは少なくともロード生成器３５１へリセット信号を供給し、データストリーム全体が回路３０１のシリアル出力を通してシリアルに正しく送信されることを確実にするために、少なくとも最後の３つの遅いクロックサイクルの間は６ビットの並列データワードを再送することができる。
【００４７】
上記で言及したように、オプションでフリップフロップ３８０を設けることができる。フリップフロップ３８０が存在する場合、そのデータ入力は比較器３６８の出力に結合され、そのクロック入力は遅いクロックoclkdiv_bを受信し、そのデータ出力は制御回路３８６に結合される。フリップフロップ３８０が存在する場合、比較器３６８の出力は遅いクロック信号oclkdiv_bの各々の立下がりエッジでフリップフロップ３８０に捕捉される。このようにフリップフロップ３８０は捕捉部として働き、フリップフロップ３８０に捕捉される比較器３６８の出力は誤り検出信号として働く。
【００４８】
選択された実施形態が詳細に図示され説明されたが、以下の請求項によって規定されるような本発明の精神および範囲から逸脱することなく置換および変更が可能であることを理解すべきである。
【図１】
0005232308.tif 000002
【図２】
0005232308.tif 000003
【図３】
0005232308.tif 000004
【図４】
0005232308.tif 000005
【図５】
0005232308.tif 000006