电子科技大学数字式秒表设计与实现实验报告.docx
- 文档编号:23927861
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:35
- 大小:1.16MB
电子科技大学数字式秒表设计与实现实验报告.docx
《电子科技大学数字式秒表设计与实现实验报告.docx》由会员分享,可在线阅读,更多相关《电子科技大学数字式秒表设计与实现实验报告.docx(35页珍藏版)》请在冰豆网上搜索。
电子科技大学数字式秒表设计与实现实验报告
数字式秒表设计与实现
指导老师:
:
学号:
摘要
本文主要介绍了基于FPGA使用VHDL语言的数字式秒表的设计开发流程。
该设计以VHDL作为硬件开发语言,以ISE作为软件开发平台,成功的实现了数字式秒表的计数、清零、暂停等功能。
并使用了ModelSim仿真软件对各个单元电路模块进行了仿真,且完成了综合布局布线,最终下载到电路板上,实际测试结果良好。
关键字:
FPGA,VHDL,数字
第一章引言
第1章选题背景
《电子技术综合实验》课程通过引入模拟电子技术和数字逻辑设计的综合应用、基于MCU/FPGA/EDA技术的系统设计等综合型设计型实验,对学生进行电子系统综合设计与实践能力的训练与培养。
通过《电子技术综合实验》课程的学习,使学生对系统设计原理、主要性能参数的选择原则、单元电路和系统电路设计方法及仿真技术、测试方法拟定及调测技术有所了解;使学生初步掌握电子技术中应用开发的一般流程,初步建立起有关系统设计的基本概念,掌握其基本设计方法,为将来从事电子技术应用和研究工作打下基础。
第2章实验方式
⏹教师引导下的自主实验
⏹设计的全过程:
方案、电路设计与仿真、设计与实现、测试与调整、总结报告
第3章技能培养
⏹数字电路的综合设计应用
⏹HDL语言
⏹FPGA应用
⏹EDA软件:
ISE、Modelsim
⏹硬件电路制作或设计,调整与实现
⏹设计文档撰写
⏹资料查阅
第二章基于FPGA的VHDL设计流程
第4章
2.1概述
数字秒表是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
秒表的设计有传统方法和现代方法,传统的设计方法耗时耗功,设计强度大,且容易出错,设计的质量不一定是最好的。
自然我们考虑到现代方法,即EDA。
在EDA设计工具中,用的最广泛的是VHDL和VERILOG,当然还有其它的。
比较VHDL和VERILOG,在顶层设计方面VHDL优于VERILOG,在门级电路设计方面VERILOG优于VHDL。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言,将使整个系统大大简化,提高整体的性能和可靠性。
本次的数字式秒表设计主要是先顶层设计,将秒表的除了外部输入部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。
在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。
该数字式秒表具有高速、精确、可靠、抗干扰性强和现场可编程等优点。
2.2VHDL语言介绍
VHDL语言是一种硬件描述语言(HardwareDescriptionLanguage,HDL),主要用在可编程逻辑器件(CPLD/FPGA)和专用集成电路(ASIC)两个领域。
写好的VHDL
程序既可以下载到可编程逻辑器件中实现电路功能,又可以提交到工厂用于ASIC芯片的流片。
VHDL主要用于描述数字系统的结构、行为、功能和接口。
VHDL程序结构的特点是将一项工程设计或设计实体(可以是元件、电路模块或系统)分成外部和内部两部分,外部即可视部分,对设计实体和端口引脚进行声明;内部即不可视部分,描述模块的功能和算法。
VHDL从实体与外部的接口以及实体内部的功能与结构这两个方面来描述实体,设计实体定义成功后就可生成共享功能模块。
在顶层综合或其他设计中就可以直接调用这个实体模块。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
2.2.1VHDL的特点
VHDL的特点:
①具有更强的行为描述能力
VHDL的硬件描述能力很强,可以用于从门级、电路级直至系统级的描述、仿真、
综合和调试,从逻辑功能和行为上描述和设计大规模系统,避开了具体器件内部结构。
②支持层次化和模块化设计
这是运用EDA工具进行电路和系统设计区别于传统设计方法的重要方面,简化了系统设计,优化了系统结构,提高了系统可靠性。
③可仿真与可综合
仿真是指代码模拟硬件的行为,综合是指将代码转化成可物理实现的电路结构。
所有的VHDL语句都能用于仿真,但有一部分VHDL语句不能进行综合、翻译成与之对应的硬件电路,并在逻辑器件上实现。
VHDL强大的仿真建模功能使设计者能在系统设计的各个阶段都能十分方便地对数字系统进行仿真验证。
④系统设计与硬件结构无关
VHDL语言对设计的描述具有相对独立性,设计者可以进行独立的设计,可以不懂硬件的结构,也不必了解最终设计实现的目标器件是什么。
⑤具有很强的移植能力
VHDL语言描述的设计通用性好,可以被支持VHDL标准的不同工具所支持,具有很强的移植能力。
⑥VHDL本身的生命周期长。
VHDL的硬件描述与工艺无关,不会因工艺变化而过时,而且与工艺技术有关的参数可以用VHDL提供的属性加以描述,当生产工艺改变时,只需修改程序中相应属性参数即可。
VHDL语言具有强大的语言功能、硬件描述能力和移植能力及设计与器件无关的特性,并且VHDL语言程序易于共享和复用,因此得到了十分广泛的应用。
2.2.2VHDL开发流程
采用VHDL语言对硬件电路进行描述的过程应该遵循一定的流程,通常情况下,其流程如图2.2.2-1所示。
图2.2.2-1VHDL设计电路
从流程图可以看出,采用VHDL语言进行硬件电路设计的开发步骤主要包
括以下几步:
①接受电路设计任务
在进行硬件电路系统设计之前,首先作出总体设计方案,然后给出相应的硬件电路系统设计指标,最后将总体方案中各部分电路设计任务和要求下达给相应的设计部门。
②确定电路具体功能
设计人员要具体分析电路的设计要求,确定其要实现的具体功能。
③划分模块、编写程序
利用VHDL语言设计硬件电路通常采用自顶向下的设计方法,从电路设计的总体要求出发,先确定顶层模块并进行顶层模块的设计,然后将顶层模块划分为不同的完成一定逻辑功能的子功能模块,最后再详细设计子功能模块。
模块划分的好坏将会直接影响到最终的电路设计,设计人员在这一步应该花费一定的时间,保证模块划分的最优化。
VHDL语言程序模拟
VHDL语言程序模拟即功能仿真,是利用仿真软件对设计的逻辑功能进行验证,可以在设计的早期发现电路设计上的缺陷和错误,节省设计时间、缩短开发周期。
⑤综合、优化和布局布线
综合的作用简单的说就将电路设计的较高级抽象层次的VHDL语言描述转化成底
层电路表示。
优化的作用是将电路设计的时延缩到最小和有效利用资源。
布局布线的作用是将通过综合和优化所得到的逻辑规划到一个逻辑器件的逻辑结构中,然后将各逻辑单元放置到相应优化的位置,最后再进行逻辑单元之间、逻辑单元和I/O之间的布线,以消除布线延迟。
⑥布局布线后的程序模拟
布局布线后的程序模拟又称后仿真,既验证设计的逻辑功能,又验证时序。
如果时序不能满足要求,就需要回到前面的步骤重新进行操作。
⑦生成器件编程文件和进行器件编程
顾名思义,器件编程是针对可编程逻辑器件进行的操作,具体过程是:
将设计描述经过编译、综合、优化和布局布线的结果,经过一定的映射转化成一个器件编程所用的数据文件格式,然后通过烧片器或者下载电缆将数据文件下载到指定的可编程逻辑器件中去的过程。
2.3FPGA开发介绍
2.3.1FPGA简介
FPGA是20世纪90年代发展起来的,其密度已超过25X104f-JA平,内部门延时小于3ns。
这种器件完成某种特定的功能是完全由用户通过软件进行配置和编程来实现的,而且可以反复擦写,它具有芯片逻辑资源丰富、成本低、功耗小等优势。
此外,它的另一个突出特点是现场编程,在FPGA工作的现场,可以不通过计算机把存于FPGA外的ROM中的编程数据加载给FPGA,通过简单的设备就能改变FPGA中的编程数据,从而改变FPGA执行的逻辑功能。
这种方法也叫做ICR(haCircuitReconfiguration,在电路上直接配置)编程。
FPGA的这个特点为工程技术人员维修、改进、更新电路逻辑功能提供了方便。
大部分FPGA采用基于SRAM的查找表(LUT,Look.Up.Table)结构。
查找表本质上就是一个RAM。
若逻辑函数具有11个输入项的话,就需要由输入个数为n、容量为2n个位的RAM单元存放函数值,RAM的地址线起输入线的作用,地址即输入变量,RAM输出为逻辑函数值。
每输入一个信号进行逻辑运算就等于输入一个地址进行查表,地址所对应的内容就是输出。
2.3.2FPGA开发流程
图2.3.2-1FPGA开发流程
对于目标器件为FPGA和CPLD的HDL设计,其工程设计的基本流程如图图2.3.2-1所示。
现具体说明如下:
1、文本编辑:
用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
通常VHDL文件保存为.vhd文件
2、功能仿真:
将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)
3、逻辑综合:
将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。
逻辑综合软件会生成.edf(edif)的EDA工业标准文件。
4、布局布线:
将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。
5、时序仿真:
需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。
(也叫后仿真)
6、编程下载:
确认仿真无误后,将文件下载到芯片中
7、硬件测试:
硬件测试的目的是为了在更真实的环境中检验HDL设计的运行情况,特别是对于HDL程序设计上不是十分规范,语义上含有一定歧义的程序。
第三章数字式秒表的软件开发环境
本章主要介绍项目中将要用到了一系列软件,包括用于VHDL语言编写和编译的ISE软件和用于程序仿真的仿真软件ModelSim。
3.1开发环境
在考虑各种情况后,在本次设计中,由于选择的FPGA芯片是由Xilinx公司生产的,所以我们主要使用ModelSim和ISE软件进行仿真和综合。
3.2ModelSim介绍
ModelSim是业界最优秀的HDL语言仿真器,它提供最友好的调试环境,是唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
是作FPGA/ASIC设计的RTL级和门级电路仿真的首选,它采用直接优化的编译技术、TcFTk技术、单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段。
全面支持VHDL和Verilog语言的IEEE标准,支持C/C++功能调用和调试。
ModelSim
专业版,具有快速的仿真性能和最先进的调试能力,全面支持UNIX(包括64位)、Linux和Windows平台。
主要特点:
RTL和门级优化,本地编译结构,编译仿真速度快;单内核VHDL和Verilog混合仿真;源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖等功能;数据流ChaseX;SignalSpy;C和Tcl/Tk接121,C调试。
是业界唯一单一内核支持VHDL、VerilogHDL和SystemC混合仿真的仿真器。
同时也支持业界最广泛的标准如Verilog2001、
SystemVerilog等,内部集成了用于C/C++,PLI/FLI和SystemC的集成C调试器。
支持众多的ASIC和FPGA厂家库,可以用于FPGA和ASIC设计的RTL级和门级电路仿真。
ModelSiml8J最大的特点是其强大的调试功能:
先进的数据流窗121,可以迅速追踪到产生不定或者错误状态的原因;性能分析工具帮助分析性能瓶颈,加速仿真;代码覆盖率检查确保测试的完备;多种模式的波形比较功能;先进的SignalSpy功能,可以方便地访问VHDL或者VHDL和Verilog混合设计中的底层信号;支持加密IP;可以实现与Matlab的Simulink的联合仿真。
ModelSim
分几种不同的版本:
SE、PE、LE和OEM,其中SE是最高级的版本而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。
SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSimXE为例,对于代码少于40000行的设计,ModelSimSE比ModelSimXE要快10倍;对于代码超过40000行的设计,ModelSimSE要比ModelSimXE快近40倍。
3.3ISE介绍
ISEt是Xilinx公司提供的集成化FPGA开发软件,它的主要功能包括设计
输入、综合、仿真、实现和下载。
(1)设计输入
ISE软件提供的设计输入工具包括用于HDL代码输入和报告查看的ISE文本编辑器(TextEditor),用于原理图编辑的工具ECS(EngineeringCaptureSystem),用于PCORE的COREGenerator,用于状态机设计的StateCAD,以及用于约束文件编辑的ConstraintEditor等。
(2)综合
ISE的综合工具不但包括了Xilinx自身提供的综合工具xsr,同时还可以集成MentorGraphics公司的LeonardoSpectrum和Synplicity公司的Synplify。
(3)仿真
ISE本身自带了图形化波形编辑功能的仿真工具HDLBencher,同时又提供了使用ModelTechnology公司的ModelSim进行仿真的接口。
(4)实现
ISE的实现功能包括了翻译(Translate)、映射(Map)、布局布线(PlaceandRoute)等。
(5)下载
下载功能包括了BitGen,用于将布局布线后的设计文件转换为比特流(Bitstream)文件。
还包括了iMPACT功能,用于进行设备配置和通信,控制将程序烧写到FPGA芯片中去。
使用ISE进行FPGA开发大致可以分为3个步骤。
(1)设计输入和仿真
设计输入(DesignEntry)是指以HDL代码、原理图、波形图以及状态机的形式输入设汁源文件,而设计仿真(Simdmion)是指通过仿真工具对设计的整体模块或局部模块进行仿真来检验设计的功能和性能。
(2)用户约束条件、综合和实现
用户约束条件(UserConstraints)的作用是对综合、实现过程进行控制,满足速度、面积、引脚位置等需求。
编辑约束条件又包括了4个子项,意义分别为:
创建时间约束、配置引脚、
创建面积约束、以文本方式编辑约束。
综合(Synthesize)是FPGA设计流程中的重要环节,综合结果的优劣直接影响到设计的最终性能。
ISE自带的综合工具是XST,同时它也支持Synplify/SynplifyPro等第三方综合工具,但是由于Xilinx对于其器件的底层最为了解,所以使用XST综合往往会得到比较满意的结果。
综合包含了3个子项,意义分别为:
查看综合报告、查看综合器件的RTL级原理图和检查语法。
实现(Implementation)过程也包含了3个子项,.ImplementDesign项所对应的子项,意义分别是:
翻译、映射和布局布线。
需要注意,进行实现步骤之前必须进行约束条件的编辑,否则实现可能会出错。
(3)硬件编程
硬件编程(Programming)是指生成编辑比特流文件bit,并将其下载到FPGA芯片内部的过程。
硬件编程对应图2--5所示的GenerateProgrammingFile项。
第四章数字式秒表的设计与实现
3
4
4.1任务要求
4.2
实验条件
4.3原理框图
按照以上需求,整个电路的原理图如图4.3-1所示:
图4.3-1电路原理图
从原理图可知,系统需要以下模块:
1.分频器:
对晶体振荡器产生的时钟进行分频,产生时间基准信号。
2.计数器:
对时间基准脉冲进行计数,完成计时功能。
3.数据锁存器:
锁存数据,使显示保持暂停。
4.控制器:
控制计数器的运行、停止以及复位,产生锁存器的使能信号。
5.扫描显示的控制电路:
包括扫描计数器、数据选择器和七段译码器,控制8个数码管以扫描方式,显示结果。
6.按键消抖电路:
消除按键输入信号,输出单脉冲。
4.4各模块的实现
4.4.1分频器
XC3S200A芯片的外部有源晶振频率为48MHz,考虑到系统的稳定性,本设计选择了1KHz的信号作为各模块的时钟信号,即对晶振信号进行1/480000分频。
对晶振时钟信号进行计数,对每个上升沿,计数器加1;当计数达到47999时,计数清零,从头开始计数,最后获取计数的第15位为计数的输出信号
仿真结果如图4.4.1.2-1所示,时钟周期为48000。
图4.4.1.2-11KHZ信号仿真图
4.4.2输入控制电路
输入控制模块的功能是识别有效地按键输入和实现输入的按键信号对电子秒表不同状态的控制。
,秒表的状态可分为计数开/关,显示锁定开/关和清零。
考到有两个输入按键,所以必须有输入控制电路,同时考虑到按下按键以及松开按键会出现抖动,所以必须设计防抖动电路。
即按键输入信号,必须先经过防抖电路,然后进入控制电路。
4.4.2.1消抖电路
由于按键输入,在按下过程中电平可能会有一个不确定的抖动状态。
由于识别的有效按键电平为持续的低电平,因此设计一消抖电路,顶层设计框图如下:
消抖电路的仿真结果如下所示:
由图可见在1khz的驱动下,消抖电路能够做到每按一次按键只输出一个时钟周期,达到了按键消抖的目的。
在实际板子上应用的时候,也还要根据按键实际情况来调整一下计数的周期,从而达到最佳的效果。
4.4.2.2控制电路
图4.4.2.2-1控制电路状态图
两个去抖动电路传入两个信号,将其组合成一个2bit输入(Start/Stop为高位,Split/Reset为低位),分别代表4个状态:
“00”状态:
锁定关,计数关,清零关,输出“111”;
“10”状态:
锁定关,计数开,清零关,输出“101”;
“11”状态:
锁定开,计数开,清零关,输出“001”;
“01”状态:
锁定关,计数关,清零开,输出“110”;处在“01”状态时,过一个时钟周期自动回到“00”状态。
状态图如图4.4.2.2-1所示。
源程序为见附录。
仿真结果如图4.4.2.2-2所示,
图4.4.2.2-2控制电路仿真
4.4.3计时模块
由设计指标可知,秒表由六位显示最大计时为59min59s99,所以需要4个10进制计数器,还有两个6进制计数器。
其中有暂定,清零的功能。
整个计时模块的顶层设计电路图如下:
4.4.3.1十进制计数器
计数器输入端每识别一个上升沿,就依次从“0000”计数到“1001”。
当计数变为“1001”时,进位端从‘1’变为‘0’,在下个输入的上升沿“1001”变为“0000”,进位端恢复‘1’。
如此,将进位端连入下一级的输入端时,可以实现低位由9变为0时高位进1。
当清零信号有效时,计数器强制将计数值变为“0000”。
源程序为见附录.
图4.4.3.1-1十进制计数器仿真图
如图4.4.3.1-1所示,计数周期为10。
4.4.3.2六进制计数器
六进制计数范围是“0000”到“0110”,在“0110”时进位端发生变低,之后计数变为“0000”,进位端恢复高电平。
对于六进制来说,三个二进制位就能够满足计数需要,但是考虑到后面译码器的输入均为四个二进制位,所以计数用4bit,方便译码。
源程序为见附录。
图4.4.3.2-1六进制计数器仿真图
如图4.4.3.2-1所示,计数周期为6。
4.4.3.3计数器组合
由于显示的最大计数为59min59s99,所以需要四位十进制计数器,以及二位六进制计数器。
所以需要将六个计数器组合起来,由低位计数达到最大值,向前一位进1;由于输入的是1khz信号,这里用另外用了一个模10计数器将1khz信号分频到100hz,最后组合的电路模块连接图如下:
图4.4.3.3-1计数器组合仿真图
4.4.3.4锁存器
锁存器实现电子秒表的显示锁定功能。
其输入时钟为外部时钟(1kHz)。
当锁定信号无效时,在每个时钟上升沿将输入的数据信号输出;当锁定信号有效时,输出的数据信号保持当前值,无视输入数据的改变,源程序见附录。
图4.4.3.4-1锁存器仿真图
放着结果如图4.4.3.4-1所示,当输入信号为高电平时,输出和输入信号相同;当输入信号为低电平时,输出信号保持当前值。
4.4.4显示模块
显示模块主要完成显示扫描和编码翻译的功能。
其中需要用到扫描器,多路选择器和译码器,时钟信号连接一个扫描器,用计数原理输出3bit扫描信号。
利用3-8译码器的原理,实现对八位数码管的扫描,输出位选信号;另一方面根据相应的位选信号,将要现实的bacd码转换成数码管的七段显示码输出,整个显示模块的顶层电路图如下:
4.4.4.1扫描器
扫描器实现了八位数码管共用一组输入数据的可能性。
其通过一个计数器,在每个时钟信号的上升沿,其输出的三位二进制信号加一,从“000”计数到“111”。
当输出为“111”时,下一个时钟上升沿输出变为“000”,关键的程序代码如下:
weixuan_code<=weixuan_code+1whenclk'eventandclk='1';
图4.4.4.1-1扫描器仿真图
扫描器仿真图如图4.4.4.1-1所示,扫描器根据时钟信号从“000”计数到“111”。
4.4.4.2多路选择器
多路选择器输入八组四位数据信号和一组三位扫描信号,通过扫描信号的状态选择相应的数据信号进行输出源程序,源程序见附录。
图4.4.4.2-1多路选择器仿真图
多路选择器放着结果如图4.4.4.2-1所示,多路选择器根据扫描信号的输入选择相应的信号输出。
4.5分配引脚和下载实现
全部仿真通过后,就运行ISE的设计实现,然后再打开XILINXPACE,在里面分配引脚,即实现设计的输入输出端口与实际芯片的输入输出端口的对应连接。
比如七段LED管的控制信号就连接到实际电路的七个引脚。
需要注意的是一些端口是固定的,不能胡乱的连接。
比如时基信号即石英振荡器所提供的信号就只能由T8输入。
一切都准备就绪后就,便可开始下载了.分配引脚的源文件如下:
NET"clk_raw"LOC=N9;
NET"duanxuan<7>"LOC=B12;
NET"duanxuan<6>"LOC=A11;
NET"duanxuan<5>"LOC=C11;
NET"duanxuan<4>"LOC=C10;
NET"duanxuan<3>"LOC=A10;
NET"duanxuan<2>"LOC=B10;
NET"duanxuan<1>"LOC=A9;
NET"duanxuan<0>"LOC=C9;
NET"split_reset"LOC=F4;
NET"start_stop"LOC=G5;
NET"weixuan<0>"LOC=N13;
NET"weixuan<1>"LOC=M13;
NET"weixuan<2>"LOC=L13;
NET"weixuan<3>"LOC=K13;
NET"weixuan<4>"LOC=J13;
NET"weixuan<5>"LOC=J12;
NET"weixuan<6>"LOC=H13;
NET"weix
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 数字式 秒表 设计 实现 实验 报告