verilog中使用乘法运算符的问题 20

一直有一个疑问。verilog中有乘法运算符,也有乘法器。我在想,为什么要乘法器的设计啊。直接用乘法运算符不就搞定啦?例如c=a*b直接一相乘不就搞定了吗为什么还要那么麻... 一直有一个疑问。verilog中有乘法运算符,也有乘法器。我在想,为什么要乘法器的设计啊。直接用乘法运算符不就搞定啦?例如c=a*b
直接一相乘不就搞定了吗
为什么还要那么麻烦进行乘法器设计?是因为乘法运算符不能被综合吗?我试了一下可以进行RTL网表的综合啊。希望高手讲解一下

下面有一段乘法器的设计程序

module mult_for(outcome,a,b);
parameter size=8;
input [size:1] a,b;//两个操作数
output [2*size:1] outcome;//结果
reg [2*size:1] outcome;
integer i;
always@(a or b)
begin
outcome=0;
for(i=1;i<=size;i=i+1)//for语句
if(b[i])
outcome=outcome+(a<<(i-1));
end
endmodule

下面一段是直接用运算符相乘
module multi(ina,inb,inc);
output[13:0] inc;
input[7:0] ina,inb;
reg[13:0] inc;
always @(ina or inb)
begin
inc=ina*inb;
end
endmodule
展开
 我来答
ziseouranle
推荐于2017-07-26 · TA获得超过681个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:372万
展开全部
verilog不像C语言,它不是高级语言,你写乘号有时是可以的,但是有时是不可以的,所以不要使用乘号,更不要使用除号,因为除法在FPGA中是不能在一个周期之内出结果的。为什么有时可以有时不可以呢?因为用来综合你的程序的软件(例如XILINX 的XST)还没有那么智能,有时候它会根据你的乘号自动给你生成乘法器,但是有时不会,而且有时会生成错误的乘法器,除法器这个问题要更突出,所以不要使用乘除号,在参数定义中可以使用
zzzking000
2015-03-19 · TA获得超过243个赞
知道小有建树答主
回答量:319
采纳率:50%
帮助的人:96.3万
展开全部
这个问题好,关注!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式