EDA 课程设计报告 数字时钟.doc_第1页
EDA 课程设计报告 数字时钟.doc_第2页
EDA 课程设计报告 数字时钟.doc_第3页
EDA 课程设计报告 数字时钟.doc_第4页
EDA 课程设计报告 数字时钟.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

淮阴工学院eda技术与应用课程设计报告选题名称: 电子时钟设计 系(院): 计算机工程学院专 业:计算机科学与技术(嵌入式系统软件设计)班 级: 嵌入式 1091 姓 名: 王 荣 学 号: 1091306422 指导教师: 赵建洋 马岱 顾相平 学年学期: 2011 2012 学年 第 2 学期2012年 6 月 21 日设计任务书课题名称电子时钟设计设计目的1. 了解电子时钟的功能;2. 理解eda开发应用系统的基本思路及方法;3. 练习使用vhdl语言编写应用程序的基本步骤;4. 学习eda开发过程及资料收集与整理,学会撰写课程设计报告;5. 学会对所学知识进行总结与提高;实验环境1windows 2000以上操作系统;2qurtus 6.0开发环境;任务要求1. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;制定完整的设计方案,结合框图进行说明。2. 给出主要模块的vhdl程序。3. 在第18周末之前完成预设计,并请指导教师审查。通过后方可进行下一步工作;4. 按指导书要求设计软件,实现设计的功能,并显示正确的结果;5. 要求形成稳定的程序软件,可以在实验箱上进行下载验证,方可申请参加答辩;工作进度计划序号起止日期工 作 内 容12012.6.182012.6.18在预设计的基础上,进一步查阅资料,完成硬件电路设计。22012.6.182012.6.19编写软件代码, 调试与完善。32012.6.192012.6.21测试程序,优化代码,增强功能,撰写课程设计报告。42012.6.212012.6.21提交软件代码、硬件电路成果和设计报告,参加答辩。指导教师(签章): 年 月 日 摘要:随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,eda技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也逾益依赖于eda技术的应用。即使是普通的电子产品的开发,eda技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,eda技术将迅速成为电子设计领域中的极其重要的组成部分。本设计中我们运用eda课程中所学的知识,设计了一个拥有时间校正和闹钟功能的24小时制多功能数字时钟。通过本次课程设计,我们初步了解eda的设计过程;初步掌握用vhdl语言的设计方法和设计思想;初步熟悉quartus ii 6.0软件平台的编程和仿真,并通过eda实验板下载模拟实现初步了解了硬件实现的方法。关键词:eda;数字时钟;vhdl;quartus ii 6.0;闹钟;仿真目录1 课题综述11.1 课题来源11.2 预期目标11.3 面对的问题22 系统设计及分析22.1 涉及的基础知识22.2 实验方案62.3 程序流程图73 程序代码73.1 库,程序包以及实体定义73.2 结构体功能84 程序运行与调试134.1 实验结果13总 结16参考文献17eda技术与应用课程设计报告1 课题综述1.1 课题来源电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。目前,在国内,电子钟因lcd数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对lcd屏进行设置。同时,因为lcd的显示耗电量很省,所以能够保持持续的工作效果。 夜间在睡觉的时候,床头如果放个带投影功能的电子钟,可以不用起床,直接让时间显示在天花板上,非常直观与有效。现在生产的大部分汽车中,车内前方仪表盘旁边一般也都自带电子钟功能,采取蓝色背景光板成像效果,非常清晰。相对于其他时钟类型,它的特点可归结为“两强一弱 ”:比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显时较为单调。1.2 预期目标本次课程设计的主要目的旨在通过独立完成一个 “电子时钟”的设计,达到对eda技术的熟练掌握,提升对eda技术及应用课程所学内容的掌握和应用。在本次课程设计中使用altera公司的ep2c5q系列的208c8芯片,基于实验室现有的eda实验箱,实现“电子时钟”的设计要求。(1)计数24小时的时钟 (2)六位数码管显示“时分秒” (3)五个功能键timer 从其它状态放回时钟状态alarm 切换到闹钟时间的设定set 按一下,跳到下一个设置区down 按一下,所设置区的数字减1up 按一下,所设置区的数字加1(4)带有闹钟功能;(5)键盘的设定值要求在led上显示。1.3 面对的问题电子时钟设计需要掌握和了解如下几个知识:数码管时间显示设计,时间校准设计,闹钟设定设计,蜂鸣器的工作。2 系统设计及分析2.1 涉及的基础知识2.1.1 时间显示设计24小时制显示当前时间:小时用8与7数码管,分钟用5与4位数码管,秒由2与1位数码管表示,小时与分钟之间、分钟与秒之间用3和6位数码管显示“”,总计八位七段数码显示管。此模式下显示当前时间。图2-1 显示译码电路原理可将bcd码转换为数字显示码,有四个输入引脚,此七个输出引脚分别对应到七段译码器的a,b,c,d,e,f,g这七段led,实验班用的led是共阴极的,因此七段译码器的真值表如上图所示。七段译码程序如下所示:case cnt is - to display the time. when 0 = l dled dled dled null; end case; when 1 = l dled dled dled dled dled dled dled dled dled dled null; end case; when 2 = l=101; - enable the third display. dled l dled dled dled dled dled dled null; end case; when 4 = l dled dled dled dled dled dled dled dled dled dled null; end case; when 5 = l=010; - enable the sixth display. dled l dled dled dled dled dled dled null; end case; when 7 = l dled dled dled dled dled dled dled dled dled dled null; end case; end case;2.1.2 时间校准设计通过一个开关的两种电平,来打开个关闭一个二输入与非门,另一个输入端接1hz的信号。因此这个开关实现了1hz信号是否加入电路的作用,开关打在高电平上,1hz信号通过与非门,开关打在低电平上,与非门输出为高电平。把与非门的输出信号,和时钟正常走时所需要的时钟信号,一起通过与门,加给分个位时钟信号的输入端即可,这样分校时开关打在高电平上,分个位以1hz的频率跳动起来,分校时开关打在低电平上时,正常走时。同理小时校准与此相同。将time键置于0, 运用功能键set键对八位数码管进行选择,并由功能键up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置。输入:time状态转换键,set数码管选定键,up+1键,down-1键输出:设定后的 秒,分,小时 时间校准代码如下:if time=0 thenif ( d=0 and clk_1=1)then set if(k=0 and clk_2=1)then hourh=hourh+1; elsif( p=0 and clk_3=1)then hourh if( k=0 and clk_2=1)then hourl= hourl+1; elsif( p=0 and clk_3=1)then hourl if(k=0 and clk_2=1)then minuteh= minuteh +1; elsif( p=0 and clk_3=1)then minuteh if( k=0 and clk_2=1)then minutel= minutel+1; elsif( p=0 and clk_3=1)then minutel if(k=0 and clk_2=1)then secondh= secondh +1; elsif(p=0 and clk_3=1)then secondh if( k=0 and clk_2=1)then secondl= secondl +1; elsif( p=0 and clk_3=1)then secondlnull;end case;end if;2.1.3 闹钟设定设计将time键置于1,设定模式与校时时设定一样,运用功能键set键对八位数码管进行选择,并由功能键up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置。set-数码管7- set-数码管6- set-数码管5- set-数码管4- set-数码管3- set-数码管2- set-数码管1 ;up-+1;down-1;与校时操作类似,只是先将time键置于1, 再运用功能键set键对八位数码管进行选择,并由功能键up键进行+1与down键进行-1操作,通过此4个功能键进行校时设置输入:time状态转换键,set数码管选定键,up+1键,down-1键输出:所定的闹钟时间 秒,分,小时2.1.4 整点蜂鸣器报时运用软件进行设置,当minuteh与minutel均为零时,蜂鸣器响,也就是每次整点时,蜂鸣器自动响一分钟,如果想设置响的时间,可以手动改即可。并且可以手动按下功能键naozhong,这样就可以手动关闭蜂鸣器。输入:naozhong关闭蜂鸣器键输出:蜂鸣器发出蜂鸣声2.2 实验方案输入一个250khz的方波信号,运用vhdl语言对其进行编译,用计数器对方波信号进行技术,当 cnt=2500000时,secondl自动+1,不断进行累加,可以达到实现数字钟自动计时功能。并且此多功能数字钟设有5个功能键,(1)time键控制显示状态,可以选择时钟状态与闹钟状态的转换(2)naozhong键可以手动关闭蜂鸣器(3) set键可以选择需要改变的数码管,以便进行调时与设定闹钟(4)up键对对应的数据进行+1操作(5)down键对对应的数据进行-1操作。通过次5个功能键,便可实现多功能数字时钟,拥有计时/校时功能,设定闹钟功能,整点报时功能。校时电路秒计数器分计数器分译码器秒译码器分显示器秒显示器时译码器时计数器时显示器报时振荡器分频器图2-2总体框架图2.3 程序流程图电子时钟设计程序流程图如下所示。图2-3 程序流程图3 程序代码我主要完成校准模块代码编写(包括时间校准与闹钟设定校准),因此对主程序和其他模块不做详细的解释。3.1 库,程序包以及实体定义library ieee;use ieee.std_logic_1164.all;entity timer isport(clk : in std_logic; - system clock input port(250khz). naozhong:in std_logic; l : out std_logic_vector(2 downto 0); dled: out std_logic_vector(7 downto 0); time:in std_logic; sound: out std_logic;clk_1:in std_logic; clk_2:in std_logic; clk_3:in std_logic);end timer;3.2 结构体功能architecture display of timer is signal cnt: integer range 0 to 7; - 8 seven-segment displays seletion counter. signal ct:integer range 0 to 250000 ; - 1 second generator counter. signal hourh,ahourh,alarm_hourh: integer range 0 to 2; signal minuteh,secondh,aminuteh,asecondh,alarm_minuteh,alarm_secondh: integer range 0 to 6; signal hourl,minutel,secondl,ahourl,aminutel,asecondl,alarm_hourl,alarm_minutel,alarm_secondl: integer range 0 to 10;signal set : integer range 0 to 7;signal d,k,p: std_logic; begin process (clk) begin if clkevent and clk = 1 then sound=1; cnt=cnt+1; ct=ct+1; if ct=250000 then - 1 second ct=0; secondl=secondl+1; end if; if secondl=10 then - 10 seconds secondl=0; secondh=secondh+1; end if; if secondh=6 then - 60 seconds(1 minute) secondh=0; minutel=minutel+1; end if; if minutel=10 then - 10 minutes minutel=0; minuteh=minuteh+1; end if; if minuteh=6 then - 60 minutes(1 hour) minuteh=0; hourl=hourl+1; end if; if hourl=10 then - 10 hours hourl=0; hourh=hourh+1; end if; if hourh=2 and hourl =4 then - 24 hours hourh=0; hourl=0; end if; if (time=0) thenahourh=hourh;ahourl=hourl;aminuteh=minuteh;aminutel=minutel;asecondh=secondh;asecondl=secondl;elsif(time=1)thenahourh=alarm_hourh;ahourl= alarm_hourl;aminuteh= alarm_minuteh;aminutel= alarm_minutel;asecondh= alarm_secondh;asecondl l dled dled dled null; end case; when 1 = l dled dled dled dled dled dled dled dled dled dled null; end case; when 2 = l=101; - enable the third display. dled l dled dled dled dled dled dled null; end case; when 4 = l dled dled dled dled dled dled dled dled dled dled null; end case; when 5 = l=010; - enable the sixth display. dled l dled dled dled dled dled dled null; end case; when 7 = l dled dled dled dled dled dled dled dled dled dled null; end case; end case;-校时-d=clk_1; -定义按键1选择改变数码管k=clk_2; -定义按键2增加数码管显示数字p=clk_3; -定义按键3减少数码管显示数字if time=1 then设置闹钟时间if ( d=0 and clk_1=1)then -确定按下了clk_1键 set if(k=0 and clk_2=1)then-确定按下了clk_2键 alarm_hourh= alarm_hourh+1;-设置闹钟小时的高位加1来改变 elsif( p=0 and clk_3=1)then 确定按下了clk_3键 alarm_hourh if( k=0 and clk_2=1)then -确定按下了clk_2键 alarm_hourl= alarm_hourl+1; -设置闹钟小时的低位加1来改变 elsif( p=0 and clk_3=1)then 确定按下了clk_3键 alarm_hourl if(k=0 and clk_2=1)then alarm_minuteh= alarm_minuteh +1; -设置分钟的高位+1 elsif( p=0 and clk_3=1)then alarm_minuteh if( k=0 and clk_2=1)then-设置分钟的低位 alarm_minutel= alarm_minutel+1; -设置分钟的低位+1 elsif( p=0 and clk_3=1)then alarm_minutel if(k=0 and clk_2=1)then-设置秒钟的高位 alarm_secondh= alarm_secondh +1; -设置秒钟的高位+1 elsif(p=0 and clk_3=1)then alarm_secondh if( k=0 and clk_2=1)then-设置秒钟的低位 alarm_secondl= alarm_secondl +1; -设置秒钟的低位+1 elsif( p=0 and clk_3=1)then alarm_secondlnull;end case;end if;if time=0 then-设置实时时间,以下部分具与闹钟设置原理相同if ( d=0 and clk_1=1)then 选择需要改变数码管的位数 set if(k=0 and clk_2=1)then 设置实时小时的高位 hourh=hourh+1;+1计数 elsif( p=0 and clk_3=1)then hourh if( k=0 and clk_2=1)then 设置实时小时的低位 hourl= hourl+1; +1计数 elsif( p=0 and clk_3=1)then hourl if(k=0 and clk_2=1)then 设置实时分钟的高位 minuteh= minuteh +1; +1计数 elsif( p=0 and clk_3=1)then minuteh if( k=0 and clk_2=1)then设置实时分钟的低位 minutel= minutel+1; +1计数 elsif( p=0 and clk_3=1)then minutel if(k=0 and clk_2=1)then 设置实时秒钟的高位 secondh= secondh +1; +1计数 elsif(p=0 and clk_3=1)then secondh if( k=0 and clk_2=1)then 设置实时秒钟的低位 secondl= secondl +1; +1计数 elsif( p=0 and clk_3=1)then secondlnull;end case;end if;-蜂鸣器整点报时-if (hourh = alarm_hourh) and (hourl= alarm_hourl) and (minuteh = alarm_minuteh) and (minutel = alarm_minutel) or (minuteh=0)and(minutel=0) )then sound=1;end if;if (secondh=1)or(naozhong=1)thensound=0; end if;end if;end process;end architecture display; 4 程序运行与调试4.1 实验结果(1)将time键置于0,输入clk信号,可以得到时钟输出波形为:图4-1 时钟clk信号输入此时时钟自动计时,并且将计时数据传送至显示管显示。如上图asecond=second;(2)将time键置于0,输入clk信号,并将set改为20分频信号,up与down信号交叉为1,得到时钟输出波形为:图4-2 修改时钟显示时间如图所示此时时间不是正常变化,因为有手动设置进行up(+1)操作和down(-1)操作,并且将时间由数码管显示。(3)将time键置于1,则显示闹钟初始调节状态:图4-3 处于闹钟设置状态此时secondl,secondh,minutel,minuteh,hourl,hourh不受影响,均自动计时,但是并不由数码管进行显示,此时显示的是闹钟初定时间,这时均为0。由于set变化,stat 顺序发生变化。(4)将time置于1,并可以改变set键进行数码管选择,并用up(+1)操作和down(-1)操作,进行闹钟的初步设定;此时可以得到时钟的初步设定。 图4-4 闹钟时间设置总 结eda的课程设计持续了四天,但我却觉得仿佛还是当日,真是挥指之间,时光已匆匆流逝。在这短短的四天里,我不仅感受到了成功做出一个模块的欢喜,还有修改那无限errors时的忧愁,可以说是无数次的苦尽甘来,换来了最后的成功。本身我就对动手的实验相当有兴趣,这次能够拥有这四天的课程设计时间,我甚是高兴。从第一天开始知道我的多功能时钟课题开始,我就第一时间跑去图书馆借资料,回去反复研究,从看懂程序开始入手。虽然开始有些棘手,但我觉得特别的兴奋,我不把困难当成拦路虎,反而成为我前进的动力,遇到困难不会就翻书,找不到就问同学,再不行就上网搜,实在不行再问老师,总之想尽一切办法找到解决方案。经过两三天的基础训练,我终于能够完整的看懂程序。首先我将老师给我们基本的时钟程序进行编译,封锁引脚,然后在硬件上得到正确的数码管显示。整点报时自然是最简单的,我首先就加到程序内部,其次我在网上找到了闹钟程序,因为跟要求差距过大,所以我先读懂程序,然后根据自己理解,一步步的加进初始的时钟程序。这个看似很简单的过程,期间错误百出。我先是运用了多个process,进行模块化的处理,通过这里面出现的问题我才知道敏感参数列表是不能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论