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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

EDA课程设计报告数字电子钟.docx

1、EDA课程设计报告数字电子钟数字钟一、【课题要求】1.设计一个能显示1/10秒、秒、分、时的12小时数字钟。2.熟练掌握各种计数器的使用。3.能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。4.能用低位的进位输出构成高位的计数脉冲。1、时钟源使用频率为0.1HZ的连续脉冲。2、设置两个按钮,一个供“开始”及“停止”使用,一个供系统“复位”用。3、时钟显示使用数码管显示。4、“时显示”部分注意12点后显示1点。5、注意各部分的关系,由低位到高位逐级设计、调试。二、【分析与设计】数字钟是计数器的综合应用,数字钟由十分之一秒、秒钟、分钟、时钟组成,十分之一秒由十进制计数器74160组成,

2、秒钟由六十进制计数器构成,分钟由六十进制计数器,时钟由十二进制计数器构成。该数字钟程序的底层文件主要有六进制计数器模块、六十进制计数器模块和十二进制模块,对各模块进行封装,供顶层文件调用,各模块有VHDL文本设计及原理图设计。输入端clk是连续脉冲,clrn是高电平系统复位,en是高电平使能端,输出端是十分之一秒位、秒钟个位、秒钟十位、分钟个位、分钟十位、时钟个位、时钟十位,最后由7个数码管显示各位的值。该数字钟程序的底层文件主要有六进制计数器模块、六十进制计数器模块和十二进制模块,对各模块进行封装,供顶层文件调用,各模块有VHDL文本设计及原理图设计。程序框图: 十分之一秒 秒钟 分钟 小时

3、 三、【程序代码及原理图】1、六进制计数器VHDL代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cout6 IS PORT(clk,en,clrn,load:IN STD_LOGIC; date:IN STD_LOGIC_VECTOR(2 DOWNTO 0); cnt:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); co:OUT STD_LOGIC );END cout6;ARCHITECTURE behave OF cout6 IS SIGNAL q:S

4、TD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN co=1 WHEN(q=101)AND(en=1)ELSE0; PROCESS(en,clk) BEGIN IF clrn=0 THEN q=000; ELSIF(clkevent and clk=1) THEN IF load=0 THEN q=date; ELSIF en=1 THEN q=q+1; IF(q=101)THEN q=000; END IF; END IF; END IF; END PROCESS;cnt=q;END behave; 波形仿真 : 2、六十进制计数器原理图:波形仿真:3、十二进制计数器VHDL

5、代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cout12 ISPORT(clk,clrn,ldn,en:IN STD_LOGIC; ha:IN STD_LOGIC_VECTOR(3 DOWNTO 0); hb:IN STD_LOGIC; qa:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); qb:out STD_LOGIC);END cout12;ARCHITECTURE behav OF cout12 IS SIGNAL q:STD_LOGIC_VEC

6、TOR(3 DOWNTO 0); SIGNAL b:STD_LOGIC; SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(en,clk) BEGIN IF clrn=0 THEN q=0000; ELSIF(clkevent and clk=1) THEN IF ldn=0 THEN b=hb; a=ha; ELSIF en=1 THEN q=q+1; IF(q=1011)THEN qb=1;ab=0;ab=0;ab=0;ab=0;ab=0;ab=0;ab=0;ab=0;ab=0;ab=1;ab=1;aNULL; END CASE; E

7、ND PROCESS; qa=a; qb=b;END ARCHITECTURE behav;波形仿真:4、数字钟原理图:波形仿真:四、【结果与测试】根据六进制的波形图判断出六进制的设计正确,实现了05的计数,并且在5处产生进位,将六进制进行封装与十进制74160根据原理图设计成六十进制计数器,然后将它进行封装,根据六十进的波仿真图可以看出实现了059的计数,并且在59处产生进位,然后将它进行封装。根据十二进制的波形仿真图可以看出实现了011的计数,最后根据顶层原理图实现数字钟的设计,根据波形仿真图,由于要给clk赋很多的脉冲才会计到小时,所以我只测试到了一分钟,十分之秒计到9产生进位,秒开始计

8、数,当秒计到59,产生进位,分钟开始计数,因为秒和分钟都是调用的六十进制计数器,秒钟功能是正确的,同理分钟也是可行的,只要来足够的脉冲,就可以实现数字钟,由于纸的限制,数字钟的波形仿真图只计到了一部分,但是根据现有的判断可以断定数字钟的设计是正确的。接下来是做硬件测试,先选Device,EPF10K10LC84-4,然后进行引脚锁定,由于是简单的数字钟,我就没有对预置端进行引脚锁定。根据数字钟功能要求可以选实验电路结构图NO.5。时钟源clk 接clock0,引脚号2;使能端en用键7接PIO6,引脚号11;清零端clrn用键6接PIO5,引脚号10;时钟十位qb用数码管8接 PIO44,引脚

9、号72。时钟个位qa3.0用数码管7, qa3接PIO43,引脚号71;qa2接PIO42引脚号70;qa1接PIO41,引脚号67;qa0接PIO40,引脚号66。分钟十位qmb2.0用数码管6,qmb2接PIO38,引脚号64;qmb1接PIO37,引脚号62;qmb0接PIO36,引脚号61。分钟个位qma3.0用数码管5,qma3接PIO35,引脚号60,qma2接PIO34,引脚号59;qma1接PIO33,引脚号58;qma0接PIO32,引脚号54.秒钟十位qsb2.0用数码管4,qsb2接PIO30,引脚号52;qsb1 接PIO29,引脚号51;qsb0 接PIO28,引脚号

10、50。秒钟个位qsa3.0用数码管3,qsa3接PIO27,引脚号49;qsa2接PIO26,引脚号48;qsa1接PIO25,引脚号47;qsa0接PIO24,引脚号39。十分之一秒m3.0用数码管2,m3接PIO23,引脚号38;m2接PIO22,引脚号37;m1接PIO21,引脚号36;m0接PIO20,引脚号35。五、【日志与调试记录】第一周周二:今天老师分了组,发了课题,是数字电子钟。我先是好好地研究了一下课题要求,了解设计的要求,跟同组的同学一起讨论了设计要求后,大概对设计有了个清楚的概念,在脑子中也理出了头绪。因为有一段时间没有用过MAXPLUS2这个软件,我们首先熟悉了一下软件

11、的环境,复习了一下EDA编程的大概步骤,经过一段时间的练习,对这软件慢慢熟悉起来了。在设计之初,我们首先建立总的文件夹clock,准备将所以的文件保存在这个文件夹下。然后我们开始了数字钟的设计,第一步,先是六进制计数器的设计,因为在学习EDA课的时候做过类似计数器的实验,不一会儿我们用VHDL语言编好了程序,在进行编译的时候出现了很多的语法问题,还有库选择有所遗漏等等问题,经过修改,编译通过之后,进行波形仿真,第一遍仿真结果没有达到预期的效果,于是我们又重新在程序里找问题,然后重新仿真后,发现进位位在产生进位后没有立即清零,后来对程序进行修改后,最后的波形仿真达到六进制计数器的结果,最后将六进

12、制计数器封装好,以便给六十进制计数器调用。第一天只做到这些。第一周周五:因为六进制计数器已经做好,将它与十进制计数器74160根据原理图设计实现六十进制计数器。我们用原理图设计,重点就是把十进制计数器的进位位送到六进制计数器的使能端,其他的输入输出端根据需要加端子就好了,考虑到要把六十进制计数器的计数值分两位设计,所以在画原理图的时候将输出端分成两个端子。然后开始波形仿真的时候,我发现六十进制计数器不能够计数,对着原理图看了很久,一直觉得没有什么错误,后来发现总线的连接有点问题,所以就把总线那边的线再重新画了一次,再次进行波形仿真时,六十进制计数器的功能实现了,最后对六十进制进行封装,供顶层的

13、数字钟调用。接着,我们想还是用VHDL语言编写十二进制计数器。十二进制计数器的编写在计数方面跟六进制文本设计类似,就是在输出的时候需要有两个输出端口,分别为十位和个位。除了这个问题,还有就是十二进制计数器的计数是从0开始计到11,然后再从0又开始新一轮的计数。而我们的十二进制计数器的要求是从1计到12,再跳回12,所以我们刚开始的时候在想怎么解决这个问题,后来翻看EDA课本,我们想到用case语句,就是当计到0时,运用case语句显示12,其余的就是当计到1,用case语句显示1就好了,剩下来的类推,就这样就把十二进制的编好了,在进行波形仿真时也跟预期的结果一样,最后进行封装。到今天为止,把数

14、字钟要用的底层的六十进制计数器和十二进制计数器完成好了。第二周周二:因为第一周的时候,我们已经把数字钟要用的那些底层的计数器都做好,并且仿真结果也对了,所以,今天就是把那些底层文件用原理图连接起来就好了。在连接原理图的时候,最主要的就是调用一个十进制计数器74160,两个六十进制计数器,一个十二进制计数器,从74160开始,将它的进位位连接到第一个六十进制的使能端,再将第一个六十进制计数器的进位位连接到第二个六十进制计数器的使能端,最后将六十进制计数器的进位位连接到十二进制计数器的使能端,其余的clk,clrn都是共用一个clk和clrn以达到同步计数和系统复位,由于第一次画原理图的时候画总线

15、那边出现问题,这次在画原理图的时候特别注意了总线那边的连接,还有就是有些输入输出端子是几位的,要在分线的那边对应标号端子,画好原理图后基本没有什么错误,在进行波形仿真的时候,因为要计到小时的话需要来很多的脉冲,所以我们就大概计到了分钟,因为秒钟和分钟调用的同样的计数器,应该不会有错,最后发现在计到59秒的时候没有向分钟进位,在查看了一下原理图后觉得没有什么问题,所以把问题转向我们设计的底层文件,后来发现六进制计数器的进位位在计到5的时候没有进位而在下个0的时候产生的进位,在翻看书上的计数器的编写的程序后发现我们的进位编写在进位里面,而他的却是编在architecture里面的,所以我们将co的

16、那条语句放在了结构体里面,重新保存在进行仿真的时候,我发现进位位这次是出现在计到5的时候,然后就立刻清零了,再将六十进制计数器重新封装,在六十进制计数器的原理图中也重新调用,再进行封装,最后将顶层的原理图重新调用六十进制计数器,在保存之后,进行波形仿真的时候,发现原来的问题没有了,当秒钟计到59时,分钟开始计数,由此判断我们的数字钟的设计应该是可以了。在完成这些的基础之上,我们开始进行引脚的锁定,因为数字钟的输出需要用到7个数码管,所以我们选定了N0.5这张图。clk,clrn,en的锁定都没有什么问题,在锁定输出的,因为我们的输出有的是4位,有的是3位的,还有的是2位的,所以在锁定引脚时注意

17、3位直接锁数码管的低3位,2位的直接锁数码管的低2位,按照这样的方法,经过仔细的锁定之后就完成了,今天的任务到此结束,我们就等着硬件测试了。第二周周五:因为之前的工作都已做好,我们就找了一台实验箱开始测试,在下载之前打开实验箱的电源,并且选择模式5,然后在电脑上进行下载,下载完成后,找个小帽插在clock0上的1HZ,也可以选择其他clock0的频率,然后按下键7和键6,因为clrn是低电平清零,en是高电平使能。按下之后发现数码管上的数在杂乱无章地跳着,系统复位之后重新再次测试一下,发现还是不行,后来我们想可能是clock的问题,换了一下其他的,并且重新锁了一下,还是不能实现数字钟的功能。之

18、前我们也将底层的那些计数器锁定引脚测试了一下,是能够计数的,但是计数计的不是很稳定。最后我们换了几台实验箱终于开始计数了,不过有时还是会不稳定,系统复位后,多试几次之后发现数字钟的功能实现了。六、【心得与体会】 在进行EDA课程设计的过程中,我发现像我们的课题数字钟就是需要调用多个底层文件,所以在设计底层文件的时候,必须要思路清晰,理清头绪,熟练掌握EDA中VHDL语言的编程方法才能够实现底层文件的设计,以免在顶层文件设计的时候出现错误。EDA课程设计是对我们学习EDA的一种提升,让我们在自己编程的过程中发现问题和解决问题。因为是上个学期学的EDA,这个学期做课程设计,这时的我们对EDA没有以

19、前没有熟悉了,在刚开始的时候经常犯些低级错误,自己的编译的时候也不怎么能发现问题,所以同组的同学的互相合作至关重要。因为大家可能关注的点不同,在编程的时候也有不同的思路,当我们在某个地方卡住做不下去的时候,同学的提醒显得非常重要,所以说EDA课程设计不仅是考的我们EDA知识的掌握也是在帮助我们培养与同学互相协作的能力。通过EDA课程设计,我们能够对EDA这门课有了更加深刻的认识和掌握,对我们以后的职业规划也是有所帮助的。虽然说这次的数字钟只是个稍微简单的项目,课题的要求也不是很严格,只是一个简单的数字钟,没有数字钟其他的功能,例如整点报时、闹钟、校准等,所以说我们的设计还是存在缺陷的,但是已达到此次课程设计的要求。通过这次的课程设计,我懂得任何的一个项目都离不开一个团队合作,并且一个看似复杂的项目,要是可以分好模块,从简单开始,再慢慢地在此基础之上加上多些的功能,就可以完成的了。总而言之,这次的课程设计收获匪浅,是个很好的锻炼自己能力的机会,也磨炼了一下自己的耐心,让我能够静下心来好好的做好一个课题,是个很值得的事!

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

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