基于VHDL语言的数字秒表的实现Word下载.docx
- 文档编号:17702695
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:10
- 大小:117.13KB
基于VHDL语言的数字秒表的实现Word下载.docx
《基于VHDL语言的数字秒表的实现Word下载.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的数字秒表的实现Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
(2)计时精度是1s;
(3)具有启/停开关,复位开关,可以在任何情况下使用。
1.2
总体框图
根据系统设计要求,系统的底层设计主要由六十进制计数器模块、二十四进制计数器模块、分频模块、LED显示模块组成。
系统顶层设计图如图所示:
图中左边为三个输入信号en,clk,reset;
分为启/停开关,时钟信号和复位开关。
中间是从上倒下时count24,count60,count60,fenpinqi;
右边是clock1和输出信号wei[3..0],led[6.0]。
2
模块功能设计
由六十进制计数器模块、二十四进制计数器模块、分频模块执行计时功能,输入信号是256Hz,通过分频后为1hz,时钟信号是1Hz作为秒表的秒输入,秒为60进制计数器,分也为60进制计数器,小时采用二十四进制计数器,各级进位作为高位的使能控制。
2.1六十进制计数器模块
该模块部分VHDL源程序如下:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.ALL;
ENTITYcount60IS
PORT(en,Reset,clk:
inSTD_LOGIC;
qa:
outSTD_LOGIC_VECTOR(3DOWNTO0);
qb:
rco:
OUTSTD_LOGIC);
ENDcount60;
ARCHITECTUREaOFcount60IS
BEGIN
process(clk)
variabletma:
STD_LOGIC_VECTOR(3DOWNTO0);
variabletmb:
begin
IfReset='
0'
thentma:
="
0000"
;
tmb:
elsifclk'
eventandclk='
1'
then
ifen='
rco<
=tmb
(2)andtmb(0)andtma(3)andtma(0);
iftma="
1001"
thentma:
iftmb="
0101"
thentmb:
elsetmb:
=tmb+1;
endif;
elsetma:
=tma+1;
endif;
endif;
qa<
=tma;
qb<
=tmb;
endprocess;
ENDa;
2.2二十四进制计数器模块
ENTITYcount24IS
outSTD_LOGIC_VECTOR(3DOWNTO0));
ENDcount24;
ARCHITECTUREa1OFcount24IS
IfReset='
else
ifclk'
ifen='
tmb:
elsiftmb="
0010"
andtma="
0011"
then
tma:
ENDa1;
2.3分频器模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYfenpinqiIS
PORT(CLK,RST:
instd_logic;
CLK_OUT:
outstd_logic);
ENDfenpinqi;
ARCHITECTUREbehavOFfenpinqiIS
signalclk_data:
std_logic;
SIGNALCNT6:
INTEGER:
=0;
PROCESS(CLK)
IFRST='
THENCNT6<
=0;
ELSIFCLK'
EVENTANDCLK='
THEN
IFCNT6=2THENclk_data<
=NOTclk_data;
CNT6<
=0;
ELSECNT6<
=CNT6+1;
ENDIF;
CLK_OUT<
=clk_data;
ENDPROCESS;
ENDbehav;
2.4LED显示模块
ENTITYclock1IS
PORT(CLK:
INSTD_LOGIC;
S1,S2,S3,S4,S5,S6:
INSTD_LOGIC_VECTOR(3DOWNTO0);
WEI:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDENTITY;
ARCHITECTUREbehaveOFclock1IS
SIGNALCNT6:
INTEGERRANGE0TO5:
SIGNALSHUJU:
BEGIN
PRO1:
PROCESS(CLK)
BEGIN
IFCLK'
EVENTANDCLK='
THEN
CNT6<
=CNT6+1;
CASECNT6IS
WHEN0=>
WEI<
="
000"
SHUJU<
=S1;
WHEN1=>
001"
=S2;
WHEN2=>
010"
=S3;
WHEN3=>
011"
=S4;
WHEN4=>
100"
=S5;
WHEN5=>
101"
=S6;
WHENOTHERS=>
NULL;
ENDCASE;
ENDIF;
PRO2:
PROCESS(SHUJU)
CASESHUJUIS
WHEN"
=>
LED<
1111110"
;
0001"
0110000"
1101101"
1111001"
0100"
0110011"
1011011"
0110"
1011111"
0111"
1110000"
1000"
1111111"
1111011"
WHENothers=>
0000000"
ENDCASE;
END;
3仿真波形及分析
各部分模块完成后,用Quartus对程序编译、仿真、得到的仿真波形,各模块仿真波形及顶层仿真波形如下:
3.1六十进制计数器模块仿真
图1-1
图1-2
图1-1、图1-2均为二十四进制计数器仿真波形图
CLK:
时钟信号
RST:
复位信号低电平清零
En:
置数端低电平不让它继续计数
qb、qa:
分别为输出数的十位个位,qb取值范围为0-5,qa取值范围为0-9
rco:
进位信号,当qb=5,qa=0,rco=0时,clk上升沿来到后,qb=0,qa=0,rco=1;
当qb=5,qa=0,rco=1时,clk上升沿来到后,qb=0,qa=0,rco=0
3.2二十四进制计数器模块仿真
图2-1
图2-2
图2-1,图2-2均为二十四进制计数器仿真波形图
输出的四位二进制数,分别对于要输出数的十位个位
3.3分频器模块仿真
因时钟脉冲(为256hz)通过分频器256分频后频率(为1hz),仿真波形显示前一小段,不能看出输出规律,所以做仿真是用3分频后的波形,真正在实验箱上验证是再改。
图3-1
输入分频前的时钟信号
复位信号低电平清零
Clkout:
输出分频后的时钟信号
3.4LED显示模块仿真
Clk:
时钟信号
s1,s2,s3,s4,s5,s6:
输入的的四位二进制数
led:
输出的七位二进制数,对应数码管脚的输出gfedcba
wei:
输出的三位而进制数(输出范围为000-101),控制led输出,
当wei=000时,led输出s1对应的十进制数的数码管脚gfedcba
当wei=001时,led输出s2对应的十进制数的数码管脚gfedcba
当wei=010时,led输出s3对应的十进制数的数码管脚gfedcba
当wei=011时,led输出s4对应的十进制数的数码管脚gfedcba
当wei=100时,led输出s5对应的十进制数的数码管脚gfedcba
当wei=101时,led输出s6对应的十进制数的数码管脚gfedcba
3.5顶层仿真
当wei=000时,led输出对于秒钟的个位
当wei=001时,led输出对于秒钟的十位
当wei=010时,led输出对于分钟的个位
当wei=011时,led输出对于分钟的十位
当wei=100时,led输出对于时钟的个位
当wei=101时,led输出对应时钟的十位
4总结
这次课程设计,让我体会到EDA应用的方便。
用VHDL语言可以对数字集成电路芯片进行方便的描述,经过生成元件后可作为一个标准元件进行调用,同时,借助于VHDL开发设计平台,进行系统功能仿真和时序仿真,让我可以仅用一台电脑就设计出数字秒表,但中途也遇到过很多的问题,比如VHDL语言编写的错误,器件的连接无法编译,时钟的设置等,可是就在这不停地犯错中,让我更清楚地了解了VHDL程序的描述方法,以及Quartur的具体操作方法,所以这次的课程设计,受益匪浅。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 数字 秒表 实现