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),即可在开发板上通过按钮测试程序的效果

七、测试结果

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

任务完成

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 08:58:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 08:58:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 08:58:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 08:58:06       18 阅读

热门阅读

  1. HTML页面定时刷新指南

    2024-06-18 08:58:06       7 阅读
  2. Docker的常见问题

    2024-06-18 08:58:06       8 阅读
  3. 1985H1 Maximize the Largest Component (Easy Version)

    2024-06-18 08:58:06       7 阅读
  4. sping怎么解决循环依赖

    2024-06-18 08:58:06       6 阅读
  5. Redis命令

    2024-06-18 08:58:06       7 阅读
  6. spi service实现类加载代码

    2024-06-18 08:58:06       7 阅读
  7. 浅谈配置元件之TCP取样器配置/TCP取样器

    2024-06-18 08:58:06       7 阅读
  8. 算法 Hw9

    2024-06-18 08:58:06       7 阅读
  9. 6月17号

    2024-06-18 08:58:06       10 阅读
  10. Azure数据分析入门-发现数据分析

    2024-06-18 08:58:06       6 阅读
  11. Mac电脑安装配置NVM

    2024-06-18 08:58:06       6 阅读