首页 > 其他 > 详细

在多个always模块中对同一变量赋值

时间:2021-09-02 07:32:34      阅读:14      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

https://www.docin.com/p-1996173921.html

 

 

 

在同一个变量中,不要对同一个变量赋值,如果对同一变量多次赋值,那么它只执行最后一次赋值操作。

module test(clk,datain,dataout);

input clk;
input [2:0] datain;
output [2:0] dataout;

reg [2:0] dataout;

always@(posedge clk)
begin  
    dataout<=datain<<1;
    dataout[0]<=1‘b1;
end

endmodule

上例中,对dataout[0]同时进行了两次赋值,当datain=3‘b010时,输出结果dataout[2:0]=101,当然这是我们希望的结果。但再看下面的例子

module test(clk,datain,dataout);

input clk;
input [2:0] datain;
output [2:0] dataout;

reg [2:0] dataout;

always@(posedge clk)
begin
    dataout[0]<=1‘b1;
    dataout<=datain<<1;
end

endmodule

当datain=3‘b010时,输出结果dataout[2:0]=100,这时不是我们希望的结果,它只执行了后者,就只执行了后面一个dataout[0]补零操作,所以,在同一程序中不要对同一变量赋值。

 

在多个always模块中对同一变量赋值

原文:https://www.cnblogs.com/amxiang/p/15210913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!