Verilog HDL双沿采样(上升沿、下降沿)电路设计(深入理解)

目录

前言

题目

方法一

方法二

注意点

总结


前言

今天下午更新了一篇博客,对于博客中的一个问题我觉得有必要再深入探讨一下,那就是双沿采样电路。

题目

Build a circuit that functionally behaves like a dual-edge triggered flip-flop:

方法一

module top_module (
    input clk,
    input d,
    output q
);
    reg q_d1;
    reg q_d2;
    
    always@(posedge clk)begin
        q_d1 <= d ^ q_d2;
    end
    always@(negedge clk)begin
        q_d2 <= d ^ q_d1;
    end
    
    assign q = q_d1 ^ q_d2;
    
endmodule

为什么这种方法可以呢?

首先,在上升沿的时候,q_d1变成了d ^ q_d2,那么q = q_d1 ^ q_d2 = d ^ q_d2 ^ q_d2 = d;

接着,在下降沿的时候,q_d2变成了d ^ q_d1,那么q = q_d1 ^ q_d2 = q_d1 ^ d ^ q_d1 = d;

在每个正负沿,q_d1和q_d2交替出现,因此q总会输出最新的值。

这样就可以实现双沿采样,这种方法真是非常巧妙~

方法二

module top_module (
    input clk,
    input d,
    output q
);

    reg q_d1;
    reg q_d2;

    always@(posedge clk)begin
        q_d1 <= d;
    end
    
    always@(negedge clk)begin
        q_d2 <= d;
    end
    
    assign q = clk ? q_d1 : q_d2;
    
endmodule

这种方法更好理解,在上升沿和下降沿分别对d采样,然后根据时钟的正负,选择输出上升沿和下降沿采样后的信号。博主最先想到的答案也是这个。对于做题而言,这个答案没有任何问题,因为毛刺对success不会有很大影响,但是实际应用中,这个电路会产生毛刺。

大家可以想象,在上升沿和下降沿采到d信号以后,q_d1和q_d2会立即变化,同时时钟也会立即变化,时钟和q_d1、q_d2的变化的延迟是不一致的,这就导致了毛刺的出现,这时候的时钟相当于是一个组合逻辑了,由于路径延时的不同,导致组合逻辑到达的时间存在差异,从而会产生毛刺,如下图所示。

为什么方法一不会产生毛刺呢?大家看看代码,方法一的结果是两个寄存器直接异或,没有涉及到时钟信号,方法二的结果需要时钟信号进行判断,而时钟信号时钟的上升沿和下降沿又是触发器的输出,即q_d1、q_d2,因此会产生毛刺。

注意点

不能使用always@(posedge clk or nededge clk),不瞒大家说,博主第一次就尝试了这个方法,但是这种写法是不可综合的,严禁使用!

总结

今天对于这个小问题又多做了一点说明,希望大家能够掌握着两种写法的差异,并且明白毛刺产生的原因。最后希望能和大家一起学习,共同进步~

  • 30
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
基于Verilog HDL的IIR数字滤波器设计是一种通过硬件描述语言来实现IIR(无限冲激响应)数字滤波器的方法。 首先,需要理解IIR数字滤波器的原理。IIR数字滤波器是一种滤波器类型,它利用了反馈方式和递归结构,能够更高效地实现滤波操作。它的主要特点是有限数量的输入和输出,同时还有延迟器件和运算器件。 基于Verilog HDL的设计过程包括几个主要的步骤。首先,需要定义输入输出接口,并确定滤波器的参数,包括采样频率、截止频率等。其次,需要根据滤波器的差分方程,设计滤波器的结构。这些结构包括递归和非递归的逻辑电路。接着,需要实现滤波器的运算逻辑,包括加法、乘法、延迟等操作。最后,需要连接各个模块,并进行验证和仿真。 在具体设计过程中,可以依据滤波器的阶数和类型选择适合的IIR结构,如直接I、直接II、级联等结构。可以使用乘法器实现乘法操作,使用加法器实现加法操作,使用寄存器实现延迟操作。需要根据滤波器的差分方程来确定滤波器的逻辑实现方式。同时,还需要进行时序优化,尽量减少逻辑延迟和面积占用。 通过Verilog HDL设计的IIR数字滤波器可以广泛应用于音频处理、图像处理、通信系统等领域。这种设计方式具有高速、高效、可重构等特点,能够满足实时性和可编程性的要求。而且,通过优化设计和合理布局可以减少功耗和资源占用。因此,基于Verilog HDL的IIR数字滤波器设计是一种非常有效的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值