【IC设计】边沿检测电路(上升沿、下降沿、双沿,附带源代码和仿真波形)

本文主要是介绍【IC设计】边沿检测电路(上升沿、下降沿、双沿,附带源代码和仿真波形),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 边沿检测电路的概念
  • 上升沿检测电路
  • 下降沿检测电路
  • 双边沿检测电路
  • 代码和仿真
    • RTL代码
    • Testbench代码
    • 仿真波形
  • 参考资料

边沿检测电路的概念

边沿检测指的是检测一个信号的上升沿或者下降沿,如果发现了信号的上升沿或下降沿,则给出一个信号指示出来。
边沿检测电路根据检测边沿的类型一般分为上升沿检测电路下降沿检测电路双沿检测电路

上升沿检测电路

在这里插入图片描述

如图所示,我们的目标是当检测到a从0变成1时,令a_posedge为高电平,其余情况a_posedge均为低电平。
要检测a从0变成1,也就是说a的上升沿前是低电平,上升沿后是高电平,那么只需要令边沿前取反,再和边沿后相与,如果结果为1,说明必然是边沿前为0,边沿后为1,确认是上升沿。
实际操作中是让a打一拍并取反,再和a相与,得到a_posedge。

下降沿检测电路

在这里插入图片描述
下降沿同理,边沿后取反再和边沿前相与,得到1,说明是下降沿。 边沿前电平可以通过a打一拍得到。

双边沿检测电路

在这里插入图片描述

  1. 方法一:
    前面会了上升沿和下降沿检测,双边沿检测也就是上升沿和下降沿都拉高,只需要将前面两者的结果进行或运算即可。
  2. 方法二:
    更为简便的办法是,上升沿和下降沿都是0和1之间的跳变,使用异或运算符,可以直接得到结果。

代码和仿真

RTL代码

`timescale 1ns / 1psmodule edge_detection
(clk,rst_n,a,pos_y,neg_y,dual_y
);input clk;input rst_n;input a;            //需要检测边沿的信号aoutput pos_y;       //上升沿检测output neg_y;       //下降沿检测output dual_y;      //双边沿检测reg a_delay1;//将信号a打一拍得到a_delay1always@(posedge clk or negedge rst_n) beginif( ~rst_n ) begina_delay1 <= 0;       endelse begina_delay1 <= a;endend// ~优先级高于&assign pos_y = a  & ~a_delay1;assign neg_y = ~a & a_delay1;assign dual_y = a ^ a_delay1;
endmodule

Testbench代码

`timescale 1ns / 1ps//tb的基本思路无非就是:制造时钟、复位、例化、构造数据
module tb_edge_detection();reg clk,rst_n,a;wire pos_y,neg_y,dual_y;initial begina   = 0;clk = 0;rst_n = 0;#50rst_n = 1;a = 1;#30;a = 0;#40;a = 1;#50;a = 0;#40;$stop;endedge_detection edge_detection_u0(.clk(clk),.rst_n(rst_n),.a(a),.pos_y(pos_y),.neg_y(neg_y),.dual_y(dual_y));always #5 clk = ~clk;endmodule

仿真波形

在这里插入图片描述

参考资料

  1. 正点原子逻辑设计教程

这篇关于【IC设计】边沿检测电路(上升沿、下降沿、双沿,附带源代码和仿真波形)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936647

相关文章

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学