当前位置:   article > 正文

VL2 异步复位的串联T触发器_t触发器串联

t触发器串联

写在前面

  1. 这个专栏的内容记录的是牛客的Verilog题库刷题,附带RTL\TestBench,并进行覆盖率收集。
  2. 牛客算是一个Verilog宝藏刷题网站了,网站提供在线仿真环境,不用自己找题(点击直达),<刷题记录>专栏,持续打卡中…


一、题目

1. 题目描述

  用verilog实现两个串联的异步复位的T触发器的逻辑


2. 状态转换

在这里插入图片描述


3. 信号示意图

在这里插入图片描述


4. 波形示意图

在这里插入图片描述


5. 输入描述

输入信号类型位宽
datawire1
clkwire1
rst_nwire1

6. 输出描述

输入信号类型位宽
q1reg1

二、分析

  由T触发器的特性表可以知道,当当前的输入为0时,无论输出是0还是1,输出的下一个状态均保持当前的输出值;当当前输入值是1时,输出的下一个状态是当前输出的取反。要求的时钟周期是5ns。


三、RTL

module Tff_2
(
  input      clk   ,
  input      rst_n ,
  input      data  ,

  output reg q1
);

reg data_buf;

always @ (posedge clk or negedge rst_n) begin
  if (!rst_n) begin
    data_buf <= 1'b0;
  end
  else if (data == 1) begin
    data_buf <= ~data_buf;
  end
  else begin
    data_buf <= data_buf;
  end
end


always @ (posedge clk or negedge rst_n) begin
  if (!rst_n) begin
    q1 <= 1'b0;
  end
  else if (data_buf == 1) begin
    q1 <= ~q1;
  end
  else begin
    q1 <= q1;
  end
end

endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

四、Testbench

`timescale 1ps/1ps

module tb_Tff_2;

  reg  clk   ;
  reg  rst_n ;
  reg  data  ;
  
  wire q1    ;
  
/*-----------------------------------------------\
 -- data | data_buf | next_data_buf --
 --   0  |     0    |       0       --
 --   0  |     1    |       1       --
 --   1  |     0    |       1       --
 --   1  |     1    |       0       --
\-----------------------------------------------*/

initial begin
  clk   = 1;
  rst_n = 1;
  data  = 0;
  #2500 rst_n = 0;  
  #5000 rst_n = 1;  
  repeat(5)begin
    case_4(data,1);
  end

  repeat(5)begin
    case_4(data,0);
  end

  repeat(5)begin
    case_4(data,1);
  end
  
  repeat(100)begin
    case_random(data); 
  end
end

/*-----------------------------------------------\
 --    --
\-----------------------------------------------*/
task case_4;
  output  a;
  input   b;

  case(b)
    0: #5000 a = 0;
    1: #5000 a = 1;
  endcase
endtask

task case_random;
  output  a;
  #5000 a = {$random}%2;
endtask

/*-----------------------------------------------\
 --  clock period is 5ns  --
\-----------------------------------------------*/
always begin
  #2500 clk = ~clk;
end

/*-----------------------------------------------\
 --  display  --
\-----------------------------------------------*/
always @ (posedge clk ) begin               
    $display("data = %d ; data_buf = %d ; q1 = %d",data,Tff_2.data_buf,q1);
end

Tff_2 tb_Tff_2(
                 .clk     (clk  ),
                 .rst_n   (rst_n),
                 .data    (data ),
                 .q1      (q1   )
              );

initial #350000 $finish;
initial begin
  $fsdbDumpfile("Tff_2.fsdb");
  $fsdbDumpvars            ;
  $fsdbDumpMDA             ;
end
endmodule


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

五、结果分析

(1)TB分析

在这里插入图片描述

有TB测试结果可以看出,DUT符合“异步复位的串联T触发器”的预期功能


(2)波形图

在这里插入图片描述


(3)覆盖率

在这里插入图片描述
在这里插入图片描述

由覆盖率收集情况可以看到,涉及的行、信号翻转覆盖、分支覆盖率均是100%。


✍✍☛ 题库入口
  经过一段时间的沉淀,发现入行IC行业,自己的底子还是很差,写的文章质量参差不齐,也没能解答大家的疑问。决定还是要实打实从基础学起,由浅入深。因此决定通过补充/完善基础知识的同时,通过题库刷题不断提高自己的设计水平,题库推荐给大家(点击直达),<题库记录>栏目不定期更新,欢迎前来讨论。


作者:xlinxdu
版权:本文版权归作者所有
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/500891
推荐阅读
相关标签
  

闽ICP备14008679号