作者deathcustom ()
看板Electronics
標題Re: [問題] 乘法器
時間Sun Oct 4 17:23:38 2009
※ 引述《ccjin (hello......)》之銘言:
: 用 Xilinx ISE 時候
: verilog 打個 '*' 就會幫我合成一個乘法器
: always(posedge clock2) begin C <= A*B ; end
: 像這樣 C 只要一個 clock2 就可以跑出來了
: 但是乘法器的運作通常都必須靠好幾個步驟
: 位移 相加 位移 相加 .... 這樣不是會用到好幾個時脈週期嗎 ?
: 為什麼可以 一個週期的 clock2 運作答案就出來了
: 難道是本身的乘法器就是用更快別的 clock1 去跑
: 我給的 clock2 只是控制乘法器的輸出時間 ?
考慮兩個4-bit的單純做加法當作一個clock的週期
兩個4-bit相乘實際上會怎樣呢?
xxxx
xxxx
xxxx
+)xxxx
-----------
我們都看到會有多個數相加的地方出現
考慮每兩個數做一次加法、然後*0/1用mux來做整合起來進加法器的一部份
那麼4bit乘法會需要2 clock
當然,FPGA這樣做是把這個加法當作全都是一個combinational電路的話
是可以當作一個clock內做完,但是電路的"max operation frequency"就會變慢
如果有辦法切成幾個較快的步驟的話,就是變成乘法這個動作需要較多的時脈數
也就是白算盤裡面會提到CPI(clock per instruction)
CPI*Clock 才能計算出平均每個指令需要花多少時間
如果你用1.8GHz的CPU,可是CPI是2
比起你用3.0GHz的CPU,可是CPI是5
前者每秒可以處理900M個指令(平均上)
後者每秒可以處理600M個指令
你還會覺得3.0GHz是比較好的嗎?
以上,希望有回答到你的困惑
Electronics BM deathcustom
--
╭ █◣◢█ ╮ ╭ ███◣╮ ╭═══╮ ╭═════╮ ╭═════╮
║ ████ ╰══╯ █ ◥█╰══╯◢ ☆ ╰═╯ ◢▌ ◢╰══╯ ║
║ ████ ◢◢◣ █◣ █ ◢█◣ █ ◢ ◢█◣ ██◣ █ ◢█◣ ╴ ║
˙ █◥◤█ █◤ ███◤ █◢◤ █ █ █◢█ █▌█ █ █◢◤☆  ̄ρ▄
║
║ ◥ ◤ █ ● █◥█◣ ◥█◤ █ ◤ ◥◤◥ ◥█◤ █ ◥█◤ ╰〈╭▄﹀║
╰New York Yankees═ ◤ ════ #40 ◤ Chien-Ming Wang═◤═══ψTheAnswer3╯
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.95.114
推 ccjin:謝謝 所以想要硬體快 就必須考慮 CPI跟最大頻率的均衡? 10/04 17:50
→ ccjin:還有你認為 '*' 合出來的東西 架構也是不變的嗎 10/04 17:52
→ proach:不妨查詢datasheet看看合成器預設使用哪種乘法器架構 10/04 18:26
推 ccjin:了解 10/04 19:16
→ Aquatics:Xilinx FPGA 有的有專用multiplier blocks, 所以要查這些 10/04 23:23
→ Aquatics:blocks 的速度極限。另外,原本的問題關鍵,就是 10/04 23:24
→ Aquatics:timing constraint。Xilinx UG612 有詳細的說明 10/04 23:26