数字钟设计论文-硬件课程设计论文范例-毕业论文_第1页
数字钟设计论文-硬件课程设计论文范例-毕业论文_第2页
数字钟设计论文-硬件课程设计论文范例-毕业论文_第3页
数字钟设计论文-硬件课程设计论文范例-毕业论文_第4页
数字钟设计论文-硬件课程设计论文范例-毕业论文_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

PAGE东北石油大学课程设计课程课程硬件课程设计题目数字钟设计院系计算机与信息技术学院专业班级计算机科学与技术07-1班学生姓名学生学号指导教师李军2009年7月10日东北石油大学课程设计任务书课程硬件课程设计题目数字钟设计专业姓名学号主要内容、基本要求等一、主要内容:利用EL教学实验箱、微机和QuartusⅡ软件系统,使用VHDL语言输入方法设计数字钟。可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。最后在EL教学实验箱中实现。二、基本要求:1.具有时,分,秒,计数显示功能,以24小时循环计时。2.具有清零功能。三、扩展要求1.调节小时、分钟功能。2.整点报时功能,整点报时的同时LED灯花样显示。按照规范写出论文,要求字数在4000字以上,并进行答辩。论文内容包括概述(学习、调研、分析、设计的内容摘要)、EDA技术的现状和发展趋势、对EL教学实验箱和QuartusⅡ软件的掌握程度、数字钟的设计过程(包括原理图或程序设计、编译、仿真分析、硬件测试的全过程),论文中含有原理图、程序、仿真波形图及其分析报告。完成期限2周指导教师 专业负责人年月日

东北石油大学课程设计成绩评价表课程名称硬件课程设计题目名称数字钟设计学生姓名学号指导教师姓名职称序号评价项目指标(优秀)满分评分1选题难度选题难度较高,或者对原题目进行了相当程度的改进。102工作量、工作态度和出勤率工作量饱满,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。103课程设计质量按期圆满的完成了规定的任务,方案设计合理,思考问题全面,系统功能完善。404报告质量问题论述思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。305回答问题在进行课程设计程序系统检查时,能正确回答指导教师所提出的问题。106创新(加分项)工作中有创新意识,对前人工作有改进或有应用价值。在进行系统检查时能对创新性进行说明,并在报告中有相应的论述。+5总分评语:指导教师:年月日

摘要本文介绍了利用EDA-V硬件系统和微机上的Quartus7.2-II等软件系统。VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。本文设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。并且使用Quartus7.2-II软件进行电路波形仿真,下载到EDA实验箱进行验证。关键词:EDA(电子设计自动化);VHDL(硬件描述语言),数字钟。

目录TOC\o"1-2"\h\z\u第1章概述 1第2章数字钟设计的系统分析 4第3章数字钟的底层电路设计 6第4章数字钟的顶层文件设计 14第5章数字钟设计的测试与运行 17结论 21参考文献 22东北石油大学本科生课程设计(论文)PAGE22第1章概述1.1EDA的概念EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的[1]。EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA设计可分为系统级、电路级和物理实现级。本次毕业设计课题实现的核心技术即为EDA相关技术[2]。1.1.1EDA技术及应用电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。EDA技术已有30年的发展历程,大致可分为三个阶段。70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。80年代为计算机辅助工程(CAE)阶段。与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。CAE的主要功能是:原理图输人,逻辑仿真,电路分析,自动布局布线,PCB后分析。90年代为电子系统设计自动化(EDA)阶段[3]。EDA技术发展迅猛,逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。在教学方面:几乎所有理工科(特别是电子信息)类的高校都开设了EDA课程。主要是让学生了解EDA的基本原理和基本概念、鳞握用佃L描述系统逻辑的方法、使用扔A工具进行电子电路课程的模拟仿真实验并在作毕业设计时从事简单电子系统的设计,为今后工作打下基础。具有代表性的是全国每两年举办一次大学生电子设计竞赛活动。在科研方面:主要利用电路仿真工具(EwB或PSPICE、VLOL等)进行电路设计与仿真;利用虚拟仪器进行产品调试;将O)LI)/FPGA器件的开发应用到仪器设备中。例如在CDMA无线通信系统中,所有移动手机和无线基站都工作在相同的频谱,为区别不同的呼叫,每个手机有一个唯一的码序列,CDMA基站必须能判别这些不同观点的码序列才能分辨出不同的传呼进程;这一判别是通过匹配滤波器的输出显示在输人数据流中探调到特定的码序列;FPGA能提供良好的滤波器设计,而且能完成DSP高级数据处理功能,因而FPGA在现代通信领域方面获得广泛应用[4]。在产品设计与制造方面:从高性能的微处理器、数字信号处理器一直到彩电、音响和电子玩具电路等,EDA技术不单是应用于前期的计算机模拟仿真、产品调试,而且也在批量制作、电子设备的研制与生产、电路板的焊接等有重要作用。可以说电子EDA技术已经成为电子工业领域不可缺少的技术支持。电子技术全方位纳入EDA领域,EDA使得电子领域各学科的界限更加模糊,更加互为包容,突出表现在以下几个方面:使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;基于EDA工具的ASIC设计标准单元已涵盖大规模电子系统及IP核模块;软硬件IP核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认;SoC高效低成本设计技术的成熟。随着半导体技术、集成技术和计算机技术的迅猛发展,电子系统的设计方法和设计手段都发生了很大的变化。可以说电子EDA技术是电子设计领域的一场革命。传统的“固定功能集成块十连线”的设计方法正逐步地退出历史舞台,而基于芯片的设计方法正成为现代电子系统设计的主流。作为高等院校有关专业的学生和广大的电子工程师了解和掌握这一先进技术是势在必行,这不仅是提高设计效率的需要,更是时代发展的需求,只有攀握了EDA技术才有能力参与世界电子工业市场的竞争,才能生存与发展。随着科技的进步,电子产品的更新日新月异,EDA技术作为电子产品开发研制的源动力,已成为现代电子设计的核心。所以发展EDA技术将是电子设计领域和电子产业界的一场重大的技术革命,同时也对电类课程的教学和科研提出了更深更高的要求。特别是EDA技术在我国尚未普及,掌握和普及这一全新的技术,将对我国电子技术的发展具有深远的意义。1.2.1EDA硬件工作平台1.计算机。2.EDA实验开发系统:EDA-V。1.2.2EDA的软件工作平台PLD(ProgrammableLogicDevice)是一种由用户根据需要而自行构造逻辑功能的数字集成电路。目前主要有两大类型:CPLD(ComplexPLD)和FPGA(FieldProgrammableGateArray)。它们的基本设计方法是借助于EDA软件,用原理图、状态机、布尔表达式、硬件描述语言等方法,生成相应的目标文件,最后用编程器或下载电缆,由目标器件实现。生产PLD的厂家很多,但最有代表性的PLD厂家为Altera、Xilinx和Lattice公司。

第2章数字钟的系统分析1.掌握多位计数器相连的设计方法。2.掌握十进制,六进制,二十四进制计数器的设计方法。3.继续巩固多位共阴极扫描显示数码管的驱动,及编码。4.掌握扬声器的驱动。5.LED灯的花样显示。6.掌握CPLD技术的层次化设计方法。2.2功能说明1.具有时,分,秒,计数显示功能,以24小时循环计时。2.具有清零,调节小时、分钟功能。3.具有整点报时功能,整点报时的同时LED灯花样显示。2.3实验原理在同一EPLD芯片EPF10K10上集成了如下电路模块:1.时钟计数: 秒——60进制BCD码计数; 分——60进制BCDD码计数; 时——24进制BCDD码计数;同时整个计数器有清零,调分,调时功能。在接近整数时间能提供报时信号。2.具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。编码和扫描可参照“实验四”。3.扬生器在整点时有报时驱动信号产生。4.LED灯按个人口味在整点时有花样显示信号产生。2.4系统硬件1.主芯片EPF10K10LC84-4。2.8个LED灯。3.扬声器。4.8位八段扫描共阴级数码显示管。5.三个按键开关(清零,调小时,调分钟)。

第3章数字钟的底层电路设计该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时(alarm1)、重置时间(setmin1、sethour1)。其中计时模块有3部分构成:秒计时器(second1)、分计时器(minute1)、时计时器(hour1)。1.秒计数模块:秒计数,在频率为1HZ的时钟下以60次为循环计数,并产生进位信号影响分计数。2.分计数模块:分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数。3.时计数模块:时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数。4.时间显示模块:通过选中不同的数码管,同时进行一定频率的扫描显示时,分,秒。5.时间设置模块:设置调试使能端,可以调时,分。基本功能是在使能端为高电平时,可以使时和分循环计数;6.整点报时模块:在秒计数到50秒时,同时分计数到59分开始,丰鸣器产生每个2秒的鸣叫(500HZ),到整点是产生750HZ的鸣叫。7.闹钟模块:在设定闹钟闹铃时间后,当闹钟使能端有效时,可在闹铃时间闹铃,并有彩灯显示。首先分析数字时钟,得出进位法则大体相同,故所得时分秒进位方式语法基本相同,因此可以将时分秒定义成六位输出端口,即分别将时分秒定义为3个component,分别给予设计。3.3底层电路程序其代码如下:(VHDL语言):LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYsecondIS PORT( clk,reset,setmin:IN STD_LOGIC; enmin:OUT STD_LOGIC; daout:outstd_logic_vector(6downto0));ENDentitysecond;ARCHITECTUREfunOFsecondIS SIGNALcount:STD_LOGIC_VECTOR(6downto0);BEGINdaout<=count;process(clk,reset,setmin)begin--enmin<=k; if(reset='0')thencount<="0000000";elsif(setmin='0')thenenmin<=clk;elsif(clk'eventandclk='1')thenif(count(3downto0)="1001")thenif(count<16#60#)then if(count="1011001")then enmin<='1'; count<="0000000"; ELSE count<=count+7; endif;elsecount<="0000000";endif;elsif(count<16#60#)thencount<=count+1;enmin<='0'after100ns;elsecount<="0000000";endif;endif;endprocess;ENDfun;秒计时器实际上是一个60进制的计数器,它从时钟脉冲接受脉冲信号,每当一个脉冲信号来时,秒就自动加1,所以,输入的时钟信号应该是的频率应该是1hz,当秒计满60时,发出一个脉冲信号给分组件,再将本身清零。这样,每计满60s,分钟就加1,正好按着正常的时间规律计时。其代码(VHDL语言)如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYminuteIS PORT( clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:outstd_logic_vector(6downto0));ENDentityminute;ARCHITECTUREfunOFminuteIS SIGNALcount:STD_LOGIC_VECTOR(6downto0);BEGINdaout<=count;process(clk,reset,sethour)beginif(reset='0')thencount<="0000000";elsif(sethour='0')thenenhour<=clk1;elsif(clk'eventandclk='1')thenif(count(3downto0)="1001")thenif(count<16#60#)then if(count="1011001")then enhour<='1'; count<="0000000"; ELSE count<=count+7; endif; elsecount<="0000000";endif;elsif(count<16#60#)thencount<=count+1;enhour<='0'after100ns;else count<="0000000";endif;endif;endprocess;ENDfun;分计时器也是一个60进制的计数器,它从秒计时器的脉冲输出端接受脉冲信号。每当一个脉冲信号来时,分就自动加1,当分计满60时,发出一个脉冲信号给时组件,再将本身清零。这样,每计满60MIN,小时就加1,正好按着正常的时间规律计时。该模块还能对分进行数字调整,并可以将其全部清零。时计时器(VHDL语言)代码如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYhourIS PORT( clk,reset:IN STD_LOGIC; daout:outstd_logic_vector(5downto0));ENDentityhour;ARCHITECTUREfunOFhourIS SIGNALcount:STD_LOGIC_VECTOR(5downto0);BEGINdaout<=count;process(clk,reset)beginif(reset='0')thencount<="000000";elsif(clk'eventandclk='1')thenif(count(3downto0)="1001")thenif(count<16#24#)thencount<=count+7;elsecount<="000000";endif;elsif(count<16#24#)thencount<=count+1;else count<="000000";endif;endif;endprocess;ENDfun;时计时器是一个24进制的计数器,它从分组件的脉冲信号输出端接受脉冲信号,每当一个脉冲信号来时,时就自动加1,并且输出个信号给时组件,直到计满24,再将本身清零。该组件还能对时进行数字调整,并可以将其全部清零。代码如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYdeledIS PORT(num:IN std_logic_vector(3downto0); led:OUTstd_logic_vector(6downto0));ENDdeled;ARCHITECTUREfunOFdeledISBEGIN led<="1111110"whennum="0000"else "0110000"whennum="0001"else "1101101"whennum="0010"else "1111001"whennum="0011"else "0110011"whennum="0100"else "1011011"whennum="0101"else "1011111"whennum="0110"else "1110000"whennum="0111"else "1111111"whennum="1000"else "1111011"whennum="1001"else "1110111"whennum="1010"else "0011111"whennum="1011"else "1001110"whennum="1100"else "0111101"whennum="1101"else "1001111"whennum="1110"else "1000111"whennum="1111"; ENDfun;Deled模块是一个简单的电路,它的功能将时、分、秒三个组件中所计的数编码后,能对应在七段数码管山显示成数字形式。代码如下:LIBRARYieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYalertIS PORT( clk:IN STD_LOGIC; dain:IN STD_LOGIC_VECTOR(6DOWNTO0); speak:OUT STD_LOGIC; lamp:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDalert;ARCHITECTUREfunOFalertIS signalcount:std_logic_vector(1downto0); signalcount1:std_logic_vector(1downto0);BEGINspeaker:process(clk) begin speak<=count1(1); if(clk'eventandclk='1')then if(dain="000000")then if(count1>="10")then count1<="00"; else count1<=count1+1; endif; endif; endif; endprocessspeaker;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"; endif; count<=count+1; else count<="00"; endif; endif; endprocesslamper;ENDfun;报时模块也是个简单的程序,它的功能是:当每满一个小时时,有该组件输出一个脉冲信号给试验箱上的喇叭,喇叭会相应其信号,能持续发出一段蜂鸣声,从而达到报时的目的。译码模块seltime代码如下:LIBRARYieee;useieee.std_logic_1164.alluseieee.std_logic_unsigned.all;useieee.std_logic_arith.all;ENTITYseltimeIS PORT( clk1,reset:IN STD_LOGIC; sec,min:IN STD_LOGIC_VECTOR(6downto0); hour:instd_logic_vector(5downto0); daout :OUT STD_LOGIC_vector(3downto0); sel:outstd_logic_vector(2downto0));ENDseltime;ARCHITECTUREfunOFseltimeIS SIGNALcount:STD_LOGIC_vector(2downto0);BEGINsel<=count;process(clk1,reset)beginif(reset='0')thencount<="000";elsif(clk1'eventandclk1='1')thenif(count>="101")thencount<="000";elsecount<=count+1;endif;endif;casecountiswhen"000"=>daout<=sec(3downto0);when"001"=>daout(3)<='0';daout(2downto0)<=sec(6downto4);when"010"=>daout<=min(3downto0);when"011"=>daout(3)<='0';daout(2downto0)<=min(6downto4);when"100"=>daout<=hour(3downto0);whenothers=>daout(3downto2)<="00";daout(1downto0)<=hour(5downto4);endcase;endprocess;译码模块时时钟显示的最重要的部件,它的功能时将时、分、秒共六位译码输出显示在六位的led显示器上。它的时钟信号应接到一个高频脉冲信号源上,这样,由于刷新的时间间隔很短,所以,led显示器才能一直持续的亮着。

第4章数字钟的顶层文件设计4.1设计说明建立数字钟的顶层文件就是将已经设计好的各个功能组件组合调用,连成一个整体,使整个系统按照设计要求在实际中工作起来。代码如下:libraryieee;useieee.std_logic_1164.all;entityclock_topisport( clk,reset,setmin,sethour,clkdsp:instd_logic; speaker: outstd_logic; lamp: outstd_logic_vector(2downto0); sel: outstd_logic_vector(2downto0); a,b,c,d,e,f,g,dp: outstd_logic);endclock_top;--*************************************************architectureaofclock_topis--*************************************************--secondcounterCOMPONENTsecond PORT( clk,reset,setmin:IN STD_LOGIC; daout: outstd_logic_vector(6downto0); enmin:OUT STD_LOGIC);ENDCOMPONENT;--*************************************************--minutecounterCOMPONENTminute PORT( clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout: outstd_logic_vector(6downto0));ENDCOMPONENT;--*************************************************--hourcounterCOMPONENThour PORT(clk,reset:IN STD_LOGIC; daout: outstd_logic_vector(5downto0));ENDCOMPONENT;--*************************************************COMPONENTalert PORT( clk:IN STD_LOGIC; dain:instd_logic_vector(6downto0); lamp: outstd_logic_vector(2downto0); speak:OUT STD_LOGIC);ENDCOMPONENT;--*************************************************COMPONENTseltime PORT( clk1,reset:IN STD_LOGIC; sec,min:instd_logic_vector(6downto0); hour:instd_logic_vector(5downto0); daout: outstd_logic_vector(3downto0); sel:OUT STD_LOGIC_vector(2downto0));ENDCOMPONENT;--*************************************************COMPONENTdeled PORT( num:IN STD_LOGIC_vector(3downto0); led: outstd_logic_vector(6downto0));ENDCOMPONENT;--*************************************************signalledout: std_logic_vector(6downto0);signalenmin_re,enhour_re:std_logic;signalsecond_daout,minute_daout:std_logic_vector(6downto0);signalhour_daout:std_logic_vector(5downto0);signalseltime_daout:std_logic_vector(3downto0);--*************************************************begina<=ledout(0);b<=ledout(1);c<=ledout(2);d<=ledout(3);e<=ledout(4);f<=ledout(5);g<=ledout(6);dp<='0';u1:secondportmap( reset =>reset, clk =>clk, setmin =>setmin, enmin =>enmin_re, daout =>second_daout);u2:minuteportmap( clk =>enmin_re, clk1 =>clk, reset =>reset, sethour =>sethour, enhour =>enhour_re, daout =>minute_daout);u3:hourportmap( clk =>enhour_re, reset =>reset, daout =>hour_daout);u4:alertportmap( clk =>clk, dain =>minute_daou

温馨提示

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

评论

0/150

提交评论