集積回路
【課題】ユーザによってプログラミング可能な集積回路を複数用いるシステムの設計・検証期間を短縮する。
【解決手段】集積回路であるフィールド・プログラマブル・ゲートアレイ1は、外部からユーザによってプログラミング可能な論理回路である処理ブロック2と、外部からの入力データI1a,I1bを内部クロックCKでリタイミングするFIFOレジスタ3−1,3−2と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−1と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して入力データとして処理ブロック2に入力するセレクタ4−2とを有する。
【解決手段】集積回路であるフィールド・プログラマブル・ゲートアレイ1は、外部からユーザによってプログラミング可能な論理回路である処理ブロック2と、外部からの入力データI1a,I1bを内部クロックCKでリタイミングするFIFOレジスタ3−1,3−2と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−1と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して入力データとして処理ブロック2に入力するセレクタ4−2とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信フレーム処理などを行うシステムに使用される集積回路に係り、特に外部からユーザによってプログラミング可能な論理回路であるフィールド・プログラマブル・ゲートアレイ等の集積回路に関するものである。
【背景技術】
【0002】
フィールド・プログラマブル・ゲートアレイ(Field Programmable Gate Array、以下、FPGAと呼ぶ)のような再構成可能なハードウェアは、設計完了後短期間でシステム構築が可能なこと、設計変更になっても早期にハードウェアの変更が可能なことから様々な分野のシステムへの応用がされている。また、適用されるシステム規模も年々増大してきて、FPGA自体の大規模化も進められているが、複数のFPGAを組み合わせてシステムを実現することも少なくない。
【0003】
通信の分野においては、仕様を短期間にハードウェア化して確認できることからFPGAの主要な適用分野となっていたが、近年の通信速度の飛躍的向上およびセキュリティ強化等の処理の高度化により、複数のFPGAを用いてシステムを構築する例が多くなっている。
【0004】
このようなことから、これまでにも複数のFPGAにより通信システムを実現する技術が開発されてきた(特許文献1、特許文献2、特許文献3、特許文献4参照)。図12は複数のFPGAによる従来の通信システムの構成例を示すブロック図である。この通信システムでは、各FPGA1000をバス1001,1002で相互に接続し、これらのFPGA1000をコントローラ1003で集中制御する方式を取っている。図12におけるCKはクロック、IN1,IN2は入力データ、OUT1,OUT2は出力データである。
【0005】
図13は、複数のFPGAを同時平行で開発した場合の従来の通信システムの設計・検証期間を示す図である。2000は第1のFPGAの設計・検証期間、2001は第2のFPGAの設計・検証期間、2002は第3のFPGAの設計・検証期間、2003はコントローラの設計・検証期間、2004はFPGA間の接続検証期間である。このように、図12に示した通信システムの設計・検証においては、一番開発に時間のかかった第3のFPGAの設計・検証期間に、コントローラの設計・検証期間とFPGA間の接続検証期間とが加算される。
通信システムの開発期間を短縮する技術としては、FPGAとASIC(Application Specific Integrated Circuit)のネットリストを作成する方法が提案されている(特許文献5参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−353950号公報
【特許文献2】特開2001−186010号公報
【特許文献3】特開2002−314579号公報
【特許文献4】特開2005−011344号公報
【特許文献5】特開2007−102813号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来技術のようにバスを介して複数のFPGAを組み合わせることにより構成されるシステムでは、1つのFPGA内に閉じた処理の場合は効率的に処理できるが、通信フレーム処理のようにあるFPGAのブロックの出力が次のFPGAのブロックの入力になるようなパイプライン的な処理の場合はバスの制御が複雑になり、バス制御が行い難くなるという第1の課題があった。また、バス用のクロックを統一する必要があり、複数のFPGAの同期を取って動作させなければいけないという第2の課題があった。
【0008】
これら2つの課題を解決してシステム化を行うには、開発の複雑さに加えて、各FPGAに入れるべきブロックの設計が完成してからシステム化の設計をせざるを得ず、トータルの開発期間がかかるという第3の課題があった。
なお、以上のような課題はFPGAに限らず、製造後にユーザによってプログラミング可能な集積回路を用いるシステムであれば、同様に発生する。
【0009】
本発明は、上記課題を解決するためになされたもので、ユーザによってプログラミング可能な集積回路を複数用いるシステムの設計・検証期間を短縮することを目的とする。
【課題を解決するための手段】
【0010】
本発明の集積回路は、外部からプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロックと、外部からの入力データを集積回路の内部クロックでリタイミングして前記処理ブロックに入力するFIFOレジスタとを備えることを特徴とするものである。
また、本発明の集積回路の1構成例は、さらに、前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第1のセレクト信号に応じて選択して外部に出力する第1のセレクタと、前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第2のセレクト信号に応じて選択して入力データとして前記処理ブロックに入力する第2のセレクタとを備えることを特徴とするものである。
【0011】
また、本発明の集積回路の1構成例において、前記処理ブロックは、高速用の処理ブロックと、低速用の処理ブロックとからなり、前記FIFOレジスタは、高速用の入力データを前記内部クロックでリタイミングする高速用のFIFOレジスタと、低速用の入力データを前記内部クロックでリタイミングする低速用のFIFOレジスタとからなり、さらに、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして前記高速用の処理ブロックと前記低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、前記高速用の処理ブロックの出力データと前記低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを備えることを特徴とするものである。
また、本発明の集積回路の1構成例において、前記振り分け処理手段は、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データに含まれる識別子に基づいて、この出力データが高速用データか低速用データかを判別し、高速用データであれば前記高速用の処理ブロックに入力し、低速用データであれば前記低速用の処理ブロックに入力することを特徴とするものである。
【発明の効果】
【0012】
本発明によれば、外部からの入力データを集積回路の内部クロックでリタイミングして処理ブロックに入力するFIFOレジスタを設けることにより、集積回路を複数搭載するシステムにおいて、複数の集積回路を接続するバス、バスを制御するコントローラおよびシステム共通のクロックが不要となる。本発明では、接続される集積回路間のみでタイミング調整を図れるので、システム設計の簡易化を実現することができる。また、本発明では、システム全体でのタイミング調整が不要になるので、全ての設計ブロックの設計完了前に集積回路間の接続検証や完成した設計ブロックの検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【0013】
また、本発明では、処理ブロックの出力データとFIFOレジスタの出力データのうちどちらか一方を第1のセレクト信号に応じて選択して外部に出力する第1のセレクタと、処理ブロックの出力データとFIFOレジスタの出力データのうちどちらか一方を第2のセレクト信号に応じて選択して入力データとして処理ブロックに入力する第2のセレクタとを設けることにより、集積回路を複数搭載したシステムの設計時において、システム外へのインターフェイスの設計が一部しか完成していない場合においても、第1、第2のセレクタを切り替えて、データを入力された方向に戻す折り返しを行うことにより、設計が完成している部分の検証を進めることができる。その結果、本発明では、従来のように処理ブロックの設計・検証を完成させてから上位のブロック間の接続検証を行うのではなく、処理ブロックの設計・検証と同時期に集積回路間の接続検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【0014】
また、本発明では、高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして高速用の処理ブロックと低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、高速用の処理ブロックの出力データと低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを設けることにより、集積回路を複数搭載したシステムの設計時において、例えば低速側のインターフェイスの設計が一部しか完成していない場合においても、高速側のインターフェイスから入力した低速用データを入口側の集積回路の内部で低速用の処理ブロックに振り分け、出口側の集積回路の内部で高速側のインターフェイスに戻すことができるので、設計が完成している部分の検証を進めることができる。その結果、本発明では、従来のように処理ブロックの設計・検証を完成させてから上位のブロック間の接続検証を行うのではなく、処理ブロックの設計・検証と同時期に集積回路間の接続検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の第1の実施の形態に係る集積回路であるFPGAの内部回路構成例を示すブロック図である。
【図2】本発明の第1の実施の形態に係るFIFOレジスタの動作を説明するタイミングチャートである。
【図3】論理回路が入出力端子直結回路になるようにプログラミングした場合のFPGAの内部回路構成を示すブロック図である。
【図4】本発明の第1の実施の形態に係るFPGAを組み合わせた通信システムの例を示すブロック図である。
【図5】本発明の第1の実施の形態においてFPGAの内部でデータを折り返す例を示す図である。
【図6】本発明の第1の実施の形態においてFPGAの内部でデータを折り返す別の例を示す図である。
【図7】本発明の第1の実施の形態に係る通信システムの設計・検証期間を示す図である。
【図8】本発明の第1の実施の形態に係るFPGAを組み合わせた通信システムの別の例を示すブロック図である。
【図9】本発明の第2の実施の形態に係るFPGAを組み合わせた通信システムの例を示すブロック図である。
【図10】本発明の第2の実施の形態において高速IF側から入力した低速用データを低速側に振り分ける例を示す図である。
【図11】本発明の第2の実施の形態に係る集積回路であるFPGAの内部回路構成例を示すブロック図である。
【図12】複数のFPGAによる従来の通信システムの構成例を示すブロック図である。
【図13】複数のFPGAを同時平行で開発した場合の従来の通信システムの設計・検証期間を示す図である。
【発明を実施するための形態】
【0016】
[第1の実施の形態]
以下、本発明の実施の形態について図面を参照して説明する。図1は本発明の第1の実施の形態に係る集積回路であるFPGAの内部回路構成例を示すブロック図である。
FPGA1は、外部からユーザによってプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロック2と、外部からの入力データI1a,I1bをFPGA1の内部クロックCKでリタイミングするFIFO(First-In First-Out)レジスタ3−1,3−2と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−1と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して入力データとして処理ブロック2に入力するセレクタ4−2とを有する。
【0017】
図1において、O1a,O1bは出力データ、ICK1a,ICK1bは入力クロック、OCK1a,OCK1bは出力クロック、SEL1,SEL2はセレクタ4−1,4−2を制御するためのセレクト信号である。
【0018】
一般に、FPGA外部のクロックとFPGAの内部クロックCKとは位相差がある。そこで、本実施の形態のFIFOレジスタ3−1は、図2に示すように内部クロックCKの所定のタイミング(例えば内部クロックCKの立ち上がり)で入力データI1aをリタイミングして、内部データD1を出力する。同様に、FIFOレジスタ3−2も、内部クロックCKの所定のタイミングで入力データI1bをリタイミングして、内部データを出力する。
【0019】
こうして、本実施の形態では、FIFOレジスタ3−1,3−2によって入力データI1a,I1bをリタイミングすることで、外部のクロックICK1a,ICK1bと内部クロックCKとの位相差によるデータの取りこぼしを防ぐことができ、FPGA1内の処理ブロック2は単一のクロックCKに従ってデータを処理することができる。
【0020】
本実施の形態によれば、複数のFPGAを組み合わせる際に、出力側のFPGAと入力側のFPGAの2つのFPGAの間の位相調整を行えば良いので、3つ以上のFPGAに同位相のクロックを供給する場合に比べて容易にFPGA間の接続を実現することができる。本実施の形態では、FPGAを接続するバスおよびバスを制御するコントローラも不要になる。
【0021】
さらに、本実施の形態では、セレクタ4−1,4−2をFPGA1内に設け、セレクタ4−1,4−2の選択動作を外部から入力されるセレクト信号SEL1,SEL2によって切り替えることで、データを入力された方向に戻す折り返し機能を実現することができる。
【0022】
セレクタ4−1は、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL1に従って選択して、出力データO1aとして出力する。こうして、セレクタ4−1は、処理ブロック2から出力されたデータを出力データO1aとして後段のFPGA(不図示)に送り出すこともできるし、後段のFPGAから入力されFIFOレジスタ3−2によってリタイミングされた入力データI1bを出力データO1aとして後段のFPGAに折り返すこともできる。
【0023】
セレクタ4−2は、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL2に従って選択して処理ブロック2に出力する。こうして、セレクタ4−2は、後段のFPGAから入力されFIFOレジスタ3−2によってリタイミングされた入力データI1bを処理ブロック2に出力することもできるし、処理ブロック2から出力されたデータを処理ブロック2の入力に折り返すこともできる。
【0024】
なお、本実施の形態において、セレクタ4−1,4−2は必須の構成要件ではない。また、図1に示した例は、処理ブロック2の後段(図1の右側)に設けたセレクタ4−1,4−2でデータを双方向に折り返すことができるようにした例であるが、処理ブロック2の前段(図1の左側)にセレクタを設けることも可能である。
【0025】
処理ブロック2は、FIFOレジスタ3−1の出力データおよびセレクタ4−2の出力データを、ユーザによってプログラミングされた論理で処理する。処理ブロック2の右方向への出力データは、セレクタ4−1,4−2に出力される。処理ブロック2の左方向への出力データは、出力データO1bとして外部に出力される。
FPGA1の内部クロックCKは、出力クロックOCK1a,OCK1bとして外部に出力される。
【0026】
図3は処理ブロック2によって構成される論理回路が入出力端子直結回路(以下、スルー回路と呼ぶ)になるようにプログラミングした場合のFPGA1の内部回路構成を示すブロック図である。この場合、FIFOレジスタ3−1から入力されたデータは、そのままセレクタ4−1,4−2に出力される。また、セレクタ4−2から入力されたデータは、そのまま出力データO1bとして外部に出力される。
【0027】
このように、設計の初期段階で処理ブロック2の設計完了前であっても、処理ブロック2内部の入出力端子を直結することで通信路を形成することができる。したがって、複数のFPGA間の接続検証が設計の初期段階から可能になる。
【0028】
図4は本実施の形態のFPGA1を組み合わせた通信システムの例を示すブロック図である。第1のFPGA1−1、第2のFPGA1−2および第3のFPGA1−3の内部構成は図1、図3で説明したとおりである。
第1のFPGA1−1は、システム外からの入力データI1aと入力クロックICK1aとを入力とし、入力データI1aを処理して、出力データO1aと出力クロックOCK1aとを出力する。出力データO1aと出力クロックOCK1aとは、それぞれ入力データI2a、入力クロックICK2aとして第2のFPGA1−2に入力される。
【0029】
第2のFPGA1−2は、入力データI2aを処理して、出力データO2aと出力クロックOCK2aとを出力する。出力データO2aと出力クロックOCK2aとは、それぞれ入力データI3a、入力クロックICK3aとして第3のFPGA1−3に入力される。第3のFPGA1−3は、入力データI3aを処理して、出力データO3aと出力クロックOCK3aとをシステム外に出力する。
【0030】
また、第3のFPGA1−3は、システム外からの入力データI3bと入力クロックICK3bとを入力とし、入力データI3bを処理して、出力データO3bと出力クロックOCK3bとを出力する。出力データO3bと出力クロックOCK3bとは、それぞれ入力データI2b、入力クロックICK2bとして第2のFPGA1−2に入力される。
【0031】
第2のFPGA1−2は、入力データI2bを処理して、出力データO2bと出力クロックOCK2bとを出力する。出力データO2bと出力クロックOCK2bとは、それぞれ入力データI1b、入力クロックICK1bとして第1のFPGA1−1に入力される。第1のFPGA1−1は、入力データI1bを処理して、出力データO1bと出力クロックOCK1bとをシステム外に出力する。
以上のように複数のFPGA1−1〜1−3においてデータの処理を繰り返し、最終のFPGAの出力データをシステム外に出力する。
【0032】
設計の初期段階においてはシステムのインターフェイス部(以下、IF部と呼ぶ)が完成していない場合がある。そのような場合でも、本実施の形態のFPGA1を用いればFPGA内部のセレクタによってデータ信号を折り返すことで、設計が完成している部分の検証を進めることができる。
【0033】
図5の例では、第3のFPGA1−3の右側の入出力IF部の設計が完成していない。このため、完成していない入出力IF部を点線で図示している。このような場合でも、第1のFPGA1−1内部のセレクタを用いて、第1のFPGA1−1の処理ブロックが入力データI1aを処理した結果を出力データO1bとして折り返すデータ導通を実施することにより、設計が完成している第1のFPGA1−1とその左側の入出力IF部の検証を進めることができる。
【0034】
図6の例では、第3のFPGA1−3内部のセレクタを切り替えることにより、第3のFPGA1−3の処理ブロックが入力データI3aを処理した結果を出力データO3bとして折り返している。このように、FPGA間の接続確認は、設計が完成している入出力IF部に近いFPGA1から順次、セレクタの折り返し機能を利用したデータ導通で検証することができる。
【0035】
また、設計が完成したブロックの検証は入出力IF部から近い順でなくても実施できる。この場合は、検証の対象でないFPGA1の処理ブロックをスルー回路とし、検証の対象となるFPGA1の処理ブロックがデータを折り返すデータ導通を実施すればよい。これにより、各FPGA間の接続を検証した後であれば、任意のFPGA1を検証することができる。セレクタの折り返し信号はFPGA1に搭載されている物理スイッチもしくは折り返し用のレジスタにより発生することが可能である。
【0036】
図7は本実施の形態の通信システムの設計・検証期間を示す図である。100は第1のFPGA1−1の設計・検証期間、101は第2のFPGA1−2の設計・検証期間、102は第3のFPGA1−3の設計・検証期間、103はFPGA間の接続検証期間である。このように、本実施の形態では、図13と比べて明らかなように、コントローラの設計・検証期間がなくなるだけでなく、各FPGAの設計に先行してFPGA間の接続検証もスルー回路および折り返し機能を使用することで検証可能なため、システム全体の設計・検証期間を大幅に短縮することができる。
【0037】
図1〜図6の例では、左→右方向と右→左方向の2つのデータ伝送方向にデータパスを1つずつ持つFPGAの例で説明してきたが、例えば図8の例のように複数のデータパスを持つFPGAを用いてシステムを構成することもできる。
第2のFPGA1−5および第4のFPGA1−7の内部構成は図1、図3で説明したとおりである。第1のFPGA1−4および第3のFPGA1−6は、2つのデータ伝送方向にそれぞれ複数のデータパスを持つ。
【0038】
第1のFPGA1−4は、システム外からの入力データI1aと入力クロックICK1aとを入力とし、入力データI1aを処理して、出力データO1a,O1cと出力クロックOCK1a,OCK1cとを出力する。出力データO1aと出力クロックOCK1aとは、それぞれ入力データI2a、入力クロックICK2aとして第2のFPGA1−5に入力され、出力データO1cと出力クロックOCK1cとは、それぞれ入力データI4a、入力クロックICK4aとして第4のFPGA1−7に入力される。
【0039】
第2のFPGA1−5は、入力データI2aを処理して、出力データO2aと出力クロックOCK2aとを出力する。出力データO2aと出力クロックOCK2aとは、それぞれ入力データI3a、入力クロックICK3aとして第3のFPGA1−6に入力される。第4のFPGA1−7は、入力データI4aを処理して、出力データO4aと出力クロックOCK4aとを出力する。出力データO4aと出力クロックOCK4aとは、それぞれ入力データI3c、入力クロックICK3cとして第3のFPGA1−6に入力される。第3のFPGA1−6は、入力データI3a,I3cを処理して、出力データO3aと出力クロックOCK3aとをシステム外に出力する。
【0040】
また、第3のFPGA1−6は、システム外からの入力データI3bと入力クロックICK3bとを入力とし、入力データI3bを処理して、出力データO3b,O3cと出力クロックOCK3b,OCK3cとを出力する。出力データO3bと出力クロックOCK3bとは、それぞれ入力データI2b、入力クロックICK2bとして第2のFPGA1−5に入力され、出力データO3cと出力クロックOCK3cとは、それぞれ入力データI4b、入力クロックICK4bとして第4のFPGA1−7に入力される。
【0041】
第2のFPGA1−5は、入力データI2bを処理して、出力データO2bと出力クロックOCK2bとを出力する。第4のFPGA1−7は、入力データI4bを処理して、出力データO4bと出力クロックOCK4bとを出力する。出力データO2bと出力クロックOCK2bとは、それぞれ入力データI1b、入力クロックICK1bとして第1のFPGA1−4に入力され、出力データO4bと出力クロックOCK4bとは、それぞれ入力データI1c、入力クロックICK1cとして第1のFPGA1−4に入力される。第1のFPGA1−4は、入力データI1b,I1cを処理して、出力データO1bと出力クロックOCK1bとをシステム外に出力する。
【0042】
第1のFPGA1−4および第3のFPGA1−6のように複数のデータパスを持つFPGAは、上記のようにセレクタを用いるか、あるいは処理ブロックの内部に切り替え機能部を設けることで実現することができる。
【0043】
[第2の実施の形態]
低速の通信から高速の通信への移行期においては、図9のように低速IFと高速IFとを有する通信システムが必要な場合がある。
まず、高速IF側のデータパスについて説明する。第1のFPGA1−8は、システム外からの入力データI1aと入力クロックICK1aとを入力とし、入力データI1aを処理して、出力データO1aと出力クロックOCK1aとを出力する。出力データO1aと出力クロックOCK1aとは、それぞれ入力データI2a、入力クロックICK2aとして第2のFPGA1−9に入力される。
【0044】
第2のFPGA1−9は、入力データI2aを処理して、出力データO2aと出力クロックOCK2aとを出力する。出力データO2aと出力クロックOCK2aとは、それぞれ入力データI3a、入力クロックICK3aとして第3のFPGA1−10に入力される。第3のFPGA1−10は、入力データI3aを処理して、出力データO3aと出力クロックOCK3aとをシステム外に出力する。
【0045】
また、第3のFPGA1−10は、システム外からの入力データI3bと入力クロックICK3bとを入力とし、入力データI3bを処理して、出力データO3bと出力クロックOCK3bとを出力する。出力データO3bと出力クロックOCK3bとは、それぞれ入力データI2b、入力クロックICK2bとして第2のFPGA1−9に入力される。
【0046】
第2のFPGA1−9は、入力データI2bを処理して、出力データO2bと出力クロックOCK2bとを出力する。出力データO2bと出力クロックOCK2bとは、それぞれ入力データI1b、入力クロックICK1bとして第1のFPGA1−8に入力される。第1のFPGA1−8は、入力データI1bを処理して、出力データO1bと出力クロックOCK1bとをシステム外に出力する。以上が、高速IF側のデータの流れである。
【0047】
次に、低速IF側のデータパスについて説明する。第1のFPGA1−8は、システム外からの入力データI1cと入力クロックICK1cとを入力とし、入力データI1cを処理して、出力データO1cと出力クロックOCK1cとを出力する。出力データO1cと出力クロックOCK1cとは、それぞれ入力データI2c、入力クロックICK2cとして第2のFPGA1−9に入力される。
【0048】
第2のFPGA1−9は、入力データI2cを処理して、出力データO2cと出力クロックOCK2cとを出力する。出力データO2cと出力クロックOCK2cとは、それぞれ入力データI3c、入力クロックICK3cとして第3のFPGA1−10に入力される。第3のFPGA1−10は、入力データI3cを処理して、出力データO3cと出力クロックOCK3cとをシステム外に出力する。
【0049】
また、第3のFPGA1−10は、システム外からの入力データI3dと入力クロックICK3dとを入力とし、入力データI3dを処理して、出力データO3dと出力クロックOCK3dとを出力する。出力データO3dと出力クロックOCK3dとは、それぞれ入力データI2d、入力クロックICK2dとして第2のFPGA1−9に入力される。
【0050】
第2のFPGA1−9は、入力データI2dを処理して、出力データO2dと出力クロックOCK2dとを出力する。出力データO2dと出力クロックOCK2dとは、それぞれ入力データI1d、入力クロックICK1dとして第1のFPGA1−8に入力される。第1のFPGA1−8は、入力データI1dを処理して、出力データO1dと出力クロックOCK1dとをシステム外に出力する。以上が、低速IF側のデータの流れである。
【0051】
以上のようなシステムにおいても、低速または高速の入出力IF部の設計が遅れることがある。図10の例では、低速側の入出力IF部の設計が完成していない。このため、完成していない入出力IF部を点線で図示している。そこで、図10に示すように高速IF側から入力した低速用データを第1のFPGA1−8の内部で低速側に振り分け、第1のFPGA1−8、第2のFPGA1−9、第3のFPGA1−10で処理されたデータを第3のFPGA1−10の内部で高速IF側に戻すことで、複数のFPGA間の低速側の接続検証、および低速側のブロックの検証が可能になる。
【0052】
本実施の形態の第1のFPGA1−8の内部回路構成を図11に示す。FPGA1−8は、外部からユーザによってプログラミング可能な論理回路である高速用の処理ブロック2aと、低速用の処理ブロック2bと、入力データI1a,I1b,I1c,I1dをFPGA1−8の内部クロックCKでリタイミングするFIFOレジスタ3−1,3−2,3−3,3−4と、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−1と、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して入力データとして処理ブロック2aに入力するセレクタ4−2と、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−3と、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を選択して入力データとして処理ブロック2bに入力するセレクタ4−4と、FIFOレジスタ3−1の出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして処理ブロック2a,2bに振り分けて入力する振り分け処理部5と、処理ブロック2aの出力データと処理ブロック2bの出力データとを高速用の外部出力端子に出力する合流処理部6とを有する。
【0053】
第1の実施の形態と同様に、FIFOレジスタ3−1,3−2,3−3,3−4は、内部クロックCKの所定のタイミング(例えば内部クロックCKの立ち上がり)で入力データI1a,I1b,I1c,I1dをリタイミングして、内部データを出力する。
【0054】
セレクタ4−1は、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL1に従って選択して、出力データO1aとして出力する。セレクタ4−2は、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL2に従って選択して処理ブロック2aに出力する。
【0055】
セレクタ4−3は、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL3に従って選択して、出力データO1cとして出力する。セレクタ4−4は、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL4に従って選択して処理ブロック2bに出力する。
【0056】
振り分け処理部5は、FIFOレジスタ3−1の出力データに含まれる例えば宛先アドレス等の識別子に基づいて、FIFOレジスタ3−1の出力データが高速用データか低速用データかを判別し、高速用データであれば処理ブロック2aに出力し、低速用データであれば処理ブロック2bに出力する。
【0057】
なお、振り分け処理部5は、外部からユーザによってプログラミング可能な回路である。以上のような振り分け処理を実行するか、あるいは振り分け処理を実行せずに、FIFOレジスタ3−1の出力データをそのまま処理ブロック2aに出力するかは、ユーザによって任意に設定することができる。
【0058】
合流処理部6は、高速側の処理ブロック2aの出力データを高速側の出力データO1bとして出力すると共に、低速側の処理ブロック2bの出力データも出力データO1bとして出力する。こうして、合流処理部6は、処理ブロック2bで処理されたデータを高速IF側に出力することができる。
【0059】
なお、合流処理部6は、外部からユーザによってプログラミング可能な回路である。以上のような合流処理を実行するかしないかは、ユーザによって任意に設定することができる。
【0060】
処理ブロック2aは、振り分け処理部5の出力データとセレクタ4−2の出力データとを、ユーザによってプログラミングされた論理で処理する。処理ブロック2aの右方向への出力データは、セレクタ4−1,4−2に出力される。処理ブロック2aの左方向への出力データは、合流処理部6を介して出力データO1bとして外部に出力される。
【0061】
処理ブロック2bは、FIFOレジスタ3−3の出力データまたは振り分け処理部5の出力データと、セレクタ4−4の出力データとを、ユーザによってプログラミングされた論理で処理する。処理ブロック2bの右方向への出力データは、セレクタ4−3,4−4に出力される。処理ブロック2bの左方向への出力データは、出力データO1dとして外部に出力されるか、あるいは合流処理部6を介して出力データO1bとして外部に出力される。
FPGA1−8の内部クロックCKは、出力クロックOCK1a,OCK1b,OCK1c,OCK1dとして外部に出力される。
【0062】
以上のような第1のFPGA1−8の構成により、図10に示したデータの振り分けと合流を実現することができる。
第2のFPGA1−9、第3のFPGA1−10も、第1のFPGA1−8と同様の構成を有する。
【0063】
なお、本実施の形態において、セレクタ4−1〜4−4は必須の構成要件ではない。また、図11に示した例は、処理ブロック2a,2bの後段(図11の右側)に設けたセレクタ4−1〜4−4でデータを双方向に折り返すことができるようにした例であるが、処理ブロック2a,2bの前段(図11の左側)にセレクタを設けることも可能である。
【0064】
また、本実施の形態では、高速側の入出力IF部に振り分け処理部5と合流処理部6を設けているが、これらを低速側の入出力IF部に設けてもよい。すなわち、振り分け処理部は、FIFOレジスタ3−3の出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして処理ブロック2a,2bに振り分けて入力するようにしてもよく、合流処理部は、処理ブロック2aの出力データと処理ブロック2bの出力データとを低速用の外部出力端子に出力するようにしてもよい。
【産業上の利用可能性】
【0065】
本発明は、フィールド・プログラマブル・ゲートアレイ等の集積回路に適用することができる。
【符号の説明】
【0066】
1,1−1〜1−10…FPGA、2,2a,2b…処理ブロック、3−1〜3−4…FIFOレジスタ、4−1〜4−4…セレクタ、5…振り分け処理部、6…合流処理部。
【技術分野】
【0001】
本発明は、通信フレーム処理などを行うシステムに使用される集積回路に係り、特に外部からユーザによってプログラミング可能な論理回路であるフィールド・プログラマブル・ゲートアレイ等の集積回路に関するものである。
【背景技術】
【0002】
フィールド・プログラマブル・ゲートアレイ(Field Programmable Gate Array、以下、FPGAと呼ぶ)のような再構成可能なハードウェアは、設計完了後短期間でシステム構築が可能なこと、設計変更になっても早期にハードウェアの変更が可能なことから様々な分野のシステムへの応用がされている。また、適用されるシステム規模も年々増大してきて、FPGA自体の大規模化も進められているが、複数のFPGAを組み合わせてシステムを実現することも少なくない。
【0003】
通信の分野においては、仕様を短期間にハードウェア化して確認できることからFPGAの主要な適用分野となっていたが、近年の通信速度の飛躍的向上およびセキュリティ強化等の処理の高度化により、複数のFPGAを用いてシステムを構築する例が多くなっている。
【0004】
このようなことから、これまでにも複数のFPGAにより通信システムを実現する技術が開発されてきた(特許文献1、特許文献2、特許文献3、特許文献4参照)。図12は複数のFPGAによる従来の通信システムの構成例を示すブロック図である。この通信システムでは、各FPGA1000をバス1001,1002で相互に接続し、これらのFPGA1000をコントローラ1003で集中制御する方式を取っている。図12におけるCKはクロック、IN1,IN2は入力データ、OUT1,OUT2は出力データである。
【0005】
図13は、複数のFPGAを同時平行で開発した場合の従来の通信システムの設計・検証期間を示す図である。2000は第1のFPGAの設計・検証期間、2001は第2のFPGAの設計・検証期間、2002は第3のFPGAの設計・検証期間、2003はコントローラの設計・検証期間、2004はFPGA間の接続検証期間である。このように、図12に示した通信システムの設計・検証においては、一番開発に時間のかかった第3のFPGAの設計・検証期間に、コントローラの設計・検証期間とFPGA間の接続検証期間とが加算される。
通信システムの開発期間を短縮する技術としては、FPGAとASIC(Application Specific Integrated Circuit)のネットリストを作成する方法が提案されている(特許文献5参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2000−353950号公報
【特許文献2】特開2001−186010号公報
【特許文献3】特開2002−314579号公報
【特許文献4】特開2005−011344号公報
【特許文献5】特開2007−102813号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来技術のようにバスを介して複数のFPGAを組み合わせることにより構成されるシステムでは、1つのFPGA内に閉じた処理の場合は効率的に処理できるが、通信フレーム処理のようにあるFPGAのブロックの出力が次のFPGAのブロックの入力になるようなパイプライン的な処理の場合はバスの制御が複雑になり、バス制御が行い難くなるという第1の課題があった。また、バス用のクロックを統一する必要があり、複数のFPGAの同期を取って動作させなければいけないという第2の課題があった。
【0008】
これら2つの課題を解決してシステム化を行うには、開発の複雑さに加えて、各FPGAに入れるべきブロックの設計が完成してからシステム化の設計をせざるを得ず、トータルの開発期間がかかるという第3の課題があった。
なお、以上のような課題はFPGAに限らず、製造後にユーザによってプログラミング可能な集積回路を用いるシステムであれば、同様に発生する。
【0009】
本発明は、上記課題を解決するためになされたもので、ユーザによってプログラミング可能な集積回路を複数用いるシステムの設計・検証期間を短縮することを目的とする。
【課題を解決するための手段】
【0010】
本発明の集積回路は、外部からプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロックと、外部からの入力データを集積回路の内部クロックでリタイミングして前記処理ブロックに入力するFIFOレジスタとを備えることを特徴とするものである。
また、本発明の集積回路の1構成例は、さらに、前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第1のセレクト信号に応じて選択して外部に出力する第1のセレクタと、前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第2のセレクト信号に応じて選択して入力データとして前記処理ブロックに入力する第2のセレクタとを備えることを特徴とするものである。
【0011】
また、本発明の集積回路の1構成例において、前記処理ブロックは、高速用の処理ブロックと、低速用の処理ブロックとからなり、前記FIFOレジスタは、高速用の入力データを前記内部クロックでリタイミングする高速用のFIFOレジスタと、低速用の入力データを前記内部クロックでリタイミングする低速用のFIFOレジスタとからなり、さらに、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして前記高速用の処理ブロックと前記低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、前記高速用の処理ブロックの出力データと前記低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを備えることを特徴とするものである。
また、本発明の集積回路の1構成例において、前記振り分け処理手段は、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データに含まれる識別子に基づいて、この出力データが高速用データか低速用データかを判別し、高速用データであれば前記高速用の処理ブロックに入力し、低速用データであれば前記低速用の処理ブロックに入力することを特徴とするものである。
【発明の効果】
【0012】
本発明によれば、外部からの入力データを集積回路の内部クロックでリタイミングして処理ブロックに入力するFIFOレジスタを設けることにより、集積回路を複数搭載するシステムにおいて、複数の集積回路を接続するバス、バスを制御するコントローラおよびシステム共通のクロックが不要となる。本発明では、接続される集積回路間のみでタイミング調整を図れるので、システム設計の簡易化を実現することができる。また、本発明では、システム全体でのタイミング調整が不要になるので、全ての設計ブロックの設計完了前に集積回路間の接続検証や完成した設計ブロックの検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【0013】
また、本発明では、処理ブロックの出力データとFIFOレジスタの出力データのうちどちらか一方を第1のセレクト信号に応じて選択して外部に出力する第1のセレクタと、処理ブロックの出力データとFIFOレジスタの出力データのうちどちらか一方を第2のセレクト信号に応じて選択して入力データとして処理ブロックに入力する第2のセレクタとを設けることにより、集積回路を複数搭載したシステムの設計時において、システム外へのインターフェイスの設計が一部しか完成していない場合においても、第1、第2のセレクタを切り替えて、データを入力された方向に戻す折り返しを行うことにより、設計が完成している部分の検証を進めることができる。その結果、本発明では、従来のように処理ブロックの設計・検証を完成させてから上位のブロック間の接続検証を行うのではなく、処理ブロックの設計・検証と同時期に集積回路間の接続検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【0014】
また、本発明では、高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして高速用の処理ブロックと低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、高速用の処理ブロックの出力データと低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを設けることにより、集積回路を複数搭載したシステムの設計時において、例えば低速側のインターフェイスの設計が一部しか完成していない場合においても、高速側のインターフェイスから入力した低速用データを入口側の集積回路の内部で低速用の処理ブロックに振り分け、出口側の集積回路の内部で高速側のインターフェイスに戻すことができるので、設計が完成している部分の検証を進めることができる。その結果、本発明では、従来のように処理ブロックの設計・検証を完成させてから上位のブロック間の接続検証を行うのではなく、処理ブロックの設計・検証と同時期に集積回路間の接続検証を行うことができ、システムの設計・検証期間を大幅に短縮することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の第1の実施の形態に係る集積回路であるFPGAの内部回路構成例を示すブロック図である。
【図2】本発明の第1の実施の形態に係るFIFOレジスタの動作を説明するタイミングチャートである。
【図3】論理回路が入出力端子直結回路になるようにプログラミングした場合のFPGAの内部回路構成を示すブロック図である。
【図4】本発明の第1の実施の形態に係るFPGAを組み合わせた通信システムの例を示すブロック図である。
【図5】本発明の第1の実施の形態においてFPGAの内部でデータを折り返す例を示す図である。
【図6】本発明の第1の実施の形態においてFPGAの内部でデータを折り返す別の例を示す図である。
【図7】本発明の第1の実施の形態に係る通信システムの設計・検証期間を示す図である。
【図8】本発明の第1の実施の形態に係るFPGAを組み合わせた通信システムの別の例を示すブロック図である。
【図9】本発明の第2の実施の形態に係るFPGAを組み合わせた通信システムの例を示すブロック図である。
【図10】本発明の第2の実施の形態において高速IF側から入力した低速用データを低速側に振り分ける例を示す図である。
【図11】本発明の第2の実施の形態に係る集積回路であるFPGAの内部回路構成例を示すブロック図である。
【図12】複数のFPGAによる従来の通信システムの構成例を示すブロック図である。
【図13】複数のFPGAを同時平行で開発した場合の従来の通信システムの設計・検証期間を示す図である。
【発明を実施するための形態】
【0016】
[第1の実施の形態]
以下、本発明の実施の形態について図面を参照して説明する。図1は本発明の第1の実施の形態に係る集積回路であるFPGAの内部回路構成例を示すブロック図である。
FPGA1は、外部からユーザによってプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロック2と、外部からの入力データI1a,I1bをFPGA1の内部クロックCKでリタイミングするFIFO(First-In First-Out)レジスタ3−1,3−2と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−1と、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して入力データとして処理ブロック2に入力するセレクタ4−2とを有する。
【0017】
図1において、O1a,O1bは出力データ、ICK1a,ICK1bは入力クロック、OCK1a,OCK1bは出力クロック、SEL1,SEL2はセレクタ4−1,4−2を制御するためのセレクト信号である。
【0018】
一般に、FPGA外部のクロックとFPGAの内部クロックCKとは位相差がある。そこで、本実施の形態のFIFOレジスタ3−1は、図2に示すように内部クロックCKの所定のタイミング(例えば内部クロックCKの立ち上がり)で入力データI1aをリタイミングして、内部データD1を出力する。同様に、FIFOレジスタ3−2も、内部クロックCKの所定のタイミングで入力データI1bをリタイミングして、内部データを出力する。
【0019】
こうして、本実施の形態では、FIFOレジスタ3−1,3−2によって入力データI1a,I1bをリタイミングすることで、外部のクロックICK1a,ICK1bと内部クロックCKとの位相差によるデータの取りこぼしを防ぐことができ、FPGA1内の処理ブロック2は単一のクロックCKに従ってデータを処理することができる。
【0020】
本実施の形態によれば、複数のFPGAを組み合わせる際に、出力側のFPGAと入力側のFPGAの2つのFPGAの間の位相調整を行えば良いので、3つ以上のFPGAに同位相のクロックを供給する場合に比べて容易にFPGA間の接続を実現することができる。本実施の形態では、FPGAを接続するバスおよびバスを制御するコントローラも不要になる。
【0021】
さらに、本実施の形態では、セレクタ4−1,4−2をFPGA1内に設け、セレクタ4−1,4−2の選択動作を外部から入力されるセレクト信号SEL1,SEL2によって切り替えることで、データを入力された方向に戻す折り返し機能を実現することができる。
【0022】
セレクタ4−1は、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL1に従って選択して、出力データO1aとして出力する。こうして、セレクタ4−1は、処理ブロック2から出力されたデータを出力データO1aとして後段のFPGA(不図示)に送り出すこともできるし、後段のFPGAから入力されFIFOレジスタ3−2によってリタイミングされた入力データI1bを出力データO1aとして後段のFPGAに折り返すこともできる。
【0023】
セレクタ4−2は、処理ブロック2の出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL2に従って選択して処理ブロック2に出力する。こうして、セレクタ4−2は、後段のFPGAから入力されFIFOレジスタ3−2によってリタイミングされた入力データI1bを処理ブロック2に出力することもできるし、処理ブロック2から出力されたデータを処理ブロック2の入力に折り返すこともできる。
【0024】
なお、本実施の形態において、セレクタ4−1,4−2は必須の構成要件ではない。また、図1に示した例は、処理ブロック2の後段(図1の右側)に設けたセレクタ4−1,4−2でデータを双方向に折り返すことができるようにした例であるが、処理ブロック2の前段(図1の左側)にセレクタを設けることも可能である。
【0025】
処理ブロック2は、FIFOレジスタ3−1の出力データおよびセレクタ4−2の出力データを、ユーザによってプログラミングされた論理で処理する。処理ブロック2の右方向への出力データは、セレクタ4−1,4−2に出力される。処理ブロック2の左方向への出力データは、出力データO1bとして外部に出力される。
FPGA1の内部クロックCKは、出力クロックOCK1a,OCK1bとして外部に出力される。
【0026】
図3は処理ブロック2によって構成される論理回路が入出力端子直結回路(以下、スルー回路と呼ぶ)になるようにプログラミングした場合のFPGA1の内部回路構成を示すブロック図である。この場合、FIFOレジスタ3−1から入力されたデータは、そのままセレクタ4−1,4−2に出力される。また、セレクタ4−2から入力されたデータは、そのまま出力データO1bとして外部に出力される。
【0027】
このように、設計の初期段階で処理ブロック2の設計完了前であっても、処理ブロック2内部の入出力端子を直結することで通信路を形成することができる。したがって、複数のFPGA間の接続検証が設計の初期段階から可能になる。
【0028】
図4は本実施の形態のFPGA1を組み合わせた通信システムの例を示すブロック図である。第1のFPGA1−1、第2のFPGA1−2および第3のFPGA1−3の内部構成は図1、図3で説明したとおりである。
第1のFPGA1−1は、システム外からの入力データI1aと入力クロックICK1aとを入力とし、入力データI1aを処理して、出力データO1aと出力クロックOCK1aとを出力する。出力データO1aと出力クロックOCK1aとは、それぞれ入力データI2a、入力クロックICK2aとして第2のFPGA1−2に入力される。
【0029】
第2のFPGA1−2は、入力データI2aを処理して、出力データO2aと出力クロックOCK2aとを出力する。出力データO2aと出力クロックOCK2aとは、それぞれ入力データI3a、入力クロックICK3aとして第3のFPGA1−3に入力される。第3のFPGA1−3は、入力データI3aを処理して、出力データO3aと出力クロックOCK3aとをシステム外に出力する。
【0030】
また、第3のFPGA1−3は、システム外からの入力データI3bと入力クロックICK3bとを入力とし、入力データI3bを処理して、出力データO3bと出力クロックOCK3bとを出力する。出力データO3bと出力クロックOCK3bとは、それぞれ入力データI2b、入力クロックICK2bとして第2のFPGA1−2に入力される。
【0031】
第2のFPGA1−2は、入力データI2bを処理して、出力データO2bと出力クロックOCK2bとを出力する。出力データO2bと出力クロックOCK2bとは、それぞれ入力データI1b、入力クロックICK1bとして第1のFPGA1−1に入力される。第1のFPGA1−1は、入力データI1bを処理して、出力データO1bと出力クロックOCK1bとをシステム外に出力する。
以上のように複数のFPGA1−1〜1−3においてデータの処理を繰り返し、最終のFPGAの出力データをシステム外に出力する。
【0032】
設計の初期段階においてはシステムのインターフェイス部(以下、IF部と呼ぶ)が完成していない場合がある。そのような場合でも、本実施の形態のFPGA1を用いればFPGA内部のセレクタによってデータ信号を折り返すことで、設計が完成している部分の検証を進めることができる。
【0033】
図5の例では、第3のFPGA1−3の右側の入出力IF部の設計が完成していない。このため、完成していない入出力IF部を点線で図示している。このような場合でも、第1のFPGA1−1内部のセレクタを用いて、第1のFPGA1−1の処理ブロックが入力データI1aを処理した結果を出力データO1bとして折り返すデータ導通を実施することにより、設計が完成している第1のFPGA1−1とその左側の入出力IF部の検証を進めることができる。
【0034】
図6の例では、第3のFPGA1−3内部のセレクタを切り替えることにより、第3のFPGA1−3の処理ブロックが入力データI3aを処理した結果を出力データO3bとして折り返している。このように、FPGA間の接続確認は、設計が完成している入出力IF部に近いFPGA1から順次、セレクタの折り返し機能を利用したデータ導通で検証することができる。
【0035】
また、設計が完成したブロックの検証は入出力IF部から近い順でなくても実施できる。この場合は、検証の対象でないFPGA1の処理ブロックをスルー回路とし、検証の対象となるFPGA1の処理ブロックがデータを折り返すデータ導通を実施すればよい。これにより、各FPGA間の接続を検証した後であれば、任意のFPGA1を検証することができる。セレクタの折り返し信号はFPGA1に搭載されている物理スイッチもしくは折り返し用のレジスタにより発生することが可能である。
【0036】
図7は本実施の形態の通信システムの設計・検証期間を示す図である。100は第1のFPGA1−1の設計・検証期間、101は第2のFPGA1−2の設計・検証期間、102は第3のFPGA1−3の設計・検証期間、103はFPGA間の接続検証期間である。このように、本実施の形態では、図13と比べて明らかなように、コントローラの設計・検証期間がなくなるだけでなく、各FPGAの設計に先行してFPGA間の接続検証もスルー回路および折り返し機能を使用することで検証可能なため、システム全体の設計・検証期間を大幅に短縮することができる。
【0037】
図1〜図6の例では、左→右方向と右→左方向の2つのデータ伝送方向にデータパスを1つずつ持つFPGAの例で説明してきたが、例えば図8の例のように複数のデータパスを持つFPGAを用いてシステムを構成することもできる。
第2のFPGA1−5および第4のFPGA1−7の内部構成は図1、図3で説明したとおりである。第1のFPGA1−4および第3のFPGA1−6は、2つのデータ伝送方向にそれぞれ複数のデータパスを持つ。
【0038】
第1のFPGA1−4は、システム外からの入力データI1aと入力クロックICK1aとを入力とし、入力データI1aを処理して、出力データO1a,O1cと出力クロックOCK1a,OCK1cとを出力する。出力データO1aと出力クロックOCK1aとは、それぞれ入力データI2a、入力クロックICK2aとして第2のFPGA1−5に入力され、出力データO1cと出力クロックOCK1cとは、それぞれ入力データI4a、入力クロックICK4aとして第4のFPGA1−7に入力される。
【0039】
第2のFPGA1−5は、入力データI2aを処理して、出力データO2aと出力クロックOCK2aとを出力する。出力データO2aと出力クロックOCK2aとは、それぞれ入力データI3a、入力クロックICK3aとして第3のFPGA1−6に入力される。第4のFPGA1−7は、入力データI4aを処理して、出力データO4aと出力クロックOCK4aとを出力する。出力データO4aと出力クロックOCK4aとは、それぞれ入力データI3c、入力クロックICK3cとして第3のFPGA1−6に入力される。第3のFPGA1−6は、入力データI3a,I3cを処理して、出力データO3aと出力クロックOCK3aとをシステム外に出力する。
【0040】
また、第3のFPGA1−6は、システム外からの入力データI3bと入力クロックICK3bとを入力とし、入力データI3bを処理して、出力データO3b,O3cと出力クロックOCK3b,OCK3cとを出力する。出力データO3bと出力クロックOCK3bとは、それぞれ入力データI2b、入力クロックICK2bとして第2のFPGA1−5に入力され、出力データO3cと出力クロックOCK3cとは、それぞれ入力データI4b、入力クロックICK4bとして第4のFPGA1−7に入力される。
【0041】
第2のFPGA1−5は、入力データI2bを処理して、出力データO2bと出力クロックOCK2bとを出力する。第4のFPGA1−7は、入力データI4bを処理して、出力データO4bと出力クロックOCK4bとを出力する。出力データO2bと出力クロックOCK2bとは、それぞれ入力データI1b、入力クロックICK1bとして第1のFPGA1−4に入力され、出力データO4bと出力クロックOCK4bとは、それぞれ入力データI1c、入力クロックICK1cとして第1のFPGA1−4に入力される。第1のFPGA1−4は、入力データI1b,I1cを処理して、出力データO1bと出力クロックOCK1bとをシステム外に出力する。
【0042】
第1のFPGA1−4および第3のFPGA1−6のように複数のデータパスを持つFPGAは、上記のようにセレクタを用いるか、あるいは処理ブロックの内部に切り替え機能部を設けることで実現することができる。
【0043】
[第2の実施の形態]
低速の通信から高速の通信への移行期においては、図9のように低速IFと高速IFとを有する通信システムが必要な場合がある。
まず、高速IF側のデータパスについて説明する。第1のFPGA1−8は、システム外からの入力データI1aと入力クロックICK1aとを入力とし、入力データI1aを処理して、出力データO1aと出力クロックOCK1aとを出力する。出力データO1aと出力クロックOCK1aとは、それぞれ入力データI2a、入力クロックICK2aとして第2のFPGA1−9に入力される。
【0044】
第2のFPGA1−9は、入力データI2aを処理して、出力データO2aと出力クロックOCK2aとを出力する。出力データO2aと出力クロックOCK2aとは、それぞれ入力データI3a、入力クロックICK3aとして第3のFPGA1−10に入力される。第3のFPGA1−10は、入力データI3aを処理して、出力データO3aと出力クロックOCK3aとをシステム外に出力する。
【0045】
また、第3のFPGA1−10は、システム外からの入力データI3bと入力クロックICK3bとを入力とし、入力データI3bを処理して、出力データO3bと出力クロックOCK3bとを出力する。出力データO3bと出力クロックOCK3bとは、それぞれ入力データI2b、入力クロックICK2bとして第2のFPGA1−9に入力される。
【0046】
第2のFPGA1−9は、入力データI2bを処理して、出力データO2bと出力クロックOCK2bとを出力する。出力データO2bと出力クロックOCK2bとは、それぞれ入力データI1b、入力クロックICK1bとして第1のFPGA1−8に入力される。第1のFPGA1−8は、入力データI1bを処理して、出力データO1bと出力クロックOCK1bとをシステム外に出力する。以上が、高速IF側のデータの流れである。
【0047】
次に、低速IF側のデータパスについて説明する。第1のFPGA1−8は、システム外からの入力データI1cと入力クロックICK1cとを入力とし、入力データI1cを処理して、出力データO1cと出力クロックOCK1cとを出力する。出力データO1cと出力クロックOCK1cとは、それぞれ入力データI2c、入力クロックICK2cとして第2のFPGA1−9に入力される。
【0048】
第2のFPGA1−9は、入力データI2cを処理して、出力データO2cと出力クロックOCK2cとを出力する。出力データO2cと出力クロックOCK2cとは、それぞれ入力データI3c、入力クロックICK3cとして第3のFPGA1−10に入力される。第3のFPGA1−10は、入力データI3cを処理して、出力データO3cと出力クロックOCK3cとをシステム外に出力する。
【0049】
また、第3のFPGA1−10は、システム外からの入力データI3dと入力クロックICK3dとを入力とし、入力データI3dを処理して、出力データO3dと出力クロックOCK3dとを出力する。出力データO3dと出力クロックOCK3dとは、それぞれ入力データI2d、入力クロックICK2dとして第2のFPGA1−9に入力される。
【0050】
第2のFPGA1−9は、入力データI2dを処理して、出力データO2dと出力クロックOCK2dとを出力する。出力データO2dと出力クロックOCK2dとは、それぞれ入力データI1d、入力クロックICK1dとして第1のFPGA1−8に入力される。第1のFPGA1−8は、入力データI1dを処理して、出力データO1dと出力クロックOCK1dとをシステム外に出力する。以上が、低速IF側のデータの流れである。
【0051】
以上のようなシステムにおいても、低速または高速の入出力IF部の設計が遅れることがある。図10の例では、低速側の入出力IF部の設計が完成していない。このため、完成していない入出力IF部を点線で図示している。そこで、図10に示すように高速IF側から入力した低速用データを第1のFPGA1−8の内部で低速側に振り分け、第1のFPGA1−8、第2のFPGA1−9、第3のFPGA1−10で処理されたデータを第3のFPGA1−10の内部で高速IF側に戻すことで、複数のFPGA間の低速側の接続検証、および低速側のブロックの検証が可能になる。
【0052】
本実施の形態の第1のFPGA1−8の内部回路構成を図11に示す。FPGA1−8は、外部からユーザによってプログラミング可能な論理回路である高速用の処理ブロック2aと、低速用の処理ブロック2bと、入力データI1a,I1b,I1c,I1dをFPGA1−8の内部クロックCKでリタイミングするFIFOレジスタ3−1,3−2,3−3,3−4と、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−1と、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を選択して入力データとして処理ブロック2aに入力するセレクタ4−2と、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を選択して外部に出力するセレクタ4−3と、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を選択して入力データとして処理ブロック2bに入力するセレクタ4−4と、FIFOレジスタ3−1の出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして処理ブロック2a,2bに振り分けて入力する振り分け処理部5と、処理ブロック2aの出力データと処理ブロック2bの出力データとを高速用の外部出力端子に出力する合流処理部6とを有する。
【0053】
第1の実施の形態と同様に、FIFOレジスタ3−1,3−2,3−3,3−4は、内部クロックCKの所定のタイミング(例えば内部クロックCKの立ち上がり)で入力データI1a,I1b,I1c,I1dをリタイミングして、内部データを出力する。
【0054】
セレクタ4−1は、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL1に従って選択して、出力データO1aとして出力する。セレクタ4−2は、処理ブロック2aの出力データとFIFOレジスタ3−2の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL2に従って選択して処理ブロック2aに出力する。
【0055】
セレクタ4−3は、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL3に従って選択して、出力データO1cとして出力する。セレクタ4−4は、処理ブロック2bの出力データとFIFOレジスタ3−4の出力データのうちどちらか一方を、外部から入力されるセレクト信号SEL4に従って選択して処理ブロック2bに出力する。
【0056】
振り分け処理部5は、FIFOレジスタ3−1の出力データに含まれる例えば宛先アドレス等の識別子に基づいて、FIFOレジスタ3−1の出力データが高速用データか低速用データかを判別し、高速用データであれば処理ブロック2aに出力し、低速用データであれば処理ブロック2bに出力する。
【0057】
なお、振り分け処理部5は、外部からユーザによってプログラミング可能な回路である。以上のような振り分け処理を実行するか、あるいは振り分け処理を実行せずに、FIFOレジスタ3−1の出力データをそのまま処理ブロック2aに出力するかは、ユーザによって任意に設定することができる。
【0058】
合流処理部6は、高速側の処理ブロック2aの出力データを高速側の出力データO1bとして出力すると共に、低速側の処理ブロック2bの出力データも出力データO1bとして出力する。こうして、合流処理部6は、処理ブロック2bで処理されたデータを高速IF側に出力することができる。
【0059】
なお、合流処理部6は、外部からユーザによってプログラミング可能な回路である。以上のような合流処理を実行するかしないかは、ユーザによって任意に設定することができる。
【0060】
処理ブロック2aは、振り分け処理部5の出力データとセレクタ4−2の出力データとを、ユーザによってプログラミングされた論理で処理する。処理ブロック2aの右方向への出力データは、セレクタ4−1,4−2に出力される。処理ブロック2aの左方向への出力データは、合流処理部6を介して出力データO1bとして外部に出力される。
【0061】
処理ブロック2bは、FIFOレジスタ3−3の出力データまたは振り分け処理部5の出力データと、セレクタ4−4の出力データとを、ユーザによってプログラミングされた論理で処理する。処理ブロック2bの右方向への出力データは、セレクタ4−3,4−4に出力される。処理ブロック2bの左方向への出力データは、出力データO1dとして外部に出力されるか、あるいは合流処理部6を介して出力データO1bとして外部に出力される。
FPGA1−8の内部クロックCKは、出力クロックOCK1a,OCK1b,OCK1c,OCK1dとして外部に出力される。
【0062】
以上のような第1のFPGA1−8の構成により、図10に示したデータの振り分けと合流を実現することができる。
第2のFPGA1−9、第3のFPGA1−10も、第1のFPGA1−8と同様の構成を有する。
【0063】
なお、本実施の形態において、セレクタ4−1〜4−4は必須の構成要件ではない。また、図11に示した例は、処理ブロック2a,2bの後段(図11の右側)に設けたセレクタ4−1〜4−4でデータを双方向に折り返すことができるようにした例であるが、処理ブロック2a,2bの前段(図11の左側)にセレクタを設けることも可能である。
【0064】
また、本実施の形態では、高速側の入出力IF部に振り分け処理部5と合流処理部6を設けているが、これらを低速側の入出力IF部に設けてもよい。すなわち、振り分け処理部は、FIFOレジスタ3−3の出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして処理ブロック2a,2bに振り分けて入力するようにしてもよく、合流処理部は、処理ブロック2aの出力データと処理ブロック2bの出力データとを低速用の外部出力端子に出力するようにしてもよい。
【産業上の利用可能性】
【0065】
本発明は、フィールド・プログラマブル・ゲートアレイ等の集積回路に適用することができる。
【符号の説明】
【0066】
1,1−1〜1−10…FPGA、2,2a,2b…処理ブロック、3−1〜3−4…FIFOレジスタ、4−1〜4−4…セレクタ、5…振り分け処理部、6…合流処理部。
【特許請求の範囲】
【請求項1】
外部からプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロックと、
外部からの入力データを集積回路の内部クロックでリタイミングして前記処理ブロックに入力するFIFOレジスタとを備えることを特徴とする集積回路。
【請求項2】
請求項1記載の集積回路において、
さらに、前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第1のセレクト信号に応じて選択して外部に出力する第1のセレクタと、
前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第2のセレクト信号に応じて選択して入力データとして前記処理ブロックに入力する第2のセレクタとを備えることを特徴とする集積回路。
【請求項3】
請求項1または2記載の集積回路において、
前記処理ブロックは、高速用の処理ブロックと、低速用の処理ブロックとからなり、
前記FIFOレジスタは、高速用の入力データを前記内部クロックでリタイミングする高速用のFIFOレジスタと、低速用の入力データを前記内部クロックでリタイミングする低速用のFIFOレジスタとからなり、
さらに、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして前記高速用の処理ブロックと前記低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、
前記高速用の処理ブロックの出力データと前記低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを備えることを特徴とする集積回路。
【請求項4】
請求項3記載の集積回路において、
前記振り分け処理手段は、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データに含まれる識別子に基づいて、この出力データが高速用データか低速用データかを判別し、高速用データであれば前記高速用の処理ブロックに入力し、低速用データであれば前記低速用の処理ブロックに入力することを特徴とする集積回路。
【請求項1】
外部からプログラミング可能な論理回路であって、入力データを処理して出力データを外部に出力する処理ブロックと、
外部からの入力データを集積回路の内部クロックでリタイミングして前記処理ブロックに入力するFIFOレジスタとを備えることを特徴とする集積回路。
【請求項2】
請求項1記載の集積回路において、
さらに、前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第1のセレクト信号に応じて選択して外部に出力する第1のセレクタと、
前記処理ブロックの出力データと前記FIFOレジスタの出力データのうちどちらか一方を第2のセレクト信号に応じて選択して入力データとして前記処理ブロックに入力する第2のセレクタとを備えることを特徴とする集積回路。
【請求項3】
請求項1または2記載の集積回路において、
前記処理ブロックは、高速用の処理ブロックと、低速用の処理ブロックとからなり、
前記FIFOレジスタは、高速用の入力データを前記内部クロックでリタイミングする高速用のFIFOレジスタと、低速用の入力データを前記内部クロックでリタイミングする低速用のFIFOレジスタとからなり、
さらに、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データが高速用データか低速用データかを判別して、判別したデータを入力データとして前記高速用の処理ブロックと前記低速用の処理ブロックとに振り分けて入力する振り分け処理手段と、
前記高速用の処理ブロックの出力データと前記低速用の処理ブロックの出力データとを高速用または低速用のどちらか一方の外部出力端子に出力する合流処理手段とを備えることを特徴とする集積回路。
【請求項4】
請求項3記載の集積回路において、
前記振り分け処理手段は、前記高速用のFIFOレジスタまたは低速用のFIFOレジスタの出力データに含まれる識別子に基づいて、この出力データが高速用データか低速用データかを判別し、高速用データであれば前記高速用の処理ブロックに入力し、低速用データであれば前記低速用の処理ブロックに入力することを特徴とする集積回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−14321(P2012−14321A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148671(P2010−148671)
【出願日】平成22年6月30日(2010.6.30)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願日】平成22年6月30日(2010.6.30)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]