loyoan 发表于 2013-5-20 21:47:39

关于Verilog HDL位操作的问题

我想实现如下功能:有data,
每次时钟沿到来更新data:
左移一位,最低位为data+data+data+data。

原来是这样写的:
data<={data,(data+data+data+data)};
,但是仿真出来不对,
改为
reg temp;

temp<=(data+data+data+data);
data<={data,temp};
就对了。

请问这是什么原因,谢谢大大~
还有就是,如果我想用第一种方式(不引入temp)实现这个功能,要怎么修改代码?

蓝色风暴@FPGA 发表于 2013-5-20 22:17:01

LZ不要把Verilog当c语言写、
至于为什么第一种方式仿真不对、打开RTL一看便知

loyoan 发表于 2013-5-20 22:29:46

蓝色风暴@FPGA 发表于 2013-5-20 22:17 static/image/common/back.gif
LZ不要把Verilog当c语言写、
至于为什么第一种方式仿真不对、打开RTL一看便知 ...

好吧,那能不能告诉我要实现那个功能要怎么写?

dashashi 发表于 2013-5-20 22:35:20

把加改成异或不知道行不

loyoan 发表于 2013-5-20 22:51:22

dashashi 发表于 2013-5-20 22:35 static/image/common/back.gif
把加改成异或不知道行不

谢谢~
改成
data<={data,(data^data^data^data)};
就对了,
那个temp不改的话好像也不对

mitchell 发表于 2013-5-21 00:50:54

loyoan 发表于 2013-5-20 22:51
谢谢~
改成
data

reg temp;
temp=(data+data+data+data);
data<={data,temp};

这样就对了,但是很不推荐。
页: [1]
查看完整版本: 关于Verilog HDL位操作的问题