基于FPGA的呼叫设备verilog开发

news2024/12/28 22:31:31

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

       随着集成电路技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,它与电子技术,微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,Verilog语言是经IEEE确认的标准硬件语言,在电子设计领域受到了广泛的接受。

1.将按键编号,当某一路由(按键)呼叫时,能显示该路编号,且相应指示灯点亮;

2.能在显示端发出声光报警信号,报警时间2s左右,可手动切除;

3.可扩展至十六路呼叫器;

4.可设计每一路相应声音报警不同;

5.设计一存储功能,将同时按下的呼叫路由排序依次在输出端显示。

二、核心程序

       当FPGA接收到16路控制信号的某路信号的时候,对应的输出显示使能信号,每个显示使能信号来控制对应的显示过程。其具体的设计代码如下:

always @(posedge clk or negedge rst)
begin
     if(!rst)
     begin
     led<=1'b0;
     num<=1'b0;
     bee<=1'b0;
     end
else begin
     if(cnt<8'b11111111)
        begin
        led<=1'b1;
        num<=1'b1;
        bee<=1'b1;        
        end
     if(cnt==8'b11111111||cnt==8'b00000000)
        begin
        led<=1'b0;
        num<=1'b0;
        bee<=1'b0;  
        end
     end
end

手动切除声光报警信号模块

       上面的模块基本实现了警报信号的发送,但是在实践情况下警报信号应该可以手动的切除,否则就会影响正常的设备使用。其具体的设计构思为,当每路信号发送出控制信号的时候,发送显示使能信号,当切除信号发出的时候,警报信号马上切除。其主要代码如下:

always @(posedge clk or negedge rst)
begin
     if(!rst)
     begin
     cnt<=8'b00000000;
     end
else begin
          if(en_able1==1'b0&&en_able2==1'b0)
          cnt<=8'b00000000;
          if(en_able1==1'b1&&en_able2==1'b1)
          cnt<=8'b00000000; 
          if(en_able1==1'b1&&en_able2==1'b0)
          begin
               if(cnt==8'b11111111)
               cnt<=8'b11111111;
               else
               cnt<=cnt+1'b1;
          end 
          if(en_able1==1'b0&&en_able2==1'b1)
          cnt<=8'b00000000; 
     end
end

同时按下的呼叫路由排序依次在输出端显示模块

      前面我们讨论的都是只有一路信号发出信号的说明,现在我们要讨论当信号同时发出的时候,系统是如何工作的。并且实现信号编号的一次排序。这个模块的主要难点在于,系统为16路系统,那么当不同的信号发出控制使能信号的时候,其组合可能性是个天文数值。应此我们必学改变传统的设计思路。在这里,我们采用ROM来设计一个存储器来实现这个功能。

      我们将16路信号分为4个部分,例如1-4路信号的16种组合情况为一个模块。而后面的5-8,9-12,13-16的编号为就为在第一种的情况下加上4,8,12,从而实现同时显示编号的功能。

    我们首先来设计一个MIF文件来做为ROM的存储文件。其具体内容如下:

DEPTH = 32;

WIDTH = 16;

ADDRESS_RADIX = HEX;

DATA_RADIX = HEX;

CONTENT

BEGIN

0 : 0000;

1 : 0001;

2 : 0020;

3 : 0021;

4 : 0300;

5 : 0301;

6 : 0320;

7 : 0000;

8 : 4000;

9 : 4001;

A : 4020;

B : 4021;

C : 4300;

D : 4301;

E : 4320;

F : 4321;

END ;

其深度为32,宽度为16,其文件的内容如上。其每组信号的排序有16种情况,即0000,0001,0020,0021等等。然后利用QUARTUSII来设计ROM的IP核。

三、测试结果

其具体的仿真结论如下:

        从上面的显示过程中,当第3路信号发送信号的时候,那么对应的第三路LED信号显示灯亮,而且对应的编号number显示2,表示第三路信号,其对应的编号为0,1,2……15,表示第一路到第16路信号,应此从上面的仿真图可以看到,显示标号为2.此外,警报器发出声音,bee信号的每一路对应着不同的报警信号。从而验证了这个模块的正确性。

当切除信号的发出的时候哦,切除使能信号enable2使警报信号结束。

      如图所示,当切除信号del发出一个脉冲的时候,LED显示灯,每路的编号信号以及BEE警报信号都马上停止,通过这个仿真图,我们基本验证了手动切除模块的正确性。  

       基于FPGA的16路呼叫器设计过程。对于设计部分。整个呼叫器的设计分为软、硬件两个部分。软件部分采用Verilog HDL硬件描述语言进行设计,硬件部分采用以555时基电路进行设计。设计完成后,将验证正确的顶层原理图文件下载到实验箱,与面包板上搭建的模拟电路相连,进行功能验证。

A02-32

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vite+Vue3+TS项目创建及基本环境搭建

1.vite项目搭建 可以按照vite官网操作&#xff1a;https://cn.vitejs.dev/guide/features.html#typescript npm create vitelatest自定义template模板 vscode-文件-首选项-配置用户代码片段-vue.json 添加如下代码即可快速创建vue模板 {"template": {"pref…

做好供应商关系管理,让企业采购交易更简单

大家都知道&#xff0c;企业想要采购到物美价廉的产品与服务&#xff0c;就必须做好相应的供应商管理工作。而其中供应商关系管理是采购过程中至关重要的环节&#xff0c;也是能让企业有效地与供应商之间保持良好关系&#xff0c;这不仅有利于促进采供双方共赢&#xff0c;而且…

Netty入门--传统IO与NIO详解

文章目录IO模型传统阻塞的IO模型--BIOClient端案例Server端案例NIO&#xff08;Java non-blocking IO&#xff09;非阻塞IONIO的三大组件 Channel Selector BufferBuffer&#xff08;缓冲区&#xff09;Channel&#xff08;通道&#xff09;Channe的分类&#xff0c;与Buffer的…

【Spring(六)】使用篇:AOP在开发中的使用

有关Spring的所有文章都收录于我的专栏&#xff1a;&#x1f449;Spring&#x1f448; 目录 一、前言 二、演示 三、切面类中声明通知方法 四、使用 相关文章 【Spring&#xff08;一&#xff09;】如何获取对象&#xff08;Bean&#xff09;【Spring&#xff08;一&#xff09…

刷爆力扣之数组形式的整数加法

刷爆力扣之数组形式的整数加法 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&…

Nodejs -- 一文了解Express模块

文章目录1. 初识Express1.1 Express简介1.1.1 什么是Express1.1.2 进一步理解Express1.1.3 Express能做什么1.2 Express的基本使用1.2.1 安装1.2.2 基本使用1.2.3 监听GET请求1.2.4 监听POST请求1.2.5 把内容响应给客户端1.2.6 获取URL中携带的查询参数1.2.7 获取URL中的动态参…

一文读懂TCP的三次握手(详细图解)

在学习TCP三次握手的过程前&#xff0c;首先熟悉几个缩写简称&#xff1a; TCB 传输控制块&#xff0c;打开后服务器/客户端进入监听&#xff08;LISTEN&#xff09;状态 SYNTCP报文标志位&#xff0c;该位为1时表示发起一个新连接ACKTCP报文标志位&#xff0c;该位为1时&…

傻白入门芯片设计,如何降低CPU功耗?(八)

低功耗芯片设计是本世纪以来最重要的新兴设计方法。可以说没有低功耗设计&#xff0c;就没有今天的智能手机&#xff0c;移动设备&#xff0c;物联网&#xff0c;及高性能计算等产业。随着芯片图形尺寸越来越小&#xff0c;低功耗设计在现在及未来的芯片中会起到越来越重要的作…

使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式

使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务&#xff0c;让学生可以在 100 USD的金额下&#xff0c;自行练习所要使用的 AWS 服务&#xff0c;以下使用 使用 Lambda 转换图片为 base64 格式…

UNIAPP实战项目笔记46 订单确认页面的布局

UNIAPP实战项目笔记46 订单确认页面的布局 实际案例图片 订单页面 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式 代码 confirm-order.vue部分 confirm-order.vue 确认订单页面布局和渲染 flex 样式布局 <template>…

Uncaught TypeError: i.createPopper is not a function

“createPopper”不是我们使用引导程序时发生的函数错误 需要popper.js脚本但不在页面上加载它的组件或 在引导脚本之后加载它。要解决此错误&#xff0c;请包括引导程序 在运行 JavaScript 代码之前捆绑脚本。 这是一个工作示例&#xff0c;它加载引导捆绑包脚本来解决 错误。…

黑盒测试用例设计 - 边界值分析法

边界值的选择原则 如果输入条件规定了值的范围&#xff0c;则应取刚达到这个范围边界的值&#xff0c;以刚刚超越这个范围边界的值作为测试输入数据如果输入条件规定了值的个数&#xff0c;则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据如果程序的规…

[附源码]计算机毕业设计springboot电商小程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计Springboot大学生志愿者服务管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

《web课程设计》期末网页制作 基于HTML+CSS+JavaScript制作公司官网页面精美

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

数据被删除怎么办?4个硬盘数据恢复工具分享

日常电脑工作中&#xff0c;都会用到硬盘。但是也很容易出现各种问题&#xff0c;比如数据误删&#xff0c;或者格式化等问题。我们怎么应对这种情况&#xff1f;有没有什么硬盘数据恢复工具&#xff1f;下面给大家分享一下关于硬盘数据恢复的工具&#xff01; ​ 工具一&#…

基于PHP+MySQL图书管理系统的设计与实现

开发本图书管理系统目的是为了实现对图书馆的图书,借阅等进行科学化的管理,便于图书信息以及借阅信息的查询和安全控制,提高设备使用效率,减少维护成本。 图书管理系统实现对图书的管理和借阅管理,利用PHP及技术来实现对图书信息的控制和管理。 图书管理系统功能结构图 通过对各…

Java并发-多线程售票案例

1. 前言 本节内容主要是使用 Java 的使用 Condition 和 Lock 机制对多线程售票案例进行实现。售票案例多数情况下主要关注多线程如何安全的减少库存&#xff0c;也就是剩余的票数&#xff0c;当票数为 0 时&#xff0c;停止减少库存。 2. 售票机制模型 如下图所示&#xff0…

简单聊聊什么是react-redux,它能解决哪些问题

或许 在大多数人眼中 redux是一个相对复查很多的知识点 但确实如果你熟悉了流程 其实也比较简单的 redux是一个数据管理方案 我们先来举个例子 目前我们知道 react中有两种组件数据通信的方式 分别是 props 父传子 定义事件 子传父 通过事件将自己的数据传给父级 那如果是兄弟…

论硬件开发过程中开发文档规范化的重要性

硬件开发的标准化是公司管理过程中的重要组成部分&#xff0c;它离不开硬件开发文档的规范化&#xff0c;很多公司并不了解开发文档的重要性&#xff0c;容易将其忽视。一个项目开发完成后&#xff0c;还有着漫长的生命周期、售后维护和更新迭代&#xff0c;总结出开发文档&…