复制你的程序在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 |