ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:195.91KB ,
资源ID:4437158      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4437158.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA课程设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EDA课程设计.docx

1、EDA课程设计 课程设计说明书 课程:EDA技术基础题目: 数字钟的设计 闹钟与整点报时模块学生姓名: 王 玲学 号 201265110204 班 级: 1203 班 专 业: 电子信息与科学指导教师: 贺 慧 勇2014年12月20日长沙理工大学课程设计任务书物理与电子科学 学院 电子信息与科学 专业 1203 班 姓名 王玲 课程名称 EDA技术基础 题 目 数字钟的设计 同组设计者:(1)24小时计时显示(时分秒);(2)具有时间设置功能(时,分) ;(3)具有整点提示功能;(4)实现闹钟功能(定时,闹响);发挥部分:(1)实现年月日星期功能,可与时分秒交替显示(2) 按我校现行作息时间

2、表输出打铃信号 工作计划(1)时间本课程设计安排2周时间: 2014.12.22 2015.1.2 (2)进度安排第1周周一周二:查阅资料,拿出整体设计方案,划分模块;第1周周三至周五:各模块的设计、调试、验证。第2周周三前完成项目整体调试和测试。第2周周三周四文档写作整理第2周周五:答辩讨论指导教师:贺慧勇 唐立军 文勇军钟海丽 周晓萍 唐俊龙 2014年11月7 日教研室意见:同意。教研室主任 文勇军 2014年11月11 日 长沙理工大学课程设计成绩评定表学生姓名: 王玲 学号: 201265110204 专业班级: 电子信息与科学1203 课程设计题目: 电子钟的设计(闹钟与整点报时模

3、块) 评分项目要求分值得分学习态度学习态度认真,遵守纪律。10设计方案调研充分,方案设计合理。20工作量完成了任务书规定的工作量。实际设计、调试效果好。40设计报告完全符合撰写规范要求,结构严谨,逻辑性强,层次清晰,表述准确,文字流畅。20答辩准备充分,概念清楚,能准确流利地回答各种问题。10总分备注:成绩: 指导教师: 年 月 日1 数字钟设计闹钟模块基本任务要求 42设计思想 43简述闹钟模块的输入与输出 54分进程描述 65仿真结果与分析 76简述数字钟的设计总成果 107总结 11参考文献 13代码附件 13 基本任务要求:运用Quartus13.1软件平台,用VHDL语言描述并设计的

4、闹钟模块满足可调闹钟时间,当时钟时间到达闹钟时间后会响闹铃,(由于实验室权限问题会以FPGA开发板上12个LED灯交替发光来表现);整点报时过程表现为整点的前十秒内响铃,(以FPGA开发板上一个LED灯交替发光来实现)。设计思想:闹钟模块要以分频模块、计数器模块和译码显示模块为基础,将闹钟模块分为三个进程,一个进程用来实现调闹钟,一个进程来实现闹响闹钟(即实现LED灯交替发光),另一个进程来是实现整点报时。 (上面截图为数字钟整体编译后的RTL电路的闹钟模块)简述闹钟模块图的输入与输出:上图中的输入粗黑实线为计数器模块输出的小时、分钟的高低位和秒钟的高位(都用四位的二进制表示);输出的粗黑实线

5、为定的闹钟时间(包括小时和分钟),将送到译码显示模块显示闹钟时间,闹钟时间与时钟都在FPGA上的数码管显示,用二选一实现交替显示。clk和clk1都是经过分频器分出的不同频率的信号分别用于整点报时的闪灯脉冲与闹钟调时、闹响的闪灯脉冲。AlarmEn和alarmADJ分别为控制闹钟闹响和控制闹钟调时的输入脉冲;ADJ1和ADJ2就分别为控制闹钟调小时与分钟的的输入脉冲(可与校时钟的开关共用)。sound13为整点报时的LED灯的输入信号,其余的为闹钟闹响时的LED灯的输入信号。分进程描述:1.调闹钟进程:先列出调闹钟进程的部分VHDL语言描述:if ( alarmADJ=0)then if cl

6、k1 event and clk1 =1 then if ADJ1=0 then if(hour_unitcount9)then hour_unitcount:=hour_unitcount+1; else hour_unitcount:=0000; hour_decadecount:=hour_decadecount+1; end if; if(hour_decadecount=2 and hour_unitcount=4) then hour_decadecount:=0000;hour_unitcount:=0000; end if; END IF; 分析:alarmADJ为低电平且AD

7、J1也为低电平时,随着clk1的脉冲信号来计数,小时为24进制数,可从上面的语句中看出计数的周期为24;根据调闹钟小时的部分代码可类似的分析出调闹钟分钟的基本逻辑。2.整点报时进程:process (clk,mh,ml,sh) variable count1 :std_logic_vector(3 downto 0); begin if(ml=1001 and mh=0101 and sh=0101)then if clkevent and clk=1 then if(count11) then count1:=count1+1;sound13 =1; else sound13=0;count

8、1:=0000; end if; end if; else sound13=0;count1:=0000; end if;end process;分析:定义count1为变量来计clk脉冲的上升沿个数,sound13为LED的输入信号,mh、ml和sh分别是分钟的高位、分钟的低位和秒钟的高位,当时间的分钟与秒钟到达59:50时开始以每秒闪一次LED灯来表现整点报时,整点报时闪灯10s。3.闹钟响铃进程:先列出调闹钟进程的部分VHDL语言描述: if(AlarmEn=0) then if(hourl=hour2 and hourh=hour1 and ml=min2 and mh=min1)th

9、en if clk1event and clk1=1 then if(count1) then count:=count+1; sound1 =1;sound3 =1;sound5=1;sound7=1;sound9=1;sound11=1; sound2=0;sound4=0;sound6=0;sound8=0;sound10=0;sound12=0;else sound1 =0;sound3 =0;sound5=0;sound7=0;sound9=0;sound11=0;sound2=1;sound4=1;sound6=1;sound8=1;sound10=1;sound12=1;coun

10、t:=0000; end if; end if;分析:可参照整点报时进程来分析,相比整点报时进程,LED闪灯的个数增加了,且clk1的脉冲频率大于clk(即表现为LED的闪灯频率比整点报时的闪灯频率快);闹响的时间为一分钟,接到FPGA开发板上后可手动关掉闹钟。仿真结果与分析:(以下仿真均为波形功能仿真)1.调闹钟进程的波形仿真结果截图分析:(1)仿真环境设置:仿真设置的结束时间为;输入的clk和clk1脉冲的周期分别为10ns和5ns;alarmADJ为低电平输入;ADJ1和ADJ2为高低电平交替输入;其他的输入可以不考虑。(2)仿真内容:当alarmADJ为低电平时,调节ADJ1和ADJ2

11、分别可以对ADJhourh、ADJhourl和ADJmh、ADJml进行调节,从上图中可看出当ADJ1为低电平时,ADJhourh和ADJhourl会自动随clk1脉冲来调节到相应的小时,当ADJ2为低电平时,ADJmh和ADJml会自动随clk1脉冲来调节到相应的分钟。从仿真结果看出最后调出的闹钟时间为00:48。经过整个数字钟的仿真可以知道ADJ1和ADJ2没有相关(即调节小时与调节分钟的按键互不受影响)。小时的24进制可从上图中看出,分钟的60进制已经经过了仿真测试。2.整点报时进程的波形仿真结果截图分析:(1)仿真环境设置:仿真设置的结束时间为;在上一个进程仿真环境中加入了小时高低位、

12、分钟高低位和秒钟高位,即输入了几个不同的时间。(2)仿真内容:从仿真结果中看出当输入的分钟与秒钟时间到达59:50时,sound13将随着clk的脉冲信号产生高低电平交替输出(在FPDA开发板上表现为LED闪灯)。3.闹钟响铃进程的波形仿真结果截图分析:(1)仿真环境设置:仿真设置的结束时间为;在整点报时进程的仿真环境设置中加入00:48的输入时间,为了验证当时钟时间到达闹钟时间后的sound(112)的输出变化。(3)仿真内容:从仿真结果可看出当调好闹钟时间为00:48后,当时钟时间走到00:48时,sound(112)将随着clk1的脉冲信号产生高低电平交替输出(在FPDA开发板上表现为L

13、ED闪灯)。也可看出sound(112)中的基数与偶数灯是交替闪烁的。4.结合其他模块后,在FPGA开发板上的仿真分析如下:开关SW17上拉后数码管显示时钟时间,下拉后显示闹钟时间;当SW17下拉显示闹钟时间后,通过按键KEY2和KEY1分别调闹钟的小时和分钟,按键按下时会自动计数,当达到预想的数值后松开按键,这时就已经订好闹钟了;开关SW16下拉后为闹钟开启模式,SW16上拉后为闹钟关闭模式,即当时钟时间到达闹钟时间后,有12个LED灯交替闪烁,会连续闪烁一分钟,中途可通过开关自动关闭闹钟(即停止闪烁)。简述数字钟的设计总成果:整个数字钟设计分为五个模块,分别为分频模块、校时模块、计数器模块

14、、译码器显示模块和闹钟与整点报时模块;拓展并完成了按学校作息时间打铃(打铃用LED闪灯来表现)。电路板固定的晶振信号为50MHz,通过分频模块以分频分出分别为倍频、倍频和倍频的三个信号;倍频的信号输入给秒计时器和整点报时进程,倍频的信号输入给校时模块和调闹钟进程,倍频输入给打铃模块,分频模块为数字钟的基础模块。通过较时模块与计数器模块后的时钟信号分别为小时的高低位、分钟的高低位和秒钟的高低位(都是有四位的二进制数表示),秒的低位直接由译码器显示模块输出到数码管显示;小时的高低位、分钟的高低位和秒钟的高位还要接到闹钟与整点报时模块,然后再通过译码器显示模块输出到数码管显示,时钟显示与闹钟显示通过

15、二选一来实现。拓展的打铃模块也需要小时的高低位、分钟的高低位和秒钟的高位的输入,来实现到达打铃时间后LED灯会闪烁10s。(其中闹钟与整点报时模块【调闹钟进程与整点报时进程】和打铃模块用到的LED灯均没有联系)。总结:开始课程设计的第一天老师就把全部的课题大概的讲解了一遍,听过一遍后觉得所有的题目都无从下手,毕竟之前有过几次上机实验都是自己按照书上的模板敲代码;当分组及分任务分完后,我们一组5个人拿到数字钟设计的任务书,一开始确实没头绪,便在网上和图书馆去找与数字钟相关的资料;用了差不多一天半的时间确认每个人的任务模块;遇到的第一个问题就是分频,也就和老师最近一次综合作业的问题相似,最后决定先

16、弄清根源问题;在网上找了些资源与代码运行了一遍,并通过波形仿真来加深对VHDL语句的理解,也及时向学长请教并通过了编译,最后就开始入手数字钟模块的设计。虽说每个人是设计不同的模块,但必须先整体了解数字钟的功能再进行个人的设计,前后模块的联系也要及时与组员交流。闹钟与整点报时模块可以说是在基本的数字钟完成后的基础上实现的。在FPGA开发板没有发下来之前还没有完全确认每个模块的大概输入与输出,在FPGA开发板发下来后,首先就单独的测试了译码器显示模块,用四个按键来表示二进制的输入,确保0到9的数字在一个数码管上显示出来,因为是第一次接触到FPGA开发板,所以在开发板连接到计算机并输出显示遇到了些难

17、题,最后都在老师与学长的帮助下通过了调试并仿真成功。有了之前译码器显示模块的电路板仿真成功,接下来就准备用电路板仿真测试秒钟的输出,其中包括分频模块、秒计数模块和译码器显示模块,建立了新的工程,其顶层文件调用了分频模块、秒计数模块和两个译码器显示模块,在调试整个工程中遇到些问题,主要是顶层文件的格式不太熟悉,然后参考了全加器的VHDL语言描述解决了难题,秒钟显示在两个数码管上并自动计时,经过一分钟的等待可看出为60进制,单独显示秒钟也运行成功了。然后就直接在秒钟的工程中加入了分校时模块和分计数模块,成功的仿真出了分钟与秒钟的输出,再一步步加入校时模块、时计数模块和闹钟与整点报时模块。最后出来了

18、大致的数字钟设计的成果,当时控制闹钟的按键有4个,控制时钟复位及校时的按键有3个,进一步优化成4个按键控制整个数字钟,将调闹钟的按键与时钟校时的按键共用就完成了优化。最后再加入了打铃模块,最后也对着标准时钟测试了误差,没有发现大的问题。 通过这次EDA的课程设计学到了团队工作的重要性,也明白分模块运行成功后对整体工程的重要性,有没有基础好像都没那么重要,重要的是对待课设的态度与和成员交流的热心并虚心接受同组成员及老师的建议。参考文献:代码附件:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ent

19、ity alarm isport(clk,clk1 :in std_logic; alarmADJ :in std_logic; AlarmEn :in std_logic; ADJ1,ADJ2 :in std_logic; hourl :in std_logic_vector(3 downto 0); hourh :in std_logic_vector(3 downto 0); ml :in std_logic_vector(3 downto 0); mh,sh :in std_logic_vector(3 downto 0); ADJhourl :out std_logic_vector

20、(3 downto 0); ADJhourh :out std_logic_vector(3 downto 0); ADJml :out std_logic_vector(3 downto 0); ADJmh :out std_logic_vector(3 downto 0); sound1,sound3,sound5,sound7,sound9,sound11 :out std_logic; sound2,sound4,sound6,sound8,sound10,sound12 :out std_logic; sound13 :out std_logic); end; architectur

21、e bhv of alarm is signal hour1,hour2,min1,min2:std_logic_vector(3 downto 0); begin process(alarmADJ,ADJ1,ADJ2,clk1) variable hour_decadecount,hour_unitcount,min_decadecount,min_unitcount:std_logic_vector (3 downto 0 ); begin if ( alarmADJ=0)then if clk1 event and clk1 =1 then if ADJ1=0 then if(hour_

22、unitcount9)then hour_unitcount:=hour_unitcount+1; else hour_unitcount:=0000; hour_decadecount:=hour_decadecount+1; end if; if(hour_decadecount=2 and hour_unitcount=4) then hour_decadecount:=0000;hour_unitcount:=0000; end if; END IF; if ADJ2=0then if(min_unitcount9) then min_unitcount:=min_unitcount+

23、1; else min_decadecount:=min_decadecount+1; min_unitcount:=0000; end if; if(min_decadecount=6 and min_unitcount=0)then min_decadecount:=0000; min_unitcount:=0000; end if; end if; end if; end if; hour1=hour_decadecount; hour2=hour_unitcount; min1=min_decadecount; min2=min_unitcount; end process; proc

24、ess(AlarmEn,clk,hourl,hourh,ml,mh,hour1,hour2,min1,min2) variable count :std_logic_vector(3 downto 0); begin if(AlarmEn=0) then if(hourl=hour2 and hourh=hour1 and ml=min2 and mh=min1)then if clk1event and clk1=1 then if(count1) then count:=count+1; sound1=1;sound3=1;sound5=1;sound7=1;sound9=1;sound1

25、1=1; sound2=0;sound4=0;sound6=0;sound8=0;sound10=0;sound12=0; else sound1=0;sound3=0;sound5=0;sound7=0;sound9=0;sound11=0; sound2=1;sound4=1;sound6=1;sound8=1;sound10=1;sound12=1; count:=0000; end if; end if; else sound1=0;sound3=0;sound5=0;sound7=0;sound9=0;sound11=0; sound2=0;sound4=0;sound6=0;sou

26、nd8=0;sound10=0;sound12=0; count:=0000; end if; else sound1=0;sound3=0;sound5=0;sound7=0;sound9=0;sound11=0; sound2=0;sound4=0;sound6=0;sound8=0;sound10=0;sound12=0; count:=0000; end if; ADJhourh=hour1; ADJhourl=hour2; ADJmh=min1; ADJml=min2; end process; process (clk,mh,ml,sh) variable count1 :std_logic_vector(3 downto 0); begin if(ml=1001 and mh=0101 and sh=0101)then if clkevent and clk=1 then if(count11) then count1:=count1+1;sound13 =1; else sound13=0;count1:=0000; end if; end if; else sound13=0;count1:=0000; end if;end process; end;

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

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