sixuan 发表于 2012-1-26 10:05:46

一个关于赋值执行顺序的程序问题

begin
s_t1<=s_in;
s_t2<=s_t1;
end
assign s_out=s_t1&(!s_t2);
在这两个赋值语句中,先执行s_t1<=s_in,在执行第二行时,就把此时s_t1的值赋给s_t2,最后s_t1和s_t2的值相同。而结果中的s_out总是1,请问我哪里理解错了?谢谢!

非你莫属 发表于 2012-1-30 11:31:53

兄弟,begin...end之间你采用的非阻塞语句,s_t1<=s_in; s_t2<=s_t1; 是同时进行的,不是你上边理解的
先执行s_t1<=s_in,在执行第二行。最后s_t1和s_t2的值是不相同的,s_t2值是s_t1前一个时钟状态的值。
所以最s_out的结果中当然是1了

531436258 发表于 2012-2-1 20:03:13

恩 分析的对
页: [1]
查看完整版本: 一个关于赋值执行顺序的程序问题