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 is
	signal 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 50
	process(clk)
	begin
		if clk'event and clk='1' then
			if cnt1<25 then
				cnt1 <= cnt1+1;
			else
				cnt1 <= 0;
				clk1m <= not clk1m;
			end if;
		end if;
	end process;
    --clk div by 1024
    process(clk1m)
	begin
		if clk1m'event and clk1m='1' then
			cnt2 <= cnt2 + 1;
		end if;
	end process;
	clk1k <= cnt2(9);
	
	--ds scan
	process(clk1k)
	begin
		if clk1k'event and clk1k='1' then
			if cnt1k<5 then
				cnt1k <= cnt1k + 1;
			else
				cnt1k <= 0;
			end if;
		end if;
	end process;
	with cnt1k select
	ds<="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),即可在开发板上通过按钮测试程序的效果

七、测试结果

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

任务完成

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git检查别人提交的PR(pull requests)并在本地验证,然后合并

可以看官方流程&#xff1a;Checking out pull requests locally - GitHub Docs 当别人给你的开源仓库提交了pull request&#xff0c;你该怎么检查别人提交的代码是否可用&#xff0c;然后合并上去呢&#xff1f;今天我就遇到了&#xff0c;就在前不久开源项目douyin-live失败…

Day5 —— 电商日志数据分析项目

项目二 _____&#xff08;电商日志数据分析项目&#xff09; 引言需求分析详细思路统计页面浏览量Map阶段Reduce阶段 日志的ETL操作Map阶段Reduce阶段 统计各个省份的浏览量Map阶段Reduce阶段 具体步骤统计页面浏览量日志的ETL操作统计各个省份的浏览量工具类&#xff08;utils…

mac鼠标和触摸屏单独设置滚动方向

引言&#xff1a;mac很好用&#xff0c;但是外接鼠标的滚动方向和win不一样&#xff0c;总有点不习惯。于是想要设置一下&#xff0c;当打开设置&#xff0c;搜索鼠标时&#xff0c;将“自然滚动”取消&#xff0c;就可以更改了。 问题&#xff1a;但触摸屏又不好用了。 原因&a…

无线麦克风哪个好?分享口碑最好的麦克风品牌

在这个自媒体时代&#xff0c;给了普通人很多的机会&#xff0c;尤其短视频的兴起更是让无数热情&#xff0c;有创作之心的人跃跃欲试。于是乎越来越多的人纷纷拿起了手机到各个平台去展示自己的才华&#xff0c;或者通过vlog记录分享自己的简单生活。可是在分享和创作的输出时…

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index.…

Spring底层原理之bean的加载方式一 用XML方式声明bean 自定义bean及加载第三方bean 2024详解

目录 用XML方式声明bean 首先我们创建一个空的java工程 我们要导入一个spring的依赖 注意在maven工程里瞅一眼 我们创建一个业务层接口 还有四个实现类 我们最初的spingboot生命bean的方式是通过xml声明 我们在resources文件夹下创建一个配置文件 我们书写代码 首先初…

移动硬盘盒:便携与交互的完美结合 PD 充电IC

在数字化时代的浪潮中&#xff0c;数据已成为我们生活中不可或缺的一部分。随着数据的不断增长&#xff0c;人们对于数据存储的需求也在不断增加。传统的存储设备如U盘、光盘等&#xff0c;虽然具有一定的便携性&#xff0c;但在容量和稳定性方面往往难以满足现代人的需求。而移…

若依框架下拉单选框根据js动态加载,如何使select2的下拉搜素功能同时生效(达到select下拉框的样式不变的效果)

直接上代码&#xff0c;不废话 $(select[name"sealType"]).change(function (event) {let value event.target.valuequeeryDeptListBySealType(value)})// 获取科目信息function queeryDeptListBySealType(value){$.ajax({type: "post",url: prefix &quo…

竞赛选题 python+opencv+深度学习实现二维码识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…

Mac提示此电脑不能读取您插的磁盘的原因,Mac磁盘无法读取内容怎么处理

为了能在不同设备中快速传输大容量的文件&#xff0c;我们常常会使用到外接磁盘进行文件的传输。但由于各种原因&#xff0c;比如硬件、文件系统格式等问题&#xff0c;Mac电脑插磁盘会出现无法读取的问题。本文会介绍Mac提示此电脑不能读取您插的磁盘的原因&#xff0c;以及Ma…

基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

react项目中如何书写css

一&#xff1a;问题&#xff1a; 在 vue 项目中&#xff0c;我们书写css的方式很简单&#xff0c;就是在 .vue文件中写style标签&#xff0c;然后加上scope属性&#xff0c;就可以隔离当前组件的样式&#xff0c;但是在react中&#xff0c;是没有这个东西的&#xff0c;如果直…

iMac 数据怎么恢复:iMac 数据恢复的 4 个方法

想象一下&#xff0c;当你发现你的重要文件或回忆从你的 iMac 中删除时&#xff0c;那是多么可怕。无论是由于意外删除、硬件问题还是程序问题&#xff0c;恐慌都是真实的。它就像是数字荒野中的生命线。 本指南将为您提供所需的信息和工具&#xff0c;帮助您渡过数据丢失的危…

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全&#xff1f;如何个性化邮件推送内容&#xff1f; Steam作为全球最大的数字游戏分发平台之一&#xff0c;不仅提供了海量的游戏资源&#xff0c;还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主…

磁芯电感 晶谷电容可镀银浆用玻璃 晶谷电阻银浆料低温玻璃粉(耐强酸)

晶谷电阻银浆料低温玻璃粉&#xff08;耐强酸&#xff09;软化点在490至580度之间&#xff0c;线膨胀系数为&#xff08;75至95&#xff09;10-7&#xff0c;粒径为1.5至3微米&#xff08;可按要求订做&#xff09;&#xff0c;外观颜色为白色超细粉末&#xff0c;烧后颜色无色…

SAP 预制凭证相关小结(搜集于网络)

SAP 预制凭证相关小结&#xff08;搜集于网络&#xff09; 1. 预制凭证会生成凭证编号 2. 预制凭证不更新科目余额 3. 预制凭证会占FM预算 4. 预制凭证可以随意更改 5. 预制凭证可以删除&#xff0c;删除后只剩下凭证抬头&#xff0c;没有行项目&#xff0c;凭证编号不变 …

量检具管理有一套

量检具是用于测量和检验产品尺寸、形状和质量的工具。有一位年轻的工程师小张&#xff0c;他负责管理工厂的量检具&#xff0c;确保它们能够准确地测量产品尺寸和质量。有一天&#xff0c;小张发现量检具出现了一些问题。他注意到一些量具的读数不准确&#xff0c;导致生产出来…

NSSCTF-Web题目15

目录 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]Ez_upload 1、题目 2、知识点 3、思路 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 SSTI、Jinja2 参考链接&#xff1a;1. SSTI&#xff08;模板注入&#xff09;漏洞&#xff08;…

AD23关于铺铜后不显示问题

1、全部铺铜快捷键T --> G --> A 2、局部铺铜操作&#xff1a;选中铜皮 --> 右键 --> Y --> O 3、铺铜是有顺序的&#xff0c;比如在内部先铺了一块铜皮&#xff0c;后面又进行整体铺铜&#xff0c;如果使用全部铺铜快捷键&#xff0c;可能会导致之前的铜皮被…

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装&#xff0c;可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 &#xff08;1&#xff09;通过position属性,可以控制下拉选项的位置 &am…