fpga入门 D触发器

一、 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

二、 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


  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值