题解 | 异步复位的串联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块中的幅值需要用阻塞型=赋值