【小月电子】ALTERA FPGA开发板系统学习教程-LESSON4数码管静态显示

数码管静态显示例程讲解

若要观看该博客配套的视频教程,可点击此链接

开发板实物图

在这里插入图片描述

在这里插入图片描述

图1.FPGA设计流程
根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤。比如非常简单的项目,我们可以省去虚线框里面的步骤,但是我们的入门级课程,即使再简单,也按照这12个步骤来进行讲解。

1.需求解读

1.1 需求

让第一位数码管显示0,通过修改代码可让其显示其它任意数字。

1.2 知识背景

数码管是由多个 LED 发光二极管组成的一个“8”字型的器件,根据极性不同,分为共阳极和共阴极,我们开发板上采用的是共阳数码管。数码管内部结构如下图:

在这里插入图片描述
在这里插入图片描述

通过图上可以看出,共阳极和共阴极的区别。共阳极公共端接电源正极,共阴极公共端接地。选用共阳极数码管时,我们只需将对应的 abcdefgdq 给低电平便可点亮对应的数码管。共阴极与之相反,需要将 abcdefgdq 接入电源正极便可点亮对应的数码管。数码管示意图如下:
在这里插入图片描述

我们选用的开发板使用的是共阳极数码管,如果要显示 2,那么我们应该点亮A,B,G,E,D 段发光二极管。如果要显示 5,大家可以自行分析,应该点亮哪些段,这样我们便可以得出共阳数码管 0 到 9 的编码。为了节约大家的时间,我将共阳数码管对应的编码整理出来,如下图,可以直接调用。共阴数码管的编码只用按位取反即可。
我们开发板共阳数码管段选编码表如下:
在这里插入图片描述

1.3 硬件设计

在这里插入图片描述

数码管驱动电路

在这里插入图片描述

数码管位选段选与FPGA管脚对应关系

我们开发板上选用的是PNP三极管,当给三极管基极输入低电平,三极管的集电极与发射极便导通,3.3V 的电压便加在了数码管的位选管脚上,那么我们要点亮第一位数码管则需要给SMG_W0 输入低电平,并按数码管编码表给数码管的段选赋值。原理掌握了,我们可以开始编写代码

1.4 接口说明

信号名方向FPGA管脚号说明
CLK_50M输入E1系统时钟,50Mhz
KEY1输入M1独立按键,按下低电平,当作复位使用
SMG_W0输出A2位选控制信号,低电平可导通三极管,使其给数码管位选供电
SMG_W1输出A3位选控制信号,低电平可导通三极管,使其给数码管位选供电
SMG_W2输出A4位选控制信号,低电平可导通三极管,使其给数码管位选供电
SMG_W3输出B5位选控制信号,低电平可导通三极管,使其给数码管位选供电
SMG_W4输出A5位选控制信号,低电平可导通三极管,使其给数码管位选供电
SMG_W5输出位选控制信号,低电平可导通三极管,使其给数码管位选供电
SMG_A输出A9数码管段选控制信号,低电平点亮该段
SMG_B输出K8数码管段选控制信号,低电平点亮该段
SMG_C输出D8数码管段选控制信号,低电平点亮该段
SMG_D输出A7数码管段选控制信号,低电平点亮该段
SMG_E输出E7数码管段选控制信号,低电平点亮该段
SMG_F输出B9数码管段选控制信号,低电平点亮该段
SMG_G输出A10数码管段选控制信号,低电平点亮该段
SMG_DP输出C8数码管段选控制信号,低电平点亮该段

    总结:位选等于:6’h1f ,段选等于8’h03,这样第一位数码管就显示0

2. 绘制理论波形图

在这里插入图片描述

逻辑框图

在这里插入图片描述

理论波形图

3.新建QuartusII 工程

为了让工程看起来整洁,同时方便工程移植。我们新建4个文件夹,分别是Project,Source,Sim,Doc。
Project — 工程文件夹,里面放的QuartusII工程
Source — 源代码文件夹,里面放的工程源码(.v文件或.vhd文件)
Sim — 仿真文件夹,里面放的仿真相关的文件
Doc — 存放相关资料,比如数据手册,需求文档等

4.编写代码

///
//QQ:3181961725
//TEL/WX:13540738439
//工程师:Mr Wang
//模块介绍:实现数码管的静态显示
///
module sta_smg_drv(
   output	[7:0]	smg_seg,
   output	[5:0]	smg_bit
   );
   assign	smg_seg=8'h49;
   assign	smg_bit=6'h00;
endmodule

5.编写仿真测试激励文件

在这里插入图片描述

仿真逻辑框图

仿真时,我们主要关心的是输入端口,在该实验我们没有输入信号,所以仿真测试文件非常简单

`timescale 1ns/1ns
module sta_smg_drv_tb;
	sta_smg_drv Usta_smg_drv(
	.smg_seg(),
	.smg_bit()
	);
endmodule

6.Modelsim仿真

这个例程非常简单,只用了一条语句,所以不需要仿真验证。但是为了给大家演示一个完整的开发流程,这个实验我们也新建一个仿真工程,从最简单的一个代码开始教大家如何编写仿真激励文件以及如何使用Modelsim软件进行仿真。将第三步编写的源码和第四步编写的仿真测试激励文件一起加入到Modelsim仿真工程中,即可进行仿真观察波形。
Modelsim仿真一般有两种方法:

  1. 图形化界面仿真,即所有的操作都是在Modelsim软件界面上来完成,该方式的优点是,简单易学,适用于简单的项目,缺点是操作步骤繁琐。

  2. 批处理仿真,这种方式在仿真前需要编写相应的脚本文件,该方式的优点是,一键即可完成仿真,省时省力,缺点是前期需要编写脚本文件。为了让大家所学的能够很快的应用到工程实践,仅仅第一个实验和第二个实验,采用图形化界面仿真,后面的实验均采用批处理方式仿真。为了更贴近工程实际,我们采用批处理方式仿真。仿真出的波形如下图所示:
    在这里插入图片描述

7.对比波形图

将第二步绘制的理论波形图与第六步Modelsim仿真出来的波形图进行对比,结果一致,说明我们的逻辑设计是正确的。如果发现比对结果不一致,就需要找到不一致的原因,最终要保证对比结果一致。
通过对比,理论波形与仿真波形一致,说明功能符合设计要求。

8.编译综合

在这里插入图片描述

9.绑定管脚

当工程编译成功后,即可进行管脚分配(需要参考开发板的原理图)。我们店铺的开发板和模块在PCB板上均标注了信号名,在绑定管脚时也可以直接参照实物的连接关系。
在这里插入图片描述
管脚映射关系如下所示:
在这里插入图片描述

10.再次编译综合

在这里插入图片描述

11 下载SOF文件

再次编译综合成功后便可以将生成的SOF文件下载到开发板
在这里插入图片描述
在这里插入图片描述
下载成功后,便可以观察到开发板上的实验现象,如果实验现象与设计需求相符,那说明我们的设计是没有问题的,即可进行下一步固化JIC文件操作

12 生成并固化JIC文件

FPGA有一个特性,就是掉电后配置信息会丢失,所以我们需要将配置信息存储在配置芯片(FLASH)中,待开发板上电后,FPGA便会读取配置芯片中的配置信息,这样开发板掉电再上电后同样可正常工作。要将程序固化到配置芯片,需要先生成JIC文件。SOF文件转换成JIC文件步骤如下:

12.1 file–>Convert Programming File…

在这里插入图片描述

12.2 选择JIC文件以及配置芯片的型号,FPGA的型号在这里插入图片描述

标号1:选择生成文件的格式,我们选择JIC文件
标号2:选择配置芯片的型号,我们选择EPCS16
标号3:修改生成JIC文件的名字以及存放路径
标号4:鼠标左键点击Flash Loader
标号5:选择FPGA的型号,我们开发板用的是EP4CE6F17C8这款FPGA,所以我们也应该选这个型号,如下图所示:
在这里插入图片描述

12.3 选择SOF文件

在这里插入图片描述
标号1:鼠标左键点击SOF Data
标号2:添加SOF文件,选中我们工程生成的SOF文件,如下图:
在这里插入图片描述

12.3 生成JIC文件

在这里插入图片描述
到此,JIC文件生成好,可以进行固化操作了。

12.4 固化JIC文件

在这里插入图片描述
固化好以后,掉电程序也不会丢失了!

实验现象

与设计需求吻合,设计完成!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值