边沿检测电路漏检原因分析

边沿检测电路漏检原因分析

常用结构如下:

c 复制代码
module edge_detect1(
input	clk,
input	signal,
output	pe,		//上升沿
output	ne,		//下降沿
output	de		//双边沿
);

reg reg1;

always@(posedge clk) begin
	reg1	<= signal;
end

assign pe	= (~reg1) & signal;
assign ne	= reg1 & (~signal);
assign de	= pe | ne; // 或 reg1 ^ signal

endmodule

对应的电路结构如下

该结构的边沿检测模块,仅使用到1个寄存器,其边沿输出通过信号 signal 与前一时刻的 signal 做逻辑运算得到,正因此,其一旦signal信号发生变动,其边沿信号也会随之改变,其优点是边沿信号响应迅速,而缺点是边沿信号高电平时间小于一个 clk 周期,因此容易出现漏检。尤其是当信号和时钟边沿很接近时,会出现高电平的时间非常短,从而出现误判

改进方法1:加入寄存器,2级缓存

c 复制代码
module edge_detect3(
input	clk,
input	signal,
output	pe,		//上升沿
output	ne,		//下降沿
output	de		//双边沿
);

reg reg1,reg_2;

always@(posedge clk) begin
	reg1	<= signal;
	reg2	<= reg1;
end

assign pe	= reg1 & (~reg2);
assign ne	= (~reg1) & reg2;
assign de	= reg1 ^ reg2;

endmodule

用这种方式的缺点是会造成检测边沿信号延迟一个时钟周期。

相关推荐
风_峰4 小时前
Petalinux相关配置——ZYNQ通过eMMC启动
嵌入式硬件·ubuntu·fpga开发
风_峰4 小时前
【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
网络·嵌入式硬件·tcp/ip·ubuntu·fpga开发
碎碎思6 小时前
一块板子,玩转 HDMI、USB、FPGA ——聊聊开源项目 HDMI2USB-Numato-Opsis
fpga开发
ooo-p10 小时前
FPGA学习篇——Verilog学习Led灯的实现
学习·fpga开发
嵌入式-老费10 小时前
Zynq开发实践(FPGA之选择开发板)
fpga开发
风_峰13 小时前
PuTTY软件访问ZYNQ板卡的Linux系统
linux·服务器·嵌入式硬件·fpga开发
电子凉冰1 天前
FPGA入门-状态机
fpga开发
Aczone281 天前
硬件(十)IMX6ULL 中断与时钟配置
arm开发·单片机·嵌入式硬件·fpga开发
晓晓暮雨潇潇1 天前
Serdes专题(1)Serdes综述
fpga开发·serdes·diamond·latticeecp3
XINVRY-FPGA1 天前
XCKU15P-2FFVA1760I AMD 赛灵思 Xilinx Kintex UltraScale+ FPGA
arm开发·嵌入式硬件·阿里云·fpga开发·云计算·硬件工程·fpga