题解 | #异步复位的串联T触发器#
异步复位的串联T触发器
https://www.nowcoder.com/practice/9c8cb743919d405b9dac28eadecddfb5
`timescale 1ns/1ns module Tff_2 ( input wire data, clk, rst, output reg q ); reg data_temp; always@(posedge clk or negedge rst)begin if(!rst) data_temp<=1'b0; else begin if(data==1'b1) data_temp<=~data_temp; else data_temp<=data_temp; end end always@(posedge clk or negedge rst)begin if(!rst) q<=1'b0; else begin if(data_temp==1'b1) q<=~q; else q<=q; end end endmodule *****************************tb*************************** `timescale 1ns / 1ps module tb_TFF_2(); reg data; reg clk ; reg rst ; wire q ; initial begin clk =1'b0; rst =1'b1; data=1'b0; #20 rst=1'b0; #40 rst=1'b1; #10 data=1'b1; #40 data=1'b0; #20 data=1'b1; #50 data=1'b0; #5 data=1'b1; #15 data=1'b0; #400 $stop; end always #2.5 clk=~clk; TFF_2 TFF_2_inst( .data (data), .clk (clk ), .rst (rst ), .q (q ) ); endmodule