目 录
一、设计任务
二、题目分析与整体构思
三、硬件电路设计
四、程序设计
五、心得体会
一. 设计任务
数码的显示方式一般有三种:第一种是字型重叠式;第二种是分段式;第三种是点阵式。
目前以分段式应用最为普遍,主要器件是七段发光二极管(LED)显示器。它可分为两种,
一是共阳极显示器(发光二极管的阳极都接在一个公共点上),另一是共阴极显示器(发光
二极管的阳极都接在一个公共点上,使用时公共点接地)。
数码管动态扫描显示,是将所用数码管的相同段(a~g 和p)并联在一起,通过选位通
信号分时控制各个数码管的公共端,循环依次点亮各个数码管。当切换速度足够快时,由于
人眼的“视觉暂留”现象,视觉效果将是数码管同时显示。
根据七段数码管的显示原理,设计一个带复位的七段数码管循环扫描程序,本程序需要着重实现两部分:
1. 显示数据的设置:程序设定 4 位数码管从左至右分别显示1、2、3、4;
2. 动态扫描:实现动态扫描时序。
利用EXCD-1 开发板实现七段数码管的显示设计,使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。四位数码管与 FPGA 之间通过8 位拨码开关(JP1)进行连接。
二. 题目分析与整体构思
使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,呈“ ”字状,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4 为四位7 段数码管的位选择端。当其值为“1”时,相应的7 段数码管被选通。当输入到7 段数码管SEG_A~ SEG_G 和SEG_DP 管脚的数据为高电平时,该管脚对应的段变亮,当输入到7 段数码管SEG_A~SEG_G 和SEG_DP 管脚的数据为低电平时,该管脚对应的段变灭。该四位数码管与 FPGA 之间通过8 位拨码开关(JP1)进行连接,当DIP 开关全部拨到上方时(板上标示为:7SEGLED),FPGA 的相应IO 引脚和四位7 段数码管连接,7 段数码管可以正常工作;当DIP 开关全部拨到下方时(板上标示为:EXPORT5),FPGA 的相应IO引脚与7 段数码管断开,相应的FPGA 引脚用于外部IO 扩展。
注意:无论拨码开关断开与否,FPGA 的相应IO 引脚都是与外部扩展接口连接的,所
以当正常使用数码管时,不允许在该外部扩展接口上安装任何功能模块板。
数码管选通控制信号分别对应4 个数码管的公共端,当某一位选通控制信号为高电平
时,其对应的数码管被点亮,因此通过控制选通信号就可以控制数码管循环依次点亮。一个
数码管稳定显示要求的切换频率要大于50Hz,那么4 个数码管则需要50×4=200Hz 以上
的切换频率才能看到不闪烁并且持续稳定显示的字符。
三. 硬件电路设计
设计结构图如下:
四. 软件设计
(1)创建工程
制定工程名,工程路径以及顶层设计所使用的输入方式,此设计我们选择硬件描述语言作为顶层设计的输入方式HDL。
(2)选择目标器件
(3)创建新源文件
这里我们选择“VHDL Module”,进行新源文件模块定义,所定义的内容是所要设计模块的实体说明,即模块的端口说明。本实验所要实现的是编码器的设计,设定SW0与SW1的四个状态分别作为SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4四位7 段数码管的位选择端,共8 个输出信号控制四个数码管显示,选择输出为总线模式(Bus),Msb、Lsb 分别表示最大端口号与最小端口号(注意:选择端口方向in、out、inout)。
检查模块端口定义是否正确。
(4)添加源文件
(5)完成工程创建
在工程设置统计窗口,可以看到对工程的描述总结,目标器件的描述,以及新建源文件
的总结,此工程创建完成。
(6)设计输入
包括库的声明,包的声明,完整的实体说明以及结构体框架。使用VHDL 语言设计完善数码管显示的设计,拨动开关SW0~SW1 ,其四个状态为四个位选择端,LED0~LED3 作为输出显示,以观察实验结果。
1. LED 与编码器电路对应关系
(7) 仿真设计
代码输入完成后,需要对设计进行波形仿真。
有添加波形仿真文件,仿真波形文件时钟设置,设置输入信号波形和波形仿真这几个步骤。
Xilinx 综合工具对设计进行行为级综合,将系统直接从行为级描述综合为寄存器传输级
描述。综合过程中主要完成三个步骤:首先为语法检查,检查设计文件语法是否有错误;其
次为编译过程,翻译和优化HDL 代码,将其转换为综合工具可以识别的元件序列;最后为
映射过程,将这些可识别的元件序列转换为可识别的目标技术的基本元件。
Synthesis 工具即用来完成设计综合,它可完成以下任务查看综合报告(View Synthesis Report)、查看RTL 原理图(View RTL Schematic)、查看技术原理图(Vies Technology Schematic)、检查语法(Check Syntax)、产生综合后仿真模型(Generate Post-Synthesis Simulation Model)。
(9). 引脚分配
信号名及对应板上资源 信号名 FPGA 引脚分配
时钟脉冲 clk P80
七段数码管a 段 a_to_g<0> P49
七段数码管b 段 a_to_g<1> P42
七段数码管c 段 a_to_g<2> P45
七段数码管d 段 a_to_g<3> P41
七段数码管e 段 a_to_g<4> P48
七段数码管f 段 a_to_g<5> P50
七段数码管g 段 a_to_g<6> P47
七段数码管小数点 dp P40
片选 an<0> P34
片选 an<1> P35
片选 an<2> P36
数码管1 片选 an<3> P39
复位(SW0) btn P43
(10)设计实现
设计综合完成后,即进行设计实现(Implement)。实现过程主要分为三个步骤:翻译逻
辑网表(Translate)、映射到器件单元(Map)、布局布线(Place&Route)。在处理子窗口,
鼠标双击Implement Design,信息输出窗口会显示设计信息。
(11) 生成下载文件及目标板配置
处理子窗口中双击Generate Programming File,生成可编程文件。而后双击Configure Targ
et Device,进行目标板配置。
开发板正确连接,并上电后,可在ISE 用户区看到两个可配置芯片,分别为4Mb 的平台flash 与FPGA xc3s500e台flash 与FPGA xc3s500e。同时出现平台Flash 配置文件指定窗口,绿芯片表示当前进行配置的芯片。该设计我们选择对FPGA xc3s500e 进行配置,平台Flash 配
置窗口点击Cancel。选定FPGA 芯片图标,右键单击选择program,在随后弹出的“Device Programming Properties”对话框直接点击ok,对FPGA 进行编程。文件下载成功,则显示“Program Succeeded”可通过开发板观察相应实验现象。至此,使用ISE 软件设计基本逻辑门电路已经完成。
(12)程序代码
1. 顶层文件
7本布局library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity clk7seg_top is
Port ( clk : in STD_LOGIC;
btn : in STD_LOGIC; --复位信号
a_to_g : out STD_LOGIC_VECTOR (6 downto 0);
an : out STD_LOGIC_VECTOR (3 downto 0);
dp : out STD_LOGIC);
end clk7seg_top;
architecture Behavioral of clk7seg_top is
component clk7seg
Port ( x : in STD_LOGIC_VECTOR (15 downto 0);
clk : in STD_LOGIC; --100MHz
clr : in STD_LOGIC;
a_to_g : out STD_LOGIC_VECTOR (6 downto 0);
an : out STD_LOGIC_VECTOR (3 downto 0);
dp : out STD_LOGIC);
end component;
signal x : std_logic_vector(15 downto 0);
begin
x<=X"1234"; --设定x 初值
U0 : clk7seg port map(
x=>x,
clk=>clk,
clr=>btn,
a_to_g=>a_to_g,
an=>an,
dp=>dp
);
end Behavioral;
2. 七段数码管显示程序
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
发布评论