(57)【要約】【課題】ＦＰＧＡ等の論理集積回路上に簡易で高パーフォーマンスの演算用回路を構築することができるようにして、論理集積回路上における演算ロジックの省スペース化を図る。【解決手段】コプロセッサ１内のデータ・メモリを、乗算結果格納用メモリ１９，２０と加算結果格納メモリ２１，２２とに分けて、加算器１５は、乗算結果格納用メモリ１９，２０に格納されたデータのうち２つのデータを加算し、乗算器１６は、加算結果格納用メモリ２１，２２に格納されたデータのうち２つのデータを乗算するようにしたことにより、加算処理と乗算処理とを並行して実行することができる。ここで、ディジタル信号処理においては、加算処理と乗算処理が交互に行われることが多いので、上記のように加算処理と乗算処理とを並行して実行することができるようにしたことにより、ＣＰＵコアをＦＰＧＡに組み込んだ場合と比べて、処理をより高速に実行できる。【選択図】図１
2007295128.tif 000002
【特許請求の範囲】
【請求項１】
演算用回路を有するフィールド・プログラマブル・ゲート・アレイ等の論理集積回路において、
前記演算用回路は、
乗算器と、
加算器と、
前記乗算器による演算結果のデータを複数個格納可能な乗算結果格納専用メモリと、
前記加算器による演算結果のデータを複数個格納可能な加算結果格納専用メモリと、
これらの回路各部の制御を行うための制御部を備え、
前記加算器は、前記乗算結果格納専用メモリに格納された複数個のデータのうちの２つのデータを加算し、
前記乗算器は、前記加算結果格納専用メモリに格納された複数個のデータのうちの２つのデータを乗算することを特徴とする論理集積回路。
【請求項２】
前記制御部は、
前記乗算結果格納専用メモリに格納された複数個のデータの中から、前記加算器に加算対象となるデータを出力するために、前記乗算結果格納専用メモリに前記加算対象となるデータに対応したアドレスを指示し、
前記加算結果格納専用メモリに格納された複数個のデータの中から、前記乗算器に乗算対象となるデータを出力するために、前記加算結果格納専用メモリに前記乗算対象となるデータに対応したアドレスを指示することを特徴とする請求項１に記載の論理集積回路。
【請求項３】
前記制御部は、水平型マイクロコードを含むマイクロ命令を格納したプログラムメモリを有し、
前記制御部は、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対する、アドレス指示用とライト・イネーブル信号出力用の制御線を有し、前記プログラムメモリから前記マイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン／オフ情報を前記制御線を介して前記乗算結果格納専用メモリ及び加算結果格納専用メモリに伝達することにより、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御するようにしたことを特徴とする請求項２に記載の論理集積回路。
【請求項４】
前記加算器による演算結果のデータを一時的に格納するためのレジスタをさらに備えることを特徴とする請求項１乃至３のいずれかに記載の論理集積回路。
【請求項５】
前記乗算器による演算処理と、前記加算器による演算処理とを同時に実行し得るようにしたことを特徴とする請求項１乃至４のいずれかに記載の論理集積回路。
【請求項６】
論理集積回路上における演算用回路についてのソースであって、
前記ソースは、請求項１乃至請求項５のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであることを特徴とする演算用回路のソース。
【請求項７】
論理集積回路上における演算用回路についてのソースを記録したコンピュータ読み取り可能な記録媒体であって、
前記ソースは、請求項１乃至請求項５のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであることを特徴とする演算用回路のソースを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＡ機器、通信機器、家電製品、医療機器等に組み込まれるフィールド・プログラマブル・ゲート・アレイ（以下、ＦＰＧＡと略す）、プログラマブル・ロジック・デバイス（以下、ＰＬＤと略す）等の再プログラミング可能な論理集積回路に係わり、特に、論理集積回路上にコプロセッサ（co-processor）等の演算用回路を構築する技術に関する。
【背景技術】
【０００２】
従来のＦＰＧＡ、ＰＬＤ等のユーザが手元で機能を完成させる方式の論理集積回路では、複雑な演算ロジックを構築する場合に、演算ロジックを直接ハードウェア記述言語で記述して、そのロジックに該当するハードウェア回路を作成する方法が採用されていた。これに対して、ＡＳＩＣ（Application Specific IC)の分野では、ＣＰＵコアを有するシステムＬＳＩの構成を採るものが多く（例えば、特許文献１参照）、複雑な演算処理については、ＣＰＵコア内部のプログラムで処理する方式が採用されている。
【０００３】
しかしながら、上記のような従来の演算ロジックに相当するハードウェア回路を作成する方式のＦＰＧＡ又はＰＬＤでは、ディジタル信号処理における浮動小数点方式の演算用のロジック等の複雑な演算ロジックを構築する場合に、回路の規模が大きくなる。また、上記のような従来のＡＳＩＣに用いられているＣＰＵコアをＦＰＧＡ又はＰＬＤに直接組み込んだ場合には、ゲートの使用率が大きくなり、また、ＦＰＧＡ又はＰＬＤ上におけるＣＰＵコアの占有面積が大きくなる。
【特許文献１】特開平６−２５０８７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上記の問題を解決するためになされたものであり、ＦＰＧＡやＰＬＤ等の論理集積回路上に簡易で高パーフォーマンスの演算用回路を構築することができるようにして、論理集積回路上における演算ロジックの省スペース化を図ることが可能な論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために請求項１の発明は、演算用回路を有するフィールド・プログラマブル・ゲート・アレイ等の論理集積回路において、前記演算用回路は、乗算器と、加算器と、前記乗算器による演算結果のデータを複数個格納可能な乗算結果格納専用メモリと、前記加算器による演算結果のデータを複数個格納可能な加算結果格納専用メモリと、これらの回路各部の制御を行うための制御部を備え、前記加算器は、前記乗算結果格納専用メモリに格納された複数個のデータのうちの２つのデータを加算し、前記乗算器は、前記加算結果格納専用メモリに格納された複数個のデータのうちの２つのデータを乗算するものである。
【０００６】
請求項２の発明は、請求項１に記載の論理集積回路において、前記制御部は、前記乗算結果格納専用メモリに格納された複数個のデータの中から、前記加算器に加算対象となるデータを出力するために、前記乗算結果格納専用メモリに前記加算対象となるデータに対応したアドレスを指示し、前記加算結果格納専用メモリに格納された複数個のデータの中から、前記乗算器に乗算対象となるデータを出力するために、前記加算結果格納専用メモリに前記乗算対象となるデータに対応したアドレスを指示するものである。
【０００７】
請求項３の発明は、請求項２に記載の論理集積回路において、前記制御部は、水平型マイクロコードを含むマイクロ命令を格納したプログラムメモリを有し、前記制御部は、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対する、アドレス指示用とライト・イネーブル信号出力用の制御線を有し、前記プログラムメモリから前記マイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン／オフ情報を前記制御線を介して前記乗算結果格納専用メモリ及び加算結果格納専用メモリに伝達することにより、前記乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御するものである。
【０００８】
請求項４の発明は、請求項１乃至３に記載の論理集積回路において、前記加算器による演算結果のデータを一時的に格納するためのレジスタをさらに備えるものである。
【０００９】
請求項５の発明は、請求項１乃至４に記載の論理集積回路において、前記乗算器による演算処理と、前記加算器による演算処理とを同時に実行し得るようにしたものである。
【００１０】
請求項６の発明は、論理集積回路上における演算用回路についてのソースであって、前記ソースは、請求項１乃至請求項５のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであるものである。
【００１１】
請求項７の発明は、論理集積回路上における演算用回路についてのソースを記録したコンピュータ読み取り可能な記録媒体であって、前記ソースは、請求項１乃至請求項５のいずれかに記載の論理集積回路上の演算用回路についてのハードウェア記述言語レベルのソースであるものである。
【発明の効果】
【００１２】
請求項１及び２の発明によれば、演算用回路を、主に、乗算器と、加算器と、乗算結果格納専用メモリと、加算結果格納専用メモリと、制御部とで構成したことにより、フィールド・プログラマブル・ゲート・アレイ等の論理集積回路上に、簡易な構成の演算用回路を構築することができるので、論理集積回路上における演算ロジックの省スペース化を図ることができる。また、演算用回路内のデータ・メモリを、乗算結果格納専用メモリと加算結果格納専用メモリとに分けて、加算器は、乗算結果格納専用メモリに格納された複数個のデータのうちの２つのデータを加算し、乗算器は、加算結果格納専用メモリに格納された複数個のデータのうちの２つのデータを乗算するようにしたことにより、演算用回路による加算処理と乗算処理とを並行して実行することができる。ここで、適応ディジタルフィルタにおけるフィルタリング等のディジタル信号処理においては、加算処理と乗算処理が交互に行われることが多いので、上記のように加算処理と乗算処理とを並行して実行することができるようにしたことにより、従来のＡＳＩＣに用いられているＣＰＵコアをＦＰＧＡ又はＰＬＤに直接組み込んだ場合と比べて、クロックの周波数が同程度の場合には、ディジタル信号処理をより高速に実行することができる。
【００１３】
請求項３の発明によれば、制御部は、乗算結果格納専用メモリ及び加算結果格納専用メモリに対する、アドレス指示用とライト・イネーブル信号出力用の制御線を有し、プログラムメモリからマイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン／オフ情報を制御線を介して乗算結果格納専用メモリ及び加算結果格納専用メモリに伝達することにより、乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御するようにした。これにより、制御部が、命令をデコードしてレジスタやメモリに対する制御信号を生成することなく、乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きを制御することができるので、制御部の行う処理を簡略化することができる。従って、制御部を簡易な構成とすることができると共に、乗算結果格納専用メモリ及び加算結果格納専用メモリに対するデータの読み書きの処理の高速化を図ることができる。
【００１４】
請求項４の発明によれば、加算器による演算結果のデータを一時的に格納するためのレジスタをさらに備えるようにしたことにより、ディジタル信号処理において、加算を連続して実行する場合における処理の高速化を図ることができる。
【００１５】
請求項６及び７の発明によれば、コンピュータにソースを読み取らせて、このソースを用いてコンピュータにより論理合成処理を行った結果を、論理集積回路にダウン・ロードすることにより、上記に記載の発明の効果と同等の効果を得ることができる。
【発明を実施するための最良の形態】
【００１６】
本発明を実施するための最良の形態について図面を参照して説明する。なお、以下に記載した実施形態は、本発明を網羅するものではなく、本発明は、下記の形態だけに限定されない。
【００１７】
以下、本発明の一実施形態による論理集積回路であるフィールド・プログラマブル・ゲート・アレイ（以下、ＦＰＧＡという）について図面を参照して説明する。図１に本実施形態によるＦＰＧＡにおけるコプロセッサ（co-processor）（請求項における演算用回路）周辺の構成を示す。コプロセッサ１は、ＦＰＧＡ（図６参照）上の演算ロジックの規模を小さくするために組み込まれたＩＰの一種である。このコプロセッサ１は、演算部３と、この演算部３による演算を制御する制御部２と、クロックジェネレータ１４とを備えている。演算部３は、乗算器１６と、加算器１５と、乗算器１６による演算結果のデータを複数個格納可能なメモリ１９及びメモリ２０（請求項における乗算結果格納専用メモリ）と、加算器１５による演算結果のデータを複数個格納可能なメモリ２１及びメモリ２２（請求項における加算結果格納専用メモリ）と、加算器１５に入力されるデータのルートの切り替えを行うためのマルチプレクサであるＭＵＸ１〜３と、乗算器１６に入力されるデータのルートの切り替えを行うためのマルチプレクサであるＭＵＸ４〜６と、加算器１５による演算結果のデータを一時的に格納するためのレジスタであるＡ＿Ｒｅｇ２３とから構成されている。メモリ１９は、リード用のポート１９ａとライト用のポート１９ｂを有するデュアル・ポート・メモリであり、メモリ１９からのデータの読み出しとメモリ１９へのデータの書き込みを同時に行うことができる。メモリ２０〜２２も同様である。メモリ１９〜２２は、それぞれ３２ビットのデータを２５６個格納することができる。ＭＵＸ２は、加算器１５に入力されるデータを、ＭＵＸ１から出力されたデータと、Ａ＿Ｒｅｇ２３からのデータとの間で切り替えるためのマルチプレクサである。ＭＵＸ１７は、外部入力データの切り替え用のマルチプレクサである。ＭＵＸ６は、乗算器１６に入力されるデータを、ＭＵＸ５から出力されたデータと、ＭＵＸ１７から出力された外部データとの間で切り替えるためのマルチプレクサである。
【００１８】
加算器１５は、主に、ライン（データ用のバス）Ｌ５，Ｌ１０とＭＵＸ１，３を介して、メモリ１９及びメモリ２０に格納された複数個のデータのうちの２つのデータを読み出して加算する。ただし、乗算器１６による直前の乗算結果をそのまま次の加算処理に使用する場合は、加算器１５は、ライン（データ用のバス）Ｌ４とＭＵＸ１を介して入力されたデータ、又はライン（データ用のバス）Ｌ９とＭＵＸ３を介して入力されたデータを加算処理に使用する。すなわち、ラインＬ４とラインＬ９とは、乗算器１６による直前の乗算結果をそのままＭＵＸ１又はＭＵＸ３に送るためのバイパス用のラインである。
【００１９】
乗算器１６は、主に、ライン（データ用のバス）Ｌ１５，Ｌ２０とＭＵＸ４，５を介して、メモリ２１及びメモリ２２に格納された複数個のデータのうちの２つのデータを読み出して乗算する。ただし、加算器１５による直前の加算結果をそのまま次の乗算処理に使用する場合は、乗算器１６は、ライン（データ用のバス）Ｌ１４とＭＵＸ４を介して入力されたデータ、又はライン（データ用のバス）Ｌ１９とＭＵＸ５を介して入力されたデータを乗算処理に使用する。すなわち、ラインＬ１４とラインＬ１９とは、加算器１５による直前の加算結果をそのままＭＵＸ４又はＭＵＸ５に送るためのバイパス用のラインである。
【００２０】
制御部２は、プログラムカウンタ１１と、プログラムメモリ１２と、命令レジスタ１３とを有している。プログラムカウンタ１１は、次に実行すべきマイクロ命令が存在するプログラムメモリ１２上のアドレスを指示する。プログラムメモリ１２は、レングスが６４ビットの水平型マイクロコード形式（マイクロ命令の１ビットを１つの制御信号に割り当てる単純な形式）のマイクロ命令を格納している。命令レジスタ１３には、プログラムカウンタ１１により指示されたプログラムメモリ１２上のアドレスに格納されたマイクロ命令がセットされる。
【００２１】
命令レジスタ１３とメモリ１９との間には、メモリ１９内のデータをＭＵＸ１に出力する際に、メモリ１９に加算対象となる読み込みデータに対応したアドレスを入力するための制御線Ｌ１と、メモリ１９に乗算器１６から出力された乗算結果を書き込む際に、メモリ１９上のデータが格納されるアドレスを入力するための制御線Ｌ２と、メモリ１９にライト・イネーブル信号を出力するための制御線Ｌ２１とが配設されている。また、命令レジスタ１３とメモリ２０との間には、メモリ２０内のデータをＭＵＸ３に出力する際に、メモリ２０に加算対象となる読み込みデータに対応したアドレスを入力するための制御線Ｌ６と、メモリ２０に乗算器１６から出力された乗算結果を書き込む際に、メモリ２０上のデータが格納されるアドレスを入力するための制御線Ｌ７と、メモリ２０にライト・イネーブル信号を出力するための制御線Ｌ２２とが配設されている。なお、命令レジスタ１３とＡ＿Ｒｅｇ２３との間には、命令レジスタ１３からＡ＿Ｒｅｇ２３にライト・イネーブル信号を出力するための不図示の制御線（以下、Ａ＿Ｒｅｇ制御線という）が設けられている。このＡ＿Ｒｅｇ制御線とＡ＿Ｒｅｇ２３とＭＵＸ２とを設けたことにより、加算器１５は、前回の加算結果をそのまま用いて、次の加算処理を行うことができる。
【００２２】
命令レジスタ１３とメモリ２１との間には、メモリ２１内のデータをＭＵＸ４に出力する際に、メモリ２１に乗算対象となる読み込みデータに対応したアドレスを入力するための制御線Ｌ１１と、メモリ２１に加算器１５から出力された加算結果を書き込む際に、メモリ２１上のデータが格納されるアドレスを入力するための制御線Ｌ１２と、メモリ２１にライト・イネーブル信号を出力するための制御線Ｌ２３とが配設されている。また、命令レジスタ１３とメモリ２２との間には、メモリ２２内のデータをＭＵＸ５に出力する際に、メモリ２２に乗算対象となる読み込みデータに対応したアドレスを入力するための制御線Ｌ１６と、メモリ２２に加算器１５から出力された加算結果を書き込む際に、メモリ２２上のデータが格納されるアドレスを入力するための制御線Ｌ１７と、メモリ２２にライト・イネーブル信号を出力するための制御線Ｌ２４とが配設されている。
【００２３】
命令レジスタ１３と演算部３内のＭＵＸ１〜６との間には、不図示の制御線（以下、マルチプレクサ制御線という）が設けられている。
【００２４】
乗算器１６とメモリ１９との間には、データ入力用のバスであるラインＬ３が設けられており、乗算器１６とメモリ２０との間には、データ入力用のバスであるラインＬ８が設けられている。また、加算器１５とメモリ２１との間には、データ入力用のバスであるラインＬ１３が設けられており、加算器１５とメモリ２２との間には、データ入力用のバスであるラインＬ１８が設けられている。
【００２５】
プログラムカウンタ１１は、プログラムメモリ１２からマイクロ命令を読み込んで命令レジスタ１３にセットし、このマイクロ命令に含まれる各ビットのオン／オフ情報を、制御線Ｌ１，Ｌ２，Ｌ６，Ｌ７，Ｌ１１，Ｌ１２，Ｌ１６，Ｌ１７，Ｌ２１，Ｌ２２，Ｌ２３及びＬ２４を介して、メモリ１９乃至２２に伝達することにより、メモリ１９乃至２２に対するデータの読み書きを制御する。また、プログラムカウンタ１１は、プログラムメモリ１２からマイクロ命令を読み込んで命令レジスタ１３にセットし、このマイクロ命令に含まれる各ビットのオン／オフ情報を、上記のマルチプレクサ制御線を介して、演算部３内のＭＵＸ１〜６に伝達することにより、演算部３内におけるデータの流れを制御する。すなわち、プログラムカウンタ１１は、プログラムメモリ１２からマイクロ命令を読み込んで命令レジスタ１３にセットし、このマイクロ命令に含まれる各ビットのオン／オフ情報を、演算部３内のメモリ１９乃至２２及びＭＵＸ１〜６に伝達することにより、演算部３内における演算処理を制御する。
【００２６】
上記の構成においては、加算器１５は、主に、乗算器１６による乗算結果を用いて加算処理を行い、乗算器１６は、主に、加算器１５による加算結果を用いて加算処理を行う。従って、演算部３内のデータフローは、図２（ｂ）に示されるようなイメージになる。従来のプロセッサにおいては、ＡＬＵを複数備えたものがある。しかしながら、図２（ａ）に示されるように、この種のプロセッサにおける各ＡＬＵ１０１、１０２は、それぞれのＡＬＵ１０１、１０２が過去に処理したデータのみを用いて、次の演算処理を行う。これに対して、本実施形態におけるコプロセッサ１の加算器１５は、原則として、乗算器１６が過去に処理したデータを用いて、次の演算処理を行う。また、本実施形態におけるコプロセッサ１の乗算器１６は、原則として、加算器１５が過去に処理したデータを用いて、次の演算処理を行う。
【００２７】
図３は、プログラムメモリ１２に格納されるマイクロ命令の元になるコマンドとマイクロ命令との対応関係を示す表である。図における３９の列と４０の列は、それぞれマイクロ命令の元になるコマンドの第１オペランドと第２オペランドの内容を示している。また、各マイクロ命令は、全体で６４ビットのレングスを持ち、第１コマンド部と第２コマンド部から構成される１６ビットのコマンド部３１と、第１乃至第６ＯＰ部から構成される４８ビットのオペランド部３２とから構成される。第１乃至第６ＯＰ部は、それぞれ８ビットのレングスを持つ。これらの第１乃至第６ＯＰ部には、該当するマイクロ命令の元になるコマンドにおける各オペランド３９、４０に対応した、メモリ１９乃至２２上のアドレスが格納される。
【００２８】
図中の”ｍｕｌｔ”は、乗算命令であり、”ｗ＿ｍｕｌｔ”は、乗算結果のメモリ１９及び２０への書込命令であり、”ａｄｄ”は、加算命令であり、”ｗ＿ａｄｄｓ”は、加算結果のメモリ２１及び２２への書込命令である。”ｓｕｂ＿ａｂ”は、「（第１オペランドが指し示すアドレスのデータ）  −  （第２オペランドが指し示すアドレスのデータ）」を意味する減算命令であり、”ｓｕｂ＿ｂａ”は、「（第２オペランドが指し示すアドレスのデータ）  −  （第１オペランドが指し示すアドレスのデータ）」を意味する減算命令である。また、”ｌｄａ”は、Ａ＿Ｒｅｇ２３からのデータの書き込み命令であり、”ｓｔａ”は、Ａ＿Ｒｅｇ２３へのデータの読み込み命令である。また、”ｌｄ＿ｄｉｖ”，”ｌｄ＿ａｌｉｍｉｔ”，”ｌｄ＿ｄｉｎ”は、いずれもロード（ｌｏａｄ）系の命令であり、”ｓｔ＿ｕａ１”，”ｓｔ＿ｕａ２”，”ｓｔ＿ｕｂ１”，”ｓｔ＿ｕｂ２”，”ｓｔ＿ｍ１”，”ｓｔ＿ｍ２”，”ｓｔ＿ｎ１”，”ｓｔ＿ｎ２”は、いずれもストア（ｓｔｏｒｅ）系の命令である。
【００２９】
図中において「排他」と記載されたグループ内の２つ以上のコマンドを同時に実行させることはできない。従って、図４に示されるプログラムシート５０において、図３中の「排他」と記載されたグループ（以下、排他グループという）内の２つ以上のコマンドを同じ行に記載することはできない。例えば、プログラムシート５０において、図３中の最初の排他グループ（”ａｄｄ”と”ｓｕｂ＿ａｂ”と”ｓｕｂ＿ｂａ”から構成されるグループ）内の２つ以上のコマンド（例えば、”ａｄｄ”と”ｓｕｂ＿ａｂ”）を同じ行に記載することはできない。これに対して、図３中の同じ排他グループ内に含まれるコマンドどうしの組み合わせでなければ、図３中に示される２つ以上のコマンドを同時に実行することが可能である。例えば、図３中の”ｍｕｌｔ”、”ｗ＿ｍｕｌｔ”、”ｗ＿ａｄｄｓ”、及び”ａｄｄ”を同時に実行させることができる。従って、図４に示されるプログラムシート５０において、”ｍｕｌｔ”、”ｗ＿ｍｕｌｔ”、”ｗ＿ａｄｄｓ”、及び”ａｄｄ”を同じ行に記載することができる。
【００３０】
図３において、３５は、第２オペランド４０内のラベルに対応したアドレスに格納された、メモリ１９、２０上のデータの正負の符号を反転させるためのビットを表す。３６は、第１オペランド３９内のラベルに対応したアドレスに格納された、メモリ１９、２０上のデータの正負の符号を反転させるためのビットを表す。また、３４は、メモリ２１、２２へのライト・イネーブル信号に対応したビットを表し、３３は、メモリ１９、２０へのライト・イネーブル信号に対応したビットを表す。さらにまた、３７は、ＭＵＸ２におけるデータの流れを切り替えるためのビットであり、３８は、ＭＵＸ６におけるデータの流れを切り替えるためのビットである。なお、第２コマンド部における３７、３８以外のビットは、演算部３内のＭＵＸ２、６以外のマルチプレクサにおけるデータの流れを切り替えるためのビットである。
【００３１】
図４は、図３に示されるコマンドを組み合せたプログラムを入力するためのエディターである、プログラムシートを示す。図中のプログラムシート５０に示されるプログラムは、ＩＩＲ（infinite impulse response:無限長インパルス応答）フィルタにおける処理の一部を記載したものである。なお、このコプロセッサ１においては、パイプライン処理の段数が４段であるので、乗算処理や加算処理の結果を、これらの処理から見て４つ以上後の処理において、メモリ１９乃至２２に書き込む必要がある。ただし、パイプライン処理の段数を変更すれば、乗算処理や加算処理の結果を、いくつ後の処理で書き込む必要があるかという点を変えることができる。
【００３２】
プログラムシート５０における１行目のコマンド”ｍｕｌｔ ｃｏｎｓｔ１”は、外部から入力されたデータ（図１中におけるＭＵＸ１７から入力されたＥＸＴ＿Ｄａｔａ）を、定数”１”と掛けるためのコマンドである。この乗算の結果は、矢印（１）に示されるように、５行目の２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｃ”により、加算器１５側のメモリ１９及び２０における、ラベルｖ＿ｖｃに対応したアドレスに保存される。このように、外部から入力されたデータに定数”１”を掛けて加算器１５側のメモリ１９及び２０に格納する処理を行った理由は、外部から入力されたデータを直接加算器１５側のメモリ１９及び２０に書き込むルートがないからである。上記のような乗算処理を行うことにより、外部から入力されたデータを加算器１５側のメモリ１９及び２０に書き込むことができる。これは、本実施形態のコプロセッサ１の構造をシンプルにするための工夫の一つである。
【００３３】
プログラムシート５０における３行目のコマンド”ｍｕｌｔ  ｖ＿ｖｂ  ｖ＿ａａ”は、乗算器１６側のメモリ２１又は２２における、ラベルｖ＿ｖｂに対応したアドレスに保存されたデータと、乗算器１６側のメモリ２１又は２２における、ラベルｖ＿ａａに対応したアドレスに保存されたデータとの乗算を行うためのコマンドである。この乗算の結果は、矢印（２）に示されるように、７行目の２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｅ”により、加算器１５側のメモリ１９及び２０における、ラベルｖ＿ｖｅに対応したアドレスに保存される。
【００３４】
プログラムシート５０における５行目のコマンド”ｍｕｌｔ  ｖ＿ｖｉ  ｖ＿ｂｂ”は、乗算器１６側のメモリ２１又は２２における、ラベルｖ＿ｖｉに対応したアドレスに保存されたデータと、乗算器１６側のメモリ２１又は２２における、ラベルｖ＿ｂｂに対応したアドレスに保存されたデータとの乗算を行うためのコマンドである。この乗算の結果は、矢印（４）に示されるように、９行目の２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｆ”により、加算器１５側のメモリ１９及び２０における、ラベルｖ＿ｖｆに対応したアドレスに保存される。
【００３５】
上記７行目の２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｅ”により、加算器１５側のメモリ１９及び２０における、ラベルｖ＿ｖｅに対応したアドレスに保存された乗算結果と、上記９行目の２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｆ”により、加算器１５側のメモリ１９及び２０における、ラベルｖ＿ｖｆに対応したアドレスに保存された乗算結果は、矢印（３）及び（５）に示されるように、１０行目の３つ目のコマンド”ａｄｄ  ｖ＿ｖｆ  ｖ＿ｖｅ”で、加算処理に用いられる。そして、このコマンド”ａｄｄ  ｖ＿ｖｆ  ｖ＿ｖｅ”による加算の結果は、矢印（６）に示されるように、１４行目の４つ目のコマンド”ｗ＿ａｄｄｓ  ｖ＿ｖｄ”により、乗算器１６側のメモリ２１及び２２における、ラベルｖ＿ｖｄに対応したアドレスに保存される。
【００３６】
７行目のコマンド”ｍｕｌｔ  ｖ＿ｖｂ  ｃｏｎｓｔ１”は、乗算器１６側のメモリ２１又は２２における、ラベルｖ＿ｖｂに対応したアドレスに保存されたデータと、定数”１”とを掛けるためのコマンドである。この乗算の結果は、矢印（７）に示されるように、１１行目の２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｉ”により、加算器１５側のメモリ１９及び２０における、ラベルｖ＿ｖｉに対応したアドレスに保存される。この乗算結果は、矢印（８）に示されるように、１２行目の３つ目のコマンド”ａｄｄ  ｖ＿ｖｉ  ｃｏｎｓｔ０”で、加算処理に用いられる。このコマンドは、加算器１５側のメモリ１９又は２０における、ラベルｖ＿ｖｉに対応したアドレスに保存されたデータと、定数”０”とを加算するためのコマンドである。このコマンドによる加算の結果は、矢印（９）に示されるように、１４行目の４つ目のコマンド”ｗ＿ａｄｄｓ  ｖ＿ｖｉ”により、乗算器１６側のメモリ２１及び２２における、ラベルｖ＿ｖｉに対応したアドレスに保存される。
【００３７】
上記のように、乗算器１６側のメモリ２１又は２２における、ラベルｖ＿ｖｂに対応したアドレスに保存されたデータに定数”１”を掛けて加算器１５側のメモリ１９及び２０に格納する処理（７行目のコマンド”ｍｕｌｔ  ｖ＿ｖｂ  ｃｏｎｓｔ１”）を行った後に、この加算器１５側のメモリ１９又は２０に格納された乗算結果と、定数”０”とを加算して乗算器１６側のメモリ２１及び２２における、ラベルｖ＿ｖｉに対応したアドレスに格納する処理を行った理由は、乗算器１６側のメモリ２１又は２２における、所定のアドレスに保存されたデータを、乗算器１６側のメモリ２１及び２２における、他のアドレスに直接書き込むルートがないからである。上記のような処理を行うことにより、乗算器１６側のメモリ上の所定のアドレスに保存されたデータを、同じメモリ上の他のアドレスにコピーすることができる。これも、本実施形態のコプロセッサ１の構造をシンプルにするための工夫の一つである。
【００３８】
また、図４には示していないが、上記の７行目のコマンド”ｍｕｌｔ  ｖ＿ｖｂ  ｃｏｎｓｔ１”を、１行目のコマンド”ｍｕｌｔ ｃｏｎｓｔ１”に置き換えることにより、外部から入力されたデータを乗算器１６側のメモリ２１及び２２に書き込むことができる。これも、本実施形態のコプロセッサ１の構造をシンプルにするための工夫の一つである。
【００３９】
本実施形態のコプロセッサ１は、プログラムシート５０における同じ行に記載された各コマンド（例えば、５行目の１つ目のコマンド”ｍｕｌｔ  ｖ＿ｖｉ  ｖ＿ｂｂ”と、２つ目のコマンド”ｗ＿ｍｕｌｔ  ｖ＿ｖｃ”と）を並列に処理することができる。すなわち、コプロセッサ１は、ｍｕｌｔコマンドによる乗算処理と、ｗ＿ｍｕｌｔコマンドによる乗算結果の加算器１５側のメモリ１９及び２０への書き込み処理と、ａｄｄコマンドによる加算処理と、ｗ＿ａｄｄｓコマンドによる加算結果の乗算器１６側のメモリ２１及び２２への書き込み処理等を並列に処理することができる。
【００４０】
上記のように、乗算処理と、乗算結果の加算器１５側のメモリへの書き込み処理と、加算処理と、加算結果の乗算器１６側のメモリへの書き込み処理とを並列に処理することができる理由は、従来のように、演算処理用のＡＬＵを用いるのではなく、加算専用の演算器である加算器１５と、乗算専用の演算器である乗算器１６とで演算を行うようにする共に、データメモリを、加算器１５側のメモリ１９及び２０と、乗算器１６側のメモリ２１及び２２とに分けたことによる。
【００４１】
次に、図５及び図６を参照して、上記のコプロセッサ１についてのハードウェア記述言語レベルのソースに基づく論理合成結果を、ＦＰＧＡ１０にダウンロードする手順について説明する。ユーザは、プログラムメモリ１２に格納するプログラムを作成して、パソコン上でこのプログラムのシミュレーション（オフライン・デバッグ）を行う。そして、このシミュレーションによる検証結果がＯＫになると、パソコンは、ユーザによる指示操作に応じて、コプロセッサ１についてのハードウェア記述言語（例えばＶＨＤＬ(VHSIC Hardware Description Language））レベルのソースの生成と（Ｓ１）、ＦＰＧＡ１０上の他のＩＰ７６、７７についてのハードウェア記述言語レベルのソースの生成（＃２）を行った後、これらのソースの論理合成を行い（＃３）、その論理合成結果をＦＰＧＡ１０内のＲＯＭ７５にダウン・ロードする（＃４）。このＲＯＭ７５が、請求項７における、コンピュータ読み取り可能な記録媒体に相当する。
【００４２】
上述したように、本実施形態によるコプロセッサ１によれば、演算用回路を、主に、乗算器１６と、加算器１５と、乗算結果格納専用メモリ１９及び２０と、加算結果格納専用メモリ２１及び２２と、制御部２とで構成したことにより、ＦＰＧＡ１０上に、簡易な構成の演算用回路を構築することができるので、ＦＰＧＡ１０上における演算ロジックの省スペース化を図ることができる。また、ＦＰＧＡ１０内のデータ・メモリを、乗算結果格納専用メモリ１９及び２０と加算結果格納専用メモリ２１及び２２とに分けて、加算器１５は、乗算結果格納専用メモリ１９及び２０に格納された複数個のデータのうちの２つのデータを加算し、乗算器１６は、加算結果格納専用メモリ２１及び２２に格納された複数個のデータのうちの２つのデータを乗算するようにしたことにより、コプロセッサ１による加算処理と乗算処理とを並行して実行することができる。
【００４３】
ここで、適応ディジタルフィルタにおけるフィルタリング等のディジタル信号処理においては、加算処理と乗算処理が交互に行われることが多いので、上記のように加算処理と乗算処理とを並行して実行することができるようにしたことにより、従来のＡＳＩＣに用いられているＣＰＵコアをＦＰＧＡ又はプログラマブル・ロジック・デバイス（以下、ＰＬＤと略す）に直接組み込んだ場合と比べて、クロックの周波数が同程度の場合には、ディジタル信号処理をより高速に実行することができ、特に、ＦＰＧＡにおいて浮動小数点演算を実行する場合における処理速度を高速化することができる。具体的には、本実施形態によるコプロセッサ１を浮動小数点演算に用いた場合、コプロセッサ１におけるクロックの周波数が５０ＭＢ／Ｓであるとき、クロックの周波数が３００ＭＢ／Ｓの通常のＤＳＰ（Digital Signal Processor）に比べて、処理速度を１０倍の速さにすることができる。
【００４４】
上記の制御部２は、乗算結果格納専用メモリ１９、２０、及び加算結果格納専用メモリ２１、２２に対する、アドレス指示用の制御線Ｌ１，Ｌ２，Ｌ６，Ｌ７，Ｌ１１，Ｌ１２，Ｌ１６，Ｌ１７とライト・イネーブル信号出力用の制御線Ｌ２１，Ｌ２２，Ｌ２３，Ｌ２４とを有し、プログラムメモリ１２からマイクロ命令を読み込み、このマイクロ命令に含まれる水平型マイクロコードを構成する各ビットのオン／オフ情報を上記の各制御線を介して乗算結果格納専用メモリ１９、２０及び加算結果格納専用メモリ２１、２２に伝達することにより、乗算結果格納専用メモリ１９、２０及び加算結果格納専用メモリ２１、２２に対するデータの読み書きを制御するようにした。これにより、制御部２が、命令をデコードしてレジスタやメモリに対する制御信号を生成することなく、乗算結果格納専用メモリ１９、２０及び加算結果格納専用メモリ２１、２２に対するデータの読み書きを制御することができるので、制御部２の行う処理を簡略化することができる。従って、制御部２を簡易な構成とすることができると共に、乗算結果格納専用メモリ１９、２０及び加算結果格納専用メモリ２１、２２に対するデータの読み書きの処理の高速化を図ることができる。
【００４５】
また、加算器１５による加算結果のデータを一時的に格納するためのレジスタであるＡ＿Ｒｅｇ２３をさらに備えるようにしたことにより、コプロセッサ１におけるディジタル信号処理において、加算を連続して実行する場合における処理の高速化を図ることができる。
【００４６】
なお、本発明は、上記実施形態に限られるものではなく、様々な変形が可能である。例えば、上記の実施形態では、本発明によるコプロセッサ１が構築される論理集積回路が、ＦＰＧＡである場合の例を示したが、本発明によるコプロセッサ１をＦＰＧＡ以外の再プログラミング可能な論理集積回路（例えばＰＬＤ）に構築してもよい。また、上記の実施形態では、コプロセッサ１におけるパイプライン処理の段数が４段である場合の例を示したが、コプロセッサにおけるパイプライン処理の段数は、これに限られない。
【図面の簡単な説明】
【００４７】
【図１】本発明の一実施形態による論理集積回路上のコプロセッサの構成図。
【図２】（ａ）は、従来のプロセッサにおけるデータフローのイメージを示す図、（ｂ）は、上記本実施形態によるコプロセッサ内の演算部におけるデータフローのイメージを示す図。
【図３】上記図１中のプログラムメモリに格納されるマイクロ命令の元になるコマンドとマイクロ命令との対応関係を示す表。
【図４】上記図３に示されるコマンドを組み合せたプログラムを入力するためのエディターである、プログラムシートを示す図。
【図５】上記コプロセッサについてのハードウェア記述言語レベルのソースに基づく論理合成結果を、ＦＰＧＡにダウンロードする手順を示すフローチャート。
【図６】上記の論理合成結果のダウン・ロードとダウン・ロード後の実機テストに用いられる機器の構成図。
【符号の説明】
【００４８】
１    コプロセッサ（演算用回路）
２    制御部
１０  ＦＰＧＡ
１２  プログラムメモリ
１５  加算器
１６  乗算器
１９  メモリ（乗算結果格納専用メモリ）
２０  メモリ（乗算結果格納専用メモリ）
２１  メモリ（加算結果格納専用メモリ）
２２  メモリ（加算結果格納専用メモリ）
２３  Ａ＿Ｒｅｇ（加算器による演算結果のデータを一時的に格納するためのレジスタ）
Ｌ１，Ｌ２，Ｌ６，Ｌ７，Ｌ１１，Ｌ１２，Ｌ１６，Ｌ１７  制御線（アドレス指示用の制御線）
Ｌ２１，Ｌ２２，Ｌ２３，Ｌ２４  制御線（ライト・イネーブル信号出力用の制御線）
７５  ＲＯＭ（コンピュータ読み取り可能な記録媒体）
【図１】
2007295128.tif 000003
【図２】
2007295128.tif 000004
【図３】
2007295128.tif 000005
【図４】
2007295128.tif 000006
【図５】
2007295128.tif 000007
【図６】
2007295128.tif 000008