数字钟VHDL设计报告_第1页
数字钟VHDL设计报告_第2页
数字钟VHDL设计报告_第3页
数字钟VHDL设计报告_第4页
数字钟VHDL设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、设 计 报 告课程名称 在系统编程技术 任课教师 査长军 设计题目 数字时钟 班级 通信(2)班 姓名 张 斌 学号 日期 2010/6/1 目 录摘要:1关键词:数字钟 EDA VHDL语言1一、设计目的1二、设计内容1三、设计原理21、数字钟的基本工作原理:22、数字钟设计的电路原理图33、VHDL 设计3四、设计仪器、设备4五、设计步骤51、用VHDL程序设计5步骤1:为本项设计建立文件夹5步骤2:输入设计项目和存盘5步骤3:选择目标器件并编译6步骤4:时序仿真6步骤5:引脚锁定9步骤6:编程下载92、实验箱显示10六、总结11参考文献11附录:11摘要:人类社会已进入到高度发达的信息化

2、社会。信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,ElectronicsDesignAutomation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工

3、程技术人员所必备的基本能力和技能。EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为24时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。并且使用QUARTUS II软件进行电路波形仿真,下载到EDA实验箱进行验证。关键词:数字钟 EDA VHDL语言 一、设计目的1、熟练地运用数字系统的设计方法进行数字系统设计;2、能进行较复杂的数字系统设计

4、;3、按要求设计一个数字钟。二、设计内容1、要求显示秒、分、时,显示格式如下:图2.1 显示格式2、可清零、可调时,具有整点报时功能。三、设计原理1、数字钟的基本工作原理:数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。数字钟的基本原理方框图如下:数字时钟控制单元时调整分调整使能端信号CLK信号时显示分显示秒显示24进制60进制60进制LED显示整点报时花样显示图3.1数字钟实现原理框图1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分60进制计数,即从0到59循环计数,时钟24进制计数,即从0

5、到23循环计数,并且在数码管上显示数值。2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。5)LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号。根据总体方框图及各部分分配的功能可知,本系统可以由秒计

6、数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。显示:小时采用24进制,而分钟均是采用6进制和10进制的组合。2、数字钟设计的电路原理图图3.3 24进制数字钟的电路图3、VHDL 设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS PORT(clk:IN STD_LOGIC; dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);

7、speak:OUT STD_LOGIC; lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END alert;ARCHITECTURE fun OF alert IS SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN speaker:PROCESS(clk) BEGIN IF(clkevent and clk=1)THEN IF(dain=)THEN speak=10)THEN count1=00;-count1为三进制加法计数器

8、ELSE count1=count1+1; END IF ; END IF ; END IF ; END PROCESS speaker; lamper:PROCESS(clk) BEGIN IF(rising_edge(clk)THEN IF(count=10)THEN IF(count=00)THEN lamp=001;-循环点亮三只灯 ELSIF(count=01)THEN lamp=010; ELSIF(count=10)THEN lamp=100; END IF; count=count+1; ELSE countNew,选择Vector Waveform File,单击OK。图6.

9、4 建立波形文件2选择Edit-End Time选项,如图6.6所示,设定仿真时间宽度。图6.5 设置仿真时间3双击Name下的空白处,弹出Insert Nod or Bus对话框,单击Node Finder。图6.6 选择添加结点设置4如图6.7所示选定各个选择项。图6.7 选择结点5单击OK,完成引脚输入。图6.86加上输入信号后波形文件存盘。图6.9 波形运行仿真器。在Processing菜单下选择StartSimulation项,直到Simulator was successful出现,仿真结束。完成波形如图所示。步骤5:引脚锁定选择AssignPinLocationChip,在跳出的

10、窗口中的Node Name栏中用键盘输入半加器的端口名,如a、b等。如果输入的端口名正确,在右侧的Pin Type栏将显示该信号的属性。输入以后如下图,设定完成以后再运行一次程序。图6.11 引脚锁定步骤6:编程下载1)首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电源2)下载方式设定。选择MAX+plusIIProgrammer选项,跳出下图左侧所示的编程器窗口,然后选择OptionsHardware Setup硬件设置选项,其窗口图中左侧所示。在其下拉菜单中选ByteBlaster(MV)编程方式。此编程方式对应计算机的并行口下载通道,“MV”是混合电压的意思,主要

11、指对ALTERA的各类芯核电压(如5V、3.3V、2.5V与1.8V等)的FPGA/CPLD都能由此下载。此项设置只在初次装软件后第一次编程前进行,设置确定后就不必重复此设置了图6.12 下载编译最后点击start按钮,进入下载模式,等待下载完成以后在试验箱上进行调试检测是否正确。2、实验箱显示(1)任意设置时间,让其从这一时间开始显示图6.13 设置时间(2)时间显示为24进制,当时间显示到大23:59:59后将会从00:00:00开始显示图6.14 数字钟为24进制显示图6.15 时间跳变到00 00 00六、总结经过几周EDA实验的学习,使我受益匪浅。这不仅增强了我对EDA设计的兴趣,更

12、掌握了基本的电路设计流程、方法以及技巧。具备了这些基本知识,为今后的自主学习奠定了良好的基础。在编写时可以相互借鉴,这样可以节省一定的时间,尤其是24进制的处理上,我们采用了简单的方法即可完成多个功能的顺利实现。此次设计不足之处是不能进行定时闹钟,这是有待改进的地方,当然我们也可以在闹钟的时候采用音乐提醒,可以和乐曲硬件演奏电路设计相结合,这样数字钟的功能才算是完美。在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的。最后感谢査老师对我们的指导,以及同学们对我的帮助,使得实验能够顺利完成!参考文献1、沈明山编著,EDA技术及可编程器件应

13、用实训北京:科学出版社2、崔建明主编,电工电子EDA仿真技术北京:高等教育出版社,20043、李衍编著,EDA技术入门与提高王行西安:西安电子科技大学出版社4、侯继红,李向东主编,EDA实用技术教程北京:中国电力出版社5、侯伯亨等,VHDL硬件描述语言与数字逻辑电路设计西安:西安电子科技大学出版附录:VHDL设计程序1、秒LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC; enmin:OUT STD_L

14、OGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC; -enmin_1为59秒时的进位信号 BEGIN -enmin_2由clk调制后的手动调分脉冲信号串 daout=count; enmin_2=(setmin and clk); -setmin为手动调分控制信号,高电平有效 enmin=(enmin_1 or e

15、nmin_2); -enmin为向分进位信号 PROCESS(clk,reset,setmin) BEGIN IF(reset=0)THEN count=; -若reset为0,则异步清零 ELSIF(clk event and clk=1)then -否则,若clk上升沿到 IF(count(3 downto 0)=1001)then -若个位计时恰好到1001即9 IF(count16#60#)then -又若count小于16#60#,即60H IF(count=)then -又若已到59D enmin_1=1;count=;-则置进位为1及count复0 ELSE -未到59D cou

16、nt=count+7; -则加7,而+7=+1+6,即作加6校正 END IF; ELSE -若count不小于16#60#(即count等于或大于16#60#) count=; -count复0 END IF; -END IF(count16#60#) ELSIF(count16#60#)then -若个位计数未到1001则转此句再判 count=count+1; -若count16#60#则count加1 enmin_1=0after 100 ns; -没有发生进位 ELSE -否则,若count不小于16#60# count=; -则count复0 END IF; -END IF(cou

17、nt(3 DOWNTO 0)=1001) END IF; -END IF(reset=0)END PROCESS;END fun;2、分LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS PORT(clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY minute ;ARCHITECTURE fun OF

18、minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL enhour_1, enhour_2: STD_LOGIC; -enmin_1为59分时的进位信号 BEGIN -enmin_2由clk调制后的手动调时脉冲信号串 daout=count; enhour_2= (sethour and clk1); -sethour为手动调时控制信号,高电平有效 enhour= (enhour_1 or enhour_2); PROCESS(clk,reset,sethour) BEGIN IF(reset=0) THEN -若reset

19、为0,则异步清零 count=; ELSIF(clkevent and clk=1)THEN -否则,若clk上升沿到 IF(count (3 DOWNTO 0) =1001)THEN-若个位计时恰好到1001即9 IF(count 16#60#) THEN -又若count小于16#60#,即60 IF(count=) THEN-又若已到59D enhour_1=1; -则置进位为1 count=; -count复0 ELSE count=count+7; -若count未到59D,则加7,即作加6校正 END IF; -使前面的16#60#的个位转变为8421BCD的容量 ELSE cou

20、nt=;-count复0(有此句,则对无效状态电路可自启动) END IF; -END IF(count16#60#) ELSIF (count 16#60#) THEN count=count+1; -若count16#60#则count加1 enhour_1=0 after 100 ns; -没有发生进位 ELSE count=; -否则,若count不小于16#60# count复0 END IF; -END IF(count(3 DOWNTO 0)=1001) END IF; -END IF(reset=0) END process;END fun;3、时LIBRARY IEEE;us

21、e IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS PORT(clk,reset:IN STD_LOGIC; daout:out STD_LOGIC_VECTOR(5 DOWNTO 0);END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN daout=count; PROCESS(clk,reset) BEGIN IF(reset=0)THEN count=; -若res

22、et=0,则异步清零 ELSIF(clkevent and clk=1)THEN -否则,若clk上升沿到 IF(count(3 DOWNTO 0)=1001)THEN -若个位计时恰好到1001即9 IF(count16#23#)THEN -23进制 count=count+7; -若到23D则 else count=; -复0 END IF; ELSIF (count16#23#)THEN -若未到23D,则count进1 count=count+1; ELSE -否则清零 count=; END IF; -END IF(count(3 DOWNTO 0)=1001) END IF; -END IF(reset=0) END PROCESS;END fun; 4、主程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL

温馨提示

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

评论

0/150

提交评论