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

2024-06-17 13:12

本文主要是介绍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的基础仿真项目--七段数码管设计显示学号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(