(57)【要約】【課題】エラー発生時の再コンフィギュレーション動作を極力減らすことを目的とする。【解決手段】ＦＰＧＡ用のコンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、このデータブロックの誤り検出を行なうための誤り検出用データを読み出すバスＩ／Ｆ１５１と、読み出されたデータブロックを読み出された誤り検出用データを用いて誤り検出を行なう誤り検出部１５５と、誤り検出部１１５で誤りが検出されたデータブロックを、バスＩ／Ｆ１５１に再度読み出させるデータフロー制御部１５６と、誤り検出部１１５で誤りが検出されなかったデータブロックをＦＰＧＡに与えるＦＰＧＡ制御信号生成部１５４とを備える。【選択図】図５
2015132907.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡ用のコンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、当該データブロックの誤り検出を行なうための誤り検出用データを記憶する記憶部から、当該データブロック及び当該データブロックの誤り検出用データを読み出すインターフェース部と、
前記インターフェース部が読み出したデータブロックを一時的に保持する一時保持部と、
前記一時保持部に保持されているデータブロックを読み出して、当該読み出されたデータブロックを前記ＦＰＧＡに与えるＦＰＧＡ制御信号生成部と、
前記インターフェース部が読み出したデータブロックを、前記インターフェース部が読み出した誤り検出用データを用いて誤り検出を行なう誤り検出部と、
前記誤り検出部で誤りが検出されなかったデータブロックを、前記ＦＰＧＡ制御信号生成部に読み出させるとともに、前記誤り検出部で誤りが検出されたデータブロックを、前記インターフェース部に再度読み出させるデータフロー制御部と、を備えること
を特徴とするコンフィギュレーション制御装置。
【請求項２】
前記記憶部には、複数のコンフィギュレーションデータの各々に対応して、前記データブロック及び前記誤り検出用データが記憶されており、
前記ＦＰＧＡの動作周期に基づいて、前記複数のコンフィギュレーションデータに含まれる一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数の上限回数を決定するタイミング管理部をさらに備え、
前記データフロー制御部は、前記一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数が、前記タイミング管理部で決定された上限回数を超えた場合には、前記インターフェース部に、前記複数のコンフィギュレーションデータに含まれる他のコンフィギュレーションデータのデータブロックを読み出させること
を特徴とする請求項１に記載のコンフィギュレーション制御装置。
【請求項３】
前記ＦＰＧＡは、前記ＦＰＧＡ制御信号生成部から与えられるデータブロックに基づいて部分的に回路が書き換えられる機能切換部と、当該機能切換部で処理を行う第１のパス及び当該機能切換部で処理を行わない第２のパスを選択するパス選択部とを備え、
前記記憶部には、複数のコンフィギュレーションデータの各々に対応して、前記データブロック及び前記誤り検出用データが記憶されており、
前記ＦＰＧＡの動作周期に基づいて、前記複数のコンフィギュレーションデータに含まれる一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数の上限回数を決定するタイミング管理部をさらに備え、
前記データフロー制御部は、前記一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数が、前記タイミング管理部で決定された上限回数を超えた場合には、前記パス選択部に前記第２のパスを選択させること
を特徴とする請求項１に記載のコンフィギュレーション制御装置。
【請求項４】
前記コンフィギュレーションデータから、前記データブロック及び前記誤り検出用データを生成し、前記記憶部に記憶させるデータ生成部をさらに備えること
を特徴とする請求項１から３の何れか一項に記載のコンフィギュレーション制御装置。
【請求項５】
ＦＰＧＡ用のコンフィギュレーションデータから、当該コンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、当該データブロックの誤り検出を行なうための誤り検出用データを生成するデータ生成部と、
前記データ生成部で生成されたデータブロック及び誤り検出用データを記憶する記憶部と、
前記記憶部から、前記データブロック及び前記誤り検出用データを読み出すインターフェース部と、
前記インターフェース部が読み出したデータブロックを一時的に保持する一時保持部と、
前記一時保持部に保持されているデータブロックを読み出して、当該読み出されたデータブロックを前記ＦＰＧＡに与えるＦＰＧＡ制御信号生成部と、
前記インターフェース部が読み出したデータブロックを、前記インターフェース部が読み出した誤り検出用データを用いて誤り検出を行なう誤り検出部と、
前記誤り検出部で誤りが検出されなかったデータブロックを、前記ＦＰＧＡ制御信号生成部に読み出させるとともに、前記誤り検出部で誤りが検出されたデータブロックを、前記インターフェース部に再度読み出させるデータフロー制御部と、を備えること
を特徴とするコンフィギュレーション制御システム。
【請求項６】
ＦＰＧＡ用のコンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、当該データブロックの誤り検出を行なうための誤り検出用データを読み出す読み出し過程と、
前記読み出し過程で読み出されたデータブロックを一時的に保持する一時保持過程と、
前記読み出し過程で読み出されたデータブロックを、前記読み出し過程で読み出された誤り検出用データを用いて誤り検出を行なう誤り検出過程と、
前記誤り検出過程で誤りが検出されなかった場合に、前記一時保持過程で保持されているデータブロックを読み出して、当該読み出されたデータブロックを前記ＦＰＧＡに与えるＦＰＧＡ制御信号生成過程と、
前記誤り検出過程で誤りが検出された場合に、前記誤り検出過程で誤りが検出されたデータブロックを再度読み出す再読み出し過程と、を有すること
を特徴とするコンフィギュレーション制御方法。
【請求項７】
複数のコンフィギュレーションデータの各々に対応して、前記データブロック及び前記誤り検出用データを記憶する記憶過程と、
前記ＦＰＧＡの動作周期に基づいて、前記複数のコンフィギュレーションデータに含まれる一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数の上限回数を決定するタイミング管理過程と、
前記一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数が、前記タイミング管理部で決定された上限回数を超えた場合に、前記複数のコンフィギュレーションデータに含まれる他のコンフィギュレーションデータのデータブロックを読み出すデータ変更過程と、をさらに有すること
を特徴とする請求項６に記載のコンフィギュレーション制御方法。
【請求項８】
前記ＦＰＧＡは、前記ＦＰＧＡ制御信号生成過程で与えられるデータブロックに基づいて部分的に回路が書き換えられる機能切換部と、当該機能切換部で処理を行う第１のパス及び当該機能切換部で処理を行わない第２のパスを選択するパス選択部とを備え、
複数のコンフィギュレーションデータの各々に対応して、前記データブロック及び前記誤り検出用データを記憶する記憶過程と、
前記ＦＰＧＡの動作周期に基づいて、前記複数のコンフィギュレーションデータに含まれる一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数の上限回数を決定するタイミング管理過程と、
前記一のコンフィギュレーションデータにおける前記データブロックの再読み出し回数が、前記タイミング管理部で決定された上限回数を超えた場合に、前記パス選択部に前記第２のパスを選択させる選択過程と、をさらに有すること
を特徴とする請求項６に記載のコンフィギュレーション制御方法。
【請求項９】
前記コンフィギュレーションデータから、前記データブロック及び前記誤り検出用データを生成するデータ生成過程をさらに備えること
を特徴とする請求項６から８の何れか一項に記載のコンフィギュレーション制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンフィギュレーション制御装置、コンフィギュレーション制御システム及びコンフィギュレーション制御方法に関する。
【背景技術】
【０００２】
ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）は、論理回路を何度でも書き換えることができ、実装可能な回路規模もＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：特定用途向け集積回路）に引けを取らないレベルとなっている。低価格なＦＰＧＡは、様々な分野の製品への搭載が進んでいる。
【０００３】
ＦＰＧＡは、使用前にＦＰＧＡデバイス内に回路設定情報（以下、コンフィギュレーションデータ）を書き込むコンフィギュレーションを必要とする。一般的には、電源投入直後にＦＰＧＡに対してコンフィギュレーションを行い、所望の回路動作を得ることになる。所望のタイミングでコンフィギュレーションをし直すことも可能であり、最新のＦＰＧＡには、動作中に部分的に回路情報を書き換え可能なデバイスも開発されている。
【０００４】
ところで、コンフィギュレーションデータのサイズはＦＰＧＡに実装可能な回路規模におおよそ比例するため、容量の大きなＦＰＧＡのコンフィギュレーションには、相対的に多くの時間がかかる。そのため、コンフィギュレーション時にエラーが発生した際、再度コンフィギュレーションを実行しエラーなく完了するまでの間、ＦＰＧＡの担う動作又は機能を停止しなければならない。そこで、コンフィギュレーションデータと、ＦＰＧＡデバイス内のコンフィギュレーションメモリとの双方を複数のブロックに分割し、ブロック単位でコンフィギュレーションを行う装置が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１３８２９号公報（段落０００６〜０００７、図１）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載された装置は、電源投入後の最初のコンフィギュレーションでは、ブロックを順次切り替えて全てのブロックに書き込みを行うため、全てのコンフィギュレーションメモリへの全てのデータの書き込みが完了するまで、エラー発生の有無が分からない。
【０００７】
そこで、この発明は、上述のような課題を解消するためになされたものであり、エラー発生時の再コンフィギュレーション動作を極力減らすことを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係るコンフィギュレーション制御装置は、ＦＰＧＡ用のコンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、当該データブロックの誤り検出を行なうための誤り検出用データを記憶する記憶部から、当該データブロック及び当該データブロックの誤り検出用データを読み出すインターフェース部と、前記インターフェース部が読み出したデータブロックを一時的に保持する一時保持部と、前記一時保持部に保持されているデータブロックを読み出して、当該読み出されたデータブロックを前記ＦＰＧＡに与えるＦＰＧＡ制御信号生成部と、前記インターフェース部が読み出したデータブロックを、前記インターフェース部が読み出した誤り検出用データを用いて誤り検出を行なう誤り検出部と、前記誤り検出部で誤りが検出されなかったデータブロックを、前記ＦＰＧＡ制御信号生成部に読み出させるとともに、前記誤り検出部で誤りが検出されたデータブロックを、前記インターフェース部に再度読み出させるデータフロー制御部と、を備えることを特徴とする。
【０００９】
本発明の一態様に係るコンフィギュレーション制御システムは、ＦＰＧＡ用のコンフィギュレーションデータから、当該コンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、当該データブロックの誤り検出を行なうための誤り検出用データを生成するデータ生成部と、前記データ生成部で生成されたデータブロック及び誤り検出用データを記憶する記憶部と、前記記憶部から、前記データブロック及び前記誤り検出用データを読み出すインターフェース部と、前記インターフェース部が読み出したデータブロックを一時的に保持する一時保持部と、前記一時保持部に保持されているデータブロックを読み出して、当該読み出されたデータブロックを前記ＦＰＧＡに与えるＦＰＧＡ制御信号生成部と、前記インターフェース部が読み出したデータブロックを、前記インターフェース部が読み出した誤り検出用データを用いて誤り検出を行なう誤り検出部と、前記誤り検出部で誤りが検出されなかったデータブロックを、前記ＦＰＧＡ制御信号生成部に読み出させるとともに、前記誤り検出部で誤りが検出されたデータブロックを、前記インターフェース部に再度読み出させるデータフロー制御部と、を備えることを特徴とする。
【００１０】
本発明の一態様に係るコンフィギュレーション制御方法は、ＦＰＧＡ用のコンフィギュレーションデータを予め定められたデータサイズに分割したデータブロック、及び、当該データブロックの誤り検出を行なうための誤り検出用データを読み出す読み出し過程と、前記読み出し過程で読み出されたデータブロックを一時的に保持する一時保持過程と、前記読み出し過程で読み出されたデータブロックを、前記読み出し過程で読み出された誤り検出用データを用いて誤り検出を行なう誤り検出過程と、前記誤り検出過程で誤りが検出されなかった場合に、前記一時保持過程で保持されているデータブロックを読み出して、当該読み出されたデータブロックを前記ＦＰＧＡに与えるＦＰＧＡ制御信号生成過程と、前記誤り検出過程で誤りが検出された場合に、前記誤り検出過程で誤りが検出されたデータブロックを再度読み出す再読み出し過程と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明の一態様によれば、上述のような課題を解消するためになされたものであり、エラー発生時の再コンフィギュレーション動作を極力減らすことができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１及び２に係るコンフィギュレーション制御システムの構成を概略的に示すブロック図である。
【図２】実施の形態１におけるＦＰＧＡで実現するユーザー回路の構成を概略的に示すブロック図である。
【図３】実施の形態１において、ＦＰＧＡに入力される外部入力データと、前処理部、機能切換部及び後処理部で行なわれるデータ処理との関係を示す概略図である。
【図４】（Ａ）及び（Ｂ）は、実施の形態１のメモリにおけるデータのマッピングイメージを示す概略図である。
【図５】実施の形態１におけるコンフィギュレーション制御装置の構成を概略的に示すブロック図である。
【図６】（Ａ）〜（Ｆ）は、実施の形態１において、コンフィギュレーションを実行しエラーが検出されない場合の動作について説明するための概略図である。
【図７】（Ａ）〜（Ｆ）は、実施の形態１において、コンフィギュレーション中に、エラーが検出される場合の動作について説明するための概略図である。
【図８】実施の形態１において、誤り検出部及びデータフロー制御部での処理を示すフローチャートである。
【図９】実施の形態２におけるコンフィギュレーション制御装置の構成を概略的に示すブロック図である。
【図１０】（Ａ）及び（Ｂ）は、実施の形態２における機能切替部での動作を説明するための概略図である。
【図１１】実施の形態２における誤り検出部及びデータフロー制御部での処理を示すフローチャートである。
【図１２】実施の形態２において、データ変更要求信号で新たに指定する機能と時間との関係を示す概略図である。
【図１３】実施の形態２におけるＦＰＧＡで実現するユーザー回路の変形例を示す概略図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係るコンフィギュレーション制御システム１００の構成を概略的に示すブロック図である。
コンフィギュレーション制御システム１００は、ＣＰＵ１１０と、メモリ１２０と、データバス１３０と、ＦＰＧＡ１４０と、コンフィギュレーション制御装置１５０とを備える。ＣＰＵ１１０、メモリ１２０及びコンフィギュレーション制御装置１５０は、データバス１３０に接続されている。なお、図１の括弧内の符号は、実施の形態２における構成を示している。
なお、本発明におけるコンフィギュレーション制御方法は、コンフィギュレーション制御システム１００により実現される。
【００１４】
ＣＰＵ１１０は、ＦＰＧＡ１４０用のコンフィギュレーションデータを予め定められたデータサイズに分割したデータブロックの誤り検出を行なうための誤り検出用データを生成し、このデータブロックと誤り検出用データとをメモリ１２０に記憶させる。例えば、ＣＰＵ１１０は、コンフィギュレーション制御システム１００を備える装置の電源投入後に、ＦＰＧＡ１４０のコンフィギュレーションデータをメモリ１２０に書き込む。この時、ＣＰＵ１１０は、コンフィギュレーション制御装置１５０で誤り検出するための冗長データ（誤り検出用データ）も合わせて書き込むものとする。このため、ＣＰＵ１１０は、コンフィギュレーションデータから誤り検出用データを生成するデータ生成部として機能する。なお、ＦＰＧＡ１４０のコンフィギュレーションデータは、図示されていない不揮発性の記憶部（記憶装置）に記憶されているものとする。
そして、ＣＰＵ１１０は、メモリ１２０へのコンフィギュレーションデータの書き込みの完了後に、コンフィギュレーション制御装置１５０に対してコンフィギュレーションの開始を指示する。
【００１５】
メモリ１２０は、冗長データが付加されたコンフィギュレーションデータを記憶する記憶部である。メモリ１２０は、高速動作が可能な大容量のメモリにより構成することで、冗長データを付加してもメモリ使用量やバストラフィックの増加の影響を抑制することができる。なお、メモリ１２０には、複数のコンフィギュレーションデータ及びその冗長データが記憶されているものとする。例えば、メモリ１２０としては、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  ＳＤＲＡＭ）等の高速動作が可能で大容量な揮発性メモリが使用される。
【００１６】
図２は、ＦＰＧＡ１４０で実現するユーザー回路の構成を概略的に示すブロック図である。
ＦＰＧＡ１４０は、前処理部１４１と、前段メモリ１４２と、機能切替部１４３と、後段メモリ１４４と、後処理部１４５とを備える。
【００１７】
外部から入力されるデータＤＩＮは、まず前処理部１４１で予め定められたデータ処理が施され、その結果は前段メモリ１４２に保持される。
次に、予め定められたタイミングで読み出された前段メモリ１４２上のデータは、機能切替部１４３でも予め定められたデータ処理が施され、その結果は後段メモリ１４４に保持される。
その後、予め定められたタイミングで後段メモリ１４４上のデータが読み出され、後処理部１４５で予め定められたデータ処理が施される。
図３に示されているように、外部入力データＤＩＮは、ＤＩＮ０、ＤＩＮ１、ＤＩＮ２、・・・の順に続けて入力され、図３に示されているような時間関係で、前処理部１４１、機能切替部１４３及び後処理部１４５でデータ処理が実行される。
【００１８】
機能切替部１４３は、ＦＰＧＡ１４０の動作中であっても処理内容を変更可能な部分であり、ＦＰＧＡ１４０の動作中に回路情報を書き換えることにより機能切替部１４３で実行する処理、即ち機能を切り替える。機能の切り替えは、ＣＰＵ１１０からの命令によりコンフィギュレーション制御装置１５０がＦＰＧＡ１４０を部分的に再コンフィギュレーションすることで実現される。
【００１９】
部分的な再コンフィギュレーションを行うため、機能切替部１４３で切り替える回路のコンフィギュレーションデータは全て、メモリ１２０に保持されている。
図４（Ａ）及び（Ｂ）は、メモリ１２０におけるデータのマッピングイメージを示す概略図である。
図４（Ａ）に示されているように、符号Ｆ０は、ＦＰＧＡ１４０全体回路のコンフィギュレーションデータを示し、符号Ｆ１〜Ｆ４は、機能切替部１４３のコンフィギュレーションデータを格納する領域であり、符号Ｆ１〜Ｆ４で示される領域に格納されているコンフィギュレーションデータは、それぞれ機能１〜機能４に対応する。
図４（Ｂ）に示されているように、それぞれのコンフィギュレーションデータは、さらにＤ０、Ｄ１、・・・、Ｄｎの誤り検出処理単位毎のデータブロックに分割されており、それぞれのデータブロックには、対応する誤り検出用データＣＲＣ０、ＣＲＣ１、・・・、ＣＲＣｎが付加されている。
なお、図４では、コンフィギュレーションデータの誤り検出の処理単位である各々のデータブロックの末尾に誤り検出用データが付加されているが、特にこの配置に限るものではなく、コンフィギュレーションデータと誤り検出用データとが別領域に保持されていてもよい。
【００２０】
電源投入後の最初のコンフィギュレーションでは、コンフィギュレーションデータＦ０が用いられ、その後ＣＰＵ１１０からの機能選択信号に従い、コンフィギュレーション制御装置１５０は、領域Ｆ１〜Ｆ４の何れかに格納されているコンフィギュレーションデータを用いて、部分的に再コンフィギュレーションを行う。
【００２１】
コンフィギュレーション制御装置１５０は、ＣＰＵ１１０からの指示を受けて、データバス１３０を介してメモリ１２０からコンフィギュレーションデータを読み出す。そして、コンフィギュレーション制御装置１５０は、読み出されたコンフィギュレーションデータの誤り検出処理を行い、コンフィギュレーション制御信号とともにコンフィギュレーションデータをＦＰＧＡ１４０へと出力する。これにより、コンフィギュレーション制御装置１５０は、ＦＰＧＡ１４０のコンフィギュレーションを行う。
【００２２】
図５は、コンフィギュレーション制御装置１５０の構成を概略的に示すブロック図である。
コンフィギュレーション制御装置１５０は、インターフェース部としてのバスインターフェース（以下、バスＩ／Ｆ）１５１と、データ選択部１５２と、一時保持部としてのバッファ１５３と、ＦＰＧＡ制御信号生成部１５４と、誤り検出部１５５と、データフロー制御部１５６とを備える。
【００２３】
バスＩ／Ｆ１５１は、データバス１３０の仕様に従って、通信を行うための回路である。例えば、バスＩ／Ｆ１５１は、データフロー制御部１５６からの指示に従って、コンフィギュレーションデータ（データブロック）及び誤り検出用データをメモリ１２０から読み出す。バスＩ／Ｆ１５１は、データバス１３０に接続される他の部分とデータをやり取りするためのデータ整形及びバス制御信号の生成を行う。
【００２４】
データ選択部１５２は、データバス１３０を介してメモリ１２０から読み出されたデータから、コンフィギュレーションデータと誤り検出用データとを判別する。そして、データ選択部１５２は、コンフィギュレーションデータをバッファ１５３及び誤り検出部１５５へ、誤り検出用データを誤り検出部１５５のみに出力する。
【００２５】
バッファ１５３は、コンフィギュレーションデータをバッファリングする。そして、ＦＰＧＡ制御信号生成部１５４からの要求に従って、コンフィギュレーションデータが読み出される。バッファ１５３は、誤り検出部１５５で誤り検出対象となる一連のデータ（データブロック）のデータサイズを単位として、２単位に相当するデータをバッファリングできるものとする。
【００２６】
ＦＰＧＡ制御信号生成部１５４は、ＦＰＧＡ１４０のコンフィギュレーションを制御する。例えば、ＦＰＧＡ制御信号生成部１５４は、ＦＰＧＡ１４０のコンフィギュレーションを制御するＦＰＧＡ制御信号の生成、及び、必要に応じてコンフィギュレーションデータのデータ幅の整形等を行う。コンフィギュレーション動作の実行の可否は、データフロー制御部１５６から制御される。実施の形態１では、ＦＰＧＡ制御信号生成部１５４は、ＦＰＧＡ制御信号として、クロックＣ＿ＣＬＫに同期させたデータＣ＿ＤＡＴをＦＰＧＡ１４０に出力するものとする。
【００２７】
誤り検出部１５５は、誤り検出用データを用いて、コンフィギュレーションデータの誤り検出を行なう。例えば、誤り検出部１５５は、順次入力されるコンフィギュレーションデータの処理単位であるデータブロックについて、予め定められた算出処理により誤り検出データを算出する。そして、誤り検出部１５５は、算出された誤り検出データと、このデータブロックとともに入力された誤り検出用データとを比較することにより誤りを検出する。例えば、誤り検出部１５５は、算出された誤り検出データと、誤り検出用データとが一致すれば誤りなし、一致しなければ誤りありの検出結果を出力する。
【００２８】
データフロー制御部１５６は、誤り検出部１５５での誤り検出結果をもとに、バスＩ／Ｆ１５１及びＦＰＧＡ制御信号生成部１５４を制御する。具体的には、誤り検出部１５５において誤りがないと判断された場合、データフロー制御部１５６は、ＦＰＧＡ制御信号生成部１５４に対してはＦＰＧＡへのコンフィギュレーションデータの書き込みを許可し、バスＩ／Ｆ１５１に対しては次のコンフィギュレーションデータの読み出しを指示する。誤りがあると判断された場合は、データフロー制御部１５６は、ＦＰＧＡ制御信号生成部１５４に対してウェイト信号ＷＳによりコンフィギュレーションの動作を一時停止させ、バスＩ／Ｆ１５１に対してはリピート信号ＲＳにより、誤りが検出されたデータブロックと同じ領域のコンフィギュレーションデータ（データブロック）を再度読み出すよう指示する。なお、データフロー制御部１５６は、コンフィギュレーション開始時には、ウェイト信号とリピート信号とをともにアサートした状態にし、誤り検出処理単位であるデータブロックに誤りがなく、次の誤り検出処理単位であるデータブロックの処理に移るときにこれらをデアサートし、誤りがある場合は、これらをアサートしたままにする。
データフロー制御部１５６は、さらに、ＦＰＧＡ制御信号生成部１５４及びバスＩ／Ｆ１５１の動作タイミングを調整する。ＦＰＧＡ制御信号生成部１５４及びバスＩ／Ｆ１５１では、動作開始時にウェイト信号ＷＳやリピート信号ＲＳが取り込まれ、その状態に依存して動作が変わる。
【００２９】
次に、コンフィギュレーション制御装置１５０の動作について説明する。
図６（Ａ）〜（Ｆ）は、コンフィギュレーションを実行しエラーが検出されない場合の動作について説明するための概略図である。
【００３０】
図６（Ａ）に示されているように、時刻ｔ００から、メモリ１２０のＦ０領域にあるコンフィギュレーションデータが、バスＩ／Ｆ１５１を介して順次読み出され、データ選択部１５２にてデータが振り分けられる。
図６（Ｂ）に示されているように、時刻ｔ０１において誤り検出処理単位サイズに相当するデータブロックＦ０＿Ｄ０がバッファ１５３にバッファリングされると、誤り検出部１５５では誤り検出データ算出処理が実行される。
図６（Ｃ）に示されているように、時刻ｔ０１においてデータＦ０＿Ｄ０の読み出しが完了した後、誤り検出用データＦ０＿ＣＲＣ０が読み出され、時刻ｔ０２において、誤り検出部１５５にて算出された誤り検出データと読み出された誤り検出用データとの比較が行われる。ここでは、誤り検出部１１５は、誤りなしの検出結果をデータフロー制御部１５６に出力する。
【００３１】
誤りなしの検出結果を受けたデータフロー制御部１５６は、ウェイト信号ＷＳとリピート信号ＲＳとをデアサートする。図６（Ｄ）に示されているように、時刻ｔ０２から、ＦＰＧＡ制御信号生成部１５４は、バッファ１５３からのデータ読み出しを開始する。そして、図６（Ｅ）及び（Ｆ）に示されているように、ＦＰＧＡ制御信号生成部１５４は、ＦＰＧＡ制御信号Ｃ＿ＣＬＫと同期するコンフィギュレーションデータＣ＿ＤＡＴをＦＰＧＡ１４０に対して出力する。そして、バスＩ／Ｆ１５１は、メモリ１２０から次のデータＦ０＿Ｄ１の読み出しを行う。
【００３２】
以上のような処理を、コンフィギュレーションデータＦ０の最終データブロックであるＦ０＿Ｄｎまで繰り返す。ＦＰＧＡ１４０には、エラーのないコンフィギュレーションデータが書き込まれ、コンフィギュレーションデータに誤りが混入することによるコンフィギュレーションエラーは発生せず、コンフィギュレーションが完了する。
【００３３】
図７（Ａ）〜（Ｆ）は、コンフィギュレーション中に、エラーが検出される場合の動作について説明するための概略図である。
【００３４】
図６で説明した誤りなしの場合と同様にして、時刻ｔ１０から時刻ｔ１２において、メモリ１２０からコンフィギュレーションデータＦ０が、データブロックＦ０＿Ｄ０から順にリードされつつ、ＦＰＧＡ１４０に対してＣ＿ＣＬＫ及びＣ＿ＤＡＴが出力される。
ここで、図７（Ｃ）に示されているように、時刻ｔ１３からｋ番目（ｋは０以上の整数）のデータブロックＦ０＿Ｄｋを処理する際に、誤り検出部１５５にて誤りが検出されると、誤りありの検出結果がデータフロー制御部１５６に出力される。
【００３５】
誤りありの検出結果を受けたデータフロー制御部１５６は、ウェイト信号ＷＳとリピート信号ＲＳをアサートする。これにより、図７（Ｄ）、（Ｅ）及び（Ｆ）に示されているように、ＦＰＧＡ制御信号生成部１５４は、バッファ１５３からのデータ読み出しと、Ｃ＿ＣＬＫおよびＣ＿ＤＡＴの出力をいったん停止する。また、図７（Ａ）に示されているように、時刻ｔ１４において、バスＩ／Ｆ１５１は、メモリ１２０でのデータ読み出し開始アドレスをＦ０＿Ｄｋの先頭に戻し、再度Ｆ０＿Ｄｋを読み出す。これにより、図７（Ｂ）に示されているように、時刻ｔ１４以降、バッファ１５３には、Ｆ０＿Ｄｋのデータが上書きされる。
【００３６】
図７（Ｂ）に示されているように、時刻ｔ１５において、Ｆ０＿Ｄｋのメモリ１２０からの２回目の読み出しが完了すると、誤り検出用データＦ０＿ＣＲＣｋが読み出され、図７（Ｃ）に示されているように、時刻ｔ１６において、誤り検出部１５５にて誤り検出データ算出結果との再比較が行われ、誤りなしの検出結果が出力される。
【００３７】
誤りなしの検出結果を受け、データフロー制御部１５６は、ウェイト信号ＷＳとリピート信号ＲＳを再びデアサートする。これにより、図７（Ｄ）〜（Ｆ）に示されているように、時刻ｔ１６から、ＦＰＧＡ制御信号生成部１５４は、バッファ１５３からのデータ読み出しを再開し、Ｃ＿ＣＬＫ及びＣ＿ＤＡＴの出力を再開する。さらに、バスＩ／Ｆ１５１は、メモリ１２０から次のデータＦ０＿Ｄｋ＋１の読み出しを行う。
【００３８】
図８は、誤り検出部１５５及びデータフロー制御部１５６での処理を示すフローチャートである。
誤り検出部１５５は、データ選択部１５２から入力されるデータに対して誤り検出データを算出し、データ選択部１５２から入力される誤り検出用データとの比較により誤り検出処理を行い、誤り検出処理が完了したか否かを判断する（Ｓ１０）。
誤り検出処理が完了した場合（Ｓ１０でＹｅｓ）には、誤り検出部１５５は、誤り検出処理により誤りが検出されたか否かを確認する（Ｓ１１）。誤りが検出されなかった場合（Ｓ１１でＮｏ）には、処理はステップＳ１２に進み、誤りが検出された場合（Ｓ１１でＹｅｓ）には、処理はステップＳ１３に進む。
ステップＳ１２では、データフロー制御部１５６は、メモリリードアドレスをインクリメントして、次のデータブロックの先頭をバスＩ／Ｆ１５１に指定する。
ステップＳ１３では、データフロー制御部１５６は、コンフィギュレーション動作をいったん停止するようＦＰＧＡ制御信号生成部１５４に指示する。
以上の処理は、データブロック毎に繰り返される。
【００３９】
以上のようにして、予め誤り検出用データをコンフィギュレーションデータと合わせて用意しておくことで、ＦＰＧＡ１４０にコンフィギュレーションデータを書き込む前にコンフィギュレーションデータの誤り検出を行なうことができる。また、誤りが検出された場合には、検出部分に相当するデータブロックを読み直して、コンフィギュレーションを再開することができるので、誤り検出以前に書き込まれたコンフィギュレーションデータを書き換える必要がない。
【００４０】
ＦＰＧＡデバイスにコンフィギュレーションデータの誤り検出機能がある場合には、ＦＰＧＡデバイスでの誤り検出結果を元に再度コンフィギュレーションを行うことは可能であるが、コンフィギュレーションデータのどの部分で誤りが検出されたのかを知ることは困難であり、結局は全てのコンフィギュレーションデータを書き込み直すことになる。一方、実施の形態１では、ＦＰＧＡデバイスのコンフィギュレーションデータの構造に依存することなく、コンフィギュレーションデータのブロック境界をユーザー側で決定することができ、誤り検出時の再処理データサイズを最適化することも可能である。
【００４１】
本実施の形態１では、全体回路のコンフィギュレーション実行時の動作を例に説明を行ったが、機能切替部１４３の機能を切り替える場合、その他部分的にコンフィギュレーションデータを書き換える場合、全体回路に対してコンフィギュレーションをやり直す場合等でも適用可能である。
【００４２】
なお、コンフィギュレーションデータの書き込み及び誤り検出データの生成動作は、必ずしもＣＰＵ１１０で行なう必要はない。例えば、コンフィギュレーション制御装置１５０が行ってもよく、また、他の手段が行ってもよい。コンフィギュレーション制御装置１５０で行なう場合には、コンフィギュレーション制御装置１５０は、ＣＰＵ１１０と同様の処理を行うデータ生成部をさらに備えていればよい。また、メモリ１２０は、ＤＲＡＭではなくてもよく、フラッシュメモリであってもよい。メモリ１２０としてフラッシュメモリが使用される場合には、予め誤り検出用冗長データとともにコンフィギュレーションデータが書き込まれていてもよい。さらに、ＣＰＵ１１０、コンフィギュレーション制御装置１５０又は他の手段が、図示しない不揮発性の記憶部（記憶装置）から、一旦メモリ１２０にコンフィギュレーションデータを移動させてから、誤り検出用冗長データを生成してもよい。
【００４３】
実施の形態２．
従来の技術では、エラー検出から再コンフィギュレーションが完了するまでは対象となる機能を停止しており、連続してエラーを検出する場合には、機能の再開ができない。そこで、実施の形態２では、連続してエラーが検出された場合でも最低限の機能動作を再開できるコンフィギュレーション制御装置を提供する。
【００４４】
図１に示されているように、実施の形態２に係るコンフィギュレーション制御システム２００は、ＣＰＵ１１０と、メモリ１２０と、データバス１３０と、ＦＰＧＡ１４０と、コンフィギュレーション制御装置２５０とを備える。実施の形態２に係るコンフィギュレーション制御システム２００は、コンフィギュレーション制御装置２５０において、実施の形態１に係るコンフィギュレーション制御システム１００と異なっている。
【００４５】
図９は、コンフィギュレーション制御装置２５０の構成を概略的に示すブロック図である。
コンフィギュレーション制御装置２５０は、バスＩ／Ｆ２５１と、データ選択部１５２と、バッファ１５３と、ＦＰＧＡ制御信号生成部１５４と、誤り検出部１５５と、データフロー制御部２５６と、タイミング管理部２５７とを備える。実施の形態２におけるコンフィギュレーション制御装置２５０は、バスＩ／Ｆ２５１及びデータフロー制御部２５６での処理の点、並びに、タイミング管理部２５７がさらに設けられている点において、実施の形態１におけるコンフィギュレーション制御装置１５０と異なっている。なお、誤り検出部１５５は、誤り検出の結果をタイミング管理部２５７にも出力する。
【００４６】
ここで、実施の形態２におけるＦＰＧＡ１４０の機能切替部１４３に関わる動作について図１０（Ａ）及び（Ｂ）を用いて説明する。
実施の形態２では、機能切替部１４３で実現する機能をＦＰＧＡ１４０の動作中に切り替える。図１０（Ａ）は、機能切替部１４３で選択される機能と、コンフィギュレーション動作との関係を示す概略図である。まず、ＦＰＧＡ１４０の全体回路のコンフィギュレーションが実行され、このときＴｃａの時間がかかり、機能切替部１４３に対しては、機能１に相当する回路のコンフィギュレーションデータが書き込まれる。全体回路のコンフィギュレーションの完了後、ＦＰＧＡ１４０は一定の動作周期Ｔｐで動作し、Ｔｐ毎に機能切替部１４３はその機能を切り替える。実施の形態２では、機能１、機能２、機能４、機能３の順に、機能を切り替えるものとし、それぞれの機能において誤りのない状態でのコンフィギュレーションにかかる時間は、それぞれＴｃ１、Ｔｃ２、Ｔｃ４及びＴｃ３である。
【００４７】
動作周期Ｔｐは、アイドル期間Ｔｉと動作期間Ｔｒとからなり、機能切替部１４３での機能の切り替えは、アイドル期間Ｔｉで行なわれる。図１０（Ｂ）は、機能２から機能４に切り替える場合の時間関係を拡大して示した図である。コンフィギュレーション時間Ｔｃ１〜Ｔｃ４は、それぞれアイドル期間Ｔｉよりも短くなければならない。
【００４８】
図９の説明に戻り、タイミング管理部２５７は、このアイドル期間Ｔｉと機能１〜４のコンフィギュレーション時間Ｔｃ１〜Ｔｃ４との関係を管理する。タイミング管理部２５７は、各機能のコンフィギュレーションデータサイズと、付加する誤り検出用データのサイズ（冗長度）とから、コンフィギュレーションに必要な誤り検出処理の単位ブロックの個数、及び、単位ブロック当たりのコンフィギュレーションにかかる時間Ｔｃｕを算出することができる。
【００４９】
例えば、機能４をコンフィギュレーションする際、誤り検出部１５５で検出された誤りありデータブロック数がＮｅ個あれば、機能４のコンフィギュレーションにはＴｃ４＋Ｔｃｕ×Ｎｅの時間がかかることになる。このような時間が、アイドル期間Ｔｉを超えると機能４を正常にコンフィギュレーションできないことになる。
【００５０】
タイミング管理部２５７は、各機能のコンフィギュレーション時に許容できる誤り発生回数に等しい許容誤り検出データブロック数Ｎａを決定し、データフロー制御部２５６へと出力する。総コンフィギュレーション時間がアイドル期間Ｔｉを超えないように許容誤り検出データブロック数Ｎａを設定することで、予め定められた期間内で動作するように制御することができる。許容誤り検出データブロック数Ｎａは、コンフィギュレーションデータにおけるデータブロックの再読み出しの上限回数を示す。なお、許容誤り検出データブロック数Ｎａは、総コンフィギュレーション時間がアイドル期間Ｔｉを超えないような数であればよく、必ずしも、総コンフィギュレーション時間がアイドル期間Ｔｉを超えない最大数である必要はない。
【００５１】
実施の形態１のデータフロー制御部１５６は、誤り検出部１５５で誤りありの場合、誤りが検出されなくなるまでメモリ１２０からコンフィギュレーションデータの再読み出しを繰り返すように構成されていた。一方、実施の形態２のデータフロー制御部２５６は、誤りが発生した場合にコンフィギュレーションデータの再読み出し回数を、タイミング管理部２５７から通知される許容誤り検出データブロック数Ｎａで制限する。
【００５２】
コンフィギュレーションデータの再読み出し回数がＮａを超えたとき、データフロー制御部２５６は、コンフィギュレーションが完了できないと判定し、バスＩ／Ｆ２５１に対して、コンフィギュレーションデータを変更するように要求するデータ変更要求信号ＤＲＳを出力する。
バスＩ／Ｆ２５１は、データ変更要求信号ＤＲＳに従い、メモリ１２０の違う機能がアサインされた領域からコンフィギュレーションデータを読み出す。読み出されたデータは、データ選択部１５２に出力され、これまでと同様にして、ＦＰＧＡ１４０へのコンフィギュレーションが試みられる。
【００５３】
図１１は、誤り検出部１５５及びデータフロー制御部２５６での処理を示すフローチャートである。図１１に示されているフローチャートでは、コンフィギュレーションデータ読み出し回数が制限される。
誤り検出部１５５は、データ選択部１５２から入力されるデータに対して誤り検出データを算出し、データ選択部１５２から入力される誤り検出用データとの比較により誤り検出処理を行い、誤り検出処理が完了したか否かを判断する（Ｓ２０）。
誤り検出処理が完了した場合（Ｓ２０でＹｅｓ）には、誤り検出部１５５は、誤り検出処理により誤りが検出されたか否かを確認する（Ｓ２１）。誤りが検出されなかった場合（Ｓ２１でＮｏ）には、処理はステップＳ２２に進み、誤りが検出された場合（Ｓ２１でＹｅｓ）には、処理はステップＳ２３に進む。
ステップＳ２２では、データフロー制御部２５６は、メモリリードアドレスインクリメントして、次のデータブロックの先頭をバスＩ／Ｆ２５１に指定する。
【００５４】
ステップＳ２３では、データフロー制御部２５６は、コンフィギュレーション動作をいったん停止するようＦＰＧＡ制御信号生成部１５４に指示する。
次に、データフロー制御部２５６は、メモリ２５６ａに記憶されている誤りありデータブロック数Ｎｅをインクリメントする（Ｓ２４）。なお、誤りありデータブロック数Ｎｅは、１つのコンフィギュレーションデータにおいて誤りが検出されたデータブロックの数を示し、コンフィギュレーションデータにおけるデータブロックの再読み出し回数に対応する。
そして、データフロー制御部２５６は、誤りありデータブロック数Ｎｅと、メモリ２５６ａに記憶されている許容誤り検出データブロック数Ｎａとを比較する（Ｓ２５）。誤りありデータブロック数Ｎｅが許容誤り検出データブロック数Ｎａよりも大きい場合（Ｓ２５でＹｅｓ）には、処理はステップＳ２６に進み、誤りありデータブロック数Ｎｅが許容誤り検出データブロック数Ｎａ以下である場合（Ｓ２５でＮｏ）には、処理は終了する。ここでの処理終了は、メモリ１２０での読み出し開始アドレスを同じデータブロックの先頭に戻し、次の誤り検出処理の開始を待つことになる。この処理を、データブロック毎に繰り返す。
【００５５】
ステップＳ２６では、データフロー制御部２５６は、コンフィギュレーションデータを変えるようデータ変更要求信号ＤＲＳをバスＩ／Ｆ２５１に出力する。
【００５６】
なお、データフロー制御部２５６は、誤りありデータブロック数Ｎｅを、対象機能のコンフィギュレーション開始時、又は、対象機能のコンフィギュレーション終了時にゼロにリセットする。
【００５７】
データ変更要求信号ＤＲＳで新たに指定する機能と時間との関係を、図１２を用いて説明する。
データ変更要求信号ＤＲＳで新たに指定する機能としては、機能切替部１４３で担う機能１〜４のうちコンフィギュレーションに失敗した機能とは別の機能を選択することもできるが、それとは別に機能切替部１４３での機能をバイパスするような簡単で規模の小さな回路（例えば、機能Ｓ）に対応するコンフィギュレーションデータを用意しておいてもよい。回路規模が小さければ、コンフィギュレーションデータサイズも小さくでき、コンフィギュレーション時間も少なく抑えることができるので、本来切り替えるべき機能でのコンフィギュレーションデータの再読み出しにかけられる時間を多くすることができる。
【００５８】
コンフィギュレーション中に誤りありの状態が続き、アイドル期間Ｔｉ終了直前に機能Ｓでのコンフィギュレーションを行っても、さらにコンフィギュレーションが完了できない可能性がある。そのような場合に備えるため、図１３に示すＦＰＧＡ２４０内に構成するユーザー回路のようにパス選択部２４６を設け、機能切替部１４３の外部に全体回路の一部として機能切替部１４３をバイパスするような構成（外部バイパス回路）を採用することができる。例えば、パス選択部２４６は、機能切替部１４３で処理が行なわれる第１のパスと、機能切替部１４３で処理が行なわれない第２のパスとを切り替えることができる。なお、ＦＰＧＡ２４０は、データバス１３０に接続されているものとする。
【００５９】
機能Ｓのコンフィギュレーション中に誤りありが検出された場合、機能１〜４でのコンフィギュレーションと同様にして、タイミング管理部２５７から指定される許容誤り検出データブロック数Ｎａを上限として、コンフィギュレーションデータの再読み出しが行なわれる。誤りありデータブロック数Ｎｅが許容誤り検出データブロック数Ｎａを超えた時、データフロー制御部２５６は外部バイパス要求をＣＰＵ１１０に通知する。
【００６０】
ＣＰＵ１１０では外部バイパス要求を受信し、通常は後段メモリ１４４からのデータパスを後処理部１４５と接続するよう動作しているパス選択部２４６の設定を変更することで、前段メモリ１４２を後処理部１４５と接続させる。これにより、正常にコンフィギュレーションが完了していない機能切替部１４３の出力を保持する後段メモリ１４４のデータではなく、正常に処理の完了している前処理部１４１の出力データを保持する前段メモリ１４２のデータが後処理部１４５に与えられるため、ＦＰＧＡ２４０の不正出力を防ぐことができる。
【００６１】
なお、前段メモリ１４２と後段メモリ１４４で保持するデータフォーマットに互換性がない場合は、パス選択部２４６は、データのフォーマットを変換するものとする。
【００６２】
また、外部バイパス要求は、ＦＰＧＡ２４０からの割込み出力の受信、あるいはＣＰＵ１１０からバスＩ／Ｆ２５１を介するＦＰＧＡ２４０内のステータスレジスタ（図示しない）のポーリング等により行うものとする。いずれにしても、アイドル期間Ｔｉが終了する前に、パス選択部２４６での外部バイパス回路の切り替え動作を完了させる必要がある。
【符号の説明】
【００６３】
１００，２００  コンフィギュレーション制御システム、  １１０  ＣＰＵ、  １２０  メモリ、  １３０  データバス、  １４０，２４０  ＦＰＧＡ、  １４１  前処理部、  １４２  前段メモリ、  １４３  機能切替部、  １４４  後段メモリ、  １４５  後処理部、  ２４６  パス選択部、  １５０，２５０  コンフィギュレーション制御装置、  １５１，２５１  バスＩ／Ｆ、  １５２  データ選択部、  １５３  バッファ、  １５４  ＦＰＧＡ制御信号生成部、  １５５  誤り検出部、  １５６，２５６  データフロー制御部、  ２５７  タイミング管理部。
【図１】
2015132907.tif 000003
【図２】
2015132907.tif 000004
【図３】
2015132907.tif 000005
【図４】
2015132907.tif 000006
【図５】
2015132907.tif 000007
【図６】
2015132907.tif 000008
【図７】
2015132907.tif 000009
【図８】
2015132907.tif 000010
【図９】
2015132907.tif 000011
【図１０】
2015132907.tif 000012
【図１１】
2015132907.tif 000013
【図１２】
2015132907.tif 000014
【図１３】
2015132907.tif 000015