题意整理

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