关于边沿检测简单理解

来源:本站
导读:目前正在解读《关于边沿检测简单理解》的相关信息,《关于边沿检测简单理解》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《关于边沿检测简单理解》的详细说明。
简介:本文是关于边沿检测简单理解。

1、所谓边沿检测,就是检测输入信号或FPGA内部逻辑信号电平的跳变,即实现上升沿或下降沿的检测,捕获到以后以此用作使能信号(简单可理解为:一旦检测到这个信号,则发生什么什么),来作为时序逻辑的触发信号。总之,在基础中,这个还是很重要的,在后面的串口和SPI接口中都要用到。

(一)、一级寄存器

关于边沿检测简单理解

从一级寄存器中很好理解下降沿和上升沿的检测:a和b都是从trigger来的(三者一样),只是b比a在时间上迟了一个寄存器的时间。现在假设0时刻到了,trigger到a了,但是还没有到b,到了寄存器,被寄存了;等待下一个时刻1到来,a走了(不用管了),来了一个新的叫c,同时,b从寄存器得到了之前寄存的,那个现在的1时刻,有了两个信号,b和c,而且b是前一个时刻的,而c是现在时刻的(谁先谁后这点很重要)。所以:

下降沿 neg_edge = b & ~c;

关于边沿检测简单理解

由上图可以看出,当下降沿来的时候,c取反再与上b,得出输出为1;反过来想,输出neg_edge为1的时候就表示检测到下降沿了。

上升沿 pos_edge = ~b & c;

关于边沿检测简单理解

同理。当pos_edge为1,表示检测到上升沿。

(二)两级寄存器

moduleedge_tech_design(clk,rst_n,s,neg_edge,pos_edge);inputclk;inputrst_n;inputs;outputneg_edge;outputpos_edge;regc,d;always@(posedgeclkornegedgerst_n)if(!rst_n)beginc<=1'b0;d<=1'b0;endelsebeginc<=s;d<=c;endassignneg_edge=d&!c;assignpos_edge=!d&c;endmodule

为了在波形图中能看到c、d寄存器,把程序修改为

moduleedge_tech_design(clk,rst_n,s,neg_edge,pos_edge,c,//为了观察c和d的波形而添加的d//为了观察c和d的波形而添加的);inputclk;inputrst_n;inputs;outputneg_edge;outputpos_edge;outputc,d;//为了观察c和d的波形而添加的regc,d;always@(posedgeclkornegedgerst_n)if(!rst_n)beginc<=1'b0;d<=1'b0;endelsebeginc<=s;d<=c;endassignneg_edge=d&!c;assignpos_edge=!d&c;endmodule

测试文件如下:

`timescale1ns/1ns`defineclk_period20moduleedge_tech_design_tb;regclk;regrst_n;regs;wireneg_edge;wirepos_edge;wirec,d;//为了观察c和d的波形而添加的edge_tech_designedge_tech_design(.clk(clk),.rst_n(rst_n),.s(s),.neg_edge(neg_edge),.pos_edge(pos_edge),.c(c),//为了观察c和d的波形而添加的.d(d)//为了观察c和d的波形而添加的);initialclk=1;always#(`clk_period/2)clk=~clk;initialbeginrst_n=1'b0;s=1'b0;#(`clk_period/4)#(`clk_period)rst_n=1'b1;s=1'b1;#(`clk_period*5)s=1'b0;#(`clk_period)s=1'b1;#(`clk_period)s=1'b0;#(`clk_period*3)s=1'b1;#(`clk_period)s=1'b0;#(`clk_period*5)s=1'b1;#(`clk_period)s=1'b0;#(`clk_period*3)s=1'b1;#(`clk_period)s=1'b0;#(`clk_period)s=1'b1;#(`clk_period*3)s=1'b0;#(`clk_period)s=1'b1;#(`clk_period)s=1'b0;#(`clk_period)$stop;endendmodule

关于边沿检测简单理解

在仿真图中可以看到这样的图形(街区图中下降沿部分一小段)

关于边沿检测简单理解

输入信号s从高变成低的时候,出现下降沿,然后等到时钟clk的上升沿到来,s传输到c,d还没传输到,被寄存在d之前的寄存器内,等待第二个时钟上升沿到来,寄存器中的信号传输到d了,此时根据

neg_edge = d & ~c;

可以得到neg_edge的波形。

提醒:《关于边沿检测简单理解》最后刷新时间 2024-03-14 00:57:19,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《关于边沿检测简单理解》该内容的真实性请自行鉴别。