作者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
1F:推 ccjin:谢谢 所以想要硬体快 就必须考虑 CPI跟最大频率的均衡? 10/04 17:50
2F:→ ccjin:还有你认为 '*' 合出来的东西 架构也是不变的吗 10/04 17:52
3F:→ proach:不妨查询datasheet看看合成器预设使用哪种乘法器架构 10/04 18:26
4F:推 ccjin:了解 10/04 19:16
5F:→ Aquatics:Xilinx FPGA 有的有专用multiplier blocks, 所以要查这些 10/04 23:23
6F:→ Aquatics:blocks 的速度极限。另外,原本的问题关键,就是 10/04 23:24
7F:→ Aquatics:timing constraint。Xilinx UG612 有详细的说明 10/04 23:26