FPGA搭积木之边沿检测电路

ops/2024/11/9 9:57:23/

目录

  • 1前言
  • 2.原理
  • 3.代码
  • 4仿真

1前言

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

2.原理

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

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

edge_pluse = ~edge_din_r & edge_din
  下降沿:前一个周期为高电平,后一个周期为低电平。那么,有

edge_pluse = ~edge_din_r & edge_din

3.代码

`timescale 1ns / 1psmodule 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仿真

`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 beginclk = 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搭积木


http://www.ppmy.cn/ops/24725.html

相关文章

如何在ubuntu 24.04上安装配置x11vnc以便远程访问

在ubuntu 24.04上安装x11vnc的方法&#xff08;经过验证04/25/2024&#xff09; sudo apt update sudo apt install x11vnc x11vnc -storepasswd 下面的命令确认authentication文件的位置&#xff08;示例中的uid 1000&#xff09; systemctl status display-manager.service…

【软件工程】第一章概述与软件生命周期

目录 软件开发方法学&#xff1a;结构化方法面向对象方法两种开发方法的区别从结构到面向对象面向对象技术的优势 什么是软件&#xff1f;为什么出现软件工程学科&#xff1f;软件危机 软件工程的概念软件生命&#xff08;存&#xff09;周期------------重点⭐每个时期每个阶段…

yarn的安装与使用

Yarn的安装与使用主要涉及到以下几个步骤&#xff1a; 安装Yarn&#xff1a; 首先&#xff0c;确保您的系统中已安装Node.js和npm。Yarn可以在Windows、MacOS和Linux上运行。使用npm安装Yarn。运行命令npm install -g yarn来安装和升级Yarn。安装完成后&#xff0c;通过运行y…

【数据采集实操】网页抓取实例之淘宝商品信息抓取||电商API接口数据采集

之前我们已经说过网页抓取的相关内容 上次我们是以亚马逊某网页的产品为例 抓取价格、品牌、型号、样式 主流电商API接口数据采集返回商品价格 SKU 数据 该网页上价格、品牌、型号、样式等 都只有一个 如果网页上的目标内容 根据不同规格有多个 又该怎么提取呢&#xf…

LLMs之MiniCPM:MiniCPM(揭示端侧大语言模型的无限潜力)的简介、安装和使用方法、案例应用之详细攻略

LLMs之MiniCPM&#xff1a;MiniCPM(揭示端侧大语言模型的无限潜力)的简介、安装和使用方法、案例应用之详细攻略 目录 MiniCPM的简介 0、更新日志 1、公开的模型 2、局限性 3、文本模型评测 越级比较: 同级比较&#xff1a; Chat模型比较&#xff1a; DPO后模型比较&am…

Jmeter插件技术:性能测试中服务端资源监控

性能测试过程中我们需要不断的监测服务端资源的使用情况&#xff0c;例如CPU、内存、I/O等。 Jmeter的插件技术可以很好的实时监控到服务器资源的运行情况&#xff0c;并以图形化的方式展示出来&#xff0c;非常方便我们性能测试分析。 操作步骤&#xff1a; 1、安装插件管理…

Swift中的WebView

WebView是Swift中用于显示网页内容的组件&#xff0c;可以将网页嵌入到iOS应用中。WebView可以加载和显示网页、处理用户的交互操作&#xff0c;并提供了一些控制网页内容的方法。 在Swift中使用WebView&#xff0c;首先需要导入WebKit框架&#xff1a; import WebKit然后&am…

社交媒体之谜:深度解析Facebook的内容策略

作为全球最大的社交媒体平台之一&#xff0c;Facebook在内容策略方面一直处于行业的领先地位。其内容策略不仅影响着数十亿用户的信息获取和社交互动&#xff0c;也深刻影响着整个社会的舆论和文化传播。本文将深入探讨Facebook的内容策略&#xff0c;剖析其背后的运作机制和对…