zoukankan      html  css  js  c++  java
  • 2时序逻辑电路触发器与锁存器

    2.1.1同步复位D触发器

    复位信号在所需时钟边沿才有效,复位操作需要同步于时钟故称作同步复位。

    代码如下

    View Code
     1 module d_ff
    2 (
    3 input clk,
    4 input rst_n,
    5 input D,
    6 output reg Q,
    7 output O_n
    8 );
    9
    10 always @(posedge clk)
    11 if(!rst_n)Q<=1'b0;
    12 else Q<=D;
    13
    14 assign Q_n=~Q;
    15
    16 endmodule

    RTL级视图

    Technology Map Viewer视图如下

    2.1.2 异步复位D触发器

    将上述语句改为always @(posedge clk or negedge rst_n)即构成异步复位D触发器。只要复位信号有效,输出立即复位。

    很多写法中都采取异步复位模式,后面就不在讨论。

    2.1.3 T触发器

    代码如下

    View Code
     1 module t_ff
    2 (
    3 input clk,
    4 input rst_n,
    5 input T,
    6 output reg Q,
    7 output Q_n
    8 );
    9
    10 always @ (posedge clk or negedge rst_n)
    11 if(!rst_n) Q<=1'b0;
    12 else if(T) Q<=~Q;
    13
    14 assign Q_n=~Q;
    15
    16 endmodule

    Technology Map View如下

    testbench如下

    View Code
     1 `timescale 1ns/1ns
    2 module t_ff_tb;
    3 reg clk,rst_n,T;
    4 wire Q,Q_n;
    5 //***************************************
    6 //时钟与复位激励
    7 parameter CLK_PERIOD=20,
    8 RESET_TIME=10;
    9 initial clk=0;
    10 initial forever #(CLK_PERIOD/2) clk=~clk;
    11 initial rst_n=0;
    12 initial forever #RESET_TIME rst_n=1;
    13 //***************************************
    14 initial T=0;
    15 initial forever #25 T={$random}%2;
    16 initial #200 $stop;
    17
    18 t_ff t_ff_inst
    19 (
    20 .clk(clk),
    21 .rst_n(rst_n),
    22 .Q(Q),
    23 .Q_n(Q_n),
    24 .T(T)
    25 );
    26
    27 endmodule

    {$random}%2表示产生0~2-1之间的随机正整数。

     RTL级仿真波形

    2.1.4 门控D触发器

    当clk为高电平时输出Q才随着输入D变化,clk为低电平时输出保持不变。门控D触发器表现的是组合逻辑电路的特点。

    代码如下

    View Code
     1 module t_ff
    2 (
    3 input clk,
    4 input rst_n,
    5 input D,
    6 output reg Q,
    7 output Q_n
    8 );
    9
    10 always @ (*)
    11 if(!rst_n) Q<=1'b0;
    12 else if(clk) Q<=D;
    13
    14 assign Q_n=~Q;
    15
    16 endmodule

    Technology Map Viewer如下

    2.1.5 亚稳态

    对于D触发器,clk上升沿时输出Q等于输入D,其余时间保持不变。clk上升沿到来前D必须保持稳定的最短时间为触发器建立时间t_su,clk上升沿后D必须保持稳定的最短时间为触发器保持时间t_h。如果设计使得t_su,t_h不满足要求,触发器就会出现不稳定状态,称作亚稳态。Q随D变化而变化所需要的时间称作clk到D得传播延迟t_cQ。

  • 相关阅读:
    20191114PHP验证码
    20191114PHP图像绘制
    20191114PHP文件操作
    20191108添加数组元素操作
    20191108数组组合练习案例
    20191108PHP数组查找练习
    20191107数组排序练习
    20191107PHP创建数组练习
    20191107万年历
    20191101php日期练习
  • 原文地址:https://www.cnblogs.com/yuesheng/p/2124871.html
Copyright © 2011-2022 走看看