忍者ブログ
日記です.自分用のメモ代わりに書くことが多いです.
86 85 84 83 82 81 80 79 78 77 76
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

QuartusII(ver 7.1sp1)で掛け算を行うとき,以下のように普通に*を使って行うことが出来るが,

sel a<12>, b<12>;
reg r<24>;

r := a * b;

この掛け算は符号付ではないようだ.(どちらか片方だけ符号付かも知れないがそれは未確認)

よって,符号付掛け算を行いたい場合はMegaWizard Plug-In Managerから

Arithmetic->ALTMEMMULTを作る必要がある

(他にも掛け算用のものはあるがこれはメモリを使うため計算結果が出力されるのが早い.他のものの動作は未確認.)

これはデフォルトでは係数(乗数)は定数だが係数もポートを用意することができる.

その場合のポートは↓.今回用いたのは入力各12ビット,出力24ビットの掛け算器で,入力はどちらもSIGNED.

input clock; // クロック

input coeff_in[12]; // 係数.

input data_in[12]; // 被乗数

input sload_data; // instrinでも可.これが1になると演算途中のものは終了して新たなパラメータで処理を始め

input sload_coeff; // instrinでも可.coeff_inを係数に置き換える.Quartus IIではサポートしていない.

output result[24];

output result_valid; // instroutでも可.掛け算が終了したことを示す.

output load_done; // 係数が更新されたことを示す.サポートしていない.

12ビットのときのパラメータは↓.

TOTAL_LATENCY⇒5: 掛け算を始めてから終わるまでのクロック数.

MAX_CLOCK_CYCLES_PER_RESULT⇒2: 2クロックごとに1つの結果が出る.つまりこの掛け算器は2クロックに1回しかデータを入力してはいけない?

以上備忘録.PDFへのリンク⇒http://www.altera.com/literature/ug/ug_altmemmult.pdf
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
ちょっと修正 By まさぽん
係数を変更するときはsload_coeffを1にしないと更新されない.
参考にした資料のバージョンが少し古かったので7.1では変更されていたのかも知れない.
load_doneは間違いなく用いられていない.
2007/09/16(Sun)21:58:54 編集
この記事へのトラックバック
この記事にトラックバックする:
プロフィール
HN:
まさぽん
性別:
男性
職業:
会社員
最新記事
(08/22)
(08/16)
(08/08)
(08/01)
(07/30)
カウンター
ブログ内検索
最新コメント
[03/18 ひぐ]
[03/10 まさぽん]
[03/09 ボンボ-ン]
[03/07 まさぽん]
[03/07 まさぽん]
クリック募金
なかのひと
アクセス解析
忍者ブログ [PR]
≪PREV HOME NEXT≫