FPGA边沿检测电路及verilog代码

2022-07-29,,,

文章目录

  • 前言
  • 一、上升沿检测电路
    • 1.上升沿检测电路时序图
    • 1.上升沿检测verilog代码
  • 二、下升沿检测电路
    • 1.下降沿检测时序图
    • 2.下降沿检测电路verilog代码
  • 三、双升沿检测电路
    • 1.双降沿检测时序图
    • 2.双沿检测verilog代码
  • 总结


前言

所谓边沿检测,就是检测输入信号的上升沿和下降沿。在设计数字系统时,边沿检测是一种很重要的思想,实际编程时用的最多的时序电路应该就是边沿检测电路和分频电路了。 所谓边沿检测就是若是由0变为1,能够检测到上升沿,则被称为上升沿检测电路;若是由1变为0,能够检测到下降沿,则被称为下降沿检测电路,能够同时检测上升沿与下降沿的电路称为双沿检测电路(double edge detection)


一、上升沿检测电路

对前一个clock状态和目前clock状态的比较,如果是由0变为1,能够检测到上升沿,则称为上升沿检测电路。

1.上升沿检测电路时序图


clk:时钟信号,i_a:输入信号,r_a:打一拍的输入信号,i_a&~r_a:i_a的上升沿生成一个周期的高电平,且在i_a上升沿后的一个后的一个周期的高电平。

1.上升沿检测verilog代码

代码如下(示例):

module POS(
	input	i_rst,      //复位
	input	clk,        //时钟
	input	i_a,       //输入信号
	output	o_pos  //输出上升沿检测信号
);

//signal=======================================
reg	r_a;

//output=======================================
assign o_pos=i_a&~r_a;

//logic========================================
always @ (posedge clk) begin
	r_a<=i_a;
end 

二、下升沿检测电路

1.下降沿检测时序图

2.下降沿检测电路verilog代码

代码如下(示例):

module NEG(
	input	i_rst,           //复位
	input	clk,             //时钟
	input	i_a,            //输入信号
	output	o_neg       //输出下升沿检测信号
);

//signal=======================================
reg	r_a;

//output=======================================
assign o_neg=~i_a&r_a;

//logic========================================
always @ (posedge clk) begin
	r_a<=i_a;
end 

三、双升沿检测电路

1.双降沿检测时序图

2.双沿检测verilog代码

代码如下(示例):

module DUAL(
	input	i_rst,         //复位
	input	clk,           //时钟
	input	i_a,          //输入信号
	output	o_dual     //输出双升沿检测信号
);

//signal=======================================
reg	r_a;

//output=======================================
assign o_dual=i_a!=r_a;

//logic========================================
always @ (posedge clk) begin
	r_a<=i_a;
end 

这里是引用

总结

提示:这里对文章进行总结:
以上介绍了上升沿检测电路时序图、下降沿检测电路时序图及双沿检测电路时序图及其代码,引入的问题是i_a和时钟clk属于异步信号,需要进行异步转同步处理,之后再做介绍。

本文地址:https://blog.csdn.net/weixin_50992209/article/details/108837995

《FPGA边沿检测电路及verilog代码.doc》

下载本文的Word格式文档,以方便收藏与打印。