题解 | #异步复位的串联T触发器#
异步复位的串联T触发器
http://www.nowcoder.com/practice/9c8cb743919d405b9dac28eadecddfb5
`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,
output wire q
wire data_d1;
Tff u_tff1(
.t (data),
.clk (clk),
.rst_n(rst),
.q_cur(data_d1)
);
Tff u_tff2(
.t (data_d1),
.clk (clk),
.rst_n(rst),
.q_cur(q)
);
//*************code***********//
endmodule
module Tff(
input t,clk,rst_n,
output reg q_cur);
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
q_cur <= 1'b0;
end
else q_cur <= q_cur^t;
end
endmodule
module Tff_2 (
input wire data, clk, rst,
output wire q
);
// 关键点: 输入输出都是wire型,不是reg
//*************code***********//wire data_d1;
Tff u_tff1(
.t (data),
.clk (clk),
.rst_n(rst),
.q_cur(data_d1)
);
Tff u_tff2(
.t (data_d1),
.clk (clk),
.rst_n(rst),
.q_cur(q)
);
//*************code***********//
endmodule
module Tff(
input t,clk,rst_n,
output reg q_cur);
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
q_cur <= 1'b0;
end
else q_cur <= q_cur^t;
end
endmodule