题意整理
1、T触发器是进入的值为1的时候,寄存的值发生翻转2、注意异步复位
3、需要注意寄存器翻转的逻辑,第二寄存器是否翻转取决于第一个寄存器是否为1,前者输出情况有三种:在data输入控制为1下从0到1到0不断翻转,data为0锁在1,data为0锁在0
ps: 考虑rst为1且完成了初始化,rst 低电平复位高电平有效
题解主体
T触发器的特性方程Qn+1 = T Qn ' +T ' Qn = T⊕Qn
(其中Qn为现态,Qn+1为次态)
T触发器的特性表
T Q Q*
0 0 0
0 1 1
1 0 1
1 1 0
T触发器的结构为:
根据题目给出的结构图:
可以得到状态转换:
Q过程为第一个触发器的输出(即下面的q1),Q输出为第二个触发器的输出
设n为时钟沿,Q过程取决于n-1的T, Q输出取决于n-1的Q过程
因此有输出:
n |
T |
Q过程 |
Q输出 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
2 |
1 |
1 |
0 |
3 |
1 |
0 |
1 |
4 |
1 |
1 |
1 |
5 |
1 |
0 |
0 |
6 |
0 |
1 |
0 |
7 |
0 |
1 |
1 |
8 |
0 |
1 |
0 |
9 |
0 |
1 |
1 |
将电路转换成Verilog代码描述如下:
reg q1;//q1为q过程always @ ( posedge clk or negedge rst)if (~rst) begin
q1 <= 1'b0;
q <= 1'b0;
end
else begin
if (data) begin
q1 <= !q1;
end
if (q1) begin
q <= !q;
end
end
因此实现方式为如下的电路,综合得到:
参考答案
`timescale 1ns/1ns module Tff_2 ( input wire data, clk, rst, output reg q ); reg q1; always @ ( posedge clk or negedge rst) if (~rst) begin q1 <= 1'b0; q <= 1'b0; end else begin if (data) begin q1 <= !q1; end if (q1) begin q <= !q; end end endmodule