`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,
output reg q  
);
//*************code***********//
  //此题要注意t触发器的概念 T = 1 翻转 T = 0 保持(这里的data可以理解为t)
  //要注意的是 T =1 翻转的是前一个时钟周期的q 而不是 翻转的data。
   
   reg     q1    ;
  always@(posedge clk or negedge rst)begin
    if(!rst) begin
        q1 <= 1'b0;
    end
    else if(data == 1'b1)
        q1 <= ~q1  ;
    else
        q1 <=  q1  ;
  end

  always@(posedge clk or negedge rst)begin
    if(!rst) begin
        q <= 1'b0;
    end
    else if(q1 == 1'b1)
        q <= ~q  ;
    else
        q <=  q  ;
  end

//*************code***********//
endmodule