FPGA搭积木之边沿检测电路

目录

1前言

  今天分享一个FPGA设计中很常用的边沿检测电路,并参数化封装成自己的IP核。该电路的作用是输入一个信号,在其上升沿或者下降沿时(可选)输出一个时钟周期脉冲。时序图如下:

2.原理

  利用FPGA中寄存器的特性,即在always块中使用非阻塞赋值'<=',将输入待边沿检测电路打一拍,然后与下一个周期的输入做逻辑运算得检测结果。

  上升沿:前一个周期为低电平,后一个周期为高电平。那么,有

edge_pluse = ~edge_din_r & edge_din

  下降沿:前一个周期为高电平,后一个周期为低电平。那么,有

edge_pluse = ~edge_din_r & edge_din

3.代码

verilog 复制代码
`timescale 1ns / 1ps

module edge_detection(
	input		clk			,
	input		edge_din	,
	output		edge_pluse
    );
	
parameter	POSEDGE = 1'b1;//1为上升沿检测,0为下降沿检测
reg			edge_din_r;	

always @(posedge clk)
	edge_din_r <= edge_din;

assign edge_pluse = POSEDGE  ? (~edge_din_r & edge_din) : edge_din_r & ~edge_din;
	
endmodule

4仿真

verilog 复制代码
`timescale 1ns / 1ps
module edge_detection_tb;
parameter T = 10;
reg			clk				;
reg			edge_din		;
wire		pos_edge_pluse  ;
wire		neg_edge_pluse  ;

edge_detection #(.POSEDGE(1'b1))
u_edge_detection0(
	.clk		(clk			),	
	.edge_din	(edge_din		),
	.edge_pluse (pos_edge_pluse )
);
edge_detection #(.POSEDGE(1'b0))
u_edge_detection1(
	.clk		(clk			),	
	.edge_din	(edge_din		),
	.edge_pluse (neg_edge_pluse )
);
always #(T/2) clk = ~clk;

initial begin
	clk = 1'b0;
	edge_din = 1'b0;
	#(10*T)
	edge_din = 1'b1;
	#(10*T)
	edge_din = 1'b0;
end
endmodule

  仿真结果如下:

  学习FPGA的时候很多常用的模块可以将其参数化,形成自己的ip,以后方便调用。做FPGA设计是一个逐渐积累的过程。相比于官方提供的封闭的IP核,自己设计的IP核虽然性能比不过,但是更灵活,方便进行个性化修改。FPGA其实就像搭积木一样,只要自己的代码库够丰富,设计只会越来越轻松!点击下面链接查看合集

此合集持续分享一些笔者自己设计的可复用硬件模块点击进入:FPGA搭积木

相关推荐
星夜离尘563 天前
FPGA 32 位字拆成 8 位字节:keep、last 与 ready/valid 背压下的多拍序列化
fpga开发·verilog
花月mmc4 天前
【FPGA】神经网络内容简介预告
嵌入式硬件·深度学习·神经网络·fpga开发
LabVIEW开发6 天前
LabVIEW FPGA 编程:少编译几次的办法(系列 04/05)
fpga开发·labview
cmc10287 天前
318.关于在ip内部封装PLL,MMCM的注意事项
fpga开发
LabVIEW开发7 天前
LabVIEW CompactRIO 编程模式怎么选(系列 02/05)
fpga开发·labview
FPGA小迷弟7 天前
FPGA 与千兆以太网校验和:从原理到 Verilog 实现
嵌入式硬件·fpga开发·无人机·ai编程·fpga
码农小韩8 天前
FPGA学习(二)——LED闪烁
fpga开发·verilog·fpga·led·组合逻辑·分频设计
9527华安9 天前
FPGA纯verilog实现DP视频接口,支持2K60帧分辨率,提供3套工程源码和技术支持
fpga开发·音视频·dp
ChaseVLSI9 天前
FPGA与ASIC的区别详解:内部结构、开发成本与适用场景,项目选型到底该选哪个
嵌入式硬件·fpga开发·硬件架构·硬件工程
9527华安10 天前
FPGA实现ARINC818总线协议,基于GT Transceivers Wizard高速收发器,提供7套工程源码和技术支持
fpga开发·transceivers·arinc818