当前位置:   article > 正文

fpga入门 D触发器_fpgad触发器

fpgad触发器

一、 dtrigger.v

module dtrigger (
    input   wire                sclk,
    input   wire                rst_n,
    input   wire    [7:0]       d,
    output  reg     [7:0]       q        
);



//模块输入一定是wire变量
//模块输出可以是wire变量或者reg变量
//边沿触发的逻辑里都用<= 非阻塞赋值

//括号内的内容称为敏感列表(包含电平触发 和 边沿触发)
//异步复位的D触发器
always @(posedge sclk or negedge rst_n) begin
    if(rst_n == 1'b0)
        q <= 8'h00;
    else
        q <= d;   
end


//同步复位的D触发器(敏感列表区别)
/*
always @(posedge rst_n) begin
    if(rst_n == 1'b0)
        q <= 8'h00;
    else
        q <= d;   
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

二、 dtrigger_test.v

`timescale 1ns/100 ps

module dtrigger_test ( 
);

reg sclk;
reg rst_n;
reg     [7:0]   d;
wire    [7:0]   q;

initial 
begin
    sclk    <= 1'b0;
    rst_n   <= 1'b0;
    d       <= 8'h00;
end


always #10
    sclk = ~sclk;

always #10 rst_n <= {$random} % 2;
always #10 d  <= {$random} % 256;


dtrigger dtrigger(
    .sclk(sclk),
    .rst_n(rst_n),
    .d(d),
    .q(q)
);

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

闽ICP备14008679号