永发信息网

自己写的两个4位二进制数移位相乘的Verilog HDL程序 不知错在哪…新人求指导

答案:2  悬赏:0  手机版
解决时间 2021-03-20 16:54
自己写的两个4位二进制数移位相乘的Verilog HDL程序 不知错在哪…新人求指导
最佳答案
第一个问题:
shiftb不是输出不应该定义为output
可以直接定义reg [7:0]shiftb
第二个问题:
if(a[i])
begin shiftb=shiftb< else
begin shiftb=shiftb<这个地方要先加,后左移,如果先左移了,就跟你目前的a[i]对不上了,左移之后对应的是a[i+1](可能不应该这么写,意思是i+1位于结果相加)。
可以改成
if(a[i])
begin mu=mu+shiftb;shiftb=shiftb< else
begin shiftb=shiftb<第三个问题:
shiftb[3:0]=b;这个我不知道该不该这么写,不过如果把[3:0]去掉,肯定是对的。系统会默认把b赋值给shiftb的低四位。追问555…照你的说法改动之后输出mu是一串X啊…
Warning: Latch mu[0]$latch has unsafe behavior
……
Warning: Latch mu[7]$latch has unsafe behavior
是什么意思?是说输出mu不安全么?追答module sa(a,b,mu,shiftb,start);
input [3:0] a,b;
input start;
output reg[7:0] mu;
reg [7:0]shiftb;
integer i;

always @(a or b)
begin
if(start)
begin
shiftb<=b;
for(i=0;i<4;i=i+1)
if(a[i])
begin mu<=mu+shiftb;shiftb<=shiftb< else
begin shiftb<=shiftb< end
end
endmodule
你再试试看可以不。这个我试了下,可以综合的。
全部回答
个人认为,shiftb作为输出没有什么问题,中间变量都可以作输出,这样便于调试。一楼最后给的代码是不能综合的,因为你在模块声明里:module sa(a,b,mu,shiftb,start);
但是你的端口声明里没有shiftb信号,所以综合肯定过不了。
而问题的关键在于,你的mu不初始化么?假如这个程序跑起来,第一次执行,那么a[i]假如是1,那么你的这一步mu=mu+shiftb,mu本来就是x, 可是x+b还是x,所以你的mu会一直是x.建议你对你的mu初始化一下,或者有个复位信号,start为低电平时mu为8'b0,加一个else就OK了。
最后注意你的敏感信号列表,always @(*)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宅基地只有大队审批手续没有宅基地证土地确权
什么东西可以尽情吃!不用花钱?
为什么上司总是觉得你的工作很简单?
凯旋商城5号通道在哪里啊,我有事要去这个地
主角是全中国最有势力的人 但是他做人很低调
世界各国地图怎么好记,有没有顺口溜之类的?
为什么和我喜欢的女孩见面时,她不敢看我却又
广州到成都的火车,单车可以随车托运吗?
儿火山渔家常菜地址在哪,我要去那里办事
地王5.2的王者之剑在什么地方
在比例25比34=50比68中,25,34,50,68都是
在一个100km2的草原上,猎豹的种群密度是0。1
windows7如何设置移动无线网络? 是直接连接
找一首描写人贪心不足的古诗
吉林省睿博智城科技有限责任公司怎么去啊,有
推荐资讯
男生,高一军训晒黑了,现在高三了,一点没白
$("tr[id^='lot"+idx+"']").re
联硕电脑这个地址在什么地方,我要处理点事
田登为郡守的句子翻译
外螺纹大径和小径之间关系
数学把两个大小相同的正方形,拼成一个长方形
滨崎步演唱过哪些人气较高的动漫歌曲
填空题下表为“唾液淀粉酶对淀粉的消化作用”
旅游软件那个好
为什么我们老板那么有钱老婆却很丑?
星程酒店南菲苑店在什么地方啊,我要过去处理
I have always wanted to go to a good place
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?