0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习-边沿检测技术

FPGA设计论坛 来源:未知 2022-11-26 10:20 次阅读
所谓边沿检测,就是检测输入信号即上升沿或者下降沿的检测。
边沿检测的电路很好实现:上一时刻为低电平,而当前时刻为高电平,此时就为上升沿;上一时刻为高电平,而当前时刻为低电平,此时就为上升沿。
通过边沿采样技术实现上升沿捕获进而实现外部信号的上升沿触发。

边沿检测电路的实现方法;

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;        
end
end

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_edge
a) 只有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;
end
end

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_edge
a) 只有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设计论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21325

    浏览量

    593216

原文标题:FPGA学习-边沿检测技术

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA学习笔记-入门

    大概10年前,大学同学建议我学习DSP。当因为工作忙,也只是简单学习了DSP的一些基础知识,没有进一步深入学习和时间。结果现在,好像DSP已经不再是主流了,现在有了FPGA。 现在想想
    发表于 04-09 10:55

    FPGA初步学习印象

    了。FPGA出现后,也想学习学习这方面的知识。抱着先简单学习下的态度,在网上找资料看看。感觉FPGA,就像是利用芯片内部资源,自由组合门电路
    发表于 04-09 09:46

    stm32外部中断的边沿检测时,对上升沿或者下降沿是否有要求?

    请问各位大佬,stm32外部中断的边沿检测时,对上升沿或者下降沿是否有要求,必须小于或者大于多少时间,或者在多少时间内必须上升或者下降多少V才算触发。在spec中只看到了最小是10ns就可以,同时边沿
    发表于 03-20 08:31

    fpga学习需要具备哪些课程

    FPGA(Field Programmable Gate Array)学习需要具备一系列的课程知识和实践技能
    的头像 发表于 03-14 15:51 287次阅读

    学习FPGA必须知道的社区

    学习FPGA必须知道的社区
    的头像 发表于 01-03 17:51 140次阅读
    <b class='flag-5'>学习</b><b class='flag-5'>FPGA</b>必须知道的社区

    如何学习FPGAFPGA学习必备的基础知识

    FPGA已成为现今的技术热点之一,无论学生还是工程师都希望跨进FPGA的大门。网络上各种开发板、培训班更是多如牛毛,仿佛在告诉你不懂FPGA你就OUT啦。那么我们要玩转
    的头像 发表于 10-27 17:43 483次阅读

    用赛灵思FPGA加速机器学习推断

    电子发烧友网站提供《用赛灵思FPGA加速机器学习推断.pdf》资料免费下载
    发表于 09-15 15:02 1次下载
    用赛灵思<b class='flag-5'>FPGA</b>加速机器<b class='flag-5'>学习</b>推断

    如何修改边沿存储位的地址

    。如果该指令检测到 RLO 从“0”变为“1”,则说明出现了一个信号上升沿。 每次执行指令时,都会查询信号上升沿。检测到信号上升沿时,该指令输出 Q 将立即返回程序代码长度的信号状态“1”。在其它任何情况下,该输出返回的信号状态均为“0”。 说明 修改
    的头像 发表于 06-28 16:20 420次阅读
    如何修改<b class='flag-5'>边沿</b>存储位的地址

    Verilog实现边沿检测的原理

    边沿检测大致分为:上升沿检测,下降沿检测和,双沿检测。原理都是通过比输入信号快很多的时钟去采集信号,当出现两个连续的采集值不等的时候就是
    的头像 发表于 06-28 15:19 1231次阅读
    Verilog实现<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>的原理

    基于FPGA的实时图像边缘检测系统设计(附代码)

    今天给大侠带来基于FPGA的实时图像边缘检测系统设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,话不多说,上货。 这里也超链接了中篇和下篇,方便各位大侠参考学习。基于FPGA的实时图
    发表于 06-21 18:47

    什么是边沿检测

    1、什么是边沿检测 边沿检测用于检测信号的上升沿或下降沿,通常用于使能信号的捕捉等场景。 2、采用1级触发器的
    的头像 发表于 06-17 14:26 1496次阅读
    什么是<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>

    如何设计边沿采样的触发器呢?

    在设计双边沿采样电路(Dual-edge triggered flip-flop)之前,先从单边沿采样电路设计(Edge capture register)开始。
    的头像 发表于 06-05 16:27 912次阅读
    如何设计<b class='flag-5'>边沿</b>采样的触发器呢?

    Verilog边沿检测的基本原理和代码实现

    本文将从Verilog和边沿检测的基本概念入手,介绍Verilog边沿检测的原理和应用代码示例。
    的头像 发表于 05-12 17:05 2350次阅读
    Verilog<b class='flag-5'>边沿</b><b class='flag-5'>检测</b>的基本原理和代码实现

    基于FPGA边沿检测的理解问题?

    我看到网上关于边沿检测的讲解,有个地方不理解,t0时刻和t1时刻分别是怎样的时刻,trigger在时钟上升沿经过触发器输出的信号和经过非门的信号是什么样的关系?我的理解是trigger分别输出后是两个电平相反的信号,为什么相与之后就可以
    发表于 05-10 14:52

    FPGA说起的深度学习:数据并行性

    这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习技术,深度学习是近年来人工智能领域的热门话题。
    的头像 发表于 05-04 11:22 828次阅读
    从<b class='flag-5'>FPGA</b>说起的深度<b class='flag-5'>学习</b>:数据并行性