看板 Electronics 關於我們 聯絡資訊
※ 引述《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