HDL 发表于 2010-6-26 02:20:43

请问为什么会有这样的问题,在寄存器前面加一个线网再赋值就要慢一个周期

本帖最后由 fpgaw 于 2010-7-18 13:44 编辑

比如有这样一段verilog 代码
module zz(clk,data)
input clk;
input data;

reg state1, state2;
wire bus;

assign bus=data;

always@(posedge clk)
if(data==3'b010)
begin
   state1<=data;//比如data 也是在clk的上跳延变化的并且序列为001, 010, 011这样
   state2<=bus;//这样在modsim中的结果就是state1=010, state2=001.
end
endmodule
这里的assign不是只是一个组合逻辑么,为什么会出现state2的结果和state1不同呢?

interig 发表于 2010-6-26 02:59:26

不可能,当上升沿采样到data=3'b010时,实际上data已经稳定在010差不多一个周期了,这时候bus肯定等于010了,绝对不可能state2=3'b001.
页: [1]
查看完整版本: 请问为什么会有这样的问题,在寄存器前面加一个线网再赋值就要慢一个周期