EDA课程设计报告模板Word文档下载推荐.docx
- 文档编号:15069389
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:27
- 大小:148.72KB
EDA课程设计报告模板Word文档下载推荐.docx
《EDA课程设计报告模板Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告模板Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
成绩:
指导教师:
林爱英
…………………………装………………………………订………………………………线………………………………………………………………
河南农业大学
理学院
课程设计任务书
学生姓名指导教师林爱英
学生学号专业班级
题目基于VHDL的数字闹钟设计
任务与要求
设计要求:
该数字闹钟包括以下几个组成部分:
(1)显示屏,由6个七段数码管组成,用于显示当前时间(时、分、秒)或设置的闹钟时间;
(2)KEY键:
用于输入新的时间或新的闹钟时间,对每位输入数字的确认;
(3)TIME(时间)键,用于确定新的时间设置;
(4)ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;
(5)扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。
开始日期2012年月日完成日期2012年月日
课程设计所在地点理学院电子科学系机房
一、数字闹钟设计要求:
二、实验目的:
1、初步了解可编程逻辑器件(PLD)的基本原理;
2、熟练掌握MAX+PlusⅡ图形编辑器、文本编辑器等不同的输入设计方法,掌握EDA的自顶向下(ToptoDown)的模块化设计思想;
3、了解VHDL语言的语法、句法及结构,能看懂VHDl语言编写的程序,并能熟练运用MAX+PlusⅡ软件对各个程序模块进行波形仿真;
4、熟悉顶层电路的原理图输入法,能应用EDA设计思想进行较复杂系统的分析和设计。
三、设计方案:
按照EDA自顶向下的设计理念,该数字闹钟可以分为告警控制器(ALARM_CONTROLLER)模块、计数器(ALARM_COUNTER)模块、寄存器(ALARM_REG)模块、分频器(DIVIDER)模块、显示驱动电路(DIS_DRIVER)木刻、输入电路(KEY_BUFFER)模块和时钟设置(CLOCK)模块,其顶层电路如下图所示。
四、各个模块的功能:
1.计时功能:
这是本闹钟设计的基本功能,每隔一秒钟计时一次,并在显示屏显示当前时间;
2.闹钟功能:
如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声;
3.设置新的计时器时间:
用户用KEY键输入新的时间。
在输入过程中,输入数字在显示屏上从右到左依次显示。
例如,用户要设置新的时间08:
34:
06,则按顺序输入“0”,“8”,“3”,“4”,“0”,“6”键与之对应,显示屏上依次显示的信息为:
“0”,“08”,“083”,“0834”,“08340”,“083406”。
然后按“TIME”键确认,如果用户在输入任意几个数字后较长时间内,例如5秒,没有按任意键,则计时器恢复到正常的计时显示状态。
4.设置新的闹钟时间:
用户用KEY键输入新的时间,然后按“ALARM”键确认。
5.显示所设置的闹钟时间:
在正常计时显示状态下,用户直接按下“ALARM”键,则已设置的闹钟时间显示在显示屏上。
五、系统的各组成部分的原理框图及功能
1、控制器的原理框图:
2、计数器的原理框图:
3、寄存器的原理框图:
4、分频器的原理框图:
5、显示电路的原理框图:
6、输入电路的原理框图:
7、计时器的原理框图:
其中各部分功能如下:
1、键盘缓冲器KEY-BUFFER是一个移位寄存器,暂存用户键入的数字,并且实现用户键入数字在显示器上从右到左是依次显示。
2、分频器DIVIDER将高速的外部时钟频率分频成每一分钟一次的时钟频率,以便进行时钟计数。
3、计数器ALARM-COUNTER实际上是一个异步复位、异步置位的累加器,通常情况下进行时钟累加计数,必要时可以置入新的时钟值,然后从该值开始新的计数。
4、寄存器ALARM-REG用于保存用户设置的闹钟时间,是一个异步复位寄存器。
5、显示器DRIVER根据需要显示当前时间、用户设置的闹钟时间或用户通过键盘输入的新的时间,同时判断当前时间是否已到了闹钟时间,实际上是一个多路选择比较器。
6、控制器ALARM-CONTROLLER是设计的核心部分,按设计要求产生相应是控制逻辑,以控制其他各部分的工作。
六、系统的主要模块VHDL源程序:
1、控制器源程序alarm-controller:
libraryieee;
useieee.std_logic_1164.all;
packagep_alarmis
subtypet_digitalisintegerrange0to9;
subtypet_shortisintegerrange0to65535;
typet_clock_timeisarray(5downto0)oft_digital;
typet_displayisarray(5downto0)oft_digital;
endpackagep_alarm;
usework.p_alarm.all;
entityalarm_controlleris
port(key:
instd_logic;
alarm_button:
time_button:
clk:
reset:
load_new_a:
outstd_logic;
load_new_c:
show_new_time:
show_a:
outstd_logic);
endentityalarm_controller;
architectureartofalarm_controlleris
typet_stateis(s0,s1,s2,s3,s4);
constantkey_timeout:
t_short:
=500;
constantshow_alarm_timeout:
signalcurr_state:
t_state;
signalnext_state:
signalcounter_k:
t_short;
signalenable_count_k:
std_logic;
signalcount_k_end:
signalcounter_a:
signalenable_count_a:
signalcount_a_end:
begin
process(clk,reset)is
ifreset='
1'
then
curr_state<
=s0;
elsifrising_edge(clk)then
=next_state;
endif;
endprocess;
process(key,alarm_button,time_button,curr_state,count_a_end,count_k_end)is
next_state<
=curr_state;
load_new_a<
='
0'
;
load_new_c<
show_a<
show_new_time<
enable_count_k<
enable_count_a<
casecurr_stateis
whens0=>
if(key='
)then
=s1;
elsif(alarm_button='
=s4;
else
whens1=>
=s2;
elsif(time_button='
=s3;
if(count_k_end='
whens2=>
if(alarm_button='
whens3=>
if(time_button='
whens4=>
if(count_a_end='
whenothers=>
null;
endcase;
count_key:
process(enable_count_k,clk)is
if(enable_count_k='
counter_k<
=0;
count_k_end<
elsif(rising_edge(clk))then
if(counter_k>
=key_timeout)then
=counter_k+1;
endprocesscount_key;
count_alarm:
process(enable_count_a,clk)is
if(enable_count_a='
counter_a<
count_a_end<
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 报告 模板
![提示](https://static.bdocx.com/images/bang_tan.gif)