Почему мой D Flip Flop не ждет положительного фронта часов?

Как мне известно, D-триггер производит выборку входного значения на каждом положительном фронте. часов.

Таким образом, это произведет задержку в 1 цикл. Верно?

Но почему мой D-триггер не дает задержки в 1 цикл?

         module flipflop(
             input clk,
             input rstn,
             input [7:0] i_data,
             output reg [7:0] o_data
         );

             always @(posedge clk) begin
                     if (~rstn) begin
                             o_data <= 0;
                     end
                     else begin
                             o_data <= i_data;
                     end
             end
         endmodule

       module test;
           reg clk;
           reg [7:0] i_data;
           reg rstn;
           wire [7:0] o_data;

           initial begin
                   clk = 0;
                   rstn = 1;
                   i_data = 0;
                   #20;
                   rstn = 0;

                   #30;
                   rstn = 1;
                   #20;
                   i_data = 8'hFA;
                   #20;
                   i_data = 8'hF0;
                   #20
                   i_data = 8'hF1;
                   #20
                   #10 $finish;
           end

           always #10 clk = !clk;

           flipflop flipflop(
                  .clk (clk),
                  .rstn(rstn),
                  .i_data(i_data),
                  .o_data(o_data)
           );

           initial begin
                   $dumpfile("flipflop.vcd");
                   $dumpvars();
           end
       endmodule

dff no delay

Мой D-триггер работает здесь как комбинационная схема.

5
задан toolic 28 July 2012 в 14:01
поделиться