复制你的程序在quartus运行,直接用波形图方式进行的仿真,选择的器件是EP1C3T1448,有大概8ns的延迟,如果你的时钟周期很小如10ns,这样波形就延迟了一个大半个周期,所以看起来感觉不对,我也不很明白此延迟是由器件造成的还是由quartus自带的波形仿真不准确造成的?望各位大侠指点,谢谢!<br>
<br>
我按照类似于你的程序用verilog编写并在ISE环境下运行,然后用modesim仿真,波形没有延迟<br>
程序如下:<br>
module dff_test(clk,d,clear,set,q,q_fan);<br>
input clk,d,set,clear;<br>
output q,q_fan;<br>
<br>
reg q1,q2;<br>
assign q = q1;<br>
assign q_fan = q2;<br>
<br>
always @ (posedge clk or negedge clear or negedge set)<br>
begin<br>
if(!set)<br>
begin<br>
q1 <= 1'b1;<br>
q2 <= 1'b0;<br>
end<br>
else if(!clear)<br>
begin<br>
q1 <= 1'b0;<br>
q2 <= 1'b1;<br>
end<br>
else<br>
begin<br>
q1 <= d;<br>
q2 <= ~d;<br>
end<br>
end<br>
<br>
endmodule<br>
<br>
仿真程序如下:<br>
`timescale 1ns / 1ns <br>
module dff_test_tp;<br>
reg clk;<br>
reg d;<br>
reg clear,set;<br>
wire q,q_fan;<br>
parameter step = 50;<br>
<br>
dff_test dff_test_inst(<br>
.clk(clk),<br>
.d(d),<br>
.clear(clear),<br>
.set(set),<br>
.q(q),<br>
.q_fan(q_fan)<br>
);<br>
<br>
always <br>
#(step/10) clk = ~clk;<br>
<br>
always<br>
#(step/5) d = ~d;<br>
<br>
initial <br>
begin<br>
clk = 1'b0;<br>
set = 1'b1;<br>
clear = 1'b1;<br>
d = 1'b1; <br>
#(step/5) set = 1'b0;<br>
#(step/2) set = 1'b1;<br>
#step clear = 1'b0;<br>
#(step/2) clear = 1'b1; <br>
end<br>
endmodule |