(57)【要約】【課題】ソフトウェアＩＰを用いて最適な性能を得ることができるプログラマブル論理回路装置を提供する。【解決手段】第１のクロック信号を入力するフリップフロップ回路１６が接続された第１の経路と、ルックアップテーブル１２と第２のクロック信号を入力するフリップフロップ回路１４とが接続された第２の経路と、を備える複数の演算器エレメント１０を本プログラマブル論理回路装置は備える。演算器エレメント１０ごとに第１の経路と第２の経路とを設定する。アプリケーションとして実装されている二つの演算器エレメント１０を両端に、バッファとしての役割を持つ複数個の演算器エレメント１０を中間にして、演算器エレメント１０を結線する。【選択図】図２
2009017141.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号を入力する第１のフリップフロップ回路が接続された第１の経路と、演算器と第２のクロック信号を入力する第２のフリップフロップ回路とが接続された第２の経路と、を備える複数の演算器エレメントと、
前記演算器エレメントごとに前記第１の経路と前記第２の経路とを設定する経路設定手段と、
前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した二つの演算器エレメントを両端に、前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した、複数個の演算器エレメントを中間にして、前記演算器エレメントを結線するエレメント結線手段と、を備える、
ことを特徴とするプログラマブル論理回路装置。
【請求項２】
前記エレメント結線手段が中間に結線した演算器エレメントの個数に基づいて前記第１のクロック信号及び前記第２のクロック信号の周期を演算器エレメント毎に設定する周期設定手段をさらに備える、
ことを特徴とする請求項１に記載のプログラマブル論理回路装置。
【請求項３】
前記演算器は、ルックアップテーブル及び／又はＡＬＵ（Arithmetic Logic Unit）を備える、
ことを特徴とする請求項１又は２に記載のプログラマブル論理回路装置。
【請求項４】
第１のクロック信号を入力する第１のフリップフロップ回路が接続された第１の経路と、演算器と第２のクロック信号を入力する第２のフリップフロップ回路とが接続された第２の経路と、を備える複数の演算器エレメントと、を備えるプログラマブル論理回路の論理的構成を変更するプログラマブル論理回路再構成方法であって、
前記演算器エレメントごとに前記第１の経路と前記第２の経路とを設定する経路設定ステップと、
前記経路設定ステップで前記第１の経路もしくは前記第２の経路に設定した二つの演算器エレメントを両端に、前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した、複数個の演算器エレメントを中間にして、前記演算器エレメントを結線するエレメント結線ステップと、を備える、
ことを特徴とするプログラマブル論理回路再構成方法。
【請求項５】
前記エレメント結線ステップで中間に結線した演算器エレメントの個数に基づいて前記第１のクロック信号及び前記第２のクロック信号の周期を演算器エレメント毎に設定する周期設定ステップをさらに備える、
ことを特徴とする請求項４に記載のプログラマブル論理回路再構成方法。
【請求項６】
前記演算器は、ルックアップテーブル及び／又はＡＬＵ（Arithmetic Logic Unit）を備える、
ことを特徴とする請求項４又は５に記載のプログラマブル論理回路再構成方法。
【請求項７】
第１のクロック信号を入力する第１のフリップフロップ回路が接続された第１の経路と、演算器と第２のクロック信号を入力する第２のフリップフロップ回路とが接続された第２の経路と、を備える複数の演算器エレメントと、を備えるコンピュータを、
前記演算器エレメントごとに前記第１の経路と前記第２の経路とを設定する経路設定手段、
前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した二つの演算器エレメントを両端に、前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した、複数個の演算器エレメントを中間にして、前記演算器エレメントを結線するエレメント結線手段、
として機能させることを特徴とするプログラム。
【請求項８】
前記エレメント結線手段が中間に結線した演算器エレメントの個数に基づいて前記第１のクロック信号及び前記第２のクロック信号の周期を演算器エレメント毎に設定する周期設定手段、
として機能させることを特徴とする請求項７に記載のプログラム。
【請求項９】
前記演算器は、ルックアップテーブル及び／又はＡＬＵ（Arithmetic Logic Unit）を備える、
ことを特徴とする請求項７又は８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行をハードウェアで直接的に実現するプログラマブル論理回路装置、プログラマブル論理回路再構成方法、及び、プログラムに関する。
【背景技術】
【０００２】
プログラムの実行をハードウェアで直接的に実現する再構成可能なデバイスとして、ＰＬＤ（Programmable Logic Device）が知られている（例えば、特許文献１）。
【０００３】
ＰＬＤは、プログラムとして論理データを与えることで論理回路間の結線論理を変更し、これによってハードウェア的に演算結果を得ることができるようにしたものである。ＰＬＤを利用して演算を行うことによって、従来の汎用コンピュータに搭載されたＣＰＵ（Central Processing Unit）による演算よりも高速に演算結果を得ることができる。
【０００４】
ところで、特許文献１の技術による再構成可能なデバイスは、遅延計算が複雑である、及び、テスト設計が困難である、等の理由からハードウェアＩＰ（Intellectual Property）を用いて実現されている。更にハードウェアＩＰによれば、性能、面積に関して最良のデバイスを作成することができる。
【特許文献１】特許第３５４０７９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記のハードウェアＩＰでは、半導体ベンダが限定される、ユーザ毎のカスタマイズが困難である。それらの短所を克服するには、ソフトウェアＩＰを用いることが適当である。
【０００６】
本発明は、上記問題点に鑑みてなされたもので、ソフトウェアＩＰを用いて最適な性能を得ることができるプログラマブル論理回路装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の第１の観点に係るプログラマブル論理回路装置は、
第１のクロック信号を入力する第１のフリップフロップ回路が接続された第１の経路と、演算器と第２のクロック信号を入力する第２のフリップフロップ回路とが接続された第２の経路と、を備える複数の演算器エレメントと、
前記演算器エレメントごとに前記第１の経路と前記第２の経路とを設定する経路設定手段と、
前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した二つの演算器エレメントを両端に、前期経路設定手段が前記第１の経路もしくは前記第２の経路に設定した、複数個の演算器エレメントを中間にして、前記演算器エレメントを結線するエレメント結線手段と、
を備えることを特徴とする。
【０００８】
例えば、前記エレメント結線手段が中間に結線した演算器エレメントの個数に基づいて前記第１のクロック信号及び前記第２のクロック信号の周期を演算器エレメント毎に設定する周期設定手段をさらに備えてもよい。
【０００９】
例えば、前記演算器は、ルックアップテーブル及び／又はＡＬＵ（Arithmetic Logic Unit）を備えてもよい。
【００１０】
本発明の第２の観点に係るプログラマブル論理回路再構成方法は、
第１のクロック信号を入力する第１のフリップフロップ回路が接続された第１の経路と、演算器と第２のクロック信号を入力する第２のフリップフロップ回路とが接続された第２の経路と、を備える複数の演算器エレメントと、を備えるプログラマブル論理回路の論理的構成を変更するプログラマブル論理回路再構成方法であって、
前記演算器エレメントごとに前記第１の経路と前記第２の経路とを設定する経路設定ステップと、
前記経路設定ステップで前記第１の経路もしくは前記第２の経路に設定した二つの演算器エレメントを両端に、前期経路設定手段が前記第１の経路もしくは前記第２の経路に設定した、複数個の演算器エレメントを中間にして、前記演算器エレメントを結線するエレメント結線ステップと、
を備えることを特徴とする。
【００１１】
例えば、前記エレメント結線ステップで中間に結線した演算器エレメントの個数に基づいて前記第１のクロック信号及び前記第２のクロック信号の周期を演算器エレメント毎に設定する周期設定ステップをさらに備えてもよい。
【００１２】
例えば、前記演算器は、ルックアップテーブル及び／又はＡＬＵ（Arithmetic Logic Unit）を備えてもよい。
【００１３】
本発明の第３の観点に係るプログラムは、
第１のクロック信号を入力する第１のフリップフロップ回路が接続された第１の経路と、演算器と第２のクロック信号を入力する第２のフリップフロップ回路とが接続された第２の経路と、を備える複数の演算器エレメントと、を備えるコンピュータを、
前記演算器エレメントごとに前記第１の経路と前記第２の経路とを設定する経路設定手段、
前記経路設定手段が前記第１の経路もしくは前記第２の経路に設定した二つの演算器エレメントを両端に、前期経路設定手段が前記第１の経路もしくは前記第２の経路に設定した、複数個の演算器エレメントを中間にして、前記演算器エレメントを結線するエレメント結線手段、
として機能させることを特徴とする。
【００１４】
例えば、前記エレメント結線手段が中間に結線した演算器エレメントの個数に基づいて前記第１のクロック信号及び前記第２のクロック信号の周期を演算器エレメント毎に設定する周期設定手段、
として機能させてもよい。
【００１５】
例えば、前記演算器は、ルックアップテーブル及び／又はＡＬＵ（Arithmetic Logic Unit）を備えてもよい。
【発明の効果】
【００１６】
本発明によれば、プログラマブル論理回路装置においてソフトウェアＩＰを用いて最適な性能を得ることが容易にできる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態に係るプログラマブル論理回路装置（Programmable Logic Device ; 以下、ＰＬＤ）１００について説明する。ＰＬＤ１００は、プログラムの実行をハードウェアで直接的に且つ動的に実現することができる。
【００１８】
ＰＬＤ１００は、図１に示すように、二次元に配列された複数の演算器エレメント（Processor Element ; PE）１０と、制御部２０と、Ｉ／Ｏ部３０と、複数の配線４０と、を備えている。
【００１９】
演算器エレメント１０は、複数個が二次元に配置される。また、それぞれの演算器エレメント１０は、内部の回路構成を変化させ、任意の論理関数を生成可能である。また、それぞれの演算器エレメント１０は、第１の経路と第２の経路とを備える。
【００２０】
演算器エレメント１０は、図２に示すように、セレクタ回路（以下、セレクタ）１１と、ルックアップテーブル（以下、ＬＵＴ）１２と、セレクタ回路１３と、Ｄ−フリップフロップ回路（以下、ＦＦ）１４と、セレクタ回路１５と、Ｄ−フリップフロップ回路１６と、セレクタ回路１７と、を備える。なお、演算器エレメント１０は、第１の経路上にセレクタ１１とＬＵＴ１２とＦＦ１４とを備え、第２の経路上にセレクタ１５とＦＦ１６とを備える。
【００２１】
セレクタ１１は、ｍ入力一出力の回路であり、制御部２０の制御の元、配線４０からのｍ本の入力信号のうちの何れか一つをＬＵＴ１２に出力する。なお、セレクタ１１は、図２に示すような四入力ＬＵＴの場合、四つが配置される。
【００２２】
ＬＵＴ１２は、入力ビットをメモリアドレスとし、各メモリアドレスに対応する出力値を格納する。つまり、ＬＵＴ１２は、制御部２０の制御の元、複数の入力信号に対応する出力信号を出力する任意の組み合わせ論理回路を実現することができる。ＬＵＴ１２は、四つのセレクタ１１からの入力信号と組み合わせ論理回路とに基づいた出力信号をＦＦ１４に出力する。
【００２３】
セレクタ１３は、二入力一出力の回路であり、制御部２０の制御に基づいて、入力されたアプリケーションクロック信号とシステムクロック信号の内の何れか一つをＦＦ１４に出力する。
【００２４】
ＦＦ１４は、Ｄ−フリップフロップ回路であり、データ信号とクロック信号とを入力し、クロック信号の周期ごとにクロック信号の立ち上がり時のデータ信号の値を保持した信号を出力する。ＦＦ１４は、装置内各部における信号の同期を取るために使用される。なお、ＦＦ１４には、セレクタ１３よりクロック信号として、アプリケーションクロック信号又はシステムクロック信号が入力される。
【００２５】
セレクタ１５は、ｍ入力一出力の回路であり、制御部２０の制御の元、配線４０からのｍ本の入力信号のうちの何れか一つをＦＦ１６に出力する。なお、セレクタ１５は、二つが配置される。
【００２６】
ＦＦ１６は、Ｄ−フリップフロップ回路であり、データ信号とクロック信号とを入力し、クロック信号の周期ごとにクロック信号の立ち上がり時のデータ信号の値を保持した信号を出力する。ＦＦ１６は、装置内各部における信号の同期を取るために使用される。なお、ＦＦ１６には、クロック信号として、アプリケーションクロック信号又はシステムクロック信号が入力される。
【００２７】
セレクタ１７は、二入力一出力の回路であり、制御部２０の制御に基づいて、入力されたアプリケーションクロック信号とシステムクロック信号の内の何れか一つをＦＦ１６に出力する。
【００２８】
制御部２０は、ＰＬＤ１００全体を制御する。具体的には、制御部２０は、それぞれの演算器エレメント１０の第１の経路と第２の経路の設定や、複数の演算器エレメント１０の結線や、ＬＵＴ１２において任意の論理の実現等を行う。
【００２９】
Ｉ／Ｏ部３０は、ＰＬＤ１００の周辺部に位置しており、外部と信号のやりとりを行う。
【００３０】
配線４０は、演算器エレメント１０間やＩ／Ｏ部３０を接続して、任意の論理回路を実現する。また、配線４０は、セレクタ４１を備える。
【００３１】
セレクタ４１は、二入力一出力の回路であり、ＦＦ１４と配線４０もしくはＦＦ１６と配線４０を結び、制御部２０の制御に基づいて、配線４０からの入力信号とＦＦ１４，１６からの入力信号との何れか一方を配線４０に出力する。
【００３２】
ＰＬＤ１００は、ＬＵＴ１２等に含まれるＳＲＡＭ、ＤＲＡＭ等の書き換え可能なメモリ素子を備えており、それらのメモリ素子で構成されたコンフィギュレーションメモリ（図示省略）を備えている。
【００３３】
このコンフィギュレーションメモリ（図示省略）にアドレスを与えて、新しい回路情報のデータが格納されると、この回路情報に従って、演算器エレメント１０内のＬＵＴ１２、セレクタや、配線４０上のセレクタ等、が再構成される。この一連の動作をコンフィギュレーション（構成）と呼ぶ。また、このコンフィギュレーションは動作中に行うことが可能である。
【００３４】
また、ＰＬＤ１００は、各演算器エレメント１０のＦＦ１４，１６にクロック信号を提供するためのクロックネットワークとして、図３に示すように、クロック入力部３１と、ＰＬＬ（Phase-locked loop）回路６０と、クロック制御回路６１，６２と、クロックバッファ６３，６４と、配線６５，６６と、を備える。
【００３５】
クロック入力部３１は、Ｉ／Ｏ部３０の一部であり、外部よりクロック信号を取得し、ＰＬＬ回路６０に供給する。
【００３６】
ＰＬＬ回路６０は、クロック入力部３１より供給されたクロック信号を任意の周波数のクロック信号（システムクロック信号；以下、ｓｙｓＣＬＫ信号）に変換し、クロック制御回路６１，６２に供給する。
【００３７】
クロック制御回路６１は、ＰＬＬ回路６０より供給されたｓｙｓＣＬＫ信号を、クロックバッファ６３に供給する。また、クロック制御回路６１は、クロックバッファ６３にｓｙｓＣＬＫ信号を供給するか否かの制御を行う。
【００３８】
クロック制御回路６２は、ＰＬＬ回路６０より供給されたｓｙｓＣＬＫ信号のうちの任意のハイ状態のクロックをロー状態に変換し、ｓｙｓＣＬＫ信号の所定倍の周期を持つクロック信号（アプリケーションクロック信号；以下、ａｐｐＣＬＫ信号）として、クロックバッファ６４に供給する。また、クロック制御回路６２は、クロックバッファ６４にａｐｐＣＬＫ信号を供給するか否かの制御を行う。
【００３９】
クロックバッファ６３は、クロック制御回路６１より供給されたｓｙｓＣＬＫ信号を励起し、配線６５に供給する。
【００４０】
クロックバッファ６４は、クロック制御回路６２より供給されたａｐｐＣＬＫ信号を励起し、配線６６に供給する。
【００４１】
配線６５は、クロックバッファ６３より供給されたｓｙｓＣＬＫ信号を各演算器エレメント１０のセレクタ１３及びセレクタ１７に供給する。
【００４２】
配線６６は、クロックバッファ６４より供給されたａｐｐＣＬＫ信号を各演算器エレメント１０のセレクタ１３及びセレクタ１７に供給する。
【００４３】
上記構成のＰＬＤ１００は、例えば、図５に示すような情報処理システム１０００に組み込まれて使用される。
【００４４】
例えば、情報処理システム１０００は、ＰＬＤ１００と、インタフェース２００と、ＣＰＵ（Central Processing Unit）３００と、ＲＯＭ（Read Only Memory）４００と、ハードディスク５００と、ＲＡＭ（Random Access Memory）６００と、表示部７００と、操作部８００と、ＰＣＩ（Peripheral Components Interconnect）バス９００と、から構成される。
【００４５】
ＰＬＤ１００は、インタフェース２００を介してＰＣＩバス９００に接続されている。
【００４６】
ハードディスク５００は、ＰＬＤ１００のコンフィギュレーションを行うためのアプリケーションプログラムやコンフィギュレーションコードを格納している。
【００４７】
ＣＰＵ３００は、ハードディスク５００からＲＡＭ６００にアプリケーションプログラムをロードして実行する。また、ＣＰＵ３００は、アプリケーションプログラム実行中に必要に応じて、ハードディスク５００から回路情報を読み出して、ＰＬＤ１００のコンフィギュレーションメモリ（図示省略）にロードし、ＰＬＤ１００上に任意の論理回路を構成し、当該論理回路上でデータ処理を行う。
【００４８】
つまり、ＣＰＵ３００は、ＰＬＤ１００におけるコンフィギュレーション（再構成）や、ＰＬＤ１００上に構成された論理回路へのデータの入出力を制御する。
【００４９】
以下、上記構成を有するＰＬＤ１００及び情報処理システム１０００の動作を説明する。
【００５０】
先ず、情報処理システム１０００が行う論理回路再構成処理を説明する。簡単に説明すると、情報処理システム１０００は、ＲＴＬ（Register Transfer Level）等の論理コードをもとに論理合成された論理回路をＰＬＤ１００に書き込む。
【００５１】
以下、図６に示すフローチャートを参照しながら、論理回路再構成処理を詳細に説明する。
【００５２】
先ず、ＣＰＵ３００は、操作部８００を介してユーザよりＰＬＤ１００のコンフィギュレーションを行うためのアプリケーションプログラム（以下、再構成プログラム）の起動を行う旨の要求を受信すると、再構成プログラムを起動する（ステップＳ１００）。
【００５３】
次に、ＣＰＵ３００は、ユーザが操作部８００を介して入力した、又は、ハードディスク５００に格納されている、ＶＨＤＬ（VHSIC Hardware Description Language）やＶｅｒｉｌｏｇ等の開発言語で記述された論理コードを論理合成し、配置配線した構成情報を取得した（ステップＳ２００）と仮定する。
【００５４】
ここで、ユーザより操作部８００を介して上記論理コードに基づいた論理回路をＰＬＤ１００に書き込む旨の要求を受信したと仮定すると、ＣＰＵ３００は、論理回路をＰＬＤ１００に書き込み（ステップＳ３００）、処理を終了する。
【００５５】
このようにして、論理回路再構成処理によれば、情報処理システム１０００は、任意の論理コードに基づいた論理回路をＰＬＤ１００に書き込み、プログラムの実行をハードウェア（ＰＬＤ１００）において直接的に実現することができる。
【００５６】
ここで、ステップＳ２００，３００における論理回路の説明を行う。
【００５７】
ステップＳ２００，３００において、ＰＬＤ１００上の演算器エレメント１０は、図７に示すように、バッファとしての役割を持つ演算器エレメント（ここではフリップフロップのみを指す）と、アプリケーションとして実装している演算器エレメント、つまり、ＲＴＬ（Register Transfer Level）に書かれる論理回路を持ち（ここではフリップフロップのみを指す）と、に設定される。
【００５８】
バッファとしての役割を持つ演算器エレメント（以下、バッファ演算器エレメント）は、図４（ａ）に示すようなｓｙｓＣＬＫ信号の一周期ごとにデータを更新し、出力する。
【００５９】
アプリケーションとして実装している論理ブロックのうちＲＴＬに存在するフリップフロップ回路を実装したエレメント（以下、アプリケーション演算器エレメント）は、図４（ｂ）に示すようなａｐｐＣＬＫ信号の一周期毎にデータを更新し、出力する。
【００６０】
また、ａｐｐＣＬＫ信号の周期は、ｓｙｓＣＬＫ信号の周期を基準として、アプリケーション演算器エレメント間の、バッファ演算器エレメントの数に基づいて決定される。
【００６１】
例えば、図８（ａ）に示される経路例では、アプリケーション演算器エレメントとして設定されている演算器エレメント１０ａと演算器エレメント１０ｅとの間に、バッファ演算器エレメントとして設定されている演算器エレメント１０ｂ〜１０ｄが配置されている。
【００６２】
そして、図８（ａ）の経路例をフリップフロップ回路についての経路として表すと、図８（ｂ）に示すように、ａｐｐＣＬＫ信号が入力されるＦＦ１４ａとＦＦ１４ｅとの間に、ｓｙｓＣＬＫ信号が入力されるＦＦ１６ｂ〜１６ｄが配置される。ただし、ＦＦ１４ａ，１６ｂ，１６ｃ，１６ｄ，１４ｅは、それぞれ、演算器エレメント１０ａ〜１０ｅに含まれるフリップフロップ回路である。
【００６３】
このとき、ＦＦ１４ａとＦＦ１４ｅとの間のクリティカルパスの数は、４であるので、図４に示すように、ａｐｐＣＬＫ信号は、ｓｙｓＣＬＫ信号における４つのクロックに対して、１つのクロックを入れるように設定される。
つまり、二つのアプリケーション演算器エレメントの間に「ｎ−１」個のバッファ演算器エレメントのみが配置され、二つのアプリケーション演算器エレメントのＦＦ１４間のクリティカルパスの数が「ｎ」個である場合、ａｐｐＣＬＫ信号は、ｓｙｓＣＬＫ信号における「ｎ」個のクロックに対して、１つのクロックを入れるように設定される。
【００６４】
ここで、図８の経路例における実際のデータの流れを、図９を参照しながら説明する。
【００６５】
図９は、各フリップフロップ回路が時間ごとに、入力するクロック信号と、保持・出力するデータとを表す図である。
【００６６】
図９に示すように、ＦＦ１４ａは、入力するａｐｐＣＬＫ信号のクロックの立ち上がり時が時刻「３，１１，１９」であるので、時間「３〜１１」においてデータＡ１を保持・出力し、時間「１１〜１９」においてデータＢ１を保持・出力し、時間「１９〜」においてデータＣ１を保持・出力する。
【００６７】
図９に示すように、ＦＦ１６ｂは、入力するｓｙｓＣＬＫ信号のクロックの立ち上がり時が時刻「１，３，５，７，９，１１，１３，１５，１７，１９，２１，２３」である。また、ＦＦ１６ｂは、時刻「５，７，９，１１」においてＦＦ１４ａからデータＡ１が入力される。ＦＦ１６ｂは、時刻「１３，１５，１７，１９」においてＦＦ１４ａからデータＢ１が入力される。ＦＦ１６ｂは、時刻「２１，２３」においてＦＦ１４ａからデータＣ１が入力される。
【００６８】
そのため、時間「５〜７」においてデータＡ１を保持・出力し、時刻「７」でデータを更新し、時間「７〜９」においてデータＡ１を保持・出力し、時刻「９」でデータを更新し、時間「９〜１１」においてデータＡ１を保持・出力し、時刻「１１」でデータを更新し、時間「１１〜１３」においてデータＡ１を保持・出力し、時刻「１３」でデータを更新する。
時間「１３〜１５」においてデータＢ１を保持・出力し、時刻「１５」でデータを更新し、時間「１５〜１７」においてデータＢ１を保持・出力し、時刻「１７」でデータを更新し、時間「１７〜１９」においてデータＢ１を保持・出力し、時刻「１９」でデータを更新し、時間「１９〜２１」においてデータＢ１を保持・出力し、時刻「２１」でデータを更新する。
時間「２１〜２３」においてデータＣ１を保持・出力し、時刻「２３」でデータを更新し、時間「２３〜」においてデータＣ１を保持・出力する。
【００６９】
ＦＦ１６ｃとＦＦ１６ｄのデータの流れもほぼ同様であるので、説明を省略する。
【００７０】
図９に示すように、ＦＦ１４ｅは、入力するａｐｐＣＬＫ信号のクロックの立ち上がり時が時刻「３，１１，１９」である。また、ＦＦ１４ｅは、時刻「１１」においてＦＦ１６ｄからデータＡ１が入力される。ＦＦ１４ｅは、時刻「１９」においてＦＦ１６ｄからデータＢ１が入力される。
【００７１】
そのため、時刻「１１」でデータを更新し、時間「１１〜１９」においてデータＡ１を保持・出力し、時刻「１９」でデータを更新し、時間「１９〜」においてデータＢ１を保持・出力する。
なお、図１０，１１に示すように、ａｐｐＣＬＫ信号のクロックの間隔が同じであれば、図８，９のＦＦ１６ｂ〜ｄの何れかが無くてもＦＦ１４ｅは上記のＦＦ１４ｅと同じ動作を行う。
【００７２】
なお、図８（ｂ）のＦＦ１６ｂ〜ｄは、それぞれ、セレクタ１３によってｓｙｓＣＬＫ信号が入力されるＦＦ１４に置き換えられてもよい。また、図８（ｂ）のＦＦ１４ａ，ｅは、それぞれ、セレクタ１７によってｓｙｓＣＬＫ信号が入力されるＦＦ１６に置き換えられてもよい。
【００７３】
このような論理回路であれば、全ての演算器エレメントにおいてフリップフロップ回路で同期させており、且つ、フリップフロップ回路が間に入らないループが存在しないので、現行のＬＳＩ（Large Scale Integration）設計フローに適合する。また、自動テスト合成が採用できる。静的タイミング解析（STA ; Static Timing Analysis）の様にＲＴＬ実装時に各演算器エレメントの遅延値を個別に足す必要は無く、フリップフロップ回路の段数でクロック周波数が分かる。これらの利点のため、ＰＬＤ設計期間の短縮を行うことができる。ソフトウェアＩＰを用いて最適な性能を得ることができる。
【００７４】
なお、本発明は上記実施形態に限定されず、種々の変形及び応用が可能である。
【００７５】
上記実施形態では、一つの演算器エレメントは一つのルックアップテーブルを備えたが、一つの演算器エレメントが複数のルックアップテーブルを備えるようにしてもよい。
【００７６】
また、上記実施形態では、出力側にフリップフロップ回路を備えた四入力一出力の演算器エレメントであったが、これに限定されるものではなく、出力側にフリップフロップ回路を備えたｐ入力ｑ出力の演算器エレメントであってもよい。ただし、ｐ，ｑは、自然数である。
【００７７】
また、ａｐｐＣＬＫ信号は、ｓｙｓＣＬＫ信号の複数クロックをマスクすればよいので、図１３に示すように、セレクタ１３をＡＮＤ，ＯＲ回路などで構成し、セレクタ１３がｓｙｓＣＬＫ信号の複数クロックをマスクするかしないかで、ａｐｐＣＬＫ信号とｓｙｓＣＬＫ信号とを切り換える構成にしても良い。
【００７８】
その場合、セレクタ１３は、図１３に示すように、ＯＲ回路１３ＡとＡＮＤ回路１３Ｂとから構成される。
また、その場合のクロックネットワークは、図１２に示すように、クロック入力部３１とＰＬＬ回路６０と配線６５，６６とカウンタ回路６７とから構成される。
【００７９】
ＰＬＬ回路６０は、図１４（ａ）に示すようなクロック信号を出力する。
カウンタ回路６７は、図１４（ｂ）に示すように、ＰＬＬ回路６０から入力されたＰＬＬ出力信号のクロック数を数え、制御部２０により設定されたクロック数ごとに一クロックを出力する（カウンタ出力信号を出力する）。
ＯＲ回路１３Ａは、制御部２０から指定された構成信号（０か１）と、カウンタ回路６７からカウンタ出力信号が入力され、構成信号が０の場合にはカウンタ出力信号をそのまま出力し、構成信号が１の場合には１を出力する。
ＡＮＤ回路１３Ｂは、ＰＬＬ回路６０からＰＬＬ出力信号と、ＯＲ回路１３Ａからの出力信号とが入力される。また、ＡＮＤ回路１３Ｂは、ＯＲ回路１３Ａに入力される構成信号が１の場合には、図１４（ｃ）に示すようにＰＬＬ出力信号をｓｙｓＣＬＫ信号としてそのまま出力し、ＯＲ回路１３Ａに入力される構成信号が０の場合には、図１４（ｄ）に示すようにカウンタ出力信号に依存したクロック信号をａｐｐＣＬＫ信号として出力する。
【００８０】
よって、図１３，１４に示すようなクロックネットワークとセレクタ１３によれば、構成情報（０か１）によってｓｙｓＣＬＫ信号とａｐｐＣＬＫ信号とを切り換えることができる。
【００８１】
また、同様にセレクタ１７をＡＮＤ，ＯＲ回路などで構成し、セレクタ１３がｓｙｓＣＬＫ信号の複数クロックをマスクするかしないかで、ａｐｐＣＬＫ信号とｓｙｓＣＬＫ信号とを切り換える構成にしても良い。
【００８２】
また、具体的な細部構造等についても適宜変更可能である。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施形態に係るＰＬＤの第１の構成図である。
【図２】図１の演算器エレメントとその周辺部の構成図である。
【図３】本発明の実施形態に係るＰＬＤのクロックネットワークの構成図である。
【図４】本発明の実施形態に係るＰＬＤに使用されるクロック信号を説明するためのグラフである。
【図５】本発明の実施形態に係る情報処理システムの構成図である。
【図６】論理回路再構成処理を説明するためのフローチャートである。
【図７】本発明の実施形態に係るＰＬＤの動作を説明するための第１の図である。
【図８】本発明の実施形態に係るＰＬＤの動作を説明するための第２の図である。
【図９】本発明の実施形態に係るＰＬＤの動作を説明するための第３の図である。
【図１０】本発明の実施形態に係るＰＬＤの動作を説明するための第４の図である。
【図１１】本発明の実施形態に係るＰＬＤの動作を説明するための第５の図である。
【図１２】本発明の実施形態の変形例に係るＰＬＤのクロックネットワークの構成図である。
【図１３】本発明の実施形態の変形例に係るセレクタの構成図である。
【図１４】本発明の実施形態の変形例に係るＰＬＤに使用されるクロック信号を説明するためのグラフである。
【符号の説明】
【００８４】
１０        演算器エレメント
１０ａ〜ｅ  演算器エレメント
１１        セレクタ回路
１２        ルックアップテーブル
１３        セレクタ回路
１３Ａ      ＯＲ回路
１３Ｂ      ＡＮＤ回路
１４        Ｄ−フリップフロップ回路
１４ａ，ｅ  Ｄ−フリップフロップ回路
１５        セレクタ回路
１６        Ｄ−フリップフロップ回路
１６ｂ〜ｄ  Ｄ−フリップフロップ回路
２０        制御部
３０        Ｉ／Ｏ部
３１        クロック入力部
４０        配線
４１        セレクタ回路
６０        ＰＬＬ回路
６１，６２  クロック制御回路
６３，６４  クロックバッファ
６５，６６  配線
６７        カウンタ回路
１００      ＰＬＤ
２００      インタフェース
３００      ＣＰＵ
４００      ＲＯＭ
５００      ハードディスク
６００      ＲＡＭ
７００      表示部
８００      操作部
１０００    情報処理システム
【図１】
2009017141.tif 000003
【図２】
2009017141.tif 000004
【図３】
2009017141.tif 000005
【図４】
2009017141.tif 000006
【図５】
2009017141.tif 000007
【図６】
2009017141.tif 000008
【図７】
2009017141.tif 000009
【図８】
2009017141.tif 000010
【図９】
2009017141.tif 000011
【図１０】
2009017141.tif 000012
【図１１】
2009017141.tif 000013
【図１２】
2009017141.tif 000014
【図１３】
2009017141.tif 000015
【図１４】
2009017141.tif 000016