版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要数字式秒表设计与实现指导老师:姓名:学号:
摘要本文主要介绍了基于FPGA使用VHDL语言的数字式秒表的设计开发流程。该设计以VHDL作为硬件开发语言,以ISE作为软件开发平台,成功的实现了数字式秒表的计数、清零、暂停等功能。并使用了ModelSim仿真软件对各个单元电路模块进行了仿真,且完成了综合布局布线,最终下载到电路板上,实际测试结果良好。关键字:FPGA,VHDL,数字目录目录数字式秒表设计与实现 1第一章引言 41.1选题背景 41.2实验方式 41.3技能培养 4第二章基于FPGA的VHDL设计流程 52.1 概述 52.2 VHDL语言介绍 52.2.1 VHDL的特点 52.2.2 VHDL开发流程 62.3 FPGA开发介绍 82.3.1 FPGA简介 82.3.2 FPGA开发流程 8第三章数字式秒表的软件开发环境 103.1开发环境 103.2ModelSim介绍 103.3ISE介绍 11第四章数字式秒表的设计与实现 124.1 任务要求 124.2 实验条件 124.3 原理框图 134.4 各模块的实现 134.4.1 分频器 134.4.2 输入控制电路 144.4.3 计时模块 164.4.4 显示模块 184.5 分配引脚和下载实现 194.6 测试结果 20第五章结论 21参考文献 22致谢 23附录 24附录1.电子秒表的顶文件 24附录2分频器 28附录3消抖电路 28附录4控制电路 29附录5十进制计数器 30附录9锁存器 30附录10显示电路 31第一章引言第一章引言选题背景《电子技术综合实验》课程通过引入模拟电子技术和数字逻辑设计的综合应用、基于MCU/FPGA/EDA技术的系统设计等综合型设计型实验,对学生进行电子系统综合设计与实践能力的训练与培养。通过《电子技术综合实验》课程的学习,使学生对系统设计原理、主要性能参数的选择原则、单元电路和系统电路设计方法及仿真技术、测试方法拟定及调测技术有所了解;使学生初步掌握电子技术中应用开发的一般流程,初步建立起有关系统设计的基本概念,掌握其基本设计方法,为将来从事电子技术应用和研究工作打下基础。实验方式教师引导下的自主实验设计的全过程:方案、电路设计与仿真、设计与实现、测试与调整、总结报告技能培养数字电路的综合设计应用HDL语言FPGA应用EDA软件:ISE、Modelsim硬件电路制作或设计,调整与实现设计文档撰写资料查阅第三章电子秒表的软件开发环境第二章基于FPGA的VHDL设计流程概述数字秒表是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。秒表的设计有传统方法和现代方法,传统的设计方法耗时耗功,设计强度大,且容易出错,设计的质量不一定是最好的。自然我们考虑到现代方法,即EDA。在EDA设计工具中,用的最广泛的是VHDL和VERILOG,当然还有其它的。比较VHDL和VERILOG,在顶层设计方面VHDL优于VERILOG,在门级电路设计方面VERILOG优于VHDL。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言,将使整个系统大大简化,提高整体的性能和可靠性。本次的数字式秒表设计主要是先顶层设计,将秒表的除了外部输入部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字式秒表具有高速、精确、可靠、抗干扰性强和现场可编程等优点。VHDL语言介绍VHDL语言是一种硬件描述语言(HardwareDescriptionLanguage,HDL),主要用在可编程逻辑器件(CPLD/FPGA)和专用集成电路(ASIC)两个领域。写好的VHDL程序既可以下载到可编程逻辑器件中实现电路功能,又可以提交到工厂用于ASIC芯片的流片。VHDL主要用于描述数字系统的结构、行为、功能和接口。VHDL程序结构的特点是将一项工程设计或设计实体(可以是元件、电路模块或系统)分成外部和内部两部分,外部即可视部分,对设计实体和端口引脚进行声明;内部即不可视部分,描述模块的功能和算法。VHDL从实体与外部的接口以及实体内部的功能与结构这两个方面来描述实体,设计实体定义成功后就可生成共享功能模块。在顶层综合或其他设计中就可以直接调用这个实体模块。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL的特点VHDL的特点:①具有更强的行为描述能力VHDL的硬件描述能力很强,可以用于从门级、电路级直至系统级的描述、仿真、综合和调试,从逻辑功能和行为上描述和设计大规模系统,避开了具体器件内部结构。②支持层次化和模块化设计这是运用EDA工具进行电路和系统设计区别于传统设计方法的重要方面,简化了系统设计,优化了系统结构,提高了系统可靠性。③可仿真与可综合仿真是指代码模拟硬件的行为,综合是指将代码转化成可物理实现的电路结构。所有的VHDL语句都能用于仿真,但有一部分VHDL语句不能进行综合、翻译成与之对应的硬件电路,并在逻辑器件上实现。VHDL强大的仿真建模功能使设计者能在系统设计的各个阶段都能十分方便地对数字系统进行仿真验证。④系统设计与硬件结构无关VHDL语言对设计的描述具有相对独立性,设计者可以进行独立的设计,可以不懂硬件的结构,也不必了解最终设计实现的目标器件是什么。⑤具有很强的移植能力VHDL语言描述的设计通用性好,可以被支持VHDL标准的不同工具所支持,具有很强的移植能力。⑥VHDL本身的生命周期长。VHDL的硬件描述与工艺无关,不会因工艺变化而过时,而且与工艺技术有关的参数可以用VHDL提供的属性加以描述,当生产工艺改变时,只需修改程序中相应属性参数即可。VHDL语言具有强大的语言功能、硬件描述能力和移植能力及设计与器件无关的特性,并且VHDL语言程序易于共享和复用,因此得到了十分广泛的应用。VHDL开发流程采用VHDL语言对硬件电路进行描述的过程应该遵循一定的流程,通常情况下,其流程如图2.2.2-1所示。图2.2.2-1VHDL设计电路从流程图可以看出,采用VHDL语言进行硬件电路设计的开发步骤主要包括以下几步:①接受电路设计任务在进行硬件电路系统设计之前,首先作出总体设计方案,然后给出相应的硬件电路系统设计指标,最后将总体方案中各部分电路设计任务和要求下达给相应的设计部门。②确定电路具体功能设计人员要具体分析电路的设计要求,确定其要实现的具体功能。③划分模块、编写程序利用VHDL语言设计硬件电路通常采用自顶向下的设计方法,从电路设计的总体要求出发,先确定顶层模块并进行顶层模块的设计,然后将顶层模块划分为不同的完成一定逻辑功能的子功能模块,最后再详细设计子功能模块。模块划分的好坏将会直接影响到最终的电路设计,设计人员在这一步应该花费一定的时间,保证模块划分的最优化。@VHDL语言程序模拟VHDL语言程序模拟即功能仿真,是利用仿真软件对设计的逻辑功能进行验证,可以在设计的早期发现电路设计上的缺陷和错误,节省设计时间、缩短开发周期。⑤综合、优化和布局布线综合的作用简单的说就将电路设计的较高级抽象层次的VHDL语言描述转化成底层电路表示。优化的作用是将电路设计的时延缩到最小和有效利用资源。布局布线的作用是将通过综合和优化所得到的逻辑规划到一个逻辑器件的逻辑结构中,然后将各逻辑单元放置到相应优化的位置,最后再进行逻辑单元之间、逻辑单元和I/O之间的布线,以消除布线延迟。⑥布局布线后的程序模拟布局布线后的程序模拟又称后仿真,既验证设计的逻辑功能,又验证时序。如果时序不能满足要求,就需要回到前面的步骤重新进行操作。⑦生成器件编程文件和进行器件编程顾名思义,器件编程是针对可编程逻辑器件进行的操作,具体过程是:将设计描述经过编译、综合、优化和布局布线的结果,经过一定的映射转化成一个器件编程所用的数据文件格式,然后通过烧片器或者下载电缆将数据文件下载到指定的可编程逻辑器件中去的过程。FPGA开发介绍FPGA简介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输出为逻辑函数值。每输入一个信号进行逻辑运算就等于输入一个地址进行查表,地址所对应的内容就是输出。FPGA开发流程图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项。第四章电子秒表的设计与实现第四章数字式秒表的设计与实现任务要求实验条件原理框图按照以上需求,整个电路的原理图如图4.3-1所示:图4.3-1电路原理图从原理图可知,系统需要以下模块:1.分频器:对晶体振荡器产生的时钟进行分频,产生时间基准信号。2.计数器:对时间基准脉冲进行计数,完成计时功能。3.数据锁存器:锁存数据,使显示保持暂停。4.控制器:控制计数器的运行、停止以及复位,产生锁存器的使能信号。5.扫描显示的控制电路:包括扫描计数器、数据选择器和七段译码器,控制8个数码管以扫描方式,显示结果。6.按键消抖电路:消除按键输入信号,输出单脉冲。各模块的实现分频器XC3S200A芯片的外部有源晶振频率为48MHz,考虑到系统的稳定性,本设计选择了1KHz的信号作为各模块的时钟信号,即对晶振信号进行1/480000分频。对晶振时钟信号进行计数,对每个上升沿,计数器加1;当计数达到47999时,计数清零,从头开始计数,最后获取计数的第15位为计数的输出信号仿真结果如图-1所示,时钟周期为48000。图-11KHZ信号仿真图输入控制电路输入控制模块的功能是识别有效地按键输入和实现输入的按键信号对电子秒表不同状态的控制。,秒表的状态可分为计数开/关,显示锁定开/关和清零。考到有两个输入按键,所以必须有输入控制电路,同时考虑到按下按键以及松开按键会出现抖动,所以必须设计防抖动电路。即按键输入信号,必须先经过防抖电路,然后进入控制电路。消抖电路由于按键输入,在按下过程中电平可能会有一个不确定的抖动状态。由于识别的有效按键电平为持续的低电平,因此设计一消抖电路,顶层设计框图如下:消抖电路的仿真结果如下所示:由图可见在1khz的驱动下,消抖电路能够做到每按一次按键只输出一个时钟周期,达到了按键消抖的目的。在实际板子上应用的时候,也还要根据按键实际情况来调整一下计数的周期,从而达到最佳的效果。控制电路图-1控制电路状态图两个去抖动电路传入两个信号,将其组合成一个2bit输入(Start/Stop为高位,Split/Reset为低位),分别代表4个状态:=1\*GB3①“00”状态:锁定关,计数关,清零关,输出“111”;=2\*GB3②“10”状态:锁定关,计数开,清零关,输出“101”;=3\*GB3③“11”状态:锁定开,计数开,清零关,输出“001”;=4\*GB3④“01”状态:锁定关,计数关,清零开,输出“110”;处在“01”状态时,过一个时钟周期自动回到“00”状态。状态图如图-1所示。源程序为见附录。仿真结果如图-2所示,图-2控制电路仿真计时模块由设计指标可知,秒表由六位显示最大计时为59min59s99,所以需要4个10进制计数器,还有两个6进制计数器。其中有暂定,清零的功能。整个计时模块的顶层设计电路图如下:十进制计数器计数器输入端每识别一个上升沿,就依次从“0000”计数到“1001”。当计数变为“1001”时,进位端从‘1’变为‘0’,在下个输入的上升沿“1001”变为“0000”,进位端恢复‘1’。如此,将进位端连入下一级的输入端时,可以实现低位由9变为0时高位进1。当清零信号有效时,计数器强制将计数值变为“0000”。源程序为见附录.图-1十进制计数器仿真图如图-1所示,计数周期为10。六进制计数器六进制计数范围是“0000”到“0110”,在“0110”时进位端发生变低,之后计数变为“0000”,进位端恢复高电平。对于六进制来说,三个二进制位就能够满足计数需要,但是考虑到后面译码器的输入均为四个二进制位,所以计数用4bit,方便译码。源程序为见附录。图-1六进制计数器仿真图如图-1所示,计数周期为6。计数器组合由于显示的最大计数为59min59s99,所以需要四位十进制计数器,以及二位六进制计数器。所以需要将六个计数器组合起来,由低位计数达到最大值,向前一位进1;由于输入的是1khz信号,这里用另外用了一个模10计数器将1khz信号分频到100hz,最后组合的电路模块连接图如下:图-1计数器组合仿真图锁存器锁存器实现电子秒表的显示锁定功能。其输入时钟为外部时钟(1kHz)。当锁定信号无效时,在每个时钟上升沿将输入的数据信号输出;当锁定信号有效时,输出的数据信号保持当前值,无视输入数据的改变,源程序见附录。图-1锁存器仿真图放着结果如图-1所示,当输入信号为高电平时,输出和输入信号相同;当输入信号为低电平时,输出信号保持当前值。显示模块显示模块主要完成显示扫描和编码翻译的功能。其中需要用到扫描器,多路选择器和译码器,时钟信号连接一个扫描器,用计数原理输出3bit扫描信号。利用3-8译码器的原理,实现对八位数码管的扫描,输出位选信号;另一方面根据相应的位选信号,将要现实的bacd码转换成数码管的七段显示码输出,整个显示模块的顶层电路图如下:扫描器扫描器实现了八位数码管共用一组输入数据的可能性。其通过一个计数器,在每个时钟信号的上升沿,其输出的三位二进制信号加一,从“000”计数到“111”。当输出为“111”时,下一个时钟上升沿输出变为“000”,关键的程序代码如下:weixuan_code<=weixuan_code+1whenclk'eventandclk='1';图-1扫描器仿真图扫描器仿真图如图-1所示,扫描器根据时钟信号从“000”计数到“111”。多路选择器多路选择器输入八组四位数据信号和一组三位扫描信号,通过扫描信号的状态选择相应的数据信号进行输出源程序,源程序见附录。图-1多路选择器仿真图多路选择器放着结果如图-1所示,多路选择器根据扫描信号的输入选择相应的信号输出。分配引脚和下载实现全部仿真通过后,就运行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"weixuan<7>"LOC=G13;测试结果这个电路完成后的最顶层模块电路图如下:在成功下载并运行后,进行了各按钮功能的检测(包括计数、暂停、复位、清零等功能的检查),以及与标准时间进行了对比,符合实验预估的各项指标,成功完成了数字式秒表的设计与实现。第五章结论第五章结论本文主要介绍了利用VHDL语言完成基于FPGA的数字秒表的设计与实现。详细介绍了设计原理,设计方案以及各模块的设计过程及其实现的功能,并利用ISE和ModelSim对设计进行了仿真,分析,综合,并最终下载实际电路板中,成功实现了数字式秒表的所有功能。致谢参考文献[1]朱正伟.EDA技术及应用.清华大学出版社.2009[2]ISE开发流程[3]Modelsim仿真流程致谢首先必须感谢的是刘曦老师对我的教导,在实验过程中对我的帮助,在此对刘曦老师致于最衷心的感谢。其次感谢我的同学们,在我遇到问题时,能给我分析以及解决。最后感谢电子技术综合实验这门课程,让我从中学到了很多的东西。附录附录附录1.电子秒表的顶文件--Company:--Engineer:----CreateDate:11:03:0911/18/2015--DesignName:--ModuleName:my_watch-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:Dependencies:Revision:Revision0.01-FileCreatedAdditionalComments:--#OBUF:16--=========================================================================Deviceutilizationsummary:SelectedDevice:3s200aft256-5NumberofSlices:61outof17923%--NumberofSliceFlipFlops:79outof35842%--Numberof4inputLUTs:109outof35843%--NumberofIOs:19--NumberofbondedIOBs:19outof1959%--NumberofGCLKs:3outof2412%libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;UncommentthefollowinglibrarydeclarationifinstantiatinganyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitymy_watchisport(clk_raw,start_stop,split_reset:instd_logic; weixuan:outstd_logic_vector(7downto0); duanxuan:outstd_logic_vector(7downto0)); endmy_watch;architectureBehavioralofmy_watchis COMPONENTfenpin PORT( clk_raw:INstd_logic; clk_1kh:OUTstd_logic ); ENDCOMPONENT; COMPONENTdouxiao PORT( clk:INstd_logic; key_in:INstd_logic; key_out:OUTstd_logic ); ENDCOMPONENT; COMPONENTcounter PORT( clk:INstd_logic; rst:INstd_logic; count_en:INstd_logic; seg1:OUTstd_logic_vector(3downto0); seg2:OUTstd_logic_vector(3downto0); seg3:OUTstd_logic_vector(3downto0); seg4:OUTstd_logic_vector(3downto0); seg5:OUTstd_logic_vector(3downto0); seg6:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTcontrol PORT( clk:INstd_logic; start_stop:INstd_logic; reset_split:INstd_logic; reset:OUTstd_logic; counter_en:OUTstd_logic; latch_en:OUTstd_logic ); ENDCOMPONENT; COMPONENTlatch PORT( latch_en:INstd_logic; cin1:INstd_logic_vector(3downto0); cin2:INstd_logic_vector(3downto0); cin3:INstd_logic_vector(3downto0); cin4:INstd_logic_vector(3downto0); cin5:INstd_logic_vector(3downto0); cin6:INstd_logic_vector(3downto0); cout1:OUTstd_logic_vector(3downto0); cout2:OUTstd_logic_vector(3downto0); cout3:OUTstd_logic_vector(3downto0); cout4:OUTstd_logic_vector(3downto0); cout5:OUTstd_logic_vector(3downto0); cout6:OUTstd_logic_vector(3downto0) ); ENDCOMPONENT; COMPONENTdisplay PORT( clk:INstd_logic; cin1:INstd_logic_vector(3downto0); cin2:INstd_logic_vector(3downto0); cin3:INstd_logic_vector(3downto0); cin4:INstd_logic_vector(3downto0); cin5:INstd_logic_vector(3downto0); cin6:INstd_logic_vector(3downto0); seg:OUTstd_logic_vector(7downto0); weixuan:OUTstd_logic_vector(7downto0) ); ENDCOMPONENT;signalclk_1kh,net_start,net_split,net_reset,net_counter_en,net_latch_en:std_logic;signalnet_seg1,net_seg2,net_seg3,net_seg4,net_seg5,net_seg6:std_logic_vector(3downto0);signalnet_out1,net_out2,net_out3,net_out4,net_out5,net_out6:std_logic_vector(3downto0);begin u0:fenpinPORTMAP( clk_raw=>clk_raw, clk_1kh=>clk_1kh ); u2:douxiaoPORTMAP( clk=>clk_1kh, key_in=>start_stop, key_out=>net_start ); u3:douxiaoPORTMAP( clk=>clk_1kh, key_in=>split_reset, key_out=>net_split ); u4_control:controlPORTMAP( clk=>clk_1kh, start_stop=>net_start, reset_split=>net_split, reset=>net_reset, counter_en=>net_counter_en, latch_en=>net_latch_en ); u5:counterPORTMAP( clk=>clk_1kh, rst=>net_reset, count_en=>net_counter_en, seg1=>net_seg1, seg2=>net_seg2, seg3=>net_seg3, seg4=>net_seg4, seg5=>net_seg5, seg6=>net_seg6 ); u6:latchPORTMAP( latch_en=>net_latch_en, cin1=>net_seg1, cin2=>net_seg2, cin3=>net_seg3, cin4=>net_seg4, cin5=>net_seg5, cin6=>net_seg6, cout1=>net_out1, cout2=>net_out2, cout3=>net_out3, cout4=>net_out4, cout5=>net_out5, cout6=>net_out6 ); u7:displayPORTMAP( clk=>clk_1kh, cin1=>net_out1, cin2=>net_out2, cin3=>net_out3, cin4=>net_out4, cin5=>net_out5, cin6=>net_out6, seg=>duanxuan, weixuan=>weixuan );附录2分频器signala1:std_logic_vector(15downto0):=(others=>'0');beginprocess(clk_raw)isbeginifrising_edge(clk_raw)thenifa1=47999then a1<=(others=>'0'); else a1<=a1+1; endif; endif;endprocess;clk_1kh<=a1(15);附录3消抖电路signalcnt:std_logic_vector(2downto0):=(others=>'0');signalk1,k2:std_logic;begin p1:process(key_in,clk) begin ifkey_in='1'then cnt<="000"; elsiffalling_edge(clk)then ifcnt/=7then cnt<=cnt+1; endif; endif; endprocess; p2:process(clk) begin iffalling_edge(clk)then ifcnt/=7then k1<='0'; else k1<='1'; endif; k2<=k1; endif; endprocess; p3:key_out<=(notk1)andk2; 附录4控制电路process(c_state,condition)begin casec_stateis when"101"=> caseconditionis when"10"=>n_state<="011"; whenothers=>n_state<="101"; endcase; when"011"=> caseconditionis when"01"=>n_state<="010"; when"10"=>n_state<="001"; whenothers=>n_state<="011"; endcase; when"010"=> caseconditionis when"01"=>n_state<="011"; whenothers=>n_state<="010"; endcase; when"001"=> caseconditionis when"10"=>n_state<="011"; when"01"=>n_state<="101"; whenothers=>n_state<="001"; endcase; whenothers=>n_state<="101"; endcase;endprocess;process(clk)begin ifrising_edge(clk)then c_state<=n_state; endif;附录5十进制计数器process(rst,clk)isbeginifrst='1'then count<="0000";elsifrising_edge(clk)thenifcarry_in='1'thenifcount="1001"thencount<="0000";else count<=count+1;endif;endif;elsenull;endif;endprocess;附录9锁存器process(latch_en)begin data1<=cin1; data2<=cin2; data3<=cin3; data4<=cin4; data5<=cin5; data6<=cin6; iflatch_en='1'then cout1<=data1; cout2<=data2; cout3<=data3; cout4<=data4; cout5<=data5; cout6<=data6; endif;endprocess;附录10显示电路architectureBehavioralofdisplayissignalweixuan_code:std_logic_vector(2downto0):=(others=>'0');signalbcd:std_logic_vector(3downto0):=(others=>'0');beginweixuan_code<=weixuan_code+1whenclk'eventandclk='1'; withweixuan_codeselect weixuan<="11111110"when"000", "11111101"when"001", "11111011"when"010", "11110111"when"011", "11101111"when"100", "11011111"when"101", "10111111"when"110", "01111111"when"111", "11111111"whenothers;withweixuan_codeselect bcd<=cin1when"000", cin2when"001", "1111"when"010", cin3when"011", cin4when"100", "1111"when"101", cin5when"110", cin6when"111", "1111"whenothers;withbcdselect seg<="00000011"when"0000", "10011111"when"0001", "00100101"when"0010", "00001101"when"0011", "10011001"when"0100", "01001001"when"0101", "01000001"when"0110", "00011111"when"0111", "00000001"when"1000", "00001001"when"1001", "11111101"when"1111", "00000011"whenothers;endBehavioral;基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究HYPERLIN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班级网站课程设计
- 2024年柠檬酸甘油二酸酯项目规划申请报告模板
- 玻璃纤维原料研究报告
- 玻璃制备的课程设计
- 爱问 制药工程课程设计
- 爱心树阅读课程设计
- 泵站水池扰民问题研究报告
- 泵有关的课程设计
- 泵房节能改造保养方案
- 泵房应急保障措施方案
- 人教版(川教版)五年级上册生命生态安全教学设计和教学计划及进度表(附安全知识)
- 组织效能提升模型的商业化应用
- 《篮球三步上篮》说课PPT
- 1500TD菜籽坯预处理及榨油车间工艺流程设计
- 宪法与法律学习通课后章节答案期末考试题库2023年
- 北京科技大学第二批非教学科研岗位招考聘用模拟预测(共500题)笔试参考题库附答案详解
- 审计模拟实训教程第4版马春静课后部分参考答案
- 公务员制度、职业生涯发展及工作方法
- 水球(集体球类运动)
- T-JLA 003-2023 高速公路车距抓拍系统技术要求和检验方法
- 玄学净明明派丹法转自万景元
评论
0/150
提交评论