群里突然有人发问优化代码段:
module youhua(input a,
input b,
input c,
input d,
input sel,
output /*reg*/ [1:0] sum);
always @(a,b,c,d,sel)
if(sel)
sum = a+b;
else sum = c+d;
很早之前就看到了类似的题目,好像也是面试题,所以我很快就想到了减少加法器。
但是群里有人说用assign sum = sel? (a+b)
c+d);代替上面的always块,
我觉得很奇怪,这样跟上面的完全没有什么两样,起不到任何优化的效果
我想到的是用多路选择器选择a,b,c,d然后接入加法器:
reg a_r,b_r;
always @(a,b,c,d,sel)
if(sel)
begin
a_r <= a;
b_r <= b;
end
else begin
a_r <= c;
b_r <= d;
end
assign sum = a_r + b_r;
RTL如下
文章评论(0条评论)
登录后参与讨论