软件:Quartus
语言:VHDL
代码功能:
一、课题目的
1.实现十六进制计数显示。
2.实现常见英语字母显示。
二、课题原理
用数码管除了可以显示0~9的阿拉伯数字外,还可以显示一些英语字母。
数码管由7段显示输出,利用7个位的组合输出,就可以形成相关的英语字母的对应显示(注意:不是所有字母都能显示!)。下表显示常见的字母与7段显示关系。
|
字母 |
A |
b |
c |
d |
e |
f |
g |
|
A |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
|
B |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
|
C |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
|
D |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
|
E |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|
F |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
|
H |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
|
P |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
|
L |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
常见的字母与7段显示关系
三、课题内容
1.查找资料,理解设计原理。
2.用VHDL语言 编写一个简单的0~9和字母显示电路(数码管类别不限)。
3.在QuartusⅡ上完成设计输入、全程编译和功能仿真。
四、设计提示
1.字母轮换显示电路可以采用状态图的方式设计,对于每一个时钟脉冲,将改变一种态。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. 状态图
5. 仿真图
仿真图说明,以上图中显示B为例,仿真图显示值为1111100,也就是
hex[6]=1,-----对应g
hex[5]=1,-----对应f
hex[4]=1,-----对应e
hex[3]=1,-----对应d
hex[2]=1,-----对应c
hex[1]=0,-----对应b
hex[0]=0,-----对应a
查询下表可知显示的是b,故仿真正确。
部分代码展示:
library IEEE; use IEEE.std_logic_1164.all; --数码管译码模块 entity segment is port ( CLK: in std_logic;--时钟 RST: in std_logic;--复位 hex: out std_logic_vector(6 downto 0)); --数码管信号,gfedcba,g为最高位,a为最低位 end segment; architecture behav of segment is TYPE states IS (st_0,st_1,st_2,st_3,st_4,st_5,st_6,st_7,st_8,st_9,st_A,st_B,st_C,st_D,st_E,st_F,st_H,st_P,st_L);--定义各个状态 signal PST:states; begin process(CLK,RST) begin IF(RST='1')then PST<=st_0;--复位到st_0 ELSIF rising_edge (CLK) then case PST IS--对于每一个时钟脉冲,改变一种状态 when st_0=> PST<=st_1;--依次按顺序变化 when st_1=> PST<=st_2; when st_2=> PST<=st_3; when st_3=> PST<=st_4; when st_4=> PST<=st_5; when st_5=> PST<=st_6; when st_6=> PST<=st_7; when st_7=> PST<=st_8; when st_8=> PST<=st_9; when st_9=> PST<=st_A; when st_A=> PST<=st_B; when st_B=> PST<=st_C; when st_C=> PST<=st_D; when st_D=> PST<=st_E; when st_E=> PST<=st_F; when st_F=> PST<=st_H; when st_H=> PST<=st_P; when st_P=> PST<=st_L; when st_L=> PST<=st_0;--回到初始状态 when others => PST<=st_0; end case; end if;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=978
1150