ここから本文です

FPGAに乗算器が搭載されていて、それを使用する場合のことなのですが・・・

s07********さん

2009/10/2220:51:58

FPGAに乗算器が搭載されていて、それを使用する場合のことなのですが・・・

HDL記述において、わざわざ1ビットづつの乗算記述をしなくても、A*Bなど、簡単な記述でかまわないのでしょうか?

また、その「乗算器を使用する」という命令はHDL内に記述する必要があるのでしょうか?

加えて、その乗算器において浮動小数点計算をさせることは可能でしょうか?可能であれば、それはやはりHDL記述により指定するのでしょうか?


分かり易く教えていただければ幸いです。よろしくお願いいたします。

閲覧数:
1,627
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

tam********さん

2009/10/2223:16:41

FPGAチップに組み込まれている乗算器を使用したい場合は、それなりの記述が必要だったような。。。。
単にHDLでA*Bって書いても、オンチップ乗算回路は使われず、ロジックで乗算回路が組まれてしまったような。。。。

とかってウロ覚えの話をしてもショーガナイので、
↓この本を探して読みましょう。
http://www.cqpub.co.jp/dwm/CONTENTS/0089/dwm008900880.pdf
(このURL、記事が途中までしか乗ってなくて、肝心のトコロが判らない(^^;)

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

mok********さん

編集あり2009/10/2317:21:00

FPGAにてIPコア(ハードウェアマクロ)として乗算器が提供
されている場合ですね。

この場合は、しかるべきブロック内に呼び出す記述をすれば
よいのです。
乗算器の名前、インスタンス名、信号の接続情報を記述すれば
あとは乗算器内はブラックボックスとして扱い、論理合成時も
中身は一切いじりません。(乗算器内はレイアウト的、スピード的
に最適な形で設計されています。)

記述の例:

MUL18X16 mul001(
.X1( sigX[1] )
, .X2( sigX[2] )
:
:
, .Y1( sigY[1] )
, .Y2( sigY[2] )
:
:
, .Z1( sigZ[1] )
, .Z2( sigZ[2] )
:
:
)

MUL18X16がIPコアの名前、mul001がインスタンス名です、
ピン名や機能はIPコアの仕様書をみてください。
なお、浮動少数点乗算のあり/なしはIPコアによって異なると
思います。

では頑張って下さい。

ele********さん

2009/10/2309:14:03

整数乗算器であれば、A*Bと書くだけで、設計ツールが自動的に回路を
合成してくれます。
ただし、回路の動作速度や大きさが最適かどうかは、ツールの性能に依存
しますので、HDLを使って、自分で構造を細かく記述したほうが良い場合も
あります。

浮動小数点の乗算器は、構造的に全く異なるものです。
AND、OR、NOTなどの組み合わせ論理回路だけで作ることができますが、
FPGAが提供している開発ツールと一緒に、IPという形で提供されている
ことが多いです。
メーカーが提供しているIPを使うなら、デバイスの構造に最適化されて
いますので、性能としては安心して使うことができます。

自分で浮動小数点演算器を設計するなら、以前にDesignWaveという雑誌に
詳細な説明が載っていました。
CQ出版が本にまとめていますので、興味があるなら買ってみたらどうでしょうか。

「ディジタル数値演算回路の実用設計」 CQ出版

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる