module adder20(x,y,a,b,cin,cout,sum);
input[19:0] x,y;
input cin;
output [19:0] sum;
output cout;
wire [19:0] x;
wire [19:0] y;
wire [23:0] a;
wire [23:0] b;
wire cin;
reg [19:0] sum;
reg cout;
always @(x or y or cin)
begin
a=x<<4;
b=y<<4;
{cout,sum}=a+b+cin;
{cout,sum}={cout,sum}>>4;
end
endmodule
verilog移位出现问题 该怎么办
答案:3 悬赏:30
解决时间 2021-02-22 01:19
- 提问者网友:一人心
- 2021-02-21 13:46
最佳答案
- 二级知识专家网友:不傲怎称霸
- 2021-02-21 14:04
第一:a,b应该定义为reg而非wire;
第二:x,y是输入,好像不用定义类型吧;
第二:你的a,b是24位,而你的 {cout,sum}仅为20位,那这个{cout,sum}=a+b+cin有问题;
第二:x,y是输入,好像不用定义类型吧;
第二:你的a,b是24位,而你的 {cout,sum}仅为20位,那这个{cout,sum}=a+b+cin有问题;
全部回答
- 1楼网友:晚安听书人
- 2021-02-21 15:05
可能是位数上的匹配问题
- 2楼网友:桃花别处起长歌
- 2021-02-21 14:17
你建工程,编译下,有提示的错误。按照提示进行修改。wire 那几个改成reg试试,这样语法都是错的,以为有好几种:非循环的,循环的,有的移出去了就补0了,有的可以循环移位,你最好在QUARTUS或者ISE里编译下按提示一步步改,祝你好运。
如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯