zxw123 发表于 2021-8-13 17:24:30

边沿检测

FPGA培训专家   www.zxopen.com
至芯科技论坛 www.fpgaw.com
炼狱传奇-边沿检测之战
边沿检测,就是检测输入信号或者FPGA 内部逻辑信号的跳变,即对信号上
升沿或者下降沿的检测。
想要学习边沿检测电路,我们首先应该学习下面这个经典的电路

我们来分析一下这个电路结构和工作原理
(1) 当系统处于复位状态即 rst_n 信号为低电平时, 寄存器 inst 清零端生效,
寄存器输出端 Q 清零。 由于 Q 端分别是 “与门” inst1 和 inst2 的输入端,
而系统输出端 neg_edge 和 pos_edge 都是寄存器输出端 Q 和输入信号
signial 相与的结果,所以无论此时输入信号 signial 如何变化, 系统
输出端 neg_edge 和 pos_edge 一直都是低电平,系统处于复位状态。
(2) 复位结束以后, 假设 signial 信号首先保持的是低电平, 在时钟的驱动下,
寄存器输出端 Q 等于 signial,也保持低电平,所以系统输出端 neg_edge
和 pos_edge 都是保持低电平。
(3) 假设输入信号 signial 在某个“当前周期”从低到高跳变,那么由于寄存
器的延时特性,寄存器输出端 Q 只有在“下一周期”才会出现跳变。
“与门”inst1 的“3 号”输入端由于是直接连接到了输入端 signial,
所以在“当前周期”下“3 号”端口的电平为 1,输出端 neg_edge=0,保
持低电平。
“与门” inst2 的 “1 号” 输入端通过 “非门” 直接连接到了输入端 signial,
所以在“当前周期”下“1 号”端口的电平为高,而“4 号”端口的电平
为 Q 端的取反,所以“4 号”端口的电平也为高,系统输出端 pos_edge
为高电平。
(4)当“下一周期”到来以后 Q 端输出为 1,则“4 号”端口的电平
FPGA培训专家   www.zxopen.com
至芯科技论坛 www.fpgaw.com
变为低,系统输出端 pos_edge 又恢复为低电平。也就是说当信号上升沿到来以
后,pos_edge 只能保持有且只有一个时钟的高电平,在这里我们叫做“尖峰脉
冲”
下降沿的检测原理与上述类似,在此不再赘述,通过这张图我们总结出以下
两点:
(1)当信号出现上升沿以后,pos_edge 会出现一个时钟周期的“尖峰脉
冲”。
(2)当信号出现下降沿以后,neg_edge 会出现一个时钟周期的“尖峰脉
冲”。
原理掌握以后,接下来我们看一下具体的代码实现


FPGA培训专家   www.zxopen.com
至芯科技论坛 www.fpgaw.com
编写测试代码如下:

仿真波形如下:

有上图可以得知,key 按键出现下降沿以后,neg_edge 出现尖峰脉冲,key
按键出现上升沿以后,pos_edge 出现尖峰脉冲。


页: [1]
查看完整版本: 边沿检测