微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA基础学习笔记--时序逻辑电路-触发器与锁存器

FPGA基础学习笔记--时序逻辑电路-触发器与锁存器

时间:10-02 整理:3721RD 点击:
同步复位D触发器
复位信号在所需时钟边沿才有效,复位操作需要同步于时钟故称作同步复位。
代码如下

  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. always @(posedge clk)
  10.      if(!rst_n)Q<=1'b0;
  11.      else Q<=D;

  12. assign Q_n=~Q;

  13. endmodule

复制代码

RTL级视图


Technology Map Viewer视图如下


异步复位D触发器
将上述语句改为always @(posedge clk or negedge rst_n)即构成异步复位D触发器。只要复位信号有效,输出立即复位。
很多写法中都采取异步复位模式,后面就不在讨论。
T触发器
代码如下

  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. always @ (posedge clk or negedge rst_n)
  10.      if(!rst_n) Q<=1'b0;
  11.      else if(T) Q<=~Q;

  12. assign Q_n=~Q;

  13. endmodule

复制代码

Technology Map View如下


testbench如下

  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. t_ff t_ff_inst
  18. (
  19.      .clk(clk),
  20.      .rst_n(rst_n),
  21.      .Q(Q),
  22.      .Q_n(Q_n),
  23.      .T(T)
  24. );

  25. endmodule

复制代码

{$random}%2表示产生0~2-1之间的随机正整数。
RTL级仿真波形


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

  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. always @ (*)
  10.      if(!rst_n) Q<=1'b0;
  11.      else if(clk) Q<=D;

  12. assign Q_n=~Q;

  13. endmodule

复制代码

Technology Map Viewer如下


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

不错

有用

学习学习下

谢谢啦,学习学习下

谢谢啦,学习学习

谢谢啦,学习学习

学习了下,多谢分享。

学习学习。

好赞  ~~~过来学习

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top