(57)【特許請求の範囲】
【請求項１】
外部からプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロックと、
外部からの入力データを集積回路の内部クロックでリタイミングして前記処理ブロックに入力するＦＩＦＯレジスタとを備え、
前記処理ブロックは、高速用の処理ブロックと、低速用の処理ブロックとからなり、
前記ＦＩＦＯレジスタは、高速用の入力データを前記内部クロックでリタイミングする高速用のＦＩＦＯレジスタと、低速用の入力データを前記内部クロックでリタイミングする低速用のＦＩＦＯレジスタとからなり、
さらに、前記高速用のＦＩＦＯレジスタまたは低速用のＦＩＦＯレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして前記高速用の処理ブロックと前記低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、
前記高速用の処理ブロックの出力データと前記低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを備えることを特徴とする集積回路。
【請求項２】
請求項１記載の集積回路において、
さらに、前記高速用の処理ブロックの出力データと前記高速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第１のセレクト信号に応じて選択して外部に出力する第１のセレクタと、
前記高速用の処理ブロックの出力データと前記高速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第２のセレクト信号に応じて選択して入力データとして前記高速用の処理ブロックに入力する第２のセレクタと、
前記低速用の処理ブロックの出力データと前記低速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第３のセレクト信号に応じて選択して外部に出力する第３のセレクタと、
前記低速用の処理ブロックの出力データと前記低速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第４のセレクト信号に応じて選択して入力データとして前記低速用の処理ブロックに入力する第４のセレクタとを備えることを特徴とする集積回路。
【請求項３】
請求項１記載の集積回路において、
前記振り分け処理手段は、前記高速用のＦＩＦＯレジスタまたは低速用のＦＩＦＯレジスタの出力データに含まれる識別子に基づいて、この出力データが高速用データか低速用データかを判別し、高速用データであれば前記高速用の処理ブロックに入力し、低速用データであれば前記低速用の処理ブロックに入力することを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信フレーム処理などを行うシステムに使用される集積回路に係り、特に外部からユーザによってプログラミング可能な論理回路であるフィールド・プログラマブル・ゲートアレイ等の集積回路に関するものである。
【背景技術】
【０００２】
フィールド・プログラマブル・ゲートアレイ（Field Programmable Gate Array、以下、ＦＰＧＡと呼ぶ）のような再構成可能なハードウェアは、設計完了後短期間でシステム構築が可能なこと、設計変更になっても早期にハードウェアの変更が可能なことから様々な分野のシステムへの応用がされている。また、適用されるシステム規模も年々増大してきて、ＦＰＧＡ自体の大規模化も進められているが、複数のＦＰＧＡを組み合わせてシステムを実現することも少なくない。
【０００３】
通信の分野においては、仕様を短期間にハードウェア化して確認できることからＦＰＧＡの主要な適用分野となっていたが、近年の通信速度の飛躍的向上およびセキュリティ強化等の処理の高度化により、複数のＦＰＧＡを用いてシステムを構築する例が多くなっている。
【０００４】
このようなことから、これまでにも複数のＦＰＧＡにより通信システムを実現する技術が開発されてきた（特許文献１、特許文献２、特許文献３、特許文献４参照）。図１２は複数のＦＰＧＡによる従来の通信システムの構成例を示すブロック図である。この通信システムでは、各ＦＰＧＡ１０００をバス１００１，１００２で相互に接続し、これらのＦＰＧＡ１０００をコントローラ１００３で集中制御する方式を取っている。図１２におけるＣＫはクロック、ＩＮ１，ＩＮ２は入力データ、ＯＵＴ１，ＯＵＴ２は出力データである。
【０００５】
図１３は、複数のＦＰＧＡを同時平行で開発した場合の従来の通信システムの設計・検証期間を示す図である。２０００は第１のＦＰＧＡの設計・検証期間、２００１は第２のＦＰＧＡの設計・検証期間、２００２は第３のＦＰＧＡの設計・検証期間、２００３はコントローラの設計・検証期間、２００４はＦＰＧＡ間の接続検証期間である。このように、図１２に示した通信システムの設計・検証においては、一番開発に時間のかかった第３のＦＰＧＡの設計・検証期間に、コントローラの設計・検証期間とＦＰＧＡ間の接続検証期間とが加算される。
通信システムの開発期間を短縮する技術としては、ＦＰＧＡとＡＳＩＣ（Application Specific Integrated Circuit）のネットリストを作成する方法が提案されている（特許文献５参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−３５３９５０号公報
【特許文献２】特開２００１−１８６０１０号公報
【特許文献３】特開２００２−３１４５７９号公報
【特許文献４】特開２００５−０１１３４４号公報
【特許文献５】特開２００７−１０２８１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術のようにバスを介して複数のＦＰＧＡを組み合わせることにより構成されるシステムでは、１つのＦＰＧＡ内に閉じた処理の場合は効率的に処理できるが、通信フレーム処理のようにあるＦＰＧＡのブロックの出力が次のＦＰＧＡのブロックの入力になるようなパイプライン的な処理の場合はバスの制御が複雑になり、バス制御が行い難くなるという第１の課題があった。また、バス用のクロックを統一する必要があり、複数のＦＰＧＡの同期を取って動作させなければいけないという第２の課題があった。
【０００８】
これら２つの課題を解決してシステム化を行うには、開発の複雑さに加えて、各ＦＰＧＡに入れるべきブロックの設計が完成してからシステム化の設計をせざるを得ず、トータルの開発期間がかかるという第３の課題があった。
なお、以上のような課題はＦＰＧＡに限らず、製造後にユーザによってプログラミング可能な集積回路を用いるシステムであれば、同様に発生する。
【０００９】
本発明は、上記課題を解決するためになされたもので、ユーザによってプログラミング可能な集積回路を複数用いるシステムの設計・検証期間を短縮することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の集積回路は、外部からプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロックと、外部からの入力データを集積回路の内部クロックでリタイミングして前記処理ブロックに入力するＦＩＦＯレジスタとを備え、前記処理ブロックは、高速用の処理ブロックと、低速用の処理ブロックとからなり、前記ＦＩＦＯレジスタは、高速用の入力データを前記内部クロックでリタイミングする高速用のＦＩＦＯレジスタと、低速用の入力データを前記内部クロックでリタイミングする低速用のＦＩＦＯレジスタとからなり、さらに、前記高速用のＦＩＦＯレジスタまたは低速用のＦＩＦＯレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして前記高速用の処理ブロックと前記低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、前記高速用の処理ブロックの出力データと前記低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを備えることを特徴とするものである。
また、本発明の集積回路の１構成例は、さらに、前記高速用の処理ブロックの出力データと前記高速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第１のセレクト信号に応じて選択して外部に出力する第１のセレクタと、前記高速用の処理ブロックの出力データと前記高速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第２のセレクト信号に応じて選択して入力データとして前記高速用の処理ブロックに入力する第２のセレクタと、前記低速用の処理ブロックの出力データと前記低速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第３のセレクト信号に応じて選択して外部に出力する第３のセレクタと、前記低速用の処理ブロックの出力データと前記低速用のＦＩＦＯレジスタの出力データのうちどちらか一方を第４のセレクト信号に応じて選択して入力データとして前記低速用の処理ブロックに入力する第４のセレクタとを備えることを特徴とするものである。
【００１１】
また、本発明の集積回路の１構成例において、前記振り分け処理手段は、前記高速用のＦＩＦＯレジスタまたは低速用のＦＩＦＯレジスタの出力データに含まれる識別子に基づいて、この出力データが高速用データか低速用データかを判別し、高速用データであれば前記高速用の処理ブロックに入力し、低速用データであれば前記低速用の処理ブロックに入力することを特徴とするものである。
【発明の効果】
【００１２】
本発明によれば、外部からの入力データを集積回路の内部クロックでリタイミングして処理ブロックに入力するＦＩＦＯレジスタを設けることにより、集積回路を複数搭載するシステムにおいて、複数の集積回路を接続するバス、バスを制御するコントローラおよびシステム共通のクロックが不要となる。本発明では、接続される集積回路間のみでタイミング調整を図れるので、システム設計の簡易化を実現することができる。また、本発明では、システム全体でのタイミング調整が不要になるので、全ての設計ブロックの設計完了前に集積回路間の接続検証や完成した設計ブロックの検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【００１３】
また、本発明では、処理ブロックの出力データとＦＩＦＯレジスタの出力データのうちどちらか一方を第１のセレクト信号に応じて選択して外部に出力する第１のセレクタと、処理ブロックの出力データとＦＩＦＯレジスタの出力データのうちどちらか一方を第２のセレクト信号に応じて選択して入力データとして処理ブロックに入力する第２のセレクタとを設けることにより、集積回路を複数搭載したシステムの設計時において、システム外へのインターフェイスの設計が一部しか完成していない場合においても、第１、第２のセレクタを切り替えて、データを入力された方向に戻す折り返しを行うことにより、設計が完成している部分の検証を進めることができる。その結果、本発明では、従来のように処理ブロックの設計・検証を完成させてから上位のブロック間の接続検証を行うのではなく、処理ブロックの設計・検証と同時期に集積回路間の接続検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【００１４】
また、本発明では、高速用のＦＩＦＯレジスタまたは低速用のＦＩＦＯレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして高速用の処理ブロックと低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、高速用の処理ブロックの出力データと低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを設けることにより、集積回路を複数搭載したシステムの設計時において、例えば低速側のインターフェイスの設計が一部しか完成していない場合においても、高速側のインターフェイスから入力した低速用データを入口側の集積回路の内部で低速用の処理ブロックに振り分け、出口側の集積回路の内部で高速側のインターフェイスに戻すことができるので、設計が完成している部分の検証を進めることができる。その結果、本発明では、従来のように処理ブロックの設計・検証を完成させてから上位のブロック間の接続検証を行うのではなく、処理ブロックの設計・検証と同時期に集積回路間の接続検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態に係る集積回路であるＦＰＧＡの内部回路構成例を示すブロック図である。
【図２】本発明の第１の実施の形態に係るＦＩＦＯレジスタの動作を説明するタイミングチャートである。
【図３】論理回路が入出力端子直結回路になるようにプログラミングした場合のＦＰＧＡの内部回路構成を示すブロック図である。
【図４】本発明の第１の実施の形態に係るＦＰＧＡを組み合わせた通信システムの例を示すブロック図である。
【図５】本発明の第１の実施の形態においてＦＰＧＡの内部でデータを折り返す例を示す図である。
【図６】本発明の第１の実施の形態においてＦＰＧＡの内部でデータを折り返す別の例を示す図である。
【図７】本発明の第１の実施の形態に係る通信システムの設計・検証期間を示す図である。
【図８】本発明の第１の実施の形態に係るＦＰＧＡを組み合わせた通信システムの別の例を示すブロック図である。
【図９】本発明の第２の実施の形態に係るＦＰＧＡを組み合わせた通信システムの例を示すブロック図である。
【図１０】本発明の第２の実施の形態において高速ＩＦ側から入力した低速用データを低速側に振り分ける例を示す図である。
【図１１】本発明の第２の実施の形態に係る集積回路であるＦＰＧＡの内部回路構成例を示すブロック図である。
【図１２】複数のＦＰＧＡによる従来の通信システムの構成例を示すブロック図である。
【図１３】複数のＦＰＧＡを同時平行で開発した場合の従来の通信システムの設計・検証期間を示す図である。
【発明を実施するための形態】
【００１６】
［第１の実施の形態］
以下、本発明の実施の形態について図面を参照して説明する。図１は本発明の第１の実施の形態に係る集積回路であるＦＰＧＡの内部回路構成例を示すブロック図である。
ＦＰＧＡ１は、外部からユーザによってプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロック２と、外部からの入力データＩ１ａ，Ｉ１ｂをＦＰＧＡ１の内部クロックＣＫでリタイミングするＦＩＦＯ（First-In First-Out）レジスタ３−１，３−２と、処理ブロック２の出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を選択して外部に出力するセレクタ４−１と、処理ブロック２の出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を選択して入力データとして処理ブロック２に入力するセレクタ４−２とを有する。
【００１７】
図１において、Ｏ１ａ，Ｏ１ｂは出力データ、ＩＣＫ１ａ，ＩＣＫ１ｂは入力クロック、ＯＣＫ１ａ，ＯＣＫ１ｂは出力クロック、ＳＥＬ１，ＳＥＬ２はセレクタ４−１，４−２を制御するためのセレクト信号である。
【００１８】
一般に、ＦＰＧＡ外部のクロックとＦＰＧＡの内部クロックＣＫとは位相差がある。そこで、本実施の形態のＦＩＦＯレジスタ３−１は、図２に示すように内部クロックＣＫの所定のタイミング（例えば内部クロックＣＫの立ち上がり）で入力データＩ１ａをリタイミングして、内部データＤ１を出力する。同様に、ＦＩＦＯレジスタ３−２も、内部クロックＣＫの所定のタイミングで入力データＩ１ｂをリタイミングして、内部データを出力する。
【００１９】
こうして、本実施の形態では、ＦＩＦＯレジスタ３−１，３−２によって入力データＩ１ａ，Ｉ１ｂをリタイミングすることで、外部のクロックＩＣＫ１ａ，ＩＣＫ１ｂと内部クロックＣＫとの位相差によるデータの取りこぼしを防ぐことができ、ＦＰＧＡ１内の処理ブロック２は単一のクロックＣＫに従ってデータを処理することができる。
【００２０】
本実施の形態によれば、複数のＦＰＧＡを組み合わせる際に、出力側のＦＰＧＡと入力側のＦＰＧＡの２つのＦＰＧＡの間の位相調整を行えば良いので、３つ以上のＦＰＧＡに同位相のクロックを供給する場合に比べて容易にＦＰＧＡ間の接続を実現することができる。本実施の形態では、ＦＰＧＡを接続するバスおよびバスを制御するコントローラも不要になる。
【００２１】
さらに、本実施の形態では、セレクタ４−１，４−２をＦＰＧＡ１内に設け、セレクタ４−１，４−２の選択動作を外部から入力されるセレクト信号ＳＥＬ１，ＳＥＬ２によって切り替えることで、データを入力された方向に戻す折り返し機能を実現することができる。
【００２２】
セレクタ４−１は、処理ブロック２の出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を、外部から入力されるセレクト信号ＳＥＬ１に従って選択して、出力データＯ１ａとして出力する。こうして、セレクタ４−１は、処理ブロック２から出力されたデータを出力データＯ１ａとして後段のＦＰＧＡ（不図示）に送り出すこともできるし、後段のＦＰＧＡから入力されＦＩＦＯレジスタ３−２によってリタイミングされた入力データＩ１ｂを出力データＯ１ａとして後段のＦＰＧＡに折り返すこともできる。
【００２３】
セレクタ４−２は、処理ブロック２の出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を、外部から入力されるセレクト信号ＳＥＬ２に従って選択して処理ブロック２に出力する。こうして、セレクタ４−２は、後段のＦＰＧＡから入力されＦＩＦＯレジスタ３−２によってリタイミングされた入力データＩ１ｂを処理ブロック２に出力することもできるし、処理ブロック２から出力されたデータを処理ブロック２の入力に折り返すこともできる。
【００２４】
なお、本実施の形態において、セレクタ４−１，４−２は必須の構成要件ではない。また、図１に示した例は、処理ブロック２の後段（図１の右側）に設けたセレクタ４−１，４−２でデータを双方向に折り返すことができるようにした例であるが、処理ブロック２の前段（図１の左側）にセレクタを設けることも可能である。
【００２５】
処理ブロック２は、ＦＩＦＯレジスタ３−１の出力データおよびセレクタ４−２の出力データを、ユーザによってプログラミングされた論理で処理する。処理ブロック２の右方向への出力データは、セレクタ４−１，４−２に出力される。処理ブロック２の左方向への出力データは、出力データＯ１ｂとして外部に出力される。
ＦＰＧＡ１の内部クロックＣＫは、出力クロックＯＣＫ１ａ，ＯＣＫ１ｂとして外部に出力される。
【００２６】
図３は処理ブロック２によって構成される論理回路が入出力端子直結回路（以下、スルー回路と呼ぶ）になるようにプログラミングした場合のＦＰＧＡ１の内部回路構成を示すブロック図である。この場合、ＦＩＦＯレジスタ３−１から入力されたデータは、そのままセレクタ４−１，４−２に出力される。また、セレクタ４−２から入力されたデータは、そのまま出力データＯ１ｂとして外部に出力される。
【００２７】
このように、設計の初期段階で処理ブロック２の設計完了前であっても、処理ブロック２内部の入出力端子を直結することで通信路を形成することができる。したがって、複数のＦＰＧＡ間の接続検証が設計の初期段階から可能になる。
【００２８】
図４は本実施の形態のＦＰＧＡ１を組み合わせた通信システムの例を示すブロック図である。第１のＦＰＧＡ１−１、第２のＦＰＧＡ１−２および第３のＦＰＧＡ１−３の内部構成は図１、図３で説明したとおりである。
第１のＦＰＧＡ１−１は、システム外からの入力データＩ１ａと入力クロックＩＣＫ１ａとを入力とし、入力データＩ１ａを処理して、出力データＯ１ａと出力クロックＯＣＫ１ａとを出力する。出力データＯ１ａと出力クロックＯＣＫ１ａとは、それぞれ入力データＩ２ａ、入力クロックＩＣＫ２ａとして第２のＦＰＧＡ１−２に入力される。
【００２９】
第２のＦＰＧＡ１−２は、入力データＩ２ａを処理して、出力データＯ２ａと出力クロックＯＣＫ２ａとを出力する。出力データＯ２ａと出力クロックＯＣＫ２ａとは、それぞれ入力データＩ３ａ、入力クロックＩＣＫ３ａとして第３のＦＰＧＡ１−３に入力される。第３のＦＰＧＡ１−３は、入力データＩ３ａを処理して、出力データＯ３ａと出力クロックＯＣＫ３ａとをシステム外に出力する。
【００３０】
また、第３のＦＰＧＡ１−３は、システム外からの入力データＩ３ｂと入力クロックＩＣＫ３ｂとを入力とし、入力データＩ３ｂを処理して、出力データＯ３ｂと出力クロックＯＣＫ３ｂとを出力する。出力データＯ３ｂと出力クロックＯＣＫ３ｂとは、それぞれ入力データＩ２ｂ、入力クロックＩＣＫ２ｂとして第２のＦＰＧＡ１−２に入力される。
【００３１】
第２のＦＰＧＡ１−２は、入力データＩ２ｂを処理して、出力データＯ２ｂと出力クロックＯＣＫ２ｂとを出力する。出力データＯ２ｂと出力クロックＯＣＫ２ｂとは、それぞれ入力データＩ１ｂ、入力クロックＩＣＫ１ｂとして第１のＦＰＧＡ１−１に入力される。第１のＦＰＧＡ１−１は、入力データＩ１ｂを処理して、出力データＯ１ｂと出力クロックＯＣＫ１ｂとをシステム外に出力する。
以上のように複数のＦＰＧＡ１−１〜１−３においてデータの処理を繰り返し、最終のＦＰＧＡの出力データをシステム外に出力する。
【００３２】
設計の初期段階においてはシステムのインターフェイス部（以下、ＩＦ部と呼ぶ）が完成していない場合がある。そのような場合でも、本実施の形態のＦＰＧＡ１を用いればＦＰＧＡ内部のセレクタによってデータ信号を折り返すことで、設計が完成している部分の検証を進めることができる。
【００３３】
図５の例では、第３のＦＰＧＡ１−３の右側の入出力ＩＦ部の設計が完成していない。このため、完成していない入出力ＩＦ部を点線で図示している。このような場合でも、第１のＦＰＧＡ１−１内部のセレクタを用いて、第１のＦＰＧＡ１−１の処理ブロックが入力データＩ１ａを処理した結果を出力データＯ１ｂとして折り返すデータ導通を実施することにより、設計が完成している第１のＦＰＧＡ１−１とその左側の入出力ＩＦ部の検証を進めることができる。
【００３４】
図６の例では、第３のＦＰＧＡ１−３内部のセレクタを切り替えることにより、第３のＦＰＧＡ１−３の処理ブロックが入力データＩ３ａを処理した結果を出力データＯ３ｂとして折り返している。このように、ＦＰＧＡ間の接続確認は、設計が完成している入出力ＩＦ部に近いＦＰＧＡ１から順次、セレクタの折り返し機能を利用したデータ導通で検証することができる。
【００３５】
また、設計が完成したブロックの検証は入出力ＩＦ部から近い順でなくても実施できる。この場合は、検証の対象でないＦＰＧＡ１の処理ブロックをスルー回路とし、検証の対象となるＦＰＧＡ１の処理ブロックがデータを折り返すデータ導通を実施すればよい。これにより、各ＦＰＧＡ間の接続を検証した後であれば、任意のＦＰＧＡ１を検証することができる。セレクタの折り返し信号はＦＰＧＡ１に搭載されている物理スイッチもしくは折り返し用のレジスタにより発生することが可能である。
【００３６】
図７は本実施の形態の通信システムの設計・検証期間を示す図である。１００は第１のＦＰＧＡ１−１の設計・検証期間、１０１は第２のＦＰＧＡ１−２の設計・検証期間、１０２は第３のＦＰＧＡ１−３の設計・検証期間、１０３はＦＰＧＡ間の接続検証期間である。このように、本実施の形態では、図１３と比べて明らかなように、コントローラの設計・検証期間がなくなるだけでなく、各ＦＰＧＡの設計に先行してＦＰＧＡ間の接続検証もスルー回路および折り返し機能を使用することで検証可能なため、システム全体の設計・検証期間を大幅に短縮することができる。
【００３７】
図１〜図６の例では、左→右方向と右→左方向の２つのデータ伝送方向にデータパスを１つずつ持つＦＰＧＡの例で説明してきたが、例えば図８の例のように複数のデータパスを持つＦＰＧＡを用いてシステムを構成することもできる。
第２のＦＰＧＡ１−５および第４のＦＰＧＡ１−７の内部構成は図１、図３で説明したとおりである。第１のＦＰＧＡ１−４および第３のＦＰＧＡ１−６は、２つのデータ伝送方向にそれぞれ複数のデータパスを持つ。
【００３８】
第１のＦＰＧＡ１−４は、システム外からの入力データＩ１ａと入力クロックＩＣＫ１ａとを入力とし、入力データＩ１ａを処理して、出力データＯ１ａ，Ｏ１ｃと出力クロックＯＣＫ１ａ，ＯＣＫ１ｃとを出力する。出力データＯ１ａと出力クロックＯＣＫ１ａとは、それぞれ入力データＩ２ａ、入力クロックＩＣＫ２ａとして第２のＦＰＧＡ１−５に入力され、出力データＯ１ｃと出力クロックＯＣＫ１ｃとは、それぞれ入力データＩ４ａ、入力クロックＩＣＫ４ａとして第４のＦＰＧＡ１−７に入力される。
【００３９】
第２のＦＰＧＡ１−５は、入力データＩ２ａを処理して、出力データＯ２ａと出力クロックＯＣＫ２ａとを出力する。出力データＯ２ａと出力クロックＯＣＫ２ａとは、それぞれ入力データＩ３ａ、入力クロックＩＣＫ３ａとして第３のＦＰＧＡ１−６に入力される。第４のＦＰＧＡ１−７は、入力データＩ４ａを処理して、出力データＯ４ａと出力クロックＯＣＫ４ａとを出力する。出力データＯ４ａと出力クロックＯＣＫ４ａとは、それぞれ入力データＩ３ｃ、入力クロックＩＣＫ３ｃとして第３のＦＰＧＡ１−６に入力される。第３のＦＰＧＡ１−６は、入力データＩ３ａ，Ｉ３ｃを処理して、出力データＯ３ａと出力クロックＯＣＫ３ａとをシステム外に出力する。
【００４０】
また、第３のＦＰＧＡ１−６は、システム外からの入力データＩ３ｂと入力クロックＩＣＫ３ｂとを入力とし、入力データＩ３ｂを処理して、出力データＯ３ｂ，Ｏ３ｃと出力クロックＯＣＫ３ｂ，ＯＣＫ３ｃとを出力する。出力データＯ３ｂと出力クロックＯＣＫ３ｂとは、それぞれ入力データＩ２ｂ、入力クロックＩＣＫ２ｂとして第２のＦＰＧＡ１−５に入力され、出力データＯ３ｃと出力クロックＯＣＫ３ｃとは、それぞれ入力データＩ４ｂ、入力クロックＩＣＫ４ｂとして第４のＦＰＧＡ１−７に入力される。
【００４１】
第２のＦＰＧＡ１−５は、入力データＩ２ｂを処理して、出力データＯ２ｂと出力クロックＯＣＫ２ｂとを出力する。第４のＦＰＧＡ１−７は、入力データＩ４ｂを処理して、出力データＯ４ｂと出力クロックＯＣＫ４ｂとを出力する。出力データＯ２ｂと出力クロックＯＣＫ２ｂとは、それぞれ入力データＩ１ｂ、入力クロックＩＣＫ１ｂとして第１のＦＰＧＡ１−４に入力され、出力データＯ４ｂと出力クロックＯＣＫ４ｂとは、それぞれ入力データＩ１ｃ、入力クロックＩＣＫ１ｃとして第１のＦＰＧＡ１−４に入力される。第１のＦＰＧＡ１−４は、入力データＩ１ｂ，Ｉ１ｃを処理して、出力データＯ１ｂと出力クロックＯＣＫ１ｂとをシステム外に出力する。
【００４２】
第１のＦＰＧＡ１−４および第３のＦＰＧＡ１−６のように複数のデータパスを持つＦＰＧＡは、上記のようにセレクタを用いるか、あるいは処理ブロックの内部に切り替え機能部を設けることで実現することができる。
【００４３】
［第２の実施の形態］
低速の通信から高速の通信への移行期においては、図９のように低速ＩＦと高速ＩＦとを有する通信システムが必要な場合がある。
まず、高速ＩＦ側のデータパスについて説明する。第１のＦＰＧＡ１−８は、システム外からの入力データＩ１ａと入力クロックＩＣＫ１ａとを入力とし、入力データＩ１ａを処理して、出力データＯ１ａと出力クロックＯＣＫ１ａとを出力する。出力データＯ１ａと出力クロックＯＣＫ１ａとは、それぞれ入力データＩ２ａ、入力クロックＩＣＫ２ａとして第２のＦＰＧＡ１−９に入力される。
【００４４】
第２のＦＰＧＡ１−９は、入力データＩ２ａを処理して、出力データＯ２ａと出力クロックＯＣＫ２ａとを出力する。出力データＯ２ａと出力クロックＯＣＫ２ａとは、それぞれ入力データＩ３ａ、入力クロックＩＣＫ３ａとして第３のＦＰＧＡ１−１０に入力される。第３のＦＰＧＡ１−１０は、入力データＩ３ａを処理して、出力データＯ３ａと出力クロックＯＣＫ３ａとをシステム外に出力する。
【００４５】
また、第３のＦＰＧＡ１−１０は、システム外からの入力データＩ３ｂと入力クロックＩＣＫ３ｂとを入力とし、入力データＩ３ｂを処理して、出力データＯ３ｂと出力クロックＯＣＫ３ｂとを出力する。出力データＯ３ｂと出力クロックＯＣＫ３ｂとは、それぞれ入力データＩ２ｂ、入力クロックＩＣＫ２ｂとして第２のＦＰＧＡ１−９に入力される。
【００４６】
第２のＦＰＧＡ１−９は、入力データＩ２ｂを処理して、出力データＯ２ｂと出力クロックＯＣＫ２ｂとを出力する。出力データＯ２ｂと出力クロックＯＣＫ２ｂとは、それぞれ入力データＩ１ｂ、入力クロックＩＣＫ１ｂとして第１のＦＰＧＡ１−８に入力される。第１のＦＰＧＡ１−８は、入力データＩ１ｂを処理して、出力データＯ１ｂと出力クロックＯＣＫ１ｂとをシステム外に出力する。以上が、高速ＩＦ側のデータの流れである。
【００４７】
次に、低速ＩＦ側のデータパスについて説明する。第１のＦＰＧＡ１−８は、システム外からの入力データＩ１ｃと入力クロックＩＣＫ１ｃとを入力とし、入力データＩ１ｃを処理して、出力データＯ１ｃと出力クロックＯＣＫ１ｃとを出力する。出力データＯ１ｃと出力クロックＯＣＫ１ｃとは、それぞれ入力データＩ２ｃ、入力クロックＩＣＫ２ｃとして第２のＦＰＧＡ１−９に入力される。
【００４８】
第２のＦＰＧＡ１−９は、入力データＩ２ｃを処理して、出力データＯ２ｃと出力クロックＯＣＫ２ｃとを出力する。出力データＯ２ｃと出力クロックＯＣＫ２ｃとは、それぞれ入力データＩ３ｃ、入力クロックＩＣＫ３ｃとして第３のＦＰＧＡ１−１０に入力される。第３のＦＰＧＡ１−１０は、入力データＩ３ｃを処理して、出力データＯ３ｃと出力クロックＯＣＫ３ｃとをシステム外に出力する。
【００４９】
また、第３のＦＰＧＡ１−１０は、システム外からの入力データＩ３ｄと入力クロックＩＣＫ３ｄとを入力とし、入力データＩ３ｄを処理して、出力データＯ３ｄと出力クロックＯＣＫ３ｄとを出力する。出力データＯ３ｄと出力クロックＯＣＫ３ｄとは、それぞれ入力データＩ２ｄ、入力クロックＩＣＫ２ｄとして第２のＦＰＧＡ１−９に入力される。
【００５０】
第２のＦＰＧＡ１−９は、入力データＩ２ｄを処理して、出力データＯ２ｄと出力クロックＯＣＫ２ｄとを出力する。出力データＯ２ｄと出力クロックＯＣＫ２ｄとは、それぞれ入力データＩ１ｄ、入力クロックＩＣＫ１ｄとして第１のＦＰＧＡ１−８に入力される。第１のＦＰＧＡ１−８は、入力データＩ１ｄを処理して、出力データＯ１ｄと出力クロックＯＣＫ１ｄとをシステム外に出力する。以上が、低速ＩＦ側のデータの流れである。
【００５１】
以上のようなシステムにおいても、低速または高速の入出力ＩＦ部の設計が遅れることがある。図１０の例では、低速側の入出力ＩＦ部の設計が完成していない。このため、完成していない入出力ＩＦ部を点線で図示している。そこで、図１０に示すように高速ＩＦ側から入力した低速用データを第１のＦＰＧＡ１−８の内部で低速側に振り分け、第１のＦＰＧＡ１−８、第２のＦＰＧＡ１−９、第３のＦＰＧＡ１−１０で処理されたデータを第３のＦＰＧＡ１−１０の内部で高速ＩＦ側に戻すことで、複数のＦＰＧＡ間の低速側の接続検証、および低速側のブロックの検証が可能になる。
【００５２】
本実施の形態の第１のＦＰＧＡ１−８の内部回路構成を図１１に示す。ＦＰＧＡ１−８は、外部からユーザによってプログラミング可能な論理回路である高速用の処理ブロック２ａと、低速用の処理ブロック２ｂと、入力データＩ１ａ，Ｉ１ｂ，Ｉ１ｃ，Ｉ１ｄをＦＰＧＡ１−８の内部クロックＣＫでリタイミングするＦＩＦＯレジスタ３−１，３−２，３−３，３−４と、処理ブロック２ａの出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を選択して外部に出力するセレクタ４−１と、処理ブロック２ａの出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を選択して入力データとして処理ブロック２ａに入力するセレクタ４−２と、処理ブロック２ｂの出力データとＦＩＦＯレジスタ３−４の出力データのうちどちらか一方を選択して外部に出力するセレクタ４−３と、処理ブロック２ｂの出力データとＦＩＦＯレジスタ３−４の出力データのうちどちらか一方を選択して入力データとして処理ブロック２ｂに入力するセレクタ４−４と、ＦＩＦＯレジスタ３−１の出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして処理ブロック２ａ，２ｂに振り分けて入力する振り分け処理部５と、処理ブロック２ａの出力データと処理ブロック２ｂの出力データとを高速用の外部出力端子に出力する合流処理部６とを有する。
【００５３】
第１の実施の形態と同様に、ＦＩＦＯレジスタ３−１，３−２，３−３，３−４は、内部クロックＣＫの所定のタイミング（例えば内部クロックＣＫの立ち上がり）で入力データＩ１ａ，Ｉ１ｂ，Ｉ１ｃ，Ｉ１ｄをリタイミングして、内部データを出力する。
【００５４】
セレクタ４−１は、処理ブロック２ａの出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を、外部から入力されるセレクト信号ＳＥＬ１に従って選択して、出力データＯ１ａとして出力する。セレクタ４−２は、処理ブロック２ａの出力データとＦＩＦＯレジスタ３−２の出力データのうちどちらか一方を、外部から入力されるセレクト信号ＳＥＬ２に従って選択して処理ブロック２ａに出力する。
【００５５】
セレクタ４−３は、処理ブロック２ｂの出力データとＦＩＦＯレジスタ３−４の出力データのうちどちらか一方を、外部から入力されるセレクト信号ＳＥＬ３に従って選択して、出力データＯ１ｃとして出力する。セレクタ４−４は、処理ブロック２ｂの出力データとＦＩＦＯレジスタ３−４の出力データのうちどちらか一方を、外部から入力されるセレクト信号ＳＥＬ４に従って選択して処理ブロック２ｂに出力する。
【００５６】
振り分け処理部５は、ＦＩＦＯレジスタ３−１の出力データに含まれる例えば宛先アドレス等の識別子に基づいて、ＦＩＦＯレジスタ３−１の出力データが高速用データか低速用データかを判別し、高速用データであれば処理ブロック２ａに出力し、低速用データであれば処理ブロック２ｂに出力する。
【００５７】
なお、振り分け処理部５は、外部からユーザによってプログラミング可能な回路である。以上のような振り分け処理を実行するか、あるいは振り分け処理を実行せずに、ＦＩＦＯレジスタ３−１の出力データをそのまま処理ブロック２ａに出力するかは、ユーザによって任意に設定することができる。
【００５８】
合流処理部６は、高速側の処理ブロック２ａの出力データを高速側の出力データＯ１ｂとして出力すると共に、低速側の処理ブロック２ｂの出力データも出力データＯ１ｂとして出力する。こうして、合流処理部６は、処理ブロック２ｂで処理されたデータを高速ＩＦ側に出力することができる。
【００５９】
なお、合流処理部６は、外部からユーザによってプログラミング可能な回路である。以上のような合流処理を実行するかしないかは、ユーザによって任意に設定することができる。
【００６０】
処理ブロック２ａは、振り分け処理部５の出力データとセレクタ４−２の出力データとを、ユーザによってプログラミングされた論理で処理する。処理ブロック２ａの右方向への出力データは、セレクタ４−１，４−２に出力される。処理ブロック２ａの左方向への出力データは、合流処理部６を介して出力データＯ１ｂとして外部に出力される。
【００６１】
処理ブロック２ｂは、ＦＩＦＯレジスタ３−３の出力データまたは振り分け処理部５の出力データと、セレクタ４−４の出力データとを、ユーザによってプログラミングされた論理で処理する。処理ブロック２ｂの右方向への出力データは、セレクタ４−３，４−４に出力される。処理ブロック２ｂの左方向への出力データは、出力データＯ１ｄとして外部に出力されるか、あるいは合流処理部６を介して出力データＯ１ｂとして外部に出力される。
ＦＰＧＡ１−８の内部クロックＣＫは、出力クロックＯＣＫ１ａ，ＯＣＫ１ｂ，ＯＣＫ１ｃ，ＯＣＫ１ｄとして外部に出力される。
【００６２】
以上のような第１のＦＰＧＡ１−８の構成により、図１０に示したデータの振り分けと合流を実現することができる。
第２のＦＰＧＡ１−９、第３のＦＰＧＡ１−１０も、第１のＦＰＧＡ１−８と同様の構成を有する。
【００６３】
なお、本実施の形態において、セレクタ４−１〜４−４は必須の構成要件ではない。また、図１１に示した例は、処理ブロック２ａ，２ｂの後段（図１１の右側）に設けたセレクタ４−１〜４−４でデータを双方向に折り返すことができるようにした例であるが、処理ブロック２ａ，２ｂの前段（図１１の左側）にセレクタを設けることも可能である。
【００６４】
また、本実施の形態では、高速側の入出力ＩＦ部に振り分け処理部５と合流処理部６を設けているが、これらを低速側の入出力ＩＦ部に設けてもよい。すなわち、振り分け処理部は、ＦＩＦＯレジスタ３−３の出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして処理ブロック２ａ，２ｂに振り分けて入力するようにしてもよく、合流処理部は、処理ブロック２ａの出力データと処理ブロック２ｂの出力データとを低速用の外部出力端子に出力するようにしてもよい。
【産業上の利用可能性】
【００６５】
本発明は、フィールド・プログラマブル・ゲートアレイ等の集積回路に適用することができる。
【符号の説明】
【００６６】
１，１−１〜１−１０…ＦＰＧＡ、２，２ａ，２ｂ…処理ブロック、３−１〜３−４…ＦＩＦＯレジスタ、４−１〜４−４…セレクタ、５…振り分け処理部、６…合流処理部。
【図１】
0005451542.tif 000002
【図２】
0005451542.tif 000003
【図３】
0005451542.tif 000004
【図４】
0005451542.tif 000005
【図５】
0005451542.tif 000006
【図６】
0005451542.tif 000007
【図７】
0005451542.tif 000008
【図８】
0005451542.tif 000009
【図９】
0005451542.tif 000010
【図１０】
0005451542.tif 000011
【図１１】
0005451542.tif 000012
【図１２】
0005451542.tif 000013
【図１３】
0005451542.tif 000014