新手上路:FPGA的乘法问题
时间:10-02
整理:3721RD
点击:
刚开始做FPGA 现在要做乘法 也查找了不少资料 但是却有不少的疑惑 望大家帮忙解答一下
我用的是actel 的 A3P250-PQ208 语言用的是verilog
我查到的资料说 做乘法可以用 移位相加,查找表,流水线,混和式查找表,加法器树,布思算法等多种算法,可是我现在要做的只是要把input a与固定的数b(b是已知的)相乘,那么可不可以直接就写成,c=a*b,那么这样子时序又怎么样呢?在一个clk能完成这个工作么?
我用的是actel 的 A3P250-PQ208 语言用的是verilog
我查到的资料说 做乘法可以用 移位相加,查找表,流水线,混和式查找表,加法器树,布思算法等多种算法,可是我现在要做的只是要把input a与固定的数b(b是已知的)相乘,那么可不可以直接就写成,c=a*b,那么这样子时序又怎么样呢?在一个clk能完成这个工作么?
如果一个乘数是固定的,何必还要用乘法器实现呢?用几个加法就行了啊
同意楼上说法!
理论上使用定制电路在一个clk是可以完成的,可是用fpga就不一定了
如果有一个数是固定的 , 可以采用先移位 然后再想加的方法 , 移位运算可以做乘2的运算,想加可以算最后的余数
嗯 听到LS的说法 突然就想通了 谢谢
直接用IPcore三
谢谢小编!
直接移位相加即可
能否1个时钟做要看频率多少
学习学习
常系数乘法可以用CSD(减少加法器),非常快,应该比altera的ip核快。
现在的综合器很聪明, 用CSD也没有直接综合效果好
至少DC新版的是这样,建议直接写*
把b分解为2的倍数,把乘法转化为对a 的移位和加法即可完成
移位相加
两个for loop
综合器肯定会优化,如果不用IP Core,得看数据位宽和时钟频率
移位相加
FPGA的FEX系列时钟频率不到100M
ACTEL里面集成了现成的乘法器,你可以用用,省掉不少LE资源。
你直接写也可以,综合没啥问题,就是很耗单元。
和常数相乘何必动用乘法器?
