基于VHDL的数字钟设计文档格式.docx
- 文档编号:6422751
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:22
- 大小:2.22MB
基于VHDL的数字钟设计文档格式.docx
《基于VHDL的数字钟设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于VHDL的数字钟设计文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
4.单元模块的设计………………………………………………………………….6
4.1秒计数器的模块………………………………………………………….……..6
4.2分计数器的模块…………………………..…………………………….............8
4.3时计数器的模块……………………………………..……………………...…10
4.4整点报时器模块…………………………………………………………….....12
4.5调时调分模块………………………..………………………………….……..13
4.6LED显示译码器模块…………………………………………..………..…..15
5.仿真结果………………………………………………………………………..17.
结语.........................................................................................................................17
参考文献...............................................................................................................18
绪论
EDA是电子设计自动化(ElcctronicDesignAutomation)的缩写,是90年代初从CAD(计算机辅助设备),CAM(计算机辅助制造),CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL完成的设计文件,自动的完成逻辑编译,化简,分割,综合及优化,布局布线,仿真以及对特定目标芯片的适配编译和编程下载等工作,这种将设计实体外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
其优点是:
与其它硬件描述语言相比,VHDL具有更强的行为描述能力,从而解决了他成为系统设计领域最佳的硬件描述语言,强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证;
VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能和可行性,及时可对设计进行。
它的计时周期为24小时,显示满刻度为24时59分59秒,另外还具有校时功能和闹钟功能。
总的程序由几个各具不同功能的单元模块程序拼接而成,
其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。
并且使用QUARTUSII软件进行电路波形仿真,下载到EDA实验箱进行验证。
1.设计目的
1)熟练地运用数字系统的设计方法进行数字系统设计;
2)能进行较复杂的数字系统设计;
3)按要求设计一个数字钟。
2.设计容
1)要求显示秒、分、时,显示格式如下:
图显示格式
2)可清零、可调时,具有整点报时功能。
3.设计原理
3.1数字钟的基本工作原理:
数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,
在控制逻辑电路的控制下完成预定的各项功能。
数字钟的基本原理方框图:
数字钟实现原理框图
1)时钟计数:
完成时、分、秒的正确计时并且显示所计的数字;
对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。
2)时间设置:
手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。
我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。
3)清零功能:
reset为复位键,低电平时实现清零功能,高电平时正常计数。
可以根据我们自己任意时间的复位。
4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。
产生“滴答.滴答”的报警声音。
5)LED灯在时钟显示时有花样显示信号产生。
即根据进位情况,LED不停的闪烁,从而产生“花样”信号。
根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。
采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。
显示:
小时采用
数字时钟控制单元时调整分调整使能端信号CLK信号时显示分显示秒显示24进制60进制60进制LED显示整点报时花样显示
24进制,而分钟均是采用6进制和10进制的组合。
3.2数字钟设计的电路原理图
24进制数字钟的电路图
4.单元模块的设计
4.1.秒计数器模块
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYsecondIS
PORT(
clk,reset,setmin:
INSTD_LOGIC;
enmin:
OUTSTD_LOGIC;
daout:
outstd_logic_vector(6downto0));
ENDentitysecond;
ARCHITECTUREfunOFsecondIS
SIGNALcount:
STD_LOGIC_VECTOR(6downto0);
SIGNALenmin_1,enmin_2:
STD_LOGIC;
----enmin_1为59秒时的进位信号
BEGINdaout<
=count;
----enmin_2由clk调制后的手动调分脉冲信号串
enmin_2<
=(setminandclk);
-----setmin为手动调分控制信号,高电平有效
enmin<
=(enmin_1orenmin_2);
----enmin为向分进位信号
process(clk,reset,setmin)
begin
if(reset='
0'
)thencount<
="
0000000"
;
----若reset为0,则异步清零
elsif(clk'
eventandclk='
1'
)then----否则,若clk上升沿到
if(count(3downto0)="
1001"
)then----若个位计时恰好到“1001”即9
if(count<
16#60#)then----又若count小于16#60#,即60H
if(count="
1011001"
)then----又若已到59D
enmin_1<
='
count<
----则置进位为1及count复0
elsecount<
=count+7;
----未到59D,则加7,而+7=+1+6,则作“加6校正”
endif;
else----若count不小于16#60#(即count等于或大于16#60#)
count<
----count复0
----endif(count<
16#60#)
elsif(count<
16#60#)then----若个位计数未到“1001”则转此句再判
=count+1;
----若count<
16#60#则count加1
after100ns;
----则没有发生进位
else
endprocess;
endfun
编译过程:
仿真图如下:
4.2.分计数器模块
ENTITYminuteIS
clk,clk1,reset,sethour:
enhour:
ENDentityminute;
ARCHITECTUREfunOFminuteIS
SIGNALenhour_1,enhour_2:
BEGIN
daout<
enhour_2<
=(sethourandclk1);
enhour<
=(enhour_1orenhour_2);
process(clk,reset,sethour)
)then
----若reset=0,则异步清零
16#60#)then----又若count小于16#60#,即60
if(count="
enhour_1<
----则置进位为1
ELSE
----若count未到59D,则加7,即作“加6校正”
----使前面的16#60#的个位转变为8421BCD的容量
else
----count复0(有此句,则对无效状态电路可自启动)
16#60#)then
----若count<
after100ns;
----没有发生进位
----否则,若count不小于16#60#count复0
ENDfun;
4.3.时计数器模块
ENTITYhourIS
clk,reset:
outstd_logic_vector(5downto0));
ENDentityhour;
ARCHITECTUREfunOFhourISSIGNALcount:
STD_LOGIC_VECTOR(5downto0);
process(clk,reset)
)thencount<
000000"
if(count(3downto0)="
)then----若个位计时恰好到‘’1001‘’即9
=16#23#)then----23进制
----若到23D则
----复0
16#23#)then----若未到23D,则count进1
else----否则清零
4.4.整点报时器模块
ENTITYalertIS
clk:
dain:
INSTD_LOGIC_VECTOR(6DOWNTO0);
speak:
lamp:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDalert;
ARCHITECTUREfunOFalertIS
signalcoun:
std_logic_vector(1downto0);
signalcount1:
speaker:
process(clk)
speak<
=count1
(1);
if(clk'
if(dain="
if(count1>
10"
count1<
00"
----count1为三进制加法计数器
=count1+1;
endprocessspeaker;
lamper:
if(rising_edge(clk))then
if(coun<
if(coun="
lamp<
001"
----循环点亮三只灯
elsif(coun="
01"
010"
100"
coun<
=coun+1;
endprocesslamper;
4.5.调时调分模块
useieee.std_logic_arith.all;
ENTITYseltimeIS
clk1,reset:
sec,min:
INSTD_LOGIC_VECTOR(6downto0);
hour:
instd_logic_vector(5downto0);
OUTSTD_LOGIC_vector(3downto0);
dp:
OUTstd_LOGIC;
sel:
outstd_logic_vector(2downto0));
ENDseltime;
ARCHITECTUREfunOFseltimeIS
STD_LOGIC_vector(2downto0);
BEGINsel<
process(clk1,reset)
000"
elsif(clk1'
eventandclk1='
if(count>
101"
casecountis
when"
=>
daout<
=sec(3downto0);
dp<
daout(3)<
daout(2downto0)<
=sec(6downto4);
=min(3downto0);
011"
=min(6downto4);
=hour(3downto0);
whenothers=>
daout(3downto2)<
daout(1downto0)<
=hour(5downto4);
endcase;
endfun;
4.6.LED显示译码器模块
ENTITYdeledIS
PORT(num:
INstd_logic_vector(3downto0);
led:
OUTstd_logic_vector(6downto0));
enddeled;
ARCHITECTUREfunOFdeledIS
led<
1111110"
whennum="
0000"
else
"
0110000"
0001"
1101101"
0010"
1111001"
0011"
0110011"
0100"
1011011"
0101"
1011111"
0110"
1110000"
0111"
else
1111111"
1000"
1111011"
1110111"
1010"
0011111"
1011"
1001110"
1100"
0111101"
1101"
1001111"
1110"
1000111"
1111"
编译过程:
5.仿真结果
下图是最后仿真的结果,但是总是无法选中芯片,都是000,得不到正确的结果。
可能的原因是FPGA的时钟输出为20MHZ,经过分频器得到1KHZ和1HZ的频率需要多次的计数,由于计数值太大无法得到正确的仿真结果。
数字钟仿真波形
6.结语
本次试验的数字时钟能只够显示时间,其它功能如闹铃、调时、分、秒都能在此基础上进一步的实现,由于时间有限只能调试到这里。
经过努力,简易电子时钟的设计基本上算是完成了,在整个设计中,我最大的体会就是:
难!
我们在本次的课程设计中,发现了很多问题,同时做起来也很难不顺手,看着简单的电路,要动手把它设计出来实非易事,主要原因是我们没有经常动手设计电路,这就要求我们在以后的学习中,应该注意到这一点,更重要的是我们要学会把从书本上学到的知识和实际电路联系起来,这不论对我们以后的学习还是就业,都会起到很大的促进和帮助,我相信,通过这次的课程设计,在下一阶段的学习中我们会更加努力,力争把这门课学好学精。
同时通过本次课程设计,巩固了我们以前学过的专业知识,通过这次的程序设计,使我们对数字系统结构也有了更进一步的了解与认识,同时对数据库软件EDA技术,VHDL语言等系列知识都有了一定的了解与认识。
使用EDA技术开发页面的能力也有了提高,也使我们把理论与实践从正真意义上结合了起来,考验了我们的动手能力,查阅相关资料的能力,还有组织材料的能力。
通过此次实践,我们从中可以找出自己知识的不足与欠缺,以便我们在日后的学习中得以改进与提高。
经过本次设计使我们对所学习到的知识得以进一步实践,这将对我们走出校园走向社会走向工作岗位奠定坚实的基础。
最后感老师对我们的指导,以及同学们对我的帮助,使得实验能够顺利完成!
参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 数字 设计