EDA课程设计报告模板.docx

上传人:b****3 文档编号:2151374 上传时间:2022-10-27 格式:DOCX 页数:27 大小:148.72KB
下载 相关 举报
EDA课程设计报告模板.docx_第1页
第1页 / 共27页
EDA课程设计报告模板.docx_第2页
第2页 / 共27页
EDA课程设计报告模板.docx_第3页
第3页 / 共27页
EDA课程设计报告模板.docx_第4页
第4页 / 共27页
EDA课程设计报告模板.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

EDA课程设计报告模板.docx

《EDA课程设计报告模板.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告模板.docx(27页珍藏版)》请在冰豆网上搜索。

EDA课程设计报告模板.docx

EDA课程设计报告模板

河南农业大学

课程设计报告

 

设计题目:

基于VHDL的数字闹钟的设计

学院:

理学院

专业:

电子信息科学与技术

班级:

学号:

姓名:

电子邮件:

日期:

2012年月日

成绩:

指导教师:

林爱英

…………………………装………………………………订………………………………线………………………………………………………………

河南农业大学

理学院

课程设计任务书

 

学生姓名指导教师林爱英

学生学号专业班级

题目基于VHDL的数字闹钟设计

任务与要求

设计要求:

该数字闹钟包括以下几个组成部分:

(1)显示屏,由6个七段数码管组成,用于显示当前时间(时、分、秒)或设置的闹钟时间;

(2)KEY键:

用于输入新的时间或新的闹钟时间,对每位输入数字的确认;(3)TIME(时间)键,用于确定新的时间设置;(4)ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;(5)扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。

开始日期2012年月日完成日期2012年月日

课程设计所在地点理学院电子科学系机房

一、数字闹钟设计要求:

该数字闹钟包括以下几个组成部分:

(1)显示屏,由6个七段数码管组成,用于显示当前时间(时、分、秒)或设置的闹钟时间;

(2)KEY键:

用于输入新的时间或新的闹钟时间,对每位输入数字的确认;(3)TIME(时间)键,用于确定新的时间设置;(4)ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;(5)扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。

二、实验目的:

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;

libraryieee;

useieee.std_logic_1164.all;

usework.p_alarm.all;

entityalarm_controlleris

port(key:

instd_logic;

alarm_button:

instd_logic;

time_button:

instd_logic;

clk:

instd_logic;

reset:

instd_logic;

load_new_a:

outstd_logic;

load_new_c:

outstd_logic;

show_new_time:

outstd_logic;

show_a:

outstd_logic);

endentityalarm_controller;

architectureartofalarm_controlleris

typet_stateis(s0,s1,s2,s3,s4);

constantkey_timeout:

t_short:

=500;

constantshow_alarm_timeout:

t_short:

=500;

signalcurr_state:

t_state;

signalnext_state:

t_state;

signalcounter_k:

t_short;

signalenable_count_k:

std_logic;

signalcount_k_end:

std_logic;

signalcounter_a:

t_short;

signalenable_count_a:

std_logic;

signalcount_a_end:

std_logic;

begin

process(clk,reset)is

begin

ifreset='1'then

curr_state<=s0;

elsifrising_edge(clk)then

curr_state<=next_state;

endif;

endprocess;

process(key,alarm_button,time_button,curr_state,count_a_end,count_k_end)is

begin

next_state<=curr_state;

load_new_a<='0';

load_new_c<='0';

show_a<='0';

show_new_time<='0';

enable_count_k<='0';

enable_count_a<='0';

casecurr_stateis

whens0=>

if(key='1')then

next_state<=s1;

show_new_time<='1';

elsif(alarm_button='1')then

next_state<=s4;

show_a<='1';

else

next_state<=s0;

endif;

whens1=>

if(key='1')then

next_state<=s1;

elsif(alarm_button='1')then

next_state<=s2;

load_new_a<='1';

elsif(time_button='1')then

next_state<=s3;

load_new_c<='1';

else

if(count_k_end='1')then

next_state<=s0;

else

next_state<=s1;

endif;

enable_count_k<='1';

endif;

show_new_time<='1';

whens2=>

if(alarm_button='1')then

next_state<=s2;

load_new_a<='1';

else

next_state<=s0;

endif;

whens3=>

if(time_button='1')then

next_state<=s3;

load_new_c<='1';

else

next_state<=s0;

endif;

whens4=>

if(key='1')then

next_state<=s1;

else

next_state<=s4;

if(count_a_end='1')then

next_state<=s0;

else

next_state<=s4;

show_a<='1';

endif;

enable_count_a<='1';

endif;

whenothers=>

null;

endcase;

endprocess;

count_key:

process(enable_count_k,clk)is

begin

if(enable_count_k='0')then

counter_k<=0;

count_k_end<='0';

elsif(rising_edge(clk))then

if(counter_k>=key_timeout)then

count_k_end<='1';

else

counter_k<=counter_k+1;

endif;

endif;

endprocesscount_key;

count_alarm:

process(enable_count_a,clk)is

begin

if(enable_count_a='0')then

counter_a<=0;

count_a_end<='0';

elsifrising_edge(clk)then

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1