Re: [問題] 乘法器

看板Electronics作者時間16年前 (2009/10/04 17:23), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/2 (看更多)
※ 引述《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

10/04 17:50, , 1F
謝謝 所以想要硬體快 就必須考慮 CPI跟最大頻率的均衡?
10/04 17:50, 1F

10/04 17:52, , 2F
還有你認為 '*' 合出來的東西 架構也是不變的嗎
10/04 17:52, 2F

10/04 18:26, , 3F
不妨查詢datasheet看看合成器預設使用哪種乘法器架構
10/04 18:26, 3F

10/04 19:16, , 4F
了解
10/04 19:16, 4F

10/04 23:23, , 5F
Xilinx FPGA 有的有專用multiplier blocks, 所以要查這些
10/04 23:23, 5F

10/04 23:24, , 6F
blocks 的速度極限。另外,原本的問題關鍵,就是
10/04 23:24, 6F

10/04 23:26, , 7F
timing constraint。Xilinx UG612 有詳細的說明
10/04 23:26, 7F
文章代碼(AID): #1Ao6cSoC (Electronics)
文章代碼(AID): #1Ao6cSoC (Electronics)