module asyn_d (
clk,
clr,
set,
d,
q
);
//input signal
input clk;
input clr,set;
input d;
//output signal
output q;
//declare the type of data
reg q;
//logic relationship
always @(posedge clk or posedge clr or posedge set)
begin
if(clr) //if clr is high level,then reset 'q'
begin q <= 1'b0; end
else //if clr is loe level,then..
if(set)
begin q <=1'b1; end
else
begin q <= d; end
end
endmodule
功能仿真没问题,但时序仿真不对,请问是什么原因呢?code的问题吗……
谢谢你的回答,我还想问一下,如果将always @(posedge clk or posedge clr or posedge set)改成always @(posedge clk ),那不就成了 同步的吗?异步的话,信号不是要在always的敏感列表中出现吗?请多指教……
追答这是一个时序电路,只要有一个时钟控制就可以了,只有在时钟沿到来时,才可以触发这条语句,与clr和set这两个电平触发没关系的,也就是说不存在不同步的问题,如果是异步的话使用negedge,如果你想异步清零,这样写就可以了always @ (posedge clk or negedge clr)