当前位置: 首页 > news >正文

FPGA的基础仿真项目--七段数码管设计显示学号

一、设计实验目的

1. 了解数码管显示模块的工作原理。

2. 熟悉VHDL 硬件描述语言及自顶向下的设计思想。

3. 掌握利用FPGA设计6位数码管扫描显示驱动电路的方法。

二、实验设备

1. PC机

2.Cyclone IV FPGA开发板

三、扫描原理

下图所示为1位数码管,由a、b、c、d、e、f、g、dp共8个LED构成,通过点亮特定的LED即可显示相应的字符。

多位的数码管由多个1位数码管构成,如下图所示为4位数码管。为了简化接口电路,多位数码管的段码(a,b,c,d,e,f,g,dp)通常并联在一起,并增加另外的位选信号(如下图中DIG4,DIG3,DIG2,DIG1)来选择使能某一位数码管。位选信号以一定的频率循环使能每一位数码管,从而实现多位字符的显示。

四、设计任务

1. 编写VHDL程序,在开发板的数码管上显示自己学号的末6位数字。

2. (可选)在实现用数码管显示数字的基础上,结合实验一与实验二的内容修改程序,实现一个上升沿触发、异步清零的计数器。具体要求:

(1)在数码管上显示当前的计数值。

(2)触发计数器的时钟频率为1Hz(即计数值每1秒加1),该时钟通过分频得到。

(3)异步清零通过按钮实现。

五、设计要求

1.在Quartus中用VHDL语言编写程序,设计合适的分频器电路和6位数码管扫描驱动电路,仿真验证后,下载至开发板验证设计功能。

2.开发板上有6位共阳极数码管,即段码(a,b,c,d,e,f,g,dp)输入为0时对应的LED亮,输入为1时对应的LED灭。位选信号(上图中DIG,开发板原理图中SEL)为低有效。自行查看核心板及扩展板原理图来选择正确的引脚进行绑定。

六、解构

示例代码分享

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;entity ledtest is
port(clk : in std_logic;dig : out std_logic_vector(7 downto 0);ds : out std_logic_vector(5 downto 0));
end ledtest;architecture a of ledtest issignal cnt1 : integer range 0 to 31;signal cnt2 : std_logic_vector(9 downto 0);signal cnt1k : integer range 0 to 7;signal clk1m,clk1k : std_logic;begin--clk div by 50process(clk)beginif clk'event and clk='1' thenif cnt1<25 thencnt1 <= cnt1+1;elsecnt1 <= 0;clk1m <= not clk1m;end if;end if;end process;--clk div by 1024process(clk1m)beginif clk1m'event and clk1m='1' thencnt2 <= cnt2 + 1;end if;end process;clk1k <= cnt2(9);--ds scanprocess(clk1k)beginif clk1k'event and clk1k='1' thenif cnt1k<5 thencnt1k <= cnt1k + 1;elsecnt1k <= 0;end if;end if;end process;with cnt1k selectds<="111110" when 0,"111101" when 1,"111011" when 2,"110111" when 3,"101111" when 4,"011111" when 5,"111111" when others;with cnt1k select	dig<="10000010" when 0,"10010010" when 1,"10011001" when 2,"10110000" when 3,"10100100" when 4,"11111001" when 5,"11000000" when others;-- "dp g f e d c b a"	-- '0' --  "11000000"-- '1' --  "11111001"-- '2' --  "10100100"-- '3' --  "10011001"-- '4' --  "10011001"-- '5' --  "10010010"-- '6' --  "10000010"-- '7' --  "11111000"-- '8' --  "10000000"-- '9' --  "10010000"	end a;

按照笔者前文进行相应联合Modelsim仿真编译后,进行引脚分配

怎样仿真编译???

给你一个链接自己看:

基于Quartus Prime18.1的安装与FPGA的基础仿真(联合Modelsim)教程-CSDN博客

6.1 引脚分配

FPGA 的用户 I/O 通常很多,用户可以自行指定各个引脚的功能。但是当 FPGA 器件已焊在 PCB 板上时,需要根据这些引脚在 PCB 上与其它元器件和设备的连接来指定其用途,具体操作如下:
首先需要在任务窗口中双击 Analysis & Syntheis,完成综合。(也可以 Compile Design 编译整个工程。)
只有综合通过后,开发环境才能识别出整个设计的输入输出引脚, 如果不综合,打开下方的引脚分配窗口将看不到任何端口名(Node Name)
菜单 Assignments->Pin Planner(Ctrl+Shift+N),打开引脚分配窗口

注意:原先的引脚项是白色无设置的,如:

需要进行相应引脚的接入,本次实验共阳极,所以引脚如下:(在对应clk一行后Location双击选择对应的Pin引脚)

上方是对应的引脚图,编辑后变色

6.2 下载

PC 连接 USB 下载线,安装好驱动。(手动选择驱动文件位置,文件路径为 Quartus 安装路径下的 drivers 文件夹

(看好上方路径,双击打开quartus-->drivers)下载编译驱动程序DPInst.exe

 点击下一步,会出现部分无法安装,不用担心,可以正常往下做,点击完成

开发板插好下载线(开发板上有 2 个下载接口,插到 JTAG 上)
插好电源,按下电源开关,开发板上电。(先插好下载线再上电,否则容易烧坏芯片)
双击 Tasks 栏里的 Program Device,一般会自动打开编译生成的 led.sof 文件(如果没有,则删除列表里的其它下载文件,打开 led.sof)勾选 Program/Configure,其它都不打勾
点击左上 Hardware Setup,选择 USB-Blaster[USB-0],OK
确认下方显示将下载的器件为 EP4CE15F17,如果不是,点击 Auto Detect
确认全部都设置好以后,点击 Start。右上方进度条开始前进,直到提示程序下载完成 100%(Successful),即可在开发板上通过按钮测试程序的效果

七、测试结果

 (更改数字即从下方代码逆序更改顺序显示)

任务完成

相关文章:

FPGA的基础仿真项目--七段数码管设计显示学号

一、设计实验目的 1&#xff0e; 了解数码管显示模块的工作原理。 2&#xff0e; 熟悉VHDL 硬件描述语言及自顶向下的设计思想。 3&#xff0e; 掌握利用FPGA设计6位数码管扫描显示驱动电路的方法。 二、实验设备 1. PC机 2.Cyclone IV FPGA开发板 三、扫描原理 下图所…...

Jmeter接口请求之 :multipart/form-data 参数请求

参考教程 Jmeter压测之&#xff1a;multipart/form-data_jmeter form-data-CSDN博客 1、通过fiddler对接口进行抓取&#xff0c;接口信息如下图所示 2、获取到接口后 在fiddler右侧点击Inspectors-Raw中可以看到如下图所示信息&#xff0c;上半部分为默认请求头信息内容&#…...

Type-C诱骗芯片LDR6500

随着科技的飞速发展&#xff0c;电子设备的智能化和便携化已成为趋势。在这个过程中&#xff0c;Type-C接口因其高速传输、正反可插以及强大的扩展能力&#xff0c;逐渐成为主流接口标准。然而&#xff0c;Type-C接口的广泛应用也带来了一系列挑战&#xff0c;其中之一便是如何…...

统一异常处理

问题 当系统出现异常时&#xff0c;除了要在控制台、日志等后台进行输出之外&#xff0c;还需要在前端提示用户。 为了提示给用户&#xff0c;错误信息需要做一些约定&#xff1a; 错误信息统一用json格式返回给前端以HTTP状态码判断是否出现异常&#xff0c;非200即为异常 …...

Nginx网络服务

1 Nginx服务基础 Nginx&#xff08; 发音为&#xff3b;engine x] ) 专为性能优化而开发&#xff0c;其最知名的优点是它的稳定性和低系 统资源消耗&#xff0c; 以及对HTTP 并发连接的高处理能力&#xff08;单台物理服务器可支持30000~50000 个并发请求&#xff09; 。正因为…...

ifconfig eth0 hw ether

ifconfig hw ether 是一个用于在 Linux 系统中设置或更改网络接口的硬件地址&#xff08;即 MAC 地址&#xff09;的命令。具体操作步骤如下&#xff1a; 首先&#xff0c;您需要确定要更改 MAC 地址的网络接口名称&#xff0c;通常是 eth0, eth1 等&#xff0c;取决于您的系统…...

微信小程序录音机源代码

<!-- <button bind:tap"startTab">开始录音</button> <button bind:tap"stopTab">结束录音</button> <button bind:tap"playTab">播放录音</button> <view style"margin: 0 auto;">{{ti…...

基于c语言的简单的数据库

​‌​⁠​​​​​⁠​‬​‬‌​‍​​​‌​‌‬​‌​⁠​​&#xfeff;‬‍‬​​⁠​‬‍&#xfeff;​​‬​​​‬简单的数据库 - 飞书云文档 (feishu.cn) mydatabase: 实现一个简单的数据库&#xff0c;基于B树 (gitee.com)...

Docker 容器内运行的 Neo4j 实例 安装apoc插件

插件 本页描述了如何将插件安装到在 Docker 容器内运行的 Neo4j 实例中。有关插件的一般说明&#xff0c;请参见配置 → 插件。 安装插件 安装插件&#xff0c;包括用户定义的程序&#xff0c;将包含插件 JAR 的文件夹或卷挂载到 /plugins &#xff0c;例如&#xff1a; docker…...

PostgreSQL源码分析——审计插件pgaudit

PostgreSQL审计插件pgaudit 在PostgreSQL中&#xff0c;提供了开源的审计插件pgaudit&#xff0c;但是其功能并不完善&#xff0c;只提供了基本的审计功能&#xff0c;对此&#xff0c;很多基于PG开发的商业数据库大多提供了丰富的审计功能。比如人大金仓&#xff0c;openGaus…...

ijkplayer编译 android版本

ijkplayer源码下载地址如下&#xff1a;https://github.com/bilibili/ijkplayer 下载代码&#xff0c;直接执行如下命令即可&#xff1a; $cd /data/project/ijkplayer/ $git clone https://github.com/bilibili/ijkplayer.git $git checkout -B latest k0.8.8 1 环境安装 …...

面向对象的进阶---static

1.static 静态变量 package com.itheima.a01staticdemo01;public class Student {private String name;private int age;public static String teacherName;public Student() {}public Student(String name, int age) {this.name name;this.age age;}/*** 获取* return n…...

React useContext

useContext 允许父组件向其下层无论多深的任何组件提供信息&#xff0c;而无需通过 props 显式传递。 // 1. LevelContext.js 创建 context&#xff0c;将其从文件中导出 import { createContext } from react; export const LevelContext createContext(1);// 2. Section.j…...

【尚庭公寓SpringBoot + Vue 项目实战】用户管理(十五)

【尚庭公寓SpringBoot Vue 项目实战】用户管理&#xff08;十五&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】用户管理&#xff08;十五&#xff09;1、业务介绍2、接口实现2.1、根据条件分页查询用户列表2.2、根据ID更新用户状态 1、业务介绍 用户管理共包含两…...

laravel中如何向字段标签添加工具提示

首先&#xff0c;您可以使用 轻松自定义字段标签->label()。我相信您知道这一点。但您知道吗……标签输出未转义&#xff1f;这意味着您也可以在标签中包含 HTML。 为了尽快实现上述目标&#xff0c;我只是采取了一个快速而粗糙的解决方案&#xff1a; CRUD::field(nickna…...

高考志愿填报,选专业应该考虑哪些因素?

这是一个复杂的社会&#xff0c;各种影响就业的因素层出不穷&#xff0c;也从未断绝。对于高考生而言&#xff0c;高考刚结束&#xff0c;短暂的放松后&#xff0c;就必须考虑自身以后应该就读什么专业&#xff0c;如果不对就读专业进行评估&#xff0c;仔细挑选&#xff0c;毕…...

图书管理系统代码(Java)

1、运行演示 QQ2024528-205028-HD 详细讲解在这篇博客&#xff1a;JavaSE&#xff1a;图书管理系统-CSDN博客 2、所建的包 3、Java代码 3.1 book包 3.1.1 Book类代码 package book;/*** Created with IntelliJ IDEA.* Description:* User: dings* Date: 2024-05-13* Time:…...

Nginx反向代理Kingbase数据库

本文适用于开发人员学习运维领域知识&#xff0c;主要内容为在个人理解的基础上对企业级开发中所使用的Nginx和数据库kingbase相关使用&#xff0c;并附上Nginx反向代理kingbase数据库的相关配置的操作方式&#xff0c;感谢阅读 为什么是nginx代理kingbase数据库服务端 生产环…...

没有字幕的高清爆款视频素材去哪里找?无字幕无水印素材网站分享

在寻找无水印高清视频素材的道路上感到困惑&#xff1f;欢迎来到今天的分享&#xff0c;我将为您介绍一些海外优质的素材网站&#xff0c;以及国内极具特色的“蛙学府”。不论您是短视频制作的新手还是老手&#xff0c;这些网站都将为您的创意注入新活力。 蛙学府网 蛙学府网不…...

Java23种设计模式(一)

前言 这2个月来&#xff0c;重新出发&#xff0c;从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置&#xff0c;再到后面的基础学习、数据库学习、扩展学习&#xff08;maven、mq、设计模式、spring 系列等等&#xff09;&#xff0c;边学边记录&#xff0c…...

BG3ModManager:博德之门3模组管理终极解决方案

BG3ModManager&#xff1a;博德之门3模组管理终极解决方案 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 你是否曾经为《博德之门3》的模组管理而烦…...

从myplaces.shp到专题地图:手把手教你用QGIS C++ API实现点要素分级渲染

从myplaces.shp到专题地图&#xff1a;QGIS C API实现点要素分级渲染实战指南 当我们需要在桌面GIS应用中直观展示气象站降雨量、城市人口密度或商业网点销售额等连续型空间数据时&#xff0c;分级色彩渲染是最有效的可视化手段之一。本文将深入探讨如何利用QGIS强大的C API&am…...

YimMenu:GTA V终极游戏增强工具完整实战手册

YimMenu&#xff1a;GTA V终极游戏增强工具完整实战手册 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

Linuxbonding链路异常定位实战

Linuxbonding链路异常定位实战这是一篇面向中级 Linux 使用者的技术文章&#xff0c;主题聚焦在bonding链路&#xff0c;重点讨论链路聚合、冗余切换和接口状态。在真实生产环境中&#xff0c;bonding链路相关问题往往不会以单一错误形式出现&#xff0c;而是混杂在日志、权限、…...

C++定时器避坑指南:线程安全、资源泄漏与时间轮参数怎么调?一次讲清楚

C定时器避坑指南&#xff1a;线程安全、资源泄漏与时间轮参数调优实战 在分布式系统和高并发场景中&#xff0c;定时器如同系统的心跳机制&#xff0c;其稳定性直接决定服务可靠性。去年某电商平台大促期间&#xff0c;由于定时任务堆积导致的雪崩效应&#xff0c;造成近千万损…...

Arm Neoverse CMN-700 HN-F寄存器架构与缓存一致性配置详解

1. Arm Neoverse CMN-700 HN-F寄存器架构概述在现代SoC设计中&#xff0c;一致性互连网络&#xff08;Coherent Mesh Network&#xff09;是实现多核处理器高效协同工作的核心基础设施。作为Arm Neoverse平台的关键组件&#xff0c;CMN-700通过其独特的网格拓扑结构和分布式节点…...

告别网络依赖:CircuitJS1桌面版带你体验离线电路仿真的自由

告别网络依赖&#xff1a;CircuitJS1桌面版带你体验离线电路仿真的自由 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1…...

基于AutoHotkey的Windows桌面自动化工具开发实战

1. 项目概述与核心价值最近在整理个人项目库时&#xff0c;翻到了一个挺有意思的“老伙计”——cua_desktop_operator_skill。这个项目名听起来有点拗口&#xff0c;直译过来是“CUA桌面操作员技能”。乍一看&#xff0c;可能会让人联想到某种工业控制台的专用软件。但实际上&a…...

Claude-Code-KnowCraft:轻量级代码知识库构建与智能问答实践

1. 项目概述与核心价值最近在跟几个做AI应用开发的朋友聊天&#xff0c;大家普遍有个痛点&#xff1a;想把Claude这类大语言模型&#xff08;LLM&#xff09;的能力深度集成到自己的代码库分析工具里&#xff0c;但发现现有的方案要么太重&#xff0c;要么太浅。太重的是指那些…...

Lua-RTOS-ESP32:用脚本语言快速开发物联网硬件的实践指南

1. 项目概述&#xff1a;当Lua遇上RTOS&#xff0c;在ESP32上构建轻量级物联网开发新范式如果你是一名嵌入式开发者&#xff0c;或者对物联网&#xff08;IoT&#xff09;设备编程感兴趣&#xff0c;那么你一定对ESP32这颗明星芯片不陌生。它凭借强大的双核处理能力、丰富的无线…...