FPGA学习-边沿检测技术

所谓边沿检测,就是检测输入信号即上升沿或者下降沿的检测。边沿检测的电路很好实现:上一时刻为低电平,而当前时刻为高电平,此时就为上升沿;上一时刻为高电平,而当前时刻为低电平,此时就为上升沿。通过边沿采样技术实现上升沿捕获进而实现外部信号的上升沿触发。
边沿检测电路的实现方法;
1、always @ (posedge signal)
fpga不便于处理此类触发信号,除非外部输入信号作为全局时钟使用。另外众所周知由于电路不能能避免抖动现象,所以用这个检测方法是明显不合理的。
2、一级d触发器实现; 我们先看下代码,
module shizhong(    input               clk,    input               rst_n,    input               spi_cs,         output   mcu_write_done );reg spi_cs_r0;      always@(posedge clk or negedge rst_n)begin    if(!rst_n)        begin        spi_cs_r0 <= 1;         end    else        begin        spi_cs_r0 <= spi_cs;                endend
assign  mcu_write_done = (~spi_cs_r0 & spi_cs) ? 1'b1 : 1'b0;  //posedge
endmodule 
代码综合后rtl视图如下:正常工作,没有复位的情况下,工作流程如下:(1)d触发器经过时钟clk的触发,输出spi_cs信号,保存了t0时刻的信号。(2)同时由spi_cs直接输出到与门,保留了当前时刻t1的触发信号(3)经过与门输出信号pos_edge,neg_edgea) 只有t0时刻为高,且t1时候为低的时候,与门输出高,此时为下降沿。b) 只有to时候为低,且t1时候为高的时候,与门输出高,此时为上升沿。
一级d触发器在寄存器比较时,前一时刻通过d触发器已经统一到fpga的时钟域,而当前时刻直接从外部输入,与fpga整体逻辑电路不在同一时钟域,为提高系统的稳定性我们可以采用第三种方法即二级d触发器。
3、二级d触发器;我们仍然先看代码:
module shizhong(    input               clk,    input               rst_n,    input               spi_cs,     output   mcu_write_done );reg spi_cs_r0,      spi_cs_r1;      always@(posedge clk or negedge rst_n)begin    if(!rst_n)        begin        spi_cs_r0 <= 1; spi_cs_r1 <= 1;        end    else        begin        spi_cs_r0 <= spi_cs; spi_cs_r1 <= spi_cs_r0;        endend
assign  mcu_write_done = (~spi_cs_r1 & spi_cs_r0) ? 1'b1 : 1'b0;
endmodule 
代码综合后rtl视图如下:正常工作,没有复位的情况下,工作流程如下:
(1)一级d触发器经过时钟clk的触发,输出当前spi_cs信号,保存了t0时刻的信号。送往与门。(2)二级d触发器经过时钟clk的触发,输出上一时刻spi_cs信号,保存了t1时刻的信号。通过非们送往与门。(3)经过与门输出信号pos_edge,neg_edgea) 只有t0时刻为高,且t1时候为低的时候,与门输出高,此时为下降沿。b) 只有to时候为低,且t1时候为高的时候,与门输出高,此时为上升沿。利用clk打两拍,实现了上一时刻信号和本时刻信号和fpga整体逻辑电路统一到同一时钟域。这里要加两级的触发器的另一个原因,因触发器跳转产生滞后信号只能在时钟的上升沿,而被检测信号tigger并不一定是在一级触发器跳转的时钟上升沿到来,这样一级触发器所产生的滞后信号与tigger相差就达不到一个clk周期,所以产生的脉冲信号就小于一个clk周期了,不利于后面电路对其的应用。边沿检测应用:(1)将时钟边沿使能转换为边沿检测使能,使时钟同步化。(2)捕获信号的突变(uart,spi等信号使能突变)(3)逻辑分析仪中信号的边沿检测。实现指标及存在缺陷:(1)增大clk信号可以增强边沿检测的效率,但不能滤去跳变的杂波。(2)减少clk可以有效滤去跳变的杂波,但不能及时检测到边沿跳变。(3)增加dff能更好的滤除杂波,寄存信号,但同时检测延时大。
精彩推荐至芯科技12年不忘初心、再度起航11月12日北京中心fpga工程师就业班开课、线上线下多维教学、欢迎咨询!fpga学习-crc校验
fpga学习-你真的理解iic吗?
扫码加微信邀请您加入fpga学习交流群
欢迎加入至芯科技fpga微信学习交流群,这里有一群优秀的fpga工程师、学生、老师、这里fpga技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!
点个在看你最好看
原文标题:fpga学习-边沿检测技术
文章出处:【微信公众号:fpga设计论坛】欢迎添加关注!文章转载请注明出处。

关于双极结型晶体管差分放大器的温度补偿的设计
快讯:iPhone12或9月10日亮相 国内首个App SDK 国家标准成功立项 PS5首支预告发布
脉冲信号的参数有哪些?
隐私与伦理之战,可穿戴如何破
各大车企纷纷看好,磷酸铁锂或将再迎光辉时刻
FPGA学习-边沿检测技术
字节承认商业化团队撤城裁员
十大最常用电子元器件(三)
MAXl55/MAXl56的功能特点及在雷达高频传输系统中的应用
激光雷达技术助力智能港口转运车实现高精度定位
科大讯飞智能语音技术,能帮助听障人士“看见”声音 能人与人的交流
如何看待上汽通用五菱宏光的GSE小车平台长期发展?
盘点人工智能和自动起重机在建筑行业的应用
C语言怎么跳出while函数
硬件设计经验谈
新兴电缆品牌升级 发布高质量发展战略
电动机温升过高的原因盘点
英特尔正准备将NAND芯片业务出售给SK海力士
智慧能源管控平台解决方案,重工业能源系统开发
信号隔离性能显著 光耦合器强化EV电池安全