学位论文eda课程设计数字秒表有扩展.docx
《学位论文eda课程设计数字秒表有扩展.docx》由会员分享,可在线阅读,更多相关《学位论文eda课程设计数字秒表有扩展.docx(23页珍藏版)》请在冰豆网上搜索。
学位论文eda课程设计数字秒表有扩展
Xxxxxxxx大学
课程设计
课程硬件课程设计
题目电子秒表设计
院系计算机与信息技术学院
专业班级计算机科学与技术11-1班
学生姓名
学生学号
指导教师
____________________________________________________________________________________________________________________________2013年7月12日
东北石油大学课程设计任务书
课程硬件课程设计
题目电子秒表设计
专业姓名学号
主要内容、基本要求等
一、主要内容:
利用KX_DN教学实验箱、微机和QuartusⅡ软件系统,使用VHDL语言输入方法设计数字秒表。
它主要由显示译码器、分频器、十进制计数器、报警器和计数器组成。
秒共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于同显示译码器的连接。
要求可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。
最后在KX_DN教学实验箱中实现。
二、基本要求:
1.四个10进制计数器:
用来分别对百分之一秒、十分之一秒、秒和分进行计数;
2.两个6进制计数器:
用来分别对十秒和十分进行计数;
3.显示译码器:
完成对显示的控制;
4.能任意启动和归零。
三、扩展要求
1.随意停止及启动
2.可以多次记录数据并且可以读出各次对数据
按照规范写出论文,要求字数在4000字以上,并进行答辩。
论文内容包括概述(学习、调研、分析、设计的内容摘要)、EDA技术的现状和发展趋势、对KX_DN教学实验箱和QuartusⅡ软件的掌握程度、数字钟的设计过程(包括原理图或程序设计、编译、仿真分析、硬件测试的全过程),论文中含有原理图、程序、仿真波形图及其分析报告。
完成期限第19—20周
指导教师
专业负责人
2013年6月25日
摘要
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
本文通过硬件语言VHDL的描述,完成可以记录两次的秒表的设计和实现,先设计秒表的各个底层模块,运用底层各个模块产生的进位将各个模块连接起来实现一个普通秒表。
然后再将两个普通秒表用选择电路连接在一起,完成可以记录两次的秒表。
本次设计的目的就是在掌握EDA初步使用的基础上,运用VHDL语言对数字秒表进行设计,将理论和实践相结合,提高与计算机硬件有关设计能力,提高分析、解决计算机技术实际问题的能力。
通过课程设计深入理解计算机结构与控制实现的技术,达到课程设计的目标。
关键词:
电子秒表;电子设计自动化;硬件描述语言;QuartusⅡ
目录
第1章概述1
1.1EDA的概念1
1.2硬件描述语言——VHDL4
1.3QuartusII概述6
第2章实验原理8
第3章电子秒表设计9
3.1分频电路设计9
3.210位计数器设计10
3.36位计数器设计11
3.4电子秒表设计13
3.5扩展功能15
3.6电子秒表下载实现18
结论20
参考文献21
第1章概述
1.1EDA的概念
EDA技术是在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。
该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。
在原理图设计阶段,可以使用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版图;在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。
特别是支持硬件描述语言的EDA工具的出现,使复杂数字系统设计自动化成为可能,只要用硬件描述语言将数字系统的行为描述正确,就可以进行该数字系统的芯片设计与制造。
21世纪将是EDA技术的高速发展期,EDA技术将是对21世纪产生重大影响的十大技术之一。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
硬件描述语言 :
硬件描述语言(HDL)是一种用于进行电子系统硬件设计的计算机高级语言,它采用软件的设计方法来描述电子系统的逻辑功能、电路结构和连接形式。
常用硬件描述语言有HDL、Verilog和VHDL语言。
1.1.1EDA技术及应用
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
在教学方面:
几乎所有理工科的高校都开设了EDA课程。
主要是让学生了解EDA的基本原理和基本概念、硬件描述系统逻辑的方法、使用EDA工具进行电子电路课程的模拟仿真实验并在作毕业设计时从事简单电子系统的设计,为今后工作打下基础。
在科研方面:
主要利用电路仿真工具进行电路设计与仿真;利用虚拟仪器进行产品调试;将FPGA器件的开发应用到仪器设备中。
在产品设计与制造方面:
从高性能的微处理器、数字信号处理器一直到彩电、音响和电子玩具电路等,EDA技术不单是应用于前期的计算机模拟仿真、产品调试,而且也在后期的制作、电子设备的研制与生产、电路板的焊接、器件的制作过程等有重要作用。
1.1.2EDA技术发展趋势
过去的几年里,可编程器件市场的增长主要来自大容量的可编程逻辑器件CPLD和FPGA,其未来的发展趋势如下:
(1)向高密度、高速度、宽频带方向发展
设计方法和设计效率的飞跃,带来了器件的巨大需求,这种需求又促使器件生产工艺的不断进步,而每次工艺的改进,可编程逻辑器件的规模都将有很大扩展。
(2)向在系统可编程方向发展
采用在系统可编程技术,可以像对待软件那样通过编程来配置系统内硬件的功能,从而在电子系统中引入“软硬件”的全新概念。
它不仅使电子系统的设计和产品性能的改进和扩充变得十分简便,还使新一代电子系统具有极强的灵活性和适应性,为许多复杂信号的处理和信息加工的实现提供了新的思路和方法。
(3)向可预测延时方向发展
为了适应未来复杂高速电子系统的要求,可编程逻辑器件的高速可预测延时是非常必要的。
(4)向混合可编程技术方向发展
已有多家公司开展了这方面的研究,并且推出了各自的模拟与数字混合型的可编程器件,相信在未来几年里,模拟电路及数模混合电路可编程技术将得到更大的发展。
(5)向低电压、低功耗方面发展
集成技术的飞速发展,工艺水平的不断提高,节能潮流在全世界的兴起,也为半导体工业提出了向降低工作电压、降低功耗的方向发展。
1.1.3开发工具的发展趋势
(1)具有混合信号处理能力
由于数字电路和模拟电路的不同特性,模拟集成电路EDA工具的发展远远落后于数字电路EDA开发工具。
(2)高效的仿真工具
一方面是要建立合理的仿真算法;另一方面是要更好地解决系统级仿真中,系统模型的建模和电路级仿真中电路模型的建模技术。
(3)理想的逻辑综合、优化工具
逻辑综合、优化工具就是要把设计者的算法完整高效地生成电路网表。
1.1.4系统描述方式的发展趋势
(1)描述方式简便化
图形化的描述方式具有简单直观、容易掌握的优点,是未来主要的发展趋势。
(2)描述方式高效化和统一化
随着EDA技术的不断成熟,软件和硬件的概念将日益模糊,使用单一的高级语言直接设计整个系统将是一个统一化的发展趋势。
随着科技的进步,电子产品的更新日新月异,EDA技术作为电子产品开发研制的源动力,已成为现代电子设计的核心。
特别是EDA技术在我国尚未普及,掌握和普及这一全新的技术,将对我国电子技术的发展具有深远的意义。
1.2硬件描述语言——VHDL
1.2.1VHDL的简介
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为AI/IEEE的标准(IEEESTD1076-1987)。
1993年更进一步修订,变得更加完备,成为AI/IEEE的AI/IEEESTD1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
1.2.2VHDL语言的特点
VHDL的程序结构特点是将一项工程设计,关于用VHDL和原理图输入进行CPLD/FPGA设计的粗略比较:
在设计中,如果采用原理图输入的设计方式是比较直观的。
你要设计的是什么,你就直接从库中调出来用就行了。
这样比较符合人们的习惯。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
1.2.3VHDL的设计流程
它主要包括以下几个步骤:
1.文本编辑:
用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件
2.功能仿真:
将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)
3.逻辑综合:
将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。
逻辑综合软件会生成.edf或.edif的EDA工业标准文件。
4.布局布线:
将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放CPLD/FPGA内。
5.时序仿真:
需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。
(也叫后仿真)通常以上过程可以都在CPLD/FPGA厂家提供的开发工具。
1.3QuartusII概述
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
1.3.1软件的启动方式
方法一、直接双击桌面上的图标
,可以打开QuartusII7.2软件;
方法二、执行:
【开始】→【程序】→【Altera】→【QuartusII7.2】→【QuartusII7.2TalkBackInstall】菜单命令,可以打开软件。
启动软件后,若你的电脑没有连接到Internet互联网,会出现如下图所示的提示,提示你没有连接到Altera的官方网站,将无法获得更新的资源。
点击〖确定〗继续,因为这不影响软件的正常使用。
图1-1打开页面
第2章实验原理
根据实验对要求本次的设计是运用VHDL语言在QuartusII7.2TalkBackInstall环境下设计并运行一个电子秒表。
该秒表可以精确到百分之一秒并且记录对范围是00分00秒00毫秒~59分59秒99毫秒。
在设计的过程中需要运用分层的结构进行,运用例化语句在顶层实体中队各个部件进行例化,使之达到电子秒表的要求。
在设计时运用10进制计数器和6进制计数器对秒表的各个位置进行计数和显示,在百分之一秒和十分之一秒对位置各用一个带进位对10进制计数器来对其计数和显示。
秒和分的位置也运用一个带进位的10进制计数器对其进行计数,十秒的位置着需要一个带进位的6进制计数器对其进行计数,而十分的位置需要一个不带进位对6进制计数器对其进行计数。
将前一个位置的进位接到下一个位置的时钟信号以完成各个位置计数情况和前面位置计数情况的链接。
完成位置之间的链接在顶层实体的例化语句中完成。
本系统设计采用自顶向下的设计方案,系统的整体组装设计原理图如图2-1所示,它主要由控制模块、时基分频模块,计时模块和显示模块四部分组成。
各模块分别完成计时过程的控制功能、计时功能与显示功能。
第3章电子秒表设计
根据实验内容和实验原理,写出各个电路的VHDL语言,并且对各个电路进行仿真,并根据时序仿真图观察设计的电路是否正确。
各个电路设计完成之后根据实验内容和实验对扩展的要求设计出合适对顶层实体其中包括可以多次记录的秒表需要的硬件电路的VHDL语言顶层实体描述。
3.1分频电路设计
——将输入的时钟信号频率改变为我们需要的时钟频率
librabyieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycounteris
port
(clk:
instd_logic;——输入的时钟信号5MHz
co:
bufferstd_logic);——输出的时钟信号100Hz
endcounter;
architecturebhvofcounteris
begin
process(clk)
variablecoutinterger:
=0;
begin
ifclk'eventandclk='1'then
cout:
=cout+1;
ifcout<=25000thenco<='0';
elsifcout<50000thenco<='1';
elsecout:
=0;
endif;
endif;
endprocess;
endarchitecture;
图3-1分频电路的时序仿真图
图3-2分频控制电路模块图
3.210进制计数器设计
——10进制计数器,对数字做记录当计数器记录到9之后产生进位,有进位端cont10、复位端rst10和使能端en10。
libraryieee;——10进制计数器
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt10is
port(clk10,rst10,en10:
instd_logic;
cq10:
outstd_logic_vector(3downto0);
cout10:
outstd_logic);
endentitycnt10;
architectureoneofcnt10is
begin
process(clk10,rst10,en10)
variablecqi:
std_logic_vector(3downto0);
begin
ifrst10='1'thencqi:
=(others=>'0');
elsifclk10'eventandclk10='1'then
ifen10='1'then
ifcqi<9thencqi:
=cqi+1;
elsecqi:
=(others=>'0');
endif;
endif;
endif;
ifcqi=9thencout10<='1';
elsecout10<='0';
endif;
cq10<=cqi;
endprocess;
endarchitectureone;
图3-310进制计数器RTL图
图3-410进制计数器时序仿真图
3.36进制计数器设计
——6进制计数器,对数字做记录当计数器记录到5之后产生进位,有进位端cont6、复位端rst6和使能端en6。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt6is
port(clk6,rst6,en6:
instd_logic;
cq6:
outstd_logic_vector(3downto0);
cout6:
outstd_logic);
endentitycnt6;
architectureoneofcnt6is
begin
process(clk6,rst6,en6)
variablecqi:
std_logic_vector(3downto0);
begin
ifrst6='1'thencqi:
=(others=>'0');
elsifclk6'eventandclk6='1'then
ifen6='1'then
ifcqi<5thencqi:
=cqi+1;
elsecqi:
=(others=>'0');
endif;
endif;
endif;
ifcqi=5thencout6<='1';
elsecout6<='0';
endif;
cq6<=cqi;
endprocess;
endarchitectureone;
图3-56进制计数器RTL图
图3-66进制计数器时序仿真图
3.4电子秒表设计
——根据上面设计的10进制计数器、6进制计数器和分频器设计一个简单的秒表,可以记录一个秒表的数据。
libraryieee;
useieee.std_logic_1164.all;
entityclockis
port(clkk:
instd_logic;——外接时钟信号
enn:
instd_logic;——使能信号
rstt:
instd_logic;——复位信号
set:
outstd_logic_vector(23downto0));——输出数据
endentity;
architectureoneofmiaobiaois
componentcnt10is——调用10进制计数器声明语句
port(clk10,rst10,en10:
instd_logic;
cq10:
outstd_logic_vector(3downto0);
cout10:
outstd_logic);
endcomponent;
componentcnt6is——调用6进制计数器声明语句
port(clk6,rst6,en6:
instd_logic;
cq6:
outstd_logic_vector(3downto0);
cout6:
outstd_logic);
endcomponent;
componentcounterIS——调用分频器声明语句
port(clk:
instd_logic;
co:
outstd_logic);
endcomponent;
signalclk1:
std_logic;
signalclk2:
std_logic;
signalclk3:
std_logic;
si