FPGA 2级D 触发器

D触发器
在时钟上升沿,D输入0,Q输出1
在时钟上升沿,D输入1,Q输出0
输出只在上升沿发生变化。
一般的;
module ex_module(
input wire sclk,
input wire rst_n,
input wire [7:0] d,//声明模块时输入必须是wire变量,构件之间的物理连线
input wire [7:0] q,//模块声明时输出可以是wire变量给,也可以是reg变量,REG 用于时序逻辑,reg 用于 always @ (posedge clk) 的always 块中。
);
always @(posedge sclk or negedge rst_n)//敏感列表可以包括电平触发或沿触发
if(rst_n==1’b0)//条件表,这里是组合逻辑,一个比较器,1比特,b表示2进制
q<=8’h00;//沿触发的逻辑里面一定要用,<=非阻塞值
else
q<=d;
endmodule

在这里插入图片描述这里2个异步D触发器
那么2级D触发器的作用是什么
就是
时钟信号与复位信号有一个亚稳态我们用两个D触发器连起来中间设一个延时,亚稳态信号很小且时间短暂,到第二个D触发器时就基本上消失了,当然也可以继续加D触发器,不过一般2个就足够了。
对于它的程序
module prac (

    clk,
    reset_n,
    dataa,
    datab,
    outa,
    outb
);
input        clk;
input        reset_n;
input        dataa;
input        datab;
output        outa;
output        outb;
reg            reg1;
reg            reg2;
reg            reg3;
reg            reg4;
assign    outa    = reg1;
assign    outb    = reg2;
assign    rst_n    = reg4;
always @ (posedge clk or negedge reset_n)      //“异步复位同步释放”的复位模块
begin
    if (!reset_n)
        begin
            reg3    <= 1'b0;
            reg4    <= 1'b0;
        end
    else
        begin
            reg3    <= 1'b1;
            reg4    <= reg3;
        end
end

always @ (posedge clk or negedge rst_n)   //功能模块,注意rst_n是沿变驱动。
begin
    if (!rst_n)
        begin
            reg1    <= 1'b0;
            reg2    <= 1'b0;
        end
    else
        begin
            reg1    <= dataa;
            reg2    <= datab;
        end
end

endmodule

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值