请教个verilog问题.想不明白

[复制链接]
2256|8
 楼主| zjsyjbb 发表于 2012-3-23 20:12 | 显示全部楼层 |阅读模式
  1. module MUT4B(R,A,B);
  2. parameter S=4;
  3. input[S:1] A,B;
  4. output[2*S:1] R;
  5. reg[2*S:1] R,AT;
  6. reg[S:1] BT,CT;
  7. always @(A,B)
  8. begin
  9. R=0;AT={{S{1'B0}},A};
  10. BT=B;CT=S;
  11. for(CT=S;CT>0;CT=CT-1)
  12. begin
  13. if(BT[1]) R=R+AT;
  14. AT=AT<<1;BT=BT>>1;
  15. end
  16. end
  17. endmodule

这个程序里面有一句话不知道怎么理解,就是AT={{S(1'B0)},A};这是关于4位乘法器的程序,希望有懂的朋友给我讲解下,最好能举个例子,这样理解的更好一些.谢谢大家啦.
diweo 发表于 2012-3-23 21:29 | 显示全部楼层
1,你没有仔细看代码,照抄都抄错了,
2,请查阅关于‘拼接操作符’和‘重复操作符’的有关内容。
viatuzi 发表于 2012-3-24 08:11 | 显示全部楼层
你写的代码肯定是有问题的。
 楼主| zjsyjbb 发表于 2012-3-24 09:16 | 显示全部楼层
2# diweo
首先,我很负责地说,我没有抄错,这道题是书上的原题,我仔细检查了下,就是书上的原题.关于四位乘法器的设计,书上提到了两种方法,这种方法我想不明白,才来这里问问知道的朋友.
 楼主| zjsyjbb 发表于 2012-3-24 09:16 | 显示全部楼层
3# viatuzi
没有问题,这是我们书上的原题...
viatuzi 发表于 2012-3-24 09:57 | 显示全部楼层
sorry,是我看错了。
AT={{S{1'B0}},A};
把S替换成4,就成了 AT={{4{1'B0}},A};
这样就比较清楚了,4{1‘b0}就是把4个1bit的0拼起来,就等于4’b0000
然后再把4‘b0000和A拼起来,即AT={4'b0000,A};



5# zjsyjbb
diweo 发表于 2012-3-24 17:49 | 显示全部楼层
我不是说你照抄代码,而是你下面描述的时候写错了,把大括号写成了小括号
GoldSunMonkey 发表于 2012-3-26 20:52 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:一步一个脚印,踏踏实实练好技术..

80

主题

660

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部