题目描述:用verilog实现两个串联的异步复位的T触发器的逻辑,结构如图:
首先,对两个T触发器的中间的连线设置中间变量:reg data_q;
接下来回顾T触发器的特性:T触发器有两个状态,1和0。状态变化关系为:当前状态为0,输入为0时,保持;当前状态为0,输入为1,发生翻转;当前状态为1时,输入为0,保持;当前状态为1,输入为1.翻转。
总结为:当前输入为0,状态保持;当前状态为1,状态翻转。
最后,明确异步时序,异步复位表示的是复位信号不会收到时钟信号的限制,而是无论时钟信号是否有效,异步复位信号只要有效,就会立刻发生,不受时钟的控制。
代码为:
`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,
output reg q
);
//*************code***********//
reg data_q;
always @(posedge clk or negedge rst) begin
if(!rst) data_q <= 1'b0;
else if(data)
data_q <= ~data_q;
else
data_q <= data_q;
end
always @(posedge clk or negedge rst) begin
if(!rst) q <= 0;
else if(data_q)
q <= ~q;
else
q <= q;
end
//*************code***********//
endmodule