题解 | 异步复位的串联T触发器
异步复位的串联T触发器
https://www.nowcoder.com/practice/9c8cb743919d405b9dac28eadecddfb5
`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,
output reg q
);
//*************code***********//
wire q_temp,qout;
Tff_1 tff1(.t(data),.clk(clk),.rst(rst),.q(q_temp));
Tff_1 tff2(.t(q_temp),.clk(clk),.rst(rst),.q(qout));
always @(*) begin
q=qout;
end
//*************code***********//
endmodule
module Tff_1(
input wire t,clk,rst,
output reg q
);
always@(rst) begin
if(!rst) begin
assign q=0;
end
else deassign q;
end
always@(posedge clk) begin
if(t) begin
q<=~q;
end
else begin
q<=q;
end
end
endmodule
注意及时释放deassign q,不然会因为连续赋值始终为0
如果没clk触发reg,那么普通的reg在always块中的幅值需要用阻塞型=赋值
查看12道真题和解析

