我是靠谱客的博主 顺利蜜蜂,最近开发中收集的这篇文章主要介绍数电和Verilog-时序逻辑实例一:触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

A.14 时序逻辑实例一:触发器

设计模块

D触发器

//文件路径:a.14/src/dff.v
module dff(clk,din,dout);
  input clk;
  input din;
  output reg dout;

  always@(posedge clk)begin
    dout <= din;
  end

endmodule

带低电平复位的D触发器

//文件路径:a.14/src/dff_rst.v
module dff_rst(clk,rst_n,din,dout);
  input clk;
  input rst_n;
  input din;
  output reg dout;

  always@(posedge clk)begin
    if(!rst_n)
      dout <= 1'b0;
    else
      dout <= din;
  end

endmodule

测试模块

//文件路径:a.14/sim/testbench/demo_tb.sv

module top;
  logic clk;
  logic rst_n;
  logic dff_din;
  logic dff_dout;
  logic dff_rst_dout;
  
  dff DUT_dff(.clk(clk),.din(dff_din),.dout(dff_dout));
  dff_rst DUT_dff_rst(.clk(clk),.rst_n(rst_n),.din(dff_din),.dout(dff_rst_dout));

  initial begin
    clk = 0;
    forever begin
      #10;
      clk = ~clk;
    end
  end

  initial begin
    rst_n = 0;
    #5;
    rst_n = 1;
    #250;
    rst_n = 0;
  end
  
  initial begin
    int random_delay;
    $display("%t -> Start!!!",$time);
    repeat(10)begin
      dff_din = $urandom_range(1,0);
      random_delay = $urandom_range(50,0);
      $display("%t -> random delay is %0d",$time,random_delay);
      #random_delay;
    end
    #100;
    $display("%t -> Finish!!!",$time);
    $finish;
  end 

endmodule : top

仿真结果

运行./run.do脚本后,查看仿真日志sim.log,然后打开dve查看波形。

公众号:程序员Marshall

最后

以上就是顺利蜜蜂为你收集整理的数电和Verilog-时序逻辑实例一:触发器的全部内容,希望文章能够帮你解决数电和Verilog-时序逻辑实例一:触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部