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 展开
直接一相乘不就搞定了吗
为什么还要那么麻烦进行乘法器设计?是因为乘法运算符不能被综合吗?我试了一下可以进行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 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询