以下に、本発明にかかる半導体集積回路装置を備えたバスブリッジ回路の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態
図1は、本発明の実施の形態にかかるバスブリッジ回路の構成を示す図である。バスブリッジ回路100は、回路機能の入れ替えが可能な連続可用性を兼ね備えたシステムに適用される半導体集積回路装置であり、回路構成の変更に柔軟性のあるFPGA(プログラマブル論理回路)を備えて構成されている。なお、ここではバスブリッジ回路100内が再構成可能な半導体集積回路装置を備える場合について説明するが、バスブリッジ回路100以外の回路が再構成可能な半導体集積回路装置を備える構成としてもよい。
バスブリッジ回路100は、バスA61、アドレスバスB62、データバスB63と接続されており、バスA61上のデータとアドレスバスB62、データバスB63上のデータ転送を行う。すなわち、バスブリッジ回路100は、複数のバス間のデータ転送を行う際に、回路構成を変更して種々のI/Oを制御する。
マイクロプロセッサ50側のバスA61からバスブリッジ回路100に対して転送されるデータ(情報)は、各周辺回路のバスプロトコル仕様に関する情報、リクエストの種類(リード動作、ライト動作、シングル転送、バースト転送等)、転送するデータのサイズ、周辺回路内部のレジスタやメモリのアドレスとデータ等である。
バスブリッジ回路100は、バスA61(バスA側)を介してマイクロプロセッサ50、DMA(Direct Memory Access channel unit)制御回路40、外部メモリ41と接続する。また、バスブリッジ回路100は、アドレスバスB62、データバスB63(バスB側)を介して周辺回路A42,B43,C44と接続する。なお、ここではバスB側の周辺回路(周辺回路A42,B43,C44)のバスプロトコルがそれぞれ異なっている場合について説明する。
バスブリッジ回路100は、バスブリッジ構成情報設定部11、バスA側リクエスト処理部12、バスB側プロトコル判定処理部13、バスプロトコル情報設定部14、バスB側アドレス設定部15、バスB側データ設定部16、バスA側アドレス設定部17、バスA側データ設定部18、ステータスレジスタ19、ライト用FIFO(Fast In Fast Out)20、リード用FIFO21、バスA側調停回路22、バスB側調停回路23、コンフィギュレーション管理制御回路24、コンフィギュレーション用メモリ25、制御部27、FPGA部(半導体集積回路装置)30からなる。
本実施の形態におけるバスブリッジ回路100は、FPGA部30内に分散配置されたメモリ(以下、分散メモリ3という)を、回路機能を変更するためのコンフィギュレーション用のメモリとして使用し、回路構成に要する時間を短縮する。
バスブリッジ構成情報設定部11は、バスブリッジ回路100に接続する周辺回路(周辺回路A42,B43,C44)の数(3つ)、夫々の周辺回路に使用されているバスプロトコルを識別するための情報、マイクロプロセッサ50側のバスA61に接続する構成要素に関する情報を保持(記憶)する。バスブリッジ構成情報設定部11は、バスA61、バスB側プロトコル判定処理部13と接続されている。
バスA側リクエスト処理部12は、バスA61に接続するマイクロプロセッサ50やDMA制御回路40から送信されるリクエストを識別し、識別した情報をコンフィギュレーション管理制御回路24、バスA側調停回路22、バスB側調停回路23等に送信する。
バスB側プロトコル判定処理部13は、周辺回路A42,B43,C44と接続する。バスB側プロトコル判定処理部13は、所定の周辺回路(例えば周辺回路A42)からバスブリッジ回路100に対してアクセスがあった場合に、アドレスバスB62、データバスB63に接続する周辺回路のバスリクエストを解析し、何れの周辺回路からのアクセスであるかを判別する。バスB側プロトコル判定処理部13は、バスブリッジ構成情報設定部11内の情報に基づいて、周辺回路の何れのバスプロトコル仕様を選択すべきかを判断する。
バスプロトコル情報設定部14は、ライト用FIFO20に入力された情報に基づいて、アドレス、データ以外のバスプロトコルに関する情報を設定する。バスB側アドレス設定部15は、バスA側からバスB側にアクセスする際の、バスB側(周辺回路A42,B43,C44)のアドレスを設定する。バスB側アドレス設定部15は、ライト用FIFO20に入力された情報に基づいて、バスB側のアドレスを設定する。バスB側データ設定部16は、バスA側からバスB側にアクセスする際に、バスB側の周辺回路に転送するデータを設定する。バスB側データ設定部16は、ライト用FIFO20に入力された情報に基づいて、バスB側に転送するデータを設定する。
バスA側アドレス設定部17は、バスB側からバスA側にアクセスする際の、バスA側(マイクロプロセッサ50、DMA制御回路40、外部メモリ41)のアドレスを設定する。バスA側データ設定部18は、バスB側からバスA側にアクセスする際に、バスA側に転送するデータを設定する。
ステータスレジスタ19は、バスブリッジ回路100が周辺回路のデータのリード完了か否かに関する情報を記憶する。ステータスレジスタ19は、バスブリッジ回路100が周辺回路のデータをリード完了すると「リード完了」に設定される。
ライト用FIFO20およびリード用FIFO21は、バスA61に接続されている。バスA61側からは、データライトの際のアクセスをライト用FIFO20に行い、データリードの際のアクセスをリード用FIFO21に行う。すなわち、ライト用FIFO20はマイクロプロセッサ50側のデータを受信し、リード用FIFO21はマイクロプロセッサ50側へデータを送信する。
ライト用FIFO20は、バスプロトコル情報設定部14、バスB側アドレス設定部15、バスB側データ設定部16と接続されている。また、リード用FIFO21は、バスA側アドレス設定部17、バスA側データ設定部18と接続されている。
バスA側調停回路22は、マイクロプロセッサ50、DMA制御回路40と接続し、バスB側調停回路22は、周辺回路A42,B43,C44と接続する。バスA側調停回路22はバスA側と通信する際の調停を行い、バスB側調停回路23はバスB側と通信する際の調停を行う。バスA側調停回路22、バスB側調停回路23は、コンフィギュレーション管理制御回路24からの指示に基づいて、通信の調停を行う。
コンフィギュレーション管理制御回路24は、バスA側調停回路22、バスB側調停回路23、コンフィギュレーション用メモリ25、バスB側プロトコル判定処理部13、バスプロトコル情報設定部14と接続する。
コンフィギュレーション管理制御回路24は、後述する2系統のコンフィギュレーションパスを有し、FPGA部30(高速に再構成可能な回路)のコンフィギュレーションを行う。コンフィギュレーション管理制御回路24は、一般的なFPGAが備えるコンフィギュレーション手段(第1のコンフィギュレーション)によるコンフィギュレーションパス(後述する第1のコンフィギュレーションパス6)と分散メモリ3に対するコンフィギュレーションパス(後述する第2のコンフィギュレーションパス5)を経由したコンフィギュレーション(第2のコンフィギュレーション)の制御を行う。なお、ここでは説明の便宜上、一般的なFPGAが備える第1のコンフィギュレーション手段のコンフィギュレーションデータを第1のコンフィギュレーションデータとし、分散メモリ3に対するコンフィギュレーションデータを第2のコンフィギュレーションデータとして説明する。
コンフィギュレーション管理制御回路24は、コンフィギュレーションデータの管理を行う。コンフィギュレーション管理制御回路24は、バスB側プロトコル判定処理部13の判定結果に基づいて、コンフィギュレーションメモリインデックス情報設定部26を検索し、コンフィギュレーション用メモリ25に含まれるコンフィギュレーションデータを、必要に応じてFPGA部30に転送し、FPGA部30のコンフィギュレーションを行う。
コンフィギュレーション管理制御回路24は、コンフィギュレーション中は、コンフィギュレーションが実施中であることを示す信号72を、バスA側調停回路22及びバスB側調停回路23に出し、周辺回路やマイクロプロセッサ50からバスブリッジ回路100へのアクセスを禁止させる。本実施の形態におけるコンフィギュレーションは、FPGA部30内の分散メモリ3にコンフィギュレーションデータを予め設定しておき、後述するバンクX1〜X3を高速に切替えることによって、コンフィギュレーションの待機時間を例えば1サイクル程度に短縮する。
コンフィギュレーション用メモリ25は、コンフィギュレーションデータを記憶する。コンフィギュレーション用メモリ25は、コンフィギュレーションメモリインデックス情報設定部26を備えている。コンフィギュレーションメモリインデックス情報設定部26は、複数種類のコンフィギュレーションデータを効率的に管理するためのインデックス情報を設定し記憶する。
FPGA部30は、バスプロトコル生成部31、アドレス変換部32を備えている。バスプロトコル生成部31は、バスB側プロトコル判定処理部13の判定結果に基づいて、FPGAをベースとした高速に再構成可能な回路を用いて、バスB側に接続する周辺回路(周辺回路A42、周辺回路B43、周辺回路C44)のバスプロトコル(リード動作、ライト動作、シングル転送、バースト転送等のバスプロトコル)を生成する。アドレス変換部32は、バスB側から、バスA側にアクセスする際に、アドレスをバスA側のアドレス空間に変換する。
バスプロトコル生成部31はバスB側アドレス設定部15、バスB側データ設定部16、コンフィギュレーション用メモリ25、アドレスバスB62、データバスB63、アドレス変換部32と接続されている。アドレス変換部32は、スA側アドレス設定部17、バスA側データ設定部18と接続している。
制御部27は、バスブリッジ構成情報設定部11、バスA側リクエスト処理部12、バスB側プロトコル判定処理部13、バスプロトコル情報設定部14、バスB側アドレス設定部15、バスB側データ設定部16、バスA側アドレス設定部17、バスA側データ設定部18、ステータスレジスタ19、ライト用FIFO20、リード用FIFO21、バスA側調停回路22、バスB側調停回路23、コンフィギュレーション管理制御回路24、コンフィギュレーション用メモリ25、FPGA部30を制御する。制御部27は、バスブリッジ回路100内の各構成要素と接続(図示せず)されている。また、ステータスレジスタ19は、FPGA部30と接続(図示せず)されている。
FPGA部30は、FPGAの基本要素であるルックアップテーブルやフリップフロップで構成される再構成可能な回路部(後述するエレメント1)とエレメント1間を接続するスイッチボックス2で構成されている。本実施の形態では、分散メモリ3を複数の論理的なバンクに分割し、バンク切替え信号によってバンクを切替えて、分散メモリ3からエレメント1に出力される回路構成情報を切り替える。
なお、ここではバスブリッジ回路100がコンフィギュレーション管理制御回路24、コンフィギュレーション用メモリ25を備える構成としたが、コンフィギュレーション管理制御回路24、コンフィギュレーション用メモリ25は、バスブリッジ回路100と異なる別の外部装置が備える構成としてもよい。
次に、実施の形態にかかるバスブリッジ回路100の動作について説明する。バスブリッジ回路100は、マイクロプロセッサ50や周辺回路A42,B43,C44が発生するリード動作、ライト動作などのバスのトランザクション単位で、バスブリッジ回路100内のFPGA部30内の情報を更新する。
まず、マイクロプロセッサ50がバスマスターとなって周辺回路A42,B43,C44にライト動作を行なう場合について説明する。周辺回路A42,B43,C44は、何れも同様の動作を行なうので、ここではマイクロプロセッサ50から周辺回路へのライト動作の一例として、マイクロプロセッサ50から周辺回路A42に対してライト動作を行う場合について説明する。
マイクロプロセッサ50から周辺回路A42に対してライト動作の開始を示すリクエスト(情報)を出力する。このリクエストは、バスブリッジ回路100のバスA側リクエスト処理部12に入力される。
バスA側リクエスト処理部12は、マイクロプロセッサ50からのリクエストの種類を識別する。ここでのバスA側リクエスト処理部12は、リクエストの種類がバスA61側からのライト動作であると判断する。
リクエストの種類がバスA61側からのライト動作であるので、バスA側調停回路22は、バスA61側に接続される回路及びバスブリッジ回路100内のFPGA部30がコンフィギュレーション中か否かの状態をチェックする。バスA側調停回路22は、FPGA部30がコンフィギュレーション中でなくバスブリッジ回路100がデータを受信可能な状態にあれば、マイクロプロセッサ50にバス調停信号71によってバスブリッジ回路100に対するライト動作の許可を与える。
マイクロプロセッサ50からバスブリッジ回路100に転送する情報(以下、転送情報という)としては、周辺回路A42のバスプロトコル仕様に関する情報、リクエストの種類(ここではライト動作)、転送するデータのサイズ、周辺回路A42の内部でアクセスするレジスタやメモリのアドレス、周辺回路A42に転送するデータがある。これらの転送情報に基づいて、バスブリッジ回路100が、バスB46側に接続する周辺回路のいずれかを選択し(ここでは周辺回路A42を選択)、ライト動作を行う。
まず、マイクロプロセッサ50がバスブリッジ回路100のライト用FIFO20に対して、転送情報を送信する。バスプロトコル情報設定部14は、ライト用FIFO20に入力された情報に基づいて、アドレス、データ以外のバスプロトコルに関する情報を設定する。
バスB側アドレス設定部15は、ライト用FIFO20に入力された情報に基づいて、周辺回路A42のアドレスを設定する。バスB側データ設定部16は、ライト用FIFO20に入力された情報に基づいて、周辺回路A42に転送するデータを設定する。
コンフィギュレーション管理制御回路24は、バスプロトコル情報設定部14に設定された情報を読み取る。これにより、コンフィギュレーション管理制御回路24は、FPGA部30内の分散メモリ3の複数の論理的なバンク(後述するバンクX1〜X3)に、現在、どのような回路構成情報が設定してあるかチェックする。
分散メモリ3内にバスプロトコル情報設定部14から読み取った情報と同じ情報があれば、バンク切替え信号7(後述するバンク切替え制御回路84からの信号)によって分散メモリ3内のバンクの切替えを行う。
一方、分散メモリ3内にバスプロトコル情報設定部14から読み取った情報が存在しない場合、バスプロトコルに対応したコンフィギュレーションメモリインデックス情報設定部26を用いて、必要なバスプロトコルのコンフィギュレーションデータがコンフィギュレーション用メモリ25に保持されているかをチェックする。必要なバスプロトコルのコンフィギュレーションデータがコンフィギュレーション用メモリ25内に格納されている場合、コンフィギュレーション管理制御回路24がコンフィギュレーション用メモリ25内のコンフィギュレーションデータをFPGA部30にダウンロードしてコンフィギュレーションを行う。
コンフィギュレーション管理制御回路24によるFPGA部30のコンフィギュレーション中は、バスA側調停回路22及びバスB側調停回路23に対して、コンフィギュレーション実施中を示す信号72を送信し、バスブリッジ回路100に対する外部からのアクセスを禁止させる。
コンフィギュレーションが完了すると、FPGA部30のバスプロトコル生成部31は、バスB側アドレス設定部15に設定されたアドレスをアドレスバスB62に出力する。また、バスプロトコル生成部31は、バスB側データ設定部16に設定されたデータ、周辺回路A42にアクセスするための制御信号をデータバスB63に出力する。
ここでのバスプロトコル生成部31は、分散メモリ3のバンクに設定された情報(所定のバスプロトコル)に従ってアドレス、データ、制御信号をバスB側へ順次送出し、マイクロプロセッサ50から周辺回路A42に対するライト動作を行う。
このように、FPGA30の分散メモリ3内に必要な回路構成情報が分散メモリ3のバンクX1〜X3に存在する場合には、バンク切替え信号7によって分散メモリ3内のバンクを迅速に切替えることができるので、マイクロプロセッサ50から周辺回路A42に対するライト動作の開始までを短時間で行なうことが可能となる。
また、FPGA30の分散メモリ3内に必要な回路構成情報が分散メモリ3のバンクX1〜X3に存在しない場合であっても、コンフィギュレーション管理制御回路24がコンフィギュレーション用メモリ25内のコンフィギュレーションデータをFPGA部30にダウンロードしてコンフィギュレーションを行うことが可能となる。
次に、マイクロプロセッサ50がバスマスターとなって周辺回路A42に対するリードを行う動作について説明する。なお、マイクロプロセッサ50が周辺回路A42に対してライトを行なう動作と同様の動作に対しては、その説明を省略する。ライト用FIFO20がマイクロプロセッサ50から転送情報を受信すると、コンフィギュレーション管理制御回路24は、FPGA部30のコンフィギュレーションを行なう。
FPGA30のコンフィギュレーションが完了すると、FPGA部30のバスプロトコル生成部31は、バスB側アドレス設定部15に設定されたアドレスをアドレスバスB62に出力する。また、バスプロトコル生成部31は、周辺回路A42にアクセスするための制御信号をデータバスB63に出力する。
ここでのバスプロトコル生成部31は、分散メモリ3のバンクに設定された情報(所定のバスプロトコル)に従ってアドレス、制御信号をバスB側へ順次送出し、周辺回路A42に対するリード動作を行う。
バスブリッジ回路100は、周辺回路A42の指定のアドレスからデータを読み出すと、読み出したデータをバスプロトコル生成部31がバスA側データ設定部18に設定する。また、アドレス変換部32は、バスA側アドレス設定部17にマイクロプロセッサ50のアドレスを設定する。バスプロトコル生成部31が周辺回路A42からデータの読み出しを完了すると、ステータスレジスタ19は「リード完了」に設定される。
マイクロプロセッサ50は、所定の周期でステータスレジスタ19の状態をチェックしている。バスプロトコル生成部31が周辺回路A42からのデータの読み出しが完了していると、マイクロプロセッサ50は、リード用FIFO21を介して周辺回路A42からのデータを読み出す。
なお、ここではステータスレジスタ19にリード完了を設定しておき、マイクロプロセッサ50がステータスレジスタ19にポーリングして「リード完了」を認識することとしたが、バスブリッジ回路100側からリード完了を示す割込みをマイクロプロセッサ50に行なうこととしてもよい。
以下、バスブリッジ回路100内のFPGA部30の構成(エレメントの構成、エレメント間の配線、バンクの構成)および動作(バンクの切替え処理、コンフィギュレーションの処理手順)について詳細に説明する。
(エレメントの構成)
まず、FPGA部30の構成について説明する。図2は、FPGA部の構成を示すブロック図である。FPGA部30は、図示しないルックアップテーブル、フリップフロップ、排他的論理和、セレクタ等で構成されており、ルックアップテーブルによって論理関数を実現している。
FPGA部30は、分散メモリ3と接続する再構成可能な回路部(エレメント1)、分散メモリ3を有しエレメント1間を接続するスイッチボックス2を複数備えて構成される。ここでは、エレメント1、スイッチボックス2が2次元に多数配置されている場合を示している。なお、エレメント1、スイッチボックス2の配置は、この配置に限られず他の配置であってもよい。すなわち、エレメント1、スイッチボックス2を3次元的な配置、ツリー状の配置等によってFPGA部30を構成してもよい。
FPGA部30内の各分散メモリ3は、複数のバンクX1〜X3を備えている。すなわち、各分散メモリ3は、複数の論理的なバンクX1〜X3に分割されている。FPGA部30内の各分散メモリ3は、第2のコンフィギュレーションパス5やバンク切替え信号7によって接続されている。また、FPGA部30内の各エレメント1やスイッチボックス2は、図示しない第1のコンフィギュレーションパス(後述する第1のコンフィギュレーションパス6)によって接続されている。
FPGA部30においては、各エレメント1内の回路構成やエレメント1及びスイッチボックス2の接続を変更することによって、所望の回路を実現する。この各エレメント1内の回路構成やエレメント1及びスイッチボックス2の接続を変更するためのコンフィギュレーションデータは、FPGA部30の外部から第2のコンフィギュレーションパス5を介して各分散メモリ3に入力され、各エレメント1内の回路構成やFPGA部30内の接続が設定変更される。
各バンクX1〜X3には、エレメント1の構成を変更するための情報が格納されている。バンクX1〜X3によるエレメント1の設定は、バンク切替え信号7の指示情報によって瞬時に変更される。これにより、エレメント1が分散メモリ3から読み出す構成情報(バンクX1〜X3内の情報)が切り替わり、エレメント1内の回路構成が変更される。
ここで、エレメント1の構成を説明する。図3は、エレメントの構成を示す図である。エレメント1は、入力信号選択部51、フィードバックパス選択部52、フィードスルーパス選択部53、出力信号選択部54、出力信号ラッチ制御部55、エレメントコア58を含んで構成されている。入力信号選択部51、フィードバックパス選択部52、フィードスルーパス選択部53、出力信号選択部54、出力信号ラッチ制御部55、エレメントコア58は、第2のコンフィギュレーションパス5を介して入力される指示情報に基づいて、種々の設定を行なう。
入力信号選択部51は、フィードバックパス選択部52を介してエレメントコア58に接続されている。また、エレメントコア58は、フィードスルーパス選択部53を介して出力信号選択部54と接続されている。出力信号ラッチ制御部55は、出力信号選択部54およびフィードバックパス選択部52と接続されている。
エレメントコア58は、四則演算などの演算回路、信号処理等のフィルタリングを行うフィルタ回路、暗号回路等アプリケーションに特化した回路、バス調停等の所定の回路の制御に特化した制御回路(ステートマシンなど)等や、RAM(Random Access Memory)、ROM(Read Only Memory)、FIFO等のデータ記憶回路を備えている。
入力信号選択部51は、エレメント1の入力端子からエレメントコア58の入力端子に接続する信号の接続を変更する。出力信号選択部54は、エレメントコア58が出力する信号の接続先(エレメント1の出力端子の接続先)を変更する。
入力信号選択部51及び出力信号選択部54の設定によってスイッチボックス2との接続先をエレメント1内で変更することが可能となる。これにより、スイッチボックス2の接続を変えることなく、エレメント1内でスイッチボックス2とエレメントコア58との接続を変更することが可能となる。
フィードバックパス選択部52は、セレクタ56によってエレメントコア58の出力信号を必要に応じてエレメントコア58の入力に戻す。フィードバックパス選択部52によって、スイッチボックス2を経由することなくエレメントコア58の出力信号をエレメントコア58の入力に戻すことが可能となる。
フィードスルーパス選択部53は、エレメント1に入力された信号をエレメントコア58にバイパスする。フィードスルーパス選択部53は、エレメント1を経由したスルーパスを形成することによって、エレメント1で接続先を変更する。フィードスルーパス選択部53によって、スイッチボックス2を使用しないでエレメント1の接続を変更することが可能となり、配線変更の自由度を向上させている。
出力信号ラッチ制御部55は、エレメント1の出力段に配置されており、複数のフリップフロップ57を備えている。出力信号ラッチ制御部55は、エレメントコア58の出力信号を、一旦フリップフロップ57でラッチするかラッチしないかを選択制御する。例えば、出力信号ラッチ制御部55がフリップフロップ57を選択すると、エレメントコア58からの出力信号がフリップフロップ57に入力される。これにより、エレメントコア58に演算回路が含まれている場合等であって、エレメント1が複数個直列に接続している場合に、これらの直列接続されたエレメント1にパイプライン動作をさせることが可能となる。
また、出力信号ラッチ制御部55がフリップフロップ57を選択しない場合、エレメントコア58からの出力信号はフリップフロップ57を介さずに外部に出力される。これにより、エレメントコア58に制御回路等の回路が含まれている場合には、制御回路の出力信号をフリップフロップ57でラッチせずに別のエレメント1に接続することが可能となる。
エレメント1の入出力の端子数や分散メモリ3からの第2のコンフィギュレーションパス5の信号数は、エレメントコア58の構成に基づいて決定されるが、本実施の形態においては複数のアプリケーションに対応することができるよう予め冗長に用意しておく。
これらのエレメント1は、FPGA部30の基本構成要素であるルックアップテーブルやフリップフロップ等から形成されるものであり、一般的なFPGA部30が備えているコンフィギュレーション手法によって必要に応じた構成の変更が可能となる。これにより、LSI(Large Scale Integration circuit)等のように製造後に変更が不可能な半導体集積回路に実装された回路と比較して回路変更に対する柔軟性が非常に高くなる。
(エレメント間の配線)
次に、エレメント間の配線の構成について説明する。図4は、FPGA部のエレメント間の配線の一例を説明するための図である。エレメント1間の配線を変更可能なスイッチボックス2によってエレメント1間が接続されている。スイッチボックス2に接続された分散メモリ3内の構成情報によってエレメント1間の配線が変更される。
このスイッチボックス2は、FPGA部30内のルックアップテーブルやフリップフロップ等の基本なセルで構成されており、FPGA部30が従来から備えている一般的なコンフィギュレーション手法によって任意にスイッチボックス2内の構成を変更可能である。
ここでは、エレメント1間の配線の一例を説明するため、接続対象となるエレメント1を接続先エレメントT0として説明する。また、ここでは接続先エレメント1と接続するエレメント1を隣接エレメントE1〜E7として説明する。すなわち、ここでの接続先エレメントT0は、隣接エレメントE1〜E7と接続している。
接続先エレメントT0の周辺に隣接するエレメントE0〜E7の出力信号は、接続先エレメントT0と接続するスイッチボックス2内のセレクタ35を介して、接続先エレメントT0の入力端子P0に入力される。隣接エレメントE1〜E7は、接続先エレメントT0からの出力信号を、図3に示した入力信号選択部51によってエレメントコア58等の何れの入力端子に接続するかを選択する。
また、接続先エレメントT0の接続先を変更するセレクタ35は分散メモリ3に接続されており、この分散メモリ3の構成情報を変更することによって接続先エレメントT0の接続先を変更することが可能な構成となっている。
本実施の形態においては、複数のアプリケーションを実装するための拡張性を考慮して、隣接エレメントE1〜E7からの出力信号を上述のように冗長に接続する。このように接続先エレメントT0と隣接エレメントE1〜E7を冗長に接続して配線することによって、後で別のアプリケーションをFPGA部30に実装する際に、分散メモリ3の構成情報を変更するだけで所望の機能を実現できる可能性が高くなる。
なお、図4に示すように、アプリケーションによっては、遠方(接続先エレメントT0に対して隣接エレメントE1〜E7よりも遠方)のエレメント1(以下、遠方エレメントE8という)を接続先エレメントT0に接続してもよい。このようなパス(遠方エレメントE8と接続先エレメントT0間のパス)も、一般的なFPGA部30に元々用意されているコンフィギュレーション手法によって接続の設定を変更可能である。
また、ここでは接続先エレメントT0が冗長な配線によって隣接エレメントE1〜E7と接続されている場合について説明したが、所定の規則をもって隣接エレメント以外の部分にも予め冗長な配線を行うこととしてもよい。
(バンクの構成)
図5は、バンクの構成を示す図である。同図に示すように、FPGA部30内の各分散メモリ3は、論理的に複数のバンクX1〜X3に分割されている。分散メモリ3内の各バンクX1〜X3には、エレメント1内のエレメントコア58、入力信号選択部51、出力信号選択部54、フィードスルーパス選択部53、フィードバックパス選択部52、出力信号ラッチ制御部55の構成情報が格納されている。
分散メモリ3内の各バンクX1〜X3に格納されている構成情報を、第2のコンフィギュレーションパス5を介してエレメント1に送信することによって、エレメント1はエレメント1内の構成(各構成要素の接続、設定等)を切替える。
また、スイッチボックス2と接続するバンクX1〜X3もエレメント1と接続するバンクX1〜X3と同様の機能を有している。スイッチボックス2と接続する各バンクX1〜X3には、エレメント1間の接続を行うスイッチボックス2の構成を変更するための情報が格納されている。
(コンフィギュレーション制御とバンクの切替え処理)
図6は、バンクの切替え処理を説明するための図である。同図に示すように、マイクロプロセッサ50が第1のコンフィギュレーション用フラッシュメモリ80、第2のコンフィギュレーション用フラッシュメモリ81、第1のコンフィギュレーション用制御回路82、第2のコンフィギュレーション用制御回路83、バンク切替え制御回路84と接続している。そして、FPGA部30が第1のコンフィギュレーション用制御回路82、第2のコンフィギュレーション用制御回路83、バンク切替え制御回路84と接続している。
なお、ここでの第1のコンフィギュレーション用フラッシュメモリ80、第2のコンフィギュレーション用フラッシュメモリ81が図1に示すコンフィギュレーション用メモリ25に対応する。また、第1のコンフィギュレーション用制御回路82、第2のコンフィギュレーション用制御回路83が図1に示すコンフィギュレーション用管理制御回路に対応する。
なお、ここではFPGA部30がバンク切替え制御回路84と接続する構成としているが、このバンク切替え制御回路84は図1のバスブリッジ回路100において図示していない。また、ここでは説明の便宜上マイクロプロセッサ50が第1のコンフィギュレーション用フラッシュメモリ80等と直接接続している場合を示しているが、マイクロプロセッサ50と第1のコンフィギュレーション用フラッシュメモリ80等は、バスブリッジ回路100内の所定の構成要素を介して接続されている。
本実施の形態におけるコンフィギュレーション回路は、2系統のコンフィギュレーションパス(第1のコンフィギュレーションパス6、第2のコンフィギュレーションパス5)を有している。
第1のコンフィギュレーションパス6は、一般的なFPGAに従来から存在するコンフィギュレーション用のパスである。第2のコンフィギュレーションパス5は、FPGA部30内に実装したエレメント1の構成情報やエレメント1間のスイッチボックス2の接続情報を切替えるためのコンフィギュレーション用のパスである。第2のコンフィギュレーションパス5は、FPGA部30内の分散メモリ3に対する第2のコンフィギュレーションデータをダウンロードする。
第1のコンフィギュレーション用制御回路82、第2のコンフィギュレーション用制御回路83は、マイクロプロセッサ50からの転送情報に基づいて、FPGA部30に第1のコンフィギュレーション、第2のコンフィギュレーションを行なう。ここでの第1のコンフィギュレーション用制御回路82は、第1のコンフィギュレーション用フラッシュメモリ80内の第1のコンフィギュレーションデータを読み出して、FPGA部30のコンフィギュレーションを行なう。
第2のコンフィギュレーション用フラッシュメモリ81は、FPGA部30内の再構成可能な回路に対する第2のコンフィギュレーションデータを保持している。第2のコンフィギュレーション用制御回路83は、第2のコンフィギュレーション用フラッシュメモリ81内の第2のコンフィギュレーションデータを読み出して、FPGA部30に第2のコンフィギュレーションを行なう。また、第2のコンフィギュレーション用制御回路83は、分散メモリ3を論理的に複数のバンクX1〜X3に分けた際、再構成のために使用していない未使用のバンクに対してコンフィギュレーションデータをダウンロードする機能を有している。
このように、第1のコンフィギュレーション用制御回路82は第1のコンフィギュレーションパス6を介してFPGA部30のコンフィギュレーションを行い、第2のコンフィギュレーション用制御回路83は第2のコンフィギュレーションパス5を介してFPGA部30のコンフィギュレーションを行う。
これら2系統のコンフィギュレーションパスの両方を用いたコンフィギュレーションのシーケンスは、ハードウエアによって制御してもよいし、これら2系統のコンフィギュレーションパスの制御回路を個別にマイクロプロセッサ50のソフトウエアにより制御してもよい。
バンク切替え制御回路84は、FPGA部30の分散メモリ3のバンクX1〜X3の切替えを行なう。すなわち、バンク切替え制御回路84からのバンク切替えの指示(指示情報)によってバンクX1〜X3が切替えられ、FPGA部30内に実装した回路構成が変更される。このように、バンクX1〜X3を切替える処理によってFPGA部30内のエレメント1の構成を瞬時に変更できるよう構成されている。
また、バンク切替え制御回路84は、FPGA部30内の分散メモリ3のバンク切替えを行なうとともに、第2のコンフィギュレーション用制御回路83に対して、FPGA部30内で使用していないバンクに関する情報を通知する。この情報に基づいて、第2のコンフィギュレーション用制御回路83は、FPGA部30内で使用していない論理的なバンクに対してコンフィギュレーションデータのダウンロードを行う。
なお、ここではバンクX1〜X3を切替える処理によってFPGA部30内のエレメント1の構成を変更する場合について説明したが、スイッチボックス2もエレメント1と同様にバンクX1〜X3を切替える処理によって構成が変更される。
(コンフィギュレーションの処理手順)
次に、コンフィギュレーションの処理手順を説明する。図7は、FPGA部に対するコンフィギュレーションの処理手順を示すフローチャートである。FPGA部30が所定のアプリケーション処理するための第1のコンフィギュレーションデータを後述する情報作成装置200等によって生成する(ステップS1)。
第1のコンフィギュレーションパス6を用いて、第1のコンフィギュレーションデータ内の回路構成情報を、FPGA部30にダウンロードする(ステップS2)。これにより、FPGA部30内に所定の回路構成を実装させる。
FPGA部30が所定のアプリケーション処理するための、分散メモリ3を利用した再構成可能な回路に対する第2のコンフィギュレーションデータを情報作成装置200等によって生成する(ステップS3)。
第2のコンフィギュレーション用制御回路83は、再構成可能な回路部(エレメント1)やエレメント1間のスイッチボックス2をコンフィギュレーションするためのFPGA部30内の分散メモリ3に、第2のコンフィギュレーションパス5を介して第2のコンフィギュレーションデータをダウンロードする(ステップS4)。
FPGA部30において新規にアプリケーションを追加する必要が生じた場合、制御部27がコンフィギュレーション管理制御回路24に新たなアプリケーションの追加要求を行なう(ステップS5)。
ステップS1の処理で生成した第1のコンフィギュレーションデータに基づく回路構成、ステップS3の処理で生成した第2のコンフィギュレーションデータに基づく分散メモリ3を利用した回路構成に対して、新たなアプリケーションの実装を行なえるか否かをコンフィギュレーション管理制御回路24が判断する(ステップS6)。
コンフィギュレーション管理制御回路24が、新たなアプリケーションの実装を行なえると判断した場合は(ステップS6、可能)、情報作成装置200等は、FPGA部30が所定のアプリケーション処理するための、分散メモリ3を利用した再構成可能な回路に対する第2のコンフィギュレーションデータを生成する(ステップS3)。
また、第2のコンフィギュレーション用制御回路83は、再構成可能な回路部(エレメント1)やエレメント1間のスイッチボックス2をコンフィギュレーションするためのFPGA部30内の分散メモリ3に、第2のコンフィギュレーションパス5を経由してコンフィギュレーションデータをダウンロードする(ステップS4)。
一方、コンフィギュレーション管理制御回路24が、新たなアプリケーションの実装を行なえないと判断した場合(ステップS6、不可能)、情報作成装置200等は、FPGA部30が新たなアプリケーション処理するための第1のコンフィギュレーションデータを生成する(ステップS1)。そして、FPGA部30の構成情報を全て消去し、新たに生成した回路構成情報(第1のコンフィギュレーションデータ)によってFPGA部30をコンフィギュレーションする。なお、ここでのコンフィギュレーション管理制御回路24は、マイクロプロセッサ50のソフトウエアに基づいてリアルタイムに処理を行う。
(再構成可能な回路の作成装置)
つぎに、FPGA部30を含む回路(バスブリッジ回路100)の生成処理について説明する。FPGA部30の回路は、情報作成装置(半導体集積回路装置の設計装置)によって生成する。図8は、情報作成装置の構成を示すブロック図である。
情報作成装置200は、パーソナルコンピュータ等の装置で構成され、記憶部210、アーキテクチャ選択部212、回路情報抽出部214、回路生成部218、コンフィギュレーションデータ生成部216、制御部220からなる。
記憶部210は、再構成可能な回路の基本的なアーキテクチャが記述されたアーキテクチャライブラリ、種々の回路ブロックのテンプレートからなる回路テンプレート(後述する回路テンプレートライブラリ90)、異なる機能を有する複数の回路情報等を記憶する。
アーキテクチャ選択部212は、FPGA部30の回路設計データに対応するアーキテクチャを記憶部210から選択する。回路情報抽出部214は、複数の回路情報から各回路の特徴部分を抽出する。
回路生成部218は、エレメントコア58、エレメント1、スイッチボックス2の各構成データを生成するとともに、エレメント1とスイッチボックス2の配線情報を生成する。回路生成部218は、分散メモリ3の各構成データを生成するとともに、回路構成の切替えに関する回路構成切替え信号を生成する。
コンフィギュレーションデータ生成部216は、分散メモリ3に設定するコンフィギュレーションデータ等を生成する。制御部220は、記憶部210、アーキテクチャ選択部212、回路情報抽出部214、回路生成部218、コンフィギュレーションデータ生成部216を制御する。
(再構成可能な回路の生成手順)
次に、情報作成装置200によるFPGA部30内の再構成可能な回路の生成手順を説明する。図9は、再構成可能な回路の生成手順を示すフローチャートである。アーキテクチャ選択部212は、FPGA部30に実装する再構成可能な回路の基本的なアーキテクチャが記述されたアーキテクチャライブラリを記憶部210から読み込み、何れのアーキテクチャを使用するか選択する(ステップS10)。ここでのアーキテクチャライブラリには、エレメント1の配置や接続方式(2次元メッシュ、3次元メッシュ、ツリー構造等)に関する情報が含まれている。
アーキテクチャ選択部212が選択したアーキテクチャは、回路生成部218に入力される。次に、回路生成部218は、回路テンプレートライブラリ90を記憶部210から読み込む(ステップS11)。
ここで回路テンプレートライブラリ90の構成を説明する。図10は、回路テンプレートライブラリの構成の一例を示す図である。回路テンプレートライブラリ90は、抽象度の低い汎用性のある低抽象度ライブラリ91と抽象度の高い回路でパラメータ化した高抽象度ライブラリ92を含んで構成されている。
低抽象度ライブラリ91は、パラメータ化された四則演算回路、ビットシフト等の回路、RAM、組合せ回路、フリップフロップ、スイッチ等の回路ブロックのテンプレートを有している。また、高抽象度ライブラリ92は、フィルタ回路、暗号回路等の回路ブロックのテンプレートを有している。
次に、回路情報抽出部214は、異なる機能を有する複数の回路情報を記憶部210から読み込み込む(ステップS12)。回路情報抽出部214は、記憶部210から読み込んだ複数の回路情報の特徴部分を抽出する(ステップS13)。
回路情報抽出部214は、例えば、回路において共通の部分、回路の特徴が類似しているもの(例えば、算術演算回路で処理ビット幅が異なっているものや機能自体は全く同じであるが処理サイクル数(レイテンシ)が異なるもの)、回路の論理的なモジュールで入力及び出力のポート数が一致しているもの、回路テンプレートライブラリ90に一致しているもの、回路テンプレートライブラリ90に類似しているもの等の抽出を行う。
次に、回路生成部218は、エレメントコア58を生成する(ステップS14)。ここでの回路生成部218は、回路テンプレートライブラリ90内から所定の回路を抽出してエレメントコア58を生成する。これにより、エレメントコア58には複数の種類の回路を混在して使用する。
回路生成部218は、回路情報抽出部214が抽出した回路の特徴に基づいて、回路情報の併合を行う。併合に際しては、回路テンプレートライブラリ90内の情報に基づいて、回路テンプレートライブラリ90のビット幅やレイテンシなどのパラメータの変更によって対応可能な場合には、回路テンプレートライブラリ90へのマッピングを行う。一方、マッピングできない回路の場合には、専用の回路を新たに生成する。
回路生成部218は、生成したエレメントコア58の構成データに、図3で説明した入力信号選択部51、フィードバックパス選択部52、フィードスルーパス選択部53、出力信号選択部54、出力信号ラッチ制御部55等の周辺回路の構成データを付加し、図3で説明した再構成可能な回路部(エレメント1)の構成データを生成する(ステップS15)。
次に、回路生成部218は、再構成可能な回路部(エレメント1)間の配線を切替えるスイッチボックス2の構成データを生成する(ステップS16)。ここでのスイッチボックス2は、FPGA部30のルックアップテーブルやフリップフロップ等の基本的なセルで構成する。これにより、一般的なFPGAが有するコンフィギュレーション機能によって任意にスイッチボックス2内の構成を変更可能なスイッチボックス2を生成することが可能となる。
回路生成部218は、生成したエレメント1、生成したスイッチボックス2の回路規模を算出し、実装対象のFPGA部30の使用可能な資源と拡張性に基づいて、複数の回路を実現するために必要なエレメント1、スイッチボックス2とは異なる別の冗長配線用のエレメント1及びスイッチボックス2の構成データを生成する。これらの冗長配線用のエレメント1及びスイッチボックス2が拡張性を考慮したエレメント1、スイッチボックス2となる(ステップS17)。
回路生成部218は、ステップS15〜S17の処理で生成した、エレメント1とスイッチボックス2との間の配線を行う(ステップS18)。ここでの配線は、複数の回路情報を実現するために必要な配線とともに、その後の拡張性を考慮した冗長な配線によって行う(ステップS19)。例えば、図4で説明した隣接エレメントE0〜E7から接続先エレメントT0への配線を行う。また、遠方エレメントE8から接続先エレメントT0への配線を行ってもよい。
回路生成部218は、生成した再構成可能な回路部(エレメント1)の機能を切替えるためのバンク切替え信号7および生成した再構成可能な回路部間(エレメント1間)の配線を切替えるスイッチボックス2を制御する信号の情報に基づいて分散メモリ3のビット幅を決定する。また、回路生成部218は、FPGA部30に実装可能な分散メモリ3の容量に基づいて、分散メモリ3の論理的なバンク数の決定を行う。
回路生成部218は、決定した分散メモリ3のビット幅、分散メモリ3の論理的なバンク数に基づいて、夫々のエレメント1及びスイッチボックス2の構成情報切替え信号を分散メモリ3のデータ出力端子に接続するよう回路を生成する(ステップS20)。
コンフィギュレーションデータ生成部216は、生成した分散メモリ3と第1のコンフィギュレーション用制御回路82、第2のコンフィギュレーション用制御回路83を接続するよう回路を生成する。エレメント1とスイッチボックス2との接続は、第1のコンフィギュレーションパス6、第2のコンフィギュレーションパス5によって接続する。
次に、コンフィギュレーションデータ生成部216は、第1のコンフィギュレーション用制御回路82、第2のコンフィギュレーション用制御回路83を生成して、分散メモリ3に接続するよう回路データを生成する(ステップS21)。
次に、コンフィギュレーションデータ生成部216は、FPGA部30の第1のコンフィギュレーションデータを生成する(ステップS22)。コンフィギュレーションデータ生成部216は、分散メモリ3に設定する複数のアプリケーション用の第2のコンフィギュレーションデータを生成する(ステップS23)。
これにより、再構成可能な半導体集積回路の回路設計データを生成することが可能となる。情報作成装置200によるこれらの処理は、ソフトウエアプログラムによってアプリケーション実行時にリアルタイムに行う。
このように、実施の形態によれば、FPGA30の分散メモリ3内に必要な回路構成情報が分散メモリ3のバンクX1〜X3に存在する場合には、バンク切替え信号7によって分散メモリ3内のバンクを迅速に切替えることができるので、FPGA部30のコンフィギュレーションを迅速に行なうことが可能となる。これにより、FPGA部30の回路機能を迅速に変更することが可能となり、マイクロプロセッサ50から周辺回路A42に対するライト動作等の処理を迅速に行なうことが可能となる。
また、再構成可能な回路部(エレメント1)やスイッチボックス2の構成は、FPGA部30のルックアップテーブルやフリップフロップ等の基本セルで構成されているため、一般的なFPGA部30が備えるコンフィギュレーション機能を用いてFPGA部30内の回路構成を任意に変更することが可能となる。
また、情報作成装置200は、異なる機能を有する回路情報で特徴的な部分(一致又は類似する情報)を抽出して回路設計データを生成するので、複数の異なる機能を有するアプリケーションを実現するための回路を簡易な構成で生成することが可能となる。したがって、回路機能を迅速に変更することが可能なFPGA部30のの回路設計データを容易に生成することが可能となる。