説明

コンフィグレーション方法及びコンフィグレーション制御回路

【課題】コンフィグレーション方法及びコンフィグレーション制御回路において、FPGA回路のクロック周波数やスルーレート等のコンフィグレーションデータを自動調整可能にすることを目的とする。
【解決手段】FPGA回路のコンフィグレーションを行うコンフィグレーション方法において、コンフィグレーション回路からFPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数をFPGA回路内でカウントし、前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従ってFPGA回路内で調整してコンフィグレーションを再実行し、前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータをFPGA回路からコンフィグレーション回路に設定するように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンフィグレーション方法及びコンフィグレーション制御回路に係り、特にFPGA(Field Programmable Gate Array)回路のクロック周波数やスルーレート等のコンフィグレーションデータをFPGA回路の動作開始時に設定するコンフィグレーション方法及びコンフィグレーション制御回路に関する。
【背景技術】
【0002】
FPGA回路の動作開始時には、一般的には図1又は図2に示す如きコンフィグレーション回路を用いたコンフィグレーションによりコンフィグレーションデータ(又は、FPGA回路データ)を設定する。図1は、1個のFPGA回路に対するコンフィグレーション回路の一例を説明する図であり、図2は、複数個のFPGA回路に対するコンフィグレーション回路の一例を説明する図である。
【0003】
図1において、コンフィグレーション回路(又は、ROM(Read Only Memory)回路)1−1は、ユーザが指定したFPGA回路2のクロック周波数(又は、動作周波数)等のパラメータや回路データを含むコンフィグレーションデータDATAを格納するフラッシュメモリ(Flash Memory)で形成されている。
【0004】
一方、FPGA回路2は、図1に示す如く接続されたコンフィグレーションデータ用メモリ21、FPGA内部回路22、入出力(I/O:Input/Output)バッファ23、コンフィグレーション制御回路24、クロック発生回路25、及びI/Oバッファ26を有する。コンフィグレーション制御回路24は、CRC(Cyclic Redundancy Check)回路241、主制御部242、及びデコーダ243を有する。クロック発生回路25は、タップ(TAP)調整回路251及び複数の直列接続されたインバータ回路252を有するリングオシレータ(Ring Oscillator)で形成されており、FPGA回路2から出力されるコンフィグレーション用クロック信号CLKを発生する。
【0005】
メモリ21は、FPGA内部回路22の論理を決定する設定値を格納してこの設定値によりFPGA回路2内のリソースの各種設定を決定する。FPGA内部回路22は、メモリ21に格納された設定値により設定される論理機能部を形成する。I/Oバッファ23は、ユーザ回路(図示せず)が使用可能なインタフェースを形成する。コンフィグレーション制御回路24内において、CRC回路241は、クロック信号CLKに同期してコンフィグレーション回路1−1から読み出されてFPGA回路2に入力されたコンフィグレーションデータDATAから生成したCRCコードとコンフィグレーションデータDATAに付加されているCRCコードを比較することでデータエラーを検出して、エラーの有無を示すエラー検出信号を主制御部242に通知する。主制御部242は、コンフィグレーションデータDATA内のクロック周波数をエラー検出信号が示すデータエラーの有無に応じてデコーダ243に供給する。又、主制御部242は、データエラーが検出されずコンフィグレーションが成功すると、コンフィグレーションが成功したことを示す成功信号を出力する。一方、主制御部242は、データエラーが検出されコンフィグレーションが失敗すると、コンフィグレーションエラーを示すエラー信号を出力する。デコーダ243は、クロック周波数の値をデコードし、デコードされた値に基づいてクロック発生回路25のTAP調整回路251を制御してインバータ回路252のTAPを調整することで、クロック発生回路25が発生するクロック信号CLKの周波数を設定する。クロック信号CLKは、コンフィグレーション制御回路24に供給されると共に、I/Oバッファ26を介してコンフィグレーション回路1−1に供給される。
【0006】
図2において、コンフィグレーション回路1−2は、複数のFPGA回路(#1〜#N、Nは1以上の自然数)2−1〜2−Nに対して設けられている。この例では、FPGA回路2−1はマスタとして機能し、FPGA回路2−2〜2−Nはスレーブとして機能する。コンフィグレーション回路1−2は、上記コンフィグレーション回路1−1と同様にして、マスタFPGA回路2−1にコンフィグレーションデータDATAを入力する。マスタFPGA回路2−1は、上記FPGA回路2と同様にしてクロック信号CLKをコンフィグレーション回路1−2に供給する。一方、クロック信号CLKは、スレーブFPGA回路2−2〜2−Nへも供給される。又、コンフィグレーション回路1−2からのコンフィグレーションデータDATAは、マスタFPGA回路2−1を介してFPGA回路2−2〜2−Nへ順次供給される。尚、説明の便宜上、コンフィグレーションは図1の場合について説明する。
【0007】
図1の如きコンフィグレーション回路1−1を用いたFPGA回路2のコンフィグレーションは、失敗する場合がある。FPGA回路2のコンフィグレーションが失敗する主な原因は、FPGA回路2が実装されたプリント基板(図示せず)上でコンフィグレーションデータDATAにノイズが混入したり、信号が鈍ったりすることによる、コンフィグレーションデータDATAの転送不良である場合が多い。FPGA回路2のコンフィグレーションが失敗した場合は、コンフィグレーションをそのままエラー終了させる場合が多い。FPGA回路2の再コンフィグレーションを行う場合には、失敗したコンフィグレーションと同一条件下でコンフィグレーションを再実行する。
【0008】
従来、FPGA回路2のコンフィグレーションは、コンフィグレーション回路1−1からFPGA回路2内のクロック発生回路25へ至る周波数設定パスを設け、ユーザがコンフィグレーション回路1−1のクロック周波数の値を手動で調整することによりFPGA回路2のクロック周波数の設定値を手動調整する。この手動調整は、FPGA回路2のコンフィグレーションが成功するまで繰り返し行われ、比較的工数の多い作業である。尚、図1のコンフィグレーション回路1−1では、クロック周波数の手動調整は行えるが、スルーレートの手動調整を行うものではない。
【0009】
FPGA回路2のコンフィグレーションが成功するように、例えば極端に低いクロック周波数を設定することでコンフィグレーションエラーを回避する方法も考えられるが、このような方法を採用できない理由として、次のような技術背景がある。
【0010】
つまり、近年のFPGA回路の大規模化に伴い、コンフィグレーションデータの量が増加傾向にあり、コンフィグレーションに要する時間が長くなる傾向にある。FPGA回路を有するシステムの立ち上げは、コンフィグレーションに要する時間に影響される。このため、FPGA回路のコンフィグレーションのクロック周波数を比較的高く設定し、コンフィグレーション時間を抑制することが求められる。しかし、クロック周波数を比較的高く設定すると、これに伴いクロック信号のスルーレートも比較的高くし、信号の立ち上りを急峻にする必要がある。
【0011】
尚、FPGA回路内に素子不良がある場合に、予め用意した複数の配置配線情報を入替えながら、不良素子を利用しない配置配線情報を見つけて素子不良を救済する方法が例えば特許文献1等にて提案されている。しかし、この提案方法では、FPGA回路のコンフィグレーション自体のエラーは想定されていない。
【0012】
このように、従来の手動調整を用いるFPGA回路のコンフィグレーションでは、FPGA回路が実装された基板や周囲温度等の使用環境に合わせてFPGA回路のクロック周波数を手動調整するため、クロック周波数の調整に不具合がある度にユーザへの負荷が発生する。つまり、ユーザは、クロック周波数を最適値に合わせるために、クロック周波数の手動調整を繰り返し行う必要がある。又、コンフィグレーション回路が同じであっても、FPGA回路の製品毎にクロック周波数を変えた方が良い場合もあり、クロック周波数の調整コストが製品毎に発生してしまうので、コンフィグレーションに伴う調整コストを低減することは難しい。
【0013】
又、図2のように複数個のFPGA回路2−1〜2−Nを接続する場合もあり、FPGA回路2−1〜2−Nが実装された基板上の配線によっては、予測しない反射ノイズ等の影響でコンフィグレーションが失敗することもある。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開2005−243937号公報
【特許文献2】特開2000−101421号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
従来のFPGA回路のコンフィグレーションは、FPGA回路のクロック周波数を手動調整する必要があるため、ユーザへの負荷が比較的大きいという問題があった。
【0016】
そこで、本発明は、FPGA回路のクロック周波数やスルーレート等のコンフィグレーションデータを自動調整可能なコンフィグレーション方法及びコンフィグレーション制御回路を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明の一観点によれば、FPGA(Field Programmable Gate Array)回路のコンフィグレーションを行うコンフィグレーション方法であって、コンフィグレーション回路から前記FPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数を前記FPGA回路内でカウントし、前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従って前記FPGA回路内で調整してコンフィグレーションを再実行し、前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定するコンフィグレーション方法が提供される。
【0018】
本発明の一観点によれば、FPGA(Field Programmable Gate Array)回路のコンフィグレーションを前記FPGA回路から行うコンフィグレーション制御回路であって、コンフィグレーション回路から前記FPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数を前記FPGA回路内でカウントするカウンタと、前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従って前記FPGA回路内で調整してコンフィグレーションを再実行する主制御部とを備え、前記主制御部は、前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定するコンフィグレーション制御回路が提供される。
【発明の効果】
【0019】
開示のコンフィグレーション方法及びコンフィグレーション制御回路によれば、FPGA回路のクロック周波数やスルーレート等のコンフィグレーションデータを自動調整することが可能になる。
【図面の簡単な説明】
【0020】
【図1】1個のFPGA回路に対するコンフィグレーション回路の一例を説明する図である。
【図2】複数個のFPGA回路に対するコンフィグレーション回路の一例を説明する図である。
【図3】本発明の第1実施例におけるコンフィグレーション制御回路の一例を説明する図である。
【図4】コンフィグレーション処理を説明するフローチャートである。
【図5】本発明の第2実施例におけるコンフィグレーション制御回路の一例を説明する図である。
【図6】第2実施例におけるコンフィグレーション制御回路の構成を示す図である。
【図7】第2実施例におけるコンフィグレーション成功信号の出力を説明する図である。
【図8】スレーブFPGA回路の接続の第1の例を示す図である。
【図9】スレーブFPGA回路の接続の第2の例を示す図である。
【発明を実施するための形態】
【0021】
開示のコンフィグレーション方法及びコンフィグレーション制御回路では、FPGA回路のクロック周波数(又は、動作周波数)やスルーレート等のコンフィグレーションデータを自動調整する。FPGA回路のコンフィグレーションを成功させるための最適なコンフィグレーションデータは、ユーザによる手動調整を必要とすることなく、即ち、ユーザが意識することなく、FPGA回路により自動調整される。このため、コンフィグレーションに伴う調整コストを比較的低く抑えることができる。
【0022】
以下に、開示のコンフィグレーション方法及びコンフィグレーション制御回路の各実施例を図面と共に説明する。
【実施例】
【0023】
(第1実施例)
図3は、本発明の第1実施例におけるコンフィグレーション制御回路の一例を説明する図である。本実施例では、1個のFPGA回路に対してコンフィグレーション回路が設けられる場合に本発明が適用されている。図3中、太枠で示すブロックは機能ブロックを示し、後述するように、太線のパスにて自動調整を行い、二重線のパスで設定を保存する機能を提供する。
【0024】
図3において、コンフィグレーション回路(又は、ROM(Read Only Memory)回路)51−1は、ユーザが指定したFPGA回路52のクロック周波数(又は、動作周波数)やスルーレート等のパラメータや回路データを含むコンフィグレーションデータDATA1を格納するフラッシュメモリ(Flash Memory)で形成されている。クロック周波数とは、後述するクロック信号CLKの周波数であり、スルーレートとは、クロック信号CLKのスルーレートである。
【0025】
一方、FPGA回路52は、図3に示す如く接続された入出力(I/O:Input/Output)バッファ61、コンフィグレーションデータ用メモリ62、FPGA内部回路63、I/Oバッファ64,65、コンフィグレーション制御回路66、I/Oバッファ67、クロック発生回路68、及びI/Oバッファ69を有する。コンフィグレーション制御回路66は、エラーチェック回路(以下、CRC(Cyclic Redundancy Check)回路と言う)661、カウンタ662、主制御部663、スルーレート保持部664、デコーダ665、クロック周波数保持部666、及びデコーダ667を有する。主制御部663は、転送データ保持部71、エラー検出回路72、比較回路73、及びデコーダ74を有する。クロック発生回路68は、タップ(TAP)調整回路681及び複数の直列接続されたインバータ回路682を有するリングオシレータ(Ring Oscillator)で形成されており、FPGA回路52から出力されるコンフィグレーション用クロック信号CLKを発生する。
【0026】
I/Oバッファ61は、クロック信号CLKに同期してコンフィグレーション回路51−1から読み出されてFPGA回路52に入力されたコンフィグレーションデータDATA1をコンフィグレーション制御回路66に供給する。メモリ62は、FPGA内部回路63の論理を決定する設定値を格納してこの設定値によりFPGA回路52内のリソースの各種設定を決定する。FPGA内部回路63は、メモリ62に格納された設定値により設定される論理機能部を形成する。I/Oバッファ64は、FPGA回路52の出力に後述するように次段(又は、後段)のFPGA回路(図示せず)が接続されている場合にFPGA回路52のコンフィグレーションが成功して完了すると、成功した時点のコンフィグレーションデータをコンフィグレーションデータDATA1−1として次段のFPGA回路へ出力可能とする。I/Oバッファ65は、FPGA回路52に外部のユーザ回路(図示せず)が接続されている場合に、ユーザ回路で使用可能なインタフェースを形成する。
【0027】
コンフィグレーション制御回路66内において、CRC回路661は、クロック信号CLKに同期してコンフィグレーション回路51−1から読み出されてFPGA回路52に入力されたコンフィグレーションデータDATA1から生成したCRCコードとコンフィグレーションデータDATA1に付加されているCRCコードを比較することでデータエラーを検出して、エラーの有無を示すエラー検出信号を主制御部663内のエラー検出回路72に通知する。このエラー検出信号は、FPGA回路52に次段のFPGA回路又はユーザ回路が接続されている場合には、次段のFPGA回路又はユーザ回路に出力可能である。このエラー検出信号は、CRC回路661でデータエラーが検出されない場合、次段のFPGA回路又はユーザ回路においてコンフィグレーションが成功したことを示すコンフィグレーション成功信号として使用可能である。又、CRC回路661は、コンフィグレーションデータDATA1を主制御部663内の転送データ保持部71に供給する。カウンタ662は、コンフィグレーションエラー(コンフィグレーションの失敗)が発生して繰り返しコンフィグレーションが実行された再実行回数n(nは0以上の自然数)をカウントする。
【0028】
主制御部663内において、転送データ保持部71には、後述するスルーレート保持部664に保持されたスルーレートt及びクロック周波数保持部666に保持されたクロック周波数fが供給される。このため、転送データ保持部71は、コンフィグレーションに成功した時のクロック信号CLKのクロック周波数fやスルーレートt等のコンフィグレーションデータを、新たなコンフィグレーションデータDATA2としてI/Oバッファ67を介してコンフィグレーション回路51−1に格納する。つまり、コンフィグレーション制御回路66によりコンフィグレーションデータDATA1が自動調整され、より最適なコンフィグレーションデータDATA2がコンフィグレーション回路51−1に自動設定される。この結果、コンフィグレーション回路51−1に自動設定されたコンフィグレーションデータDATA2は、次回のコンフィグレーション時に使用可能となる。
【0029】
一方、エラー検出回路72は、CRC回路661からのエラー検出信号に基づいてコンフィグレーションエラーの有無を検出し、エラー検出結果を比較回路73及びカウンタ662に通知する。又、エラー検出回路72は、コンフィグレーションエラーを検出すると、予め設定されているルールに従ってクロック周波数保持部666に保持されたクロック周波数f及びスルーレート保持部664に保持されたスルーレートtの値を夫々変更、即ち、自動調整する。例えば、クロック周波数fは上記ルールに従って下げられ、スルーレートtは上記ルールに従って下げられる。更に、エラー検出回路72は、コンフィグレーションエラーが検出されないと、コンフィグレーションが成功したと判断し、コンフィグレーションデータDATA1内のスルーレートtをスルーレート保持部664に供給すると共に、コンフィグレーションデータDATA1内のクロック周波数fをクロック周波数保持部666に供給する。デコーダ74は、コンフィグレーションを繰り返す上限値Rを示す設定信号の入力を外部から受け、設定信号をデコードして得られた上限値Rを比較回路73に入力する。つまり、デコーダ74は、設定信号をFPGA回路52(又は、主制御部663)内で参照可能な形式の上限値Rにデコードする。比較回路73は、上限値Rと、カウンタ662のカウント値(即ち、再実行回数)nを比較し、再実行回数nが上限値Rを超えるとコンフィグレーションの再実行回数nが上限値Rを超えたコンフィグレーションエラーの発生をエラーステータス信号等により外部へ通知する。
【0030】
尚、クロック周波数保持部666に保持するクロック周波数fは、I/Oバッファ61から供給しても良い。又、コンフィグレーション回路51−1に格納されているコンフィグレーションデータDATA1に上限値Rが含まれる場合には、比較回路73に供給される上限値Rは、I/Oバッファ61から供給しても良い。
【0031】
クロック周波数保持部666に保持されたクロック周波数fは、デコーダ667でデコードされ、デコードされた値に基づいてクロック発生回路68のTAP調整回路681を制御してインバータ回路682のTAPを調整することで、クロック発生回路68が発生するクロック信号CLKのクロック周波数fを設定する。クロック信号CLKは、コンフィグレーション制御回路66に供給されると共に、I/Oバッファ69を介してコンフィグレーション回路51−1に供給される。スルーレート保持部664に保持されたスルーレートtは、デコーダ665でデコードされ、デコードされた値により、スルーレートtの設定に応じてI/Oバッファ69からのクロック信号CLKのコンフィグレーション回路51−1への供給タイミングが制御される。
【0032】
FPGA回路52の出力に後述するように次段のFPGA回路が接続されている場合、次段のFPGA回路におけるコンフィグレーションが成功して完了すると、次段のFPGA回路から出力されるコンフィグレーション成功信号をコンフィグレーション制御回路66(又は、主制御部663)に入力して、FPGA回路52において次段のFPGA回路におけるコンフィグレーションの成功を認識可能とするようにしても良い。
【0033】
図4は、FPGA回路52内で実行されるコンフィグレーション処理を説明するフローチャートである。図4において、ステップS1では、コンフィグレーションが失敗したときの再実行回数の上限値Rと、再実行回数nの初期値「1」を設定する。上限値Rは、FPGA回路52の外部から設定、或いは、コンフィグレーション回路51−1から設定される。ステップS2では、FPGA回路52のコンフィグレーション時に用いるクロック周波数fを設定し、スデップS3では、コンフィグレーション時に用いるスルーレートtを設定する。クロック周波数f及びスルーレートtの設定値は、夫々コンフィグレーション回路51−1に設定された値を用いる。
【0034】
ステップS4では、FPGA回路52のコンフィグレーションを実行する。コンフィグレーションは、例えばFPGA回路52の動作時に実行される。ステップS5では、コンフィグレーションが成功したか否かの判定をコンフィグレーション制御回路66で行う。コンフィグレーションが成功してステップS5の判定結果がYESであると、ステップS10では、コンフィグレーションが成功したことを示す成功フラグに「1」を立てる。
【0035】
ステップS11では、クロック周波数fとスルーレートtをクロック周波数保持部666及びスルーレート保持部664に保持しているか否かを判定する。ステップS11の判定結果がYESであると、ステップS12では、クロック周波数保持部666に保持されたクロック周波数fとスルーレート保持部664に保持されたスルーレートtをコンフィグレーション回路51−1に格納し、処理は終了する。一方、ステップS11の判定結果がNOであると、処理はそのまま終了する。
【0036】
コンフィグレーションが失敗してステップS5の判定結果がNOであると、ステップS6では、n>Rであるか否かを判定する。ステップS6の判定結果がYESであると、ステップS7では、コンフィグレーションが失敗したことを示す失敗フラグに「1」を立てて、処理は終了する。一方、ステップS6の判定結果がNOであると、ステップS8では再実行回数nをn=n+1にインクリメントする。又、ステップS9では、クロック周波数f及びスルーレートtの自動調整を行い、処理はステップS4へ戻る。従って、ステップS9の後は、ステップS4でコンフィグレーションを実行し、コンフィグレーションが成功するか、或いは、コンフィグレーションが失敗してコンフィグレーションの再実行回数が上限値Rを超えるまで、コンフィグレーションの再実行とコンフィグレーションデータの自動調整を繰り返す。
【0037】
次に、ステップS9での自動調整の例を説明する。第1の例では、コンフィグレーションの失敗の原因として、クロック周波数fが高すぎることが考えられるため、クロック周波数fを例えば1割下げた値に自動調整する。第2の例では、コンフィグレーションの失敗の原因として、スルーレートtが高すぎることが考えられるため、スルーレートtを一定値だけ下げた値に自動調整する。第3の例では、上記第1及び第2の例を組合せたクロック周波数f及びスルーレートtの自動調整を行う。
【0038】
本実施例によれば、図3のFPGA回路52のコンフィグレーション制御回路66内に、主制御部663のエラー検出回路72からクロック発生回路68及びI/Oバッファ69に至るパスを設けることで、クロック周波数f及びスルーレートtを自動調整してコンフィグレーションを再実行する機構を備える。これにより、コンフィグレーションエラーを回避するためのユーザによるコンフィグレーションデータDATA1の手動調整が不要になり、ユーザへの負荷が大幅に軽減される。
【0039】
又、図3のコンフィグレーション制御回路66内に、主制御部663、クロック周波数保持部666及びスルーレート保持部664からI/Oバッファ67に至るパスを設け、コンフィグレーション成功時のクロック周波数f及びスルーレートtをコンフィグレーション回路51−1に格納して自動設定する機構を備える。これにより、FPGA回路52の製品毎の調整コストを不要とすることができる。
【0040】
このように、本実施例によれば、FPGA回路52自身がコンフィグレーションデータを自動調整してコンフィグレーションを成功させるので、ユーザがコンフィグレーションを成功させるのに最適なクロック周波数及びスルーレートを手動調整して手動設定する必要がなくなる。又、FPGA回路52において、周囲温度等のFPGA回路52の動作環境の変化により、コンフィグレーションを成功させるのに最適なクロック周波数又はスルーレートが変化しても、ユーザが意識することなく、FPGA回路52自身でコンフィグレーションデータの自動調整及び自動設定が可能となる。更に、コンフィグレーション成功時の最適なクロック周波数及びスルーレートがコンフィグレーション回路51−1に自動設定されるので、次回のコンフィグレーション時にこれらの最適なクロック周波数及びスルーレートを使用することで、コンフィグレーションエラーを抑制することができる。
【0041】
(第2実施例)
図5は、本発明の第2実施例におけるコンフィグレーション制御回路の一例を説明する図である。本実施例では、複数個のFPGA回路に対してコンフィグレーション回路が設けられる場合に本発明が適用されている。
【0042】
図5において、コンフィグレーション回路51−2は、複数のFPGA回路(#1〜#N、Nは1以上の自然数)52−1〜52−Nに対して設けられている。この例では、FPGA回路52−1はマスタとして機能し、FPGA回路52−2〜52−Nはスレーブとして機能する。コンフィグレーション回路51−2は、上記コンフィグレーション回路51−1と同様にして、マスタFPGA回路52−1にコンフィグレーションデータDATA1を入力する。マスタFPGA回路52−1は、上記FPGA回路52と同様にしてクロック信号CLKをコンフィグレーション回路51−2に供給する。一方、クロック信号CLKは、スレーブFPGA回路52−2〜52−Nへも供給される。又、コンフィグレーション回路51−2からのコンフィグレーションデータDATA1は、マスタFPGA回路52−1を介してコンフィグレーションデータDATA1−1,DATA1−2,...としてFPGA回路52−2〜52−Nへ順次供給される。
【0043】
図6は、第2実施例におけるコンフィグレーション制御回路の構成を示す図である。図6は、FPGA回路が2個(即ち、N=2)の場合の後段のFPGA回路52−2のコンフィグレーション回路の構成を示す。図6において、FPGA回路52−1は、図3のFPGA回路52と同じ構成を有し、FPGA回路52−1内で実行されるコンフィグレーション処理も図4のフローチャートと同じであるため、それらの図示及び説明は省略する。図6中、図3と同一部分には同一符号を付し、その説明は省略する。
【0044】
図6において、FPGA回路52−2内の梨地で示す回路部分は、FPGA回路52−1とは異なり未使用となる機能部分を示す。又、FPGA回路52−2の入出力信号で未使用となるものは、図6において「未使用」と示されている。更に、FPGA回路52−2内のI/Oバッファ69に対するクロック信号CLKの転送方向は、FPGA回路52−1内のI/Oバッファ69に対するものとは反対方向となる。しかし、FPGA回路52−2の動作は、梨地で示す回路部分が未使用となり動作しない点を除けば、基本的にはFPGA回路52−1の動作と同様である。FPGA回路52−2内のI/Oバッファ64から出力されるコンフィグレーションデータDATA1−2は、後段のFPGA回路52−3(図示せず)内のI/Oバッファ61に供給される。
【0045】
本実施例では、各スレーブFPGA回路52−2〜52−Nが、マスタFPGA回路52−1から出力されるクロック信号CLKに同期して動作し、スレーブFPGA回路52−i(iは2以上の自然数)にはその前段のFPGA回路52−i−1を通過したコンフィグレーションデータが供給される。図5に示すように、FPGA回路52−1が出力するコンフィグレーションデータDATA1−1は後段のFPGA回路52−2に供給され、FPGA回路52−2が出力するコンフィグレーションデータDATA1−2は後段のFPGA回路52−3に供給され、...、FPGA回路52−N−1が出力するコンフィグレーションデータDATA1−N−1は後段のFPGA回路52−Nに供給される。
【0046】
図7は、第2実施例におけるコンフィグレーション成功信号の出力を説明する図である。図7中、図5と同一部分には同一符号を付し、その説明は省略する。図7は、図5において図示を省略したコンフィグレーション成功信号の転送パスを示す。
【0047】
図7は、コンフィグレーション成功信号がオープンドレイン(Open-Drain)信号である場合を示す。この場合、各FPGA回路52−1〜52−Nから出力されるコンフィグレーション成功信号は、信号線530を介して1段目のFPGA回路52−1内の主制御部663に入力される。又、信号線は、プルアップ(Pull-Up)抵抗531を介して電源電圧Vccに接続されている。FPGA回路52−1〜52−Nから出力されるコンフィグレーション成功信号(即ち、オープンドレイン信号)が全てハイインピーダンス(High-Z)状態の時、プルアップ抵抗531によりハイレベルのコンフィグレーション成功信号が1段目のFPGA回路52−1に入力され、全てのFPGA回路52−1〜52−Nのコンフィグレーションが成功したことを認識することができる。
【0048】
図5及び図7において、マスタFPGA回路52−1以外のスレーブFPGA回路52−2〜52−Nの部分については、各種接続方法を採用することが可能である。
【0049】
図8は、スレーブFPGA回路の接続の第1の例を示す図である。説明の便宜上、図8はコンフィグレーション回路51−2、マスタFPGA回路52−1及びスレーブFPGA回路52−2のみを示す。例えば、コンフィグレーション回路51−2はザイリンクス(Xilinx)社製のPROMで形成され、マスタFPGA回路52−1及びスレーブFPGA回路52−2は夫々ザイリンクス(Xilinx)社製のVirtex-5ファミリ(又は、シリーズ)のFPGAで形成されているので、各端子の説明は省略する。/PROGRAMは、コンフィグレーションを開始を指示する信号である。この例では、マスタFPGA回路52−1及びスレーブFPGA回路52−2を接続してコンフィグレーションデータを転送するデータバス541がシリアルバスの場合を示す。
【0050】
図9は、スレーブFPGA回路の接続の第2の例を示す図である。説明の便宜上、図9はコンフィグレーション回路51−2、マスタFPGA回路52−1、及びスレーブFPGA回路52−2,52−3のみを示す。例えば、コンフィグレーション回路51−2はザイリンクス(Xilinx)社製のフラッシュメモリ(Flash Memory)で形成され、マスタFPGA回路52−1及びスレーブFPGA回路52−2,53−3は夫々ザイリンクス(Xilinx)社製のVirtex-5ファミリ(又は、シリーズ)のFPGAで形成されているので、各端子の説明は省略する。この例では、マスタFPGA回路52−1及びスレーブFPGA回路52−2,52−3を接続してコンフィグレーションデータを転送するデータバス542がパラレルバスの場合を示す。又、マスタFPGA回路52−1のCSO_B端子から出力されるエラー検出信号がコンフィグレーションが成功したことを示すと、CS_B端子にこのエラー検出信号が入力されるスレーブFPGA回路52−2のコンフィグレーション処理が開始される。
【0051】
本実施例によれば、FPGA回路52−1自身がコンフィグレーションデータを自動調整してコンフィグレーションを成功させるので、複数段のFPGA回路52−1〜52−Nが接続されている場合であっても、ユーザがコンフィグレーションを成功させるのに最適なクロック周波数及びスルーレートを手動調整して手動設定する必要がなくなり、上記第1実施例と同様の効果を得ることができる。
【0052】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
FPGA(Field Programmable Gate Array)回路のコンフィグレーションを行うコンフィグレーション方法であって、
コンフィグレーション回路から前記FPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数を前記FPGA回路内でカウントし、
前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従って前記FPGA回路内で調整してコンフィグレーションを再実行し、
前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する、コンフィグレーション方法。
(付記2)
前記コンフィグレーションデータは、前記FPGA回路のクロック信号のクロック周波数又はスルーレートを含み、
前記コンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する際に、設定するコンフィグレーションデータに含まれるクロック周波数を有するクロック信号を前記コンフィグレーション回路に入力する、付記1記載のコンフィグレーション方法。
(付記3)
前記コンフィグレーション回路から前記FPGA回路に設定されるコンフィグレーションデータのデータエラーの有無を前記FPGA回路内で検出し、前記データエラーの有無に基づいてコンフィグレーションが失敗した回数を前記FPGA回路内でカウントする、付記2記載のコンフィグレーション方法。
(付記4)
前記FPGA回路内で前記コンフィグレーションの失敗が検出されないと、前記コンフィグレーションが成功したことを示すステータス信号を前記FPGA回路の外部へ出力する、付記3記載のコンフィグレーション方法。
(付記5)
前記コンフィグレーションの再実行回数が前記上限値を超えると、前記再実行回数が前記上限値を超えたコンフィグレーションの失敗の発生を示すステータス信号を前記FPGA回路の外部へ出力する、付記2乃至4のいずれか1項記載のコンフィグレーション方法。
(付記6)
前記上限値を、前記コンフィグレーション回路から、或いは、前記コンフィグレーション回路以外の外部回路から前記FPGA回路に設定する、付記2乃至5のいずれか1項記載のコンフィグレーション方法。
(付記7)
前記コンフィグレーションが成功した時点のコンフィグレーションデータを、前記FPGA回路から前記FPGA回路の次段に接続された他のFPGA回路に、前記他のFPGA回路のコンフィグレーションデータとして出力する、付記2乃至6のいずれか1項記載のコンフィグレーション方法。
(付記8)
前記クロック信号を、前記FPGA回路から前記他のFPGA回路に供給する、付記7記載のコンフィグレーション方法。
(付記9)
FPGA(Field Programmable Gate Array)回路のコンフィグレーションを前記FPGA回路から行うコンフィグレーション制御回路であって、
コンフィグレーション回路から前記FPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数を前記FPGA回路内でカウントするカウンタと、
前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従って前記FPGA回路内で調整してコンフィグレーションを再実行する主制御部とを備え、
前記主制御部は、前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する、コンフィグレーション制御回路。
(付記10)
前記コンフィグレーションデータは、前記FPGA回路のクロック信号のクロック周波数又はスルーレートを含み、
前記主制御部が前記コンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する際に、設定するコンフィグレーションデータに含まれるクロック周波数を有するクロック信号を前記コンフィグレーション回路に入力する回路を更に備えた、付記9記載のコンフィグレーション制御回路。
(付記11)
前記コンフィグレーション回路から前記FPGA回路に設定されるコンフィグレーションデータのデータエラーの有無を前記FPGA回路内で検出するエラーチェック回路を更に備え、
前記主制御部は、前記エラーチェック回路で検出されたデータエラーの有無に基づいてコンフィグレーションが失敗した回数を検出して前記カウンタに供給する、付記10記載のコンフィグレーション制御回路。
(付記12)
前記主制御部は、前記コンフィグレーションの失敗を検出しないと、前記コンフィグレーションが成功したことを示すステータス信号を前記FPGA回路の外部へ出力する、付記9乃至11のいずれか1項記載のコンフィグレーション制御回路。
(付記13)
前記主制御部は、前記コンフィグレーションの再実行回数が前記上限値を超えると、前記再実行回数が前記上限値を超えたコンフィグレーションの失敗の発生を示すステータス信号を前記FPGA回路の外部へ出力する、付記10乃至12のいずれか1項記載のコンフィグレーション制御回路。
(付記14)
前記上限値は、前記コンフィグレーション回路から、或いは、前記コンフィグレーション回路以外の外部回路から前記FPGA回路に設定される、付記10乃至13のいずれか1項記載のコンフィグレーション制御回路。
(付記15)
前記コンフィグレーションが成功した時点のコンフィグレーションデータを、前記FPGA回路から前記FPGA回路の次段に接続された他のFPGA回路に、前記他のFPGA回路のコンフィグレーションデータとして出力するFPGA内部回路を更に備えた、付記10乃至14のいずれか1項記載のコンフィグレーション制御回路。
(付記16)
前記FPGA回路と、前記FPGA回路の後段に順次接続された一又は複数の他のFPGA回路とは、コンフィグレーションデータを転送するシリアルバス又はパラレルバスにより接続されている、付記15記載のコンフィグレーション制御回路。
【0053】
以上、開示のコンフィグレーション方法及びコンフィグレーション制御回路を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0054】
51−1,51−2 コンフィグレーション回路
52,52−1〜52−N FPGA回路
62 コンフィグレーションデータ用メモリ
63 FPGA内部回路
66 コンフィグレーション制御回路
68 クロック発生回路
661 CRC回路
662 カウンタ
663 主制御部

【特許請求の範囲】
【請求項1】
FPGA(Field Programmable Gate Array)回路のコンフィグレーションを行うコンフィグレーション方法であって、
コンフィグレーション回路から前記FPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数を前記FPGA回路内でカウントし、
前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従って前記FPGA回路内で調整してコンフィグレーションを再実行し、
前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する、コンフィグレーション方法。
【請求項2】
前記コンフィグレーションデータは、前記FPGA回路のクロック信号のクロック周波数又はスルーレートを含み、
前記コンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する際に、設定するコンフィグレーションデータに含まれるクロック周波数を有するクロック信号を前記コンフィグレーション回路に入力する、請求項1記載のコンフィグレーション方法。
【請求項3】
前記コンフィグレーション回路から前記FPGA回路に設定されるコンフィグレーションデータのデータエラーの有無を前記FPGA回路内で検出し、前記データエラーの有無に基づいてコンフィグレーションが失敗した回数を前記FPGA回路内でカウントする、請求項2記載のコンフィグレーション方法。
【請求項4】
前記上限値を、前記コンフィグレーション回路から、或いは、前記コンフィグレーション回路以外の外部回路から前記FPGA回路に設定する、請求項2又は3記載のコンフィグレーション方法。
【請求項5】
前記コンフィグレーションが成功した時点のコンフィグレーションデータを、前記FPGA回路から前記FPGA回路の次段に接続された他のFPGA回路に、前記他のFPGA回路のコンフィグレーションデータとして出力する、請求項2乃至4のいずれか1項記載のコンフィグレーション方法。
【請求項6】
FPGA(Field Programmable Gate Array)回路のコンフィグレーションを前記FPGA回路から行うコンフィグレーション制御回路であって、
コンフィグレーション回路から前記FPGA回路にコンフィグレーションデータを設定するコンフィグレーションが失敗した回数を前記FPGA回路内でカウントするカウンタと、
前記回数が上限値以下であると前記コンフィグレーションが失敗した時の前記コンフィグレーションデータを予め設定されているルールに従って前記FPGA回路内で調整してコンフィグレーションを再実行する主制御部とを備え、
前記主制御部は、前記コンフィグレーションが成功すると、成功した時点のコンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する、コンフィグレーション制御回路。
【請求項7】
前記コンフィグレーションデータは、前記FPGA回路のクロック信号のクロック周波数又はスルーレートを含み、
前記主制御部が前記コンフィグレーションデータを前記FPGA回路から前記コンフィグレーション回路に設定する際に、設定するコンフィグレーションデータに含まれるクロック周波数を有するクロック信号を前記コンフィグレーション回路に入力する回路を更に備えた、請求項6記載のコンフィグレーション制御回路。
【請求項8】
前記コンフィグレーション回路から前記FPGA回路に設定されるコンフィグレーションデータのデータエラーの有無を前記FPGA回路内で検出するエラーチェック回路を更に備え、
前記主制御部は、前記エラーチェック回路で検出されたデータエラーの有無に基づいてコンフィグレーションが失敗した回数を検出して前記カウンタに供給する、請求項7記載のコンフィグレーション制御回路。
【請求項9】
前記主制御部は、前記コンフィグレーションの失敗を検出しないと、前記コンフィグレーションが成功したことを示すステータス信号を前記FPGA回路の外部へ出力する、請求項6乃至8のいずれか1項記載のコンフィグレーション制御回路。
【請求項10】
前記コンフィグレーションが成功した時点のコンフィグレーションデータを、前記FPGA回路から前記FPGA回路の次段に接続された他のFPGA回路に、前記他のFPGA回路のコンフィグレーションデータとして出力するFPGA内部回路を更に備えた、請求項9記載のコンフィグレーション制御回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−193129(P2011−193129A)
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願番号】特願2010−56298(P2010−56298)
【出願日】平成22年3月12日(2010.3.12)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】