题解 | #异步复位的串联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

