一、定义

边沿检测,即信号上升沿或者下降沿的检测。在检测到所需要的边沿后产生一个高电平的脉冲。
使用高频的时钟对信号进行采样,时钟频率至少要在信号最高频率的2倍以上。

二、原理

data_i tri_1 pos_edge neg_edge
1 0 1 0
0 0 0 0
0 1 0 1
1 1 0 0

由真值表可得:

pos_edge = (~tri_1) & data_i
neg_edge = (~data_i) & tri_1;
double_edge = data_i ^ tri_1;


rx_t是对rx打一拍存储的触发器,当某时刻rx低,rx_t高的时候,说明是下降沿。
电路图:感觉这图画错了

应该是我画的这样:

三、单触发器的verilog实现

//one trigger
module edge_detect(
input clk_i, rst_n_i, data_i, //输入端口
output posedge_o,negedge_o      //输出端口
);//one regester
reg tri_1;always@(posedge clk_i or negedge rst_n_i)
beginif (! rst_n_i)         //置位begintri_1 <= 1'b0;endelsebegintri_1 <= data_i;    //触发器end
endassign negedge_o = tri_1 & (~data_i);       //下降沿检测
assign posedge_o = (~tri_1) & data_i;      //上升沿检测
endmodule

testbench:

module tb_test();reg clk_i,rst_n_i,data_i;
wire posedge_o, negedge_o;//模块调用
edge_detect u1(
.clk_i(clk_i),
.rst_n_i(rst_n_i),
.data_i(data_i),
.posedge_o(posedge_o),
.negedge_o(negedge_o)
);//initial
initial begin
clk_i = 0;
rst_n_i = 0;
#10
rst_n_i = 1;
data_i = 0;
#13
data_i = 1;    //上升沿
#20
data_i = 0;        //下降沿
#15
data_i = 1;        //上升沿
#10
data_i = 0;        //下降沿
end
//clk 信号
always #5 clk_i = ~clk_i;
endmodule

结果分析:如果在一个时钟内输入信号发生变化,输出便会产生一个“尖峰”,跟随data_i,而不受时钟节拍约束。专业名词称为glitch。前一时刻通过D触发器已经统一到FPGA的时钟域,而当前时刻直接从外部输入,与FPGA整体逻辑电路不在同一时钟域。

23ps 25
data_i 1 1
tri_1 =15ns d_i=0 =25ns d_i=1
pos_edge 1 0

仿真:

四、双触发器的verilog实现

reg tri_1;
reg tri_2;
always@(posedge clk_i or negedge rst_n_i)
beginif (! rst_n_i)         //置位begintri_1 <= 1'b0;tri_2 <= 1'b0;endelsebegintri_1 <= data_i; tri_2 <= tri_1;     //二级触发器end
end
assign negedge_o = tri_2 & (~tri_1);       //下降沿检测
assign posedge_o = (~tri_2) & tri_1;       //上升沿检测
assign double_edge_o = tri_1 ^ tri_2;      //双边沿检测

RTL电路:

仿真:

实质区别在于方案一是输入数据时钟域和tri_1所在的本地时钟域作用,而方案2tri_1将输入与时钟同步,保存了t0时刻的信号。利用CLK打两拍,实现了上一时刻信号和本时刻信号和FPGA整体逻辑电路统一到同一时钟域。
加几级触发器,消除抖动,使得信号更稳定,但是级数越多,延迟越高。
这里要加两级的触发器的另一个原因,因触发器跳转产生滞后信号只能在时钟的上升沿,而被检测信号tigger并不一定是在一级触发器跳转的时钟上升沿到来,这样一级触发器所产生的滞后信号与tigger相差就达不到一个CLK周期,所以产生的脉冲信号就小于一个CLK周期了,不利于后面电路对其的应用。
注意:
(1)增大CLK信号可以增强边沿检测的效率,但不能滤去跳变的杂波。
(2)减少CLK可以有效滤去跳变的杂波,但不能及时检测到边沿跳变。
(3)增加D触发器能更好的滤除杂波,寄存信号,但同时检测延时大。

组合逻辑还是时序逻辑?

其实就是差一拍的事。

1用时序逻辑

always@(posedge sys_clk ornegedge sys_rst_n)if(sys_rst_n ==1'b0)podge <=1'b0;else   if((data)&&(~data_reg)) podge <=1'b1;else  podge <=1'b0;

2用组合逻辑
如前文中的assign

边沿检测应用:

(1)将时钟边沿使能转换为边沿检测使能,使时钟同步化。
(2)捕获信号的突变(UART,SPI等信号使能突变)已遇到
(3)逻辑分析仪中信号的边沿检测。

参考资料:
https://blog.csdn.net/vivid117/article/details/90757350
https://blog.csdn.net/GOGOmusic/article/details/54667746

基于FPGA的边沿检测相关推荐

  1. 目标检测YOLO实战应用案例100讲-基于FPGA的目标检测硬件加速技术及其应用研究

    目录 基于FPGA的目标检测加速器设计 目标检测算法与加速方法 2.1 YOLO v2算法

  2. FPGA实现边沿检测电路(上升沿、下降沿)

    1.什么是边沿检测 边沿检测用于检测信号的上升沿或下降沿,通常用于使能信号的捕捉等场景. 2.采用1级触发器的边沿检测电路设计(以下降沿为例) 2.1.设计方法 设计波形图如下所示: 各信号说明如下: ...

  3. FPGA 学习-边沿检测技术

    一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电路设计中相当的广泛. 没有复位的情况下,正 ...

  4. 基于FPGA和ABZ增量式编码器的转子位置检测

    ​​ 前言 最近在做一个使用FPGA和增量式编码器实时检测转子位置的小课题,第一次完成从硬件到软件的设计以及软硬件的联调,想做一个总结,鼓起勇气开始自己的第一次发帖.并且,在做这个课题的过程中,发现相 ...

  5. 基于FPGA视频图像处理系统设计

    摘   要 本报告给出一个基于FPGA+两片DDR2组成的核心板.带有4路视频输入和VGA接口的开发板进行的视频图像采集和处理系统的设计.使用TW2867进行视频输入信号的编码,存储到DDR2中,通过 ...

  6. Matlab图像处理基础(2):区域处理,边沿检测

    目录 0. 概要 2. 卷积和相关 2.1 卷积 2.2 相关 2.3 卷积与相关的关系 2.4 Matlab函数 2.5 2-D卷积/相关的分解 3. 高通滤波,edge detection 3.1 ...

  7. 【FPGA】基于OV5640的 图像边沿检测

    目录 一  项目结构 1.1 设计思路 1.2 设计流程 二  接口设计 2.1 摄像头配置模块 2.2 IIC_master 模块 之后就进行数据采集 2.3 采集数据模块 2.4 灰度转化 2.5 ...

  8. 基于Sobel算法的边沿检测设计与实现

    基于Sobel算法的边沿检测设计与实现 1. 边缘检测 2. 实战演练 2.1. matlab进行灰度图像生成 2.2. sobel_ctrl控制模块 2.3. vga显示模块 2.4. 顶层模块实例 ...

  9. FPGA设计心得(2)边沿检测的问题进一步说明(仿真中一定能得到上升沿的设计)

    文章目录 背景 新检测方法 旧检测方法 改进旧检测方法 设计介绍 设计代码 仿真情况 仿真图 最后想提出的问题 同行邀请 工程分享 背景 关于边沿检测,写过的博文也很多,不下于4篇了,当然都是学习过程 ...

最新文章

  1. 架构师的第一阶段:准备做(Pre-Architecture)
  2. 【S操作】轻松优雅库移植解决方案,arduino库移植应对方案
  3. Word2Vec ——gensim实战教程
  4. 阿里、小米、美团或将入恒指,但这还远远不够!
  5. freeyellowe—book_剑桥少儿英语yellow book内容
  6. bmp文件格式_一次性解决CAD转换成BMP格式图片的问题
  7. vue:在router里面给页面加title
  8. Python_sklearn_回归
  9. python自动备份手机_python实现自动备份windows应用数据
  10. K-means聚类分析算法(二)
  11. Silverlight 4.0 Accordion 解决ScrollViewer 的问题
  12. 用浏览器做人脸检测,竟然这么简单?(附代码)
  13. 二进制补码以及为什么要使用补码
  14. 教育信息化2.0行动计划智慧教育大脑建设方案
  15. 计算机音乐制作旋律教学,旋律创作的基本规律 管窥小学音乐旋律创作教学
  16. 什么是PMI指数?PMI指数是什么意思? 如何计算PMI指数?
  17. 摩天轮社区_摩天轮:基于真实地理位置游戏
  18. arduino红外遥控控制小灯
  19. Web前端:什么是前端框架?
  20. 图形轨迹c语言,OpenCV识别图像上的线条轨迹

热门文章

  1. [电器]“与狼共舞”——张瑞敏(海尔集团董事局主席兼首席执行官)
  2. 访格兰特总统之墓与小男孩之墓
  3. 仿918回忆模特写真网整站数据库源码 zblog内核,
  4. 上云要有云驱动,中机助力企业上云|中机智库
  5. 转:多巴胺导致过程大于结果
  6. 【模拟赛】2018 蓝桥杯省赛 B 组模拟赛(五)
  7. siki学院 游戏热更新实战案例(基于xLua) 捕鱼达人 完整素材
  8. 成功解决[Error] reference to ‘xx’ is ambiguous
  9. OpenCV实现运动模糊图像的模拟
  10. html5插入video视频文件,为什么有声音不显示画面