基于VHDL语言的数码管闪烁控制的实现.pdf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 数码管 闪烁 控制 实现
- 资源描述:
-
电子质量(2012第07期)
基于VHDL语言的数码管闪烁控制的实现
基于 VEIDL语言的数码管闪烁控制的实现
Design of LED Digital Display Flicker Circuit Based on VHDL
王芸(安徽师范大学,安徽芜湖241000
Wang Yun(Anhui normal university, Anhui Wuhu 241000)
摘要:介绍了在MAX+PLUS开发环境下,用VHDL语言设计一种用于控制8路数码管闪烁的电
路。该电路具有4种花型,且可以变换速度。通过MAX+ PLUS I软件进行波形仿真后,利用实验板提
供的资源,下载到芯片中实现预定功能。
关键词:VHDL;数码管;MAX+PLUS
中图分类号:TN949.16
文献标识码;A
文章编号:1003-0107(201207-0012-03
Abstract: A design of the eighty LED digital display flicker circuit based on VHDL is introduced with the
MAX+PLUS Il. The system can demonstrate four kinds of flowers cyclically with different speeds. After the
simulation is correct with the MAX+PLUS software, the resources provided by experimental board is
download to chip for achieving the function
Key words: VHDL: LED digital display: MAX+PLUS II
CLC number: TN949 16
Document code: A
Article ID:1003-0107(2012)07-0012-03
0引言
芯片,利用VHDL语言进行设计,实现了8个数码管以
随着 FPGA/CPLD的迅速发展以及集成电路制作工艺4种花型和2种速度进行变化显示。采用这种设计可以
的不断进步,使得 FPGA/CPLD成为当今硬件设计的重要
在不修改硬件电路的基础上,仅通过更改软件就能实
途径。在各种用于 FPGA/CPLD开发的设计语言中,硬件描现任意花型,而且设计非常方便,电路保密性强。
述语言VHDL是电子设计主流的描述语言之一,它具有很
强的电路描述能力和建模能力,极好地反映了EDA设计1数码管闪烁控制电路设计要求及方案
的”自顶向下"的原则
本次设计的顶层模块原理图如图1所示。整个系
在现代建筑、舞台、广告等一些地方,通常会看到通过统由以下几个模块构成:时钟分频模块、数码管闪烁控
一些数字的闪烁来增添气氛或者是增强显示的效果。数字制模块、数码管扫描模块、数码管显示模块。
闪烁的实现可以有很多种方法,本文介绍了其中一种实现
时钟分频模块主要用于对基准频率32Hz进行分
数字闪烁的方法。该系统基于 ALTERA公司提供的FPGA频,产生两种时钟频率8Hz和4Hz,然后由这个时钟作
FENPIN
SHANSHUO
CHOOSE KEY
CHOOSE KEY CL
CLK SHUMRGUAN【7,,0
CLKN
CLK-IN
闪烁控制
分频
DELED
1+4
SELSHUMAGUAN
LK
SEu2.?
CKDSP
sEL【2。
SHUMAGUAN【7。1
OROU
数管扫描………
管里示
图1顶层模块原理图
作者简介:王芸(1982-),女,讲师,硕士研究生,主要研究方向为电子设计技术。
万方数据
基于VHDL语言的数码管闪烁控制的实现
电子质量(2012第07期)
为数码管闪烁的基准时钟,用于控制数字闪烁的快慢,从
WHEN S3=>FLOWFR2<=FF3 CURRENT STATE<=
而达到调速的目的
数码管闪烁模块:根据花型要求按节拍输出8位状
WHEN S4=>FL0WER2<=FF4 CURRENT STATE<=
态编码信号,用来控制8位数码管是显示数字还是不S1;
显示。
数码管4种花型之间的转换关系
数码管扫描模块和显示模块用来实现数码管上数字
END CASE
的显示。
END IF
2各模块设计
2.3数码管扫描棋块
该模块接受由数码管闪烁控制模块产生的一个8位
2.1分频横块
状态编码,由此编码来决定该数码管是亮还是暗。其中
该模块主要用VHDI语言实现四分频和八分频。设如果该位是0,则数码管不显示;反之,如果该位为1
计时主要用到计数器。主要代码如下:
则显示。
IF RISING-EDGE(CLK_IN THEN
由于8位数码管是由一个3~8译码器来控制,每次
IF CHOOSE KEY=ITHEN
只选中一个数码管。要实现8位数码管同时显示,其原理
IF TEMIP="011"THEN一四分频
是让其显示的频率非常高,由于人样的视觉暂离特性,使
TEMP:="000";
得看上去是8位数码管在同时显示。因此,在此模块,输
CLLK<=NOT CLLK:
入时钟的频率可以选择32768Hz。
ELSE
主要代码如下
TEMP =TEMP+1
process(ckds一该进程实现8个数码管依次被扫
END IF
描到,但由于时钟频率高,因此人眼看上去是8个数码管
若要实现八分频,只需要将 IP TEMP="011"改为IF同时显示的
TEMP="111"。
if(ckdsp'event and ckdsp=1 )then
2,2数码管闪烁挫制模块
if(sec="111 )then sec<="000
此模块的设计主要是产生一个8位状态编码信号用
else sec<=sec+I
来控制数码管的闪烁。在设计时主要用到状态机,关健代
end if end if; end process;
码如下
process(sec, shung)-该进程用来实现数码管闪烁
PROCESS(CLK)IS
gn
CONSTANT FFI: STD_LOGIC_VECTOR(7 DOWNTO
case sec Is
0:="00010001"
when"000"=>daut<=shung(0)
CONSTANT FF2: STD_LOGIC_VECTOR (7 DOWNTO
when"001"=>daut<=shung(1)
O:="10101010”;
when"010"=>daout<=shung(2)
CONSTANT FF3 STDLOGIC_VECTOR(7 DOWNTO
when"011"=>daut<=shung(3)
0:="00110011";
when"=>daut<-shumg(4);
CONSTANT FF4: STD_LOGIC_VECTOR (7 DOWNTO<展开阅读全文
文档分享网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。



链接地址:https://www.wdfxw.net/doc47282440.htm