日記です.自分用のメモ代わりに書くことが多いです.
QuartusII(ver 7.1sp1)で掛け算を行うと き,以下のように普通に*を使っ て行うことが出来るが,
sel a<12>, b<12>;
reg r<24>;
r := a * b;
この掛け算は符号付ではないよう だ.(どちらか片方だけ符号付か も知れないがそれは未確認)
よって,符号付掛け算を行いたい 場合はMegaWizard Plug-In Managerから
Arithmetic->ALT MEMMULTを作る必要がある .
(他にも掛け算用のものはあるが これはメモリを使うため計算結果 が出力されるのが早い.他のもの の動作は未確認.)
これはデフォルトでは係数(乗数 )は定数だが係数もポートを用意 することができる.
その場合のポートは↓.今回用い たのは入力各12ビット,出力2 4ビットの掛け算器で,入力はど ちらもSIGNED.
input clock; // クロック
input coeff_in[12]; // 係数.
input data_in[12]; // 被乗数
input sload_data; // instrinでも可.これが1 になると演算途中のものは終了し て新たなパラメータで処理を始め る
input sload_coeff; // instrinでも可.coef f_inを係数に置き換える.Q uartus IIではサポートしていない.
output result[24];
output result_valid; // instroutでも可.掛け算 が終了したことを示す.
output load_done; // 係数が更新されたことを示す.サ ポートしていない.
12ビットのときのパラメータは ↓.
TOTAL_LATENCY⇒5 : 掛け算を始めてから終わるまでの クロック数.
MAX_CLOCK_CYCLE S_PER_RESULT⇒2: 2クロックごとに1つの結果が出 る.つまりこの掛け算器は2クロ ックに1回しかデータを入力して はいけない?
以上備忘録.PDFへのリンク⇒ http://www.alte ra.com/literatu re/ug/ug_altmem mult.pdf
sel a<12>, b<12>;
reg r<24>;
r := a * b;
この掛け算は符号付ではないよう
よって,符号付掛け算を行いたい
Arithmetic->ALT
(他にも掛け算用のものはあるが
これはデフォルトでは係数(乗数
その場合のポートは↓.今回用い
input clock; // クロック
input coeff_in[12]; // 係数.
input data_in[12]; // 被乗数
input sload_data; // instrinでも可.これが1
input sload_coeff; // instrinでも可.coef
output result[24];
output result_valid; // instroutでも可.掛け算
output load_done; // 係数が更新されたことを示す.サ
12ビットのときのパラメータは
TOTAL_LATENCY⇒5
MAX_CLOCK_CYCLE
以上備忘録.PDFへのリンク⇒
PR
この記事にコメントする
プロフィール
HN:
まさぽん
性別:
男性
職業:
会社員
カウンター
ブログ内検索
クリック募金
カテゴリー
なかのひと
アクセス解析