电子科技大学数字式秒表设计与实现 实验报告_第1页
电子科技大学数字式秒表设计与实现 实验报告_第2页
电子科技大学数字式秒表设计与实现 实验报告_第3页
电子科技大学数字式秒表设计与实现 实验报告_第4页
电子科技大学数字式秒表设计与实现 实验报告_第5页
已阅读5页,还剩28页未读, 继续免费阅读

下载本文档

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

文档简介

1、数字式秒表设计与实现 指导老师: 姓名:学号:摘 要 本文主要介绍了基于fpga使用vhdl语言的数字式秒表的设计开发流程。该设计以vhdl作为硬件开发语言,以ise作为软件开发平台,成功的实现了数字式秒表的计数、清零、暂停等功能。并使用了modelsim仿真软件对各个单元电路模块进行了仿真,且完成了综合布局布线,最终下载到电路板上,实际测试结果良好。关键字:fpga,vhdl,数字目录数字式秒表设计与实现1第一章引言41.1 选题背景41.2 实验方式41.3 技能培养4第二章基于fpga的vhdl设计流程52.1概述52.2vhdl语言介绍52.2.1vhdl的特点52.2.2vhdl开发

2、流程62.3fpga开发介绍82.3.1fpga简介82.3.2fpga开发流程8第三章 数字式秒表的软件开发环境103.1开发环境103.2modelsim介绍103.3 ise介绍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

3、附录10 显示电路31第一章引言1.1 选题背景电子技术综合实验课程通过引入模拟电子技术和数字逻辑设计的综合应用、基于mcu/fpga/eda技术的系统设计等综合型设计型实验,对学生进行电子系统综合设计与实践能力的训练与培养。 通过电子技术综合实验课程的学习,使学生对系统设计原理、主要性能参数的选择原则、单元电路和系统电路设计方法及仿真技术、测试方法拟定及调测技术有所了解;使学生初步掌握电子技术中应用开发的一般流程,初步建立起有关系统设计的基本概念,掌握其基本设计方法,为将来从事电子技术应用和研究工作打下基础。1.2 实验方式n 教师引导下的自主实验n 设计的全过程:方案、电路设计与仿真、设计

4、与实现、测试与调整、总结报告1.3 技能培养n 数字电路的综合设计应用n hdl语言 n fpga应用 n eda软件:ise、modelsimn 硬件电路制作或设计,调整与实现n 设计文档撰写 n 资料查阅第二章基于fpga的vhdl设计流程第2章2.1 概述数字秒表是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。秒表的设计有传统方法和现代方法,传统的设计方法耗时耗功,设计强度大,且容易出错,设计的质量不一定是最好的。自然我们考虑到现代方法,即eda。在eda设计工具中,用的最广泛的是vhdl和verilog,当然还有其

5、它的。比较vhdl和verilog,在顶层设计方面vhdl优于verilog,在门级电路设计方面verilog优于vhdl。随着复杂可编程逻辑器件(cpld)的广泛应用,以eda工具作为开发手段,运用vhdl语言,将使整个系统大大简化,提高整体的性能和可靠性。本次的数字式秒表设计主要是先顶层设计,将秒表的除了外部输入部分以外,其余全部在一片fpga芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字式秒表具有高速、精确、可靠、抗干扰性强和现场可编程等优点。2.2 vhdl语言介绍vhdl语言是一种硬件描述语言(

6、hardware descriptionlanguage,hdl),主要用在可编程逻辑器件(cpldfpga)和专用集成电路(asic)两个领域。写好的vhdl程序既可以下载到可编程逻辑器件中实现电路功能,又可以提交到工厂用于asic芯片的流片。vhdl主要用于描述数字系统的结构、行为、功能和接口。vhdl程序结构的特点是将一项工程设计或设计实体(可以是元件、电路模块或系统)分成外部和内部两部分,外部即可视部分,对设计实体和端口引脚进行声明;内部即不可视部分,描述模块的功能和算法。vhdl从实体与外部的接口以及实体内部的功能与结构这两个方面来描述实体,设计实体定义成功后就可生成共享功能模块。在

7、顶层综合或其他设计中就可以直接调用这个实体模块。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。2.2.1 vhdl的特点vhdl的特点:具有更强的行为描述能力vhdl的硬件描述能力很强,可以用于从门级、电路级直至系统级的描述、仿真、综合和调试,从逻辑功能和行为上描述和设计大规模系统,避开了具体器件内部结构。支持层次化和模块化设计这是运用eda工具进行电路和系统设计区别于传统设计方法的重要方面,简化了系统设计,优化了系统结构,提高了系统可靠性。可仿真与可综合仿真是指代码模拟硬件的行为,综合是指将代码转化成可物理实现的电路结构。所有的vhdl语句都能用于仿真,但有一部分vhdl语句不

8、能进行综合、翻译成与之对应的硬件电路,并在逻辑器件上实现。vhdl强大的仿真建模功能使设计者能在系统设计的各个阶段都能十分方便地对数字系统进行仿真验证。系统设计与硬件结构无关vhdl语言对设计的描述具有相对独立性,设计者可以进行独立的设计,可以不懂硬件的结构,也不必了解最终设计实现的目标器件是什么。具有很强的移植能力vhdl语言描述的设计通用性好,可以被支持vhdl标准的不同工具所支持,具有很强的移植能力。vhdl本身的生命周期长。vhdl的硬件描述与工艺无关,不会因工艺变化而过时,而且与工艺技术有关的参数可以用vhdl提供的属性加以描述,当生产工艺改变时,只需修改程序中相应属性参数即可。vh

9、dl语言具有强大的语言功能、硬件描述能力和移植能力及设计与器件无关的特性,并且vhdl语言程序易于共享和复用,因此得到了十分广泛的应用。2.2.2 vhdl开发流程采用vhdl语言对硬件电路进行描述的过程应该遵循一定的流程,通常情况下,其流程如图2.2.2-1所示。图2.2.2-1 vhdl设计电路从流程图可以看出,采用vhdl语言进行硬件电路设计的开发步骤主要包括以下几步:接受电路设计任务在进行硬件电路系统设计之前,首先作出总体设计方案,然后给出相应的硬件电路系统设计指标,最后将总体方案中各部分电路设计任务和要求下达给相应的设计部门。确定电路具体功能设计人员要具体分析电路的设计要求,确定其要

10、实现的具体功能。划分模块、编写程序利用vhdl语言设计硬件电路通常采用自顶向下的设计方法,从电路设计的总体要求出发,先确定顶层模块并进行顶层模块的设计,然后将顶层模块划分为不同的完成一定逻辑功能的子功能模块,最后再详细设计子功能模块。模块划分的好坏将会直接影响到最终的电路设计,设计人员在这一步应该花费一定的时间,保证模块划分的最优化。vhdl语言程序模拟vhdl语言程序模拟即功能仿真,是利用仿真软件对设计的逻辑功能进行验证,可以在设计的早期发现电路设计上的缺陷和错误,节省设计时间、缩短开发周期。综合、优化和布局布线综合的作用简单的说就将电路设计的较高级抽象层次的vhdl语言描述转化成底层电路表

11、示。优化的作用是将电路设计的时延缩到最小和有效利用资源。布局布线的作用是将通过综合和优化所得到的逻辑规划到一个逻辑器件的逻辑结构中,然后将各逻辑单元放置到相应优化的位置,最后再进行逻辑单元之间、逻辑单元和io之间的布线,以消除布线延迟。布局布线后的程序模拟布局布线后的程序模拟又称后仿真,既验证设计的逻辑功能,又验证时序。如果时序不能满足要求,就需要回到前面的步骤重新进行操作。生成器件编程文件和进行器件编程顾名思义,器件编程是针对可编程逻辑器件进行的操作,具体过程是:将设计描述经过编译、综合、优化和布局布线的结果,经过一定的映射转化成一个器件编程所用的数据文件格式,然后通过烧片器或者下载电缆将数

12、据文件下载到指定的可编程逻辑器件中去的过程。2.3 fpga开发介绍2.3.1 fpga简介fpga是20世纪90年代发展起来的,其密度已超过25x 104 f-ja平,内部门延时小于3ns。这种器件完成某种特定的功能是完全由用户通过软件进行配置和编程来实现的,而且可以反复擦写,它具有芯片逻辑资源丰富、成本低、功耗小等优势。此外,它的另一个突出特点是现场编程,在fpga工作的现场,可以不通过计算机把存于fpga外的rom中的编程数据加载给fpga,通过简单的设备就能改变fpga中的编程数据,从而改变fpga执行的逻辑功能。这种方法也叫做icr(ha circuit reconfiguratio

13、n,在电路上直接配置)编程。fpga的这个特点为工程技术人员维修、改进、更新电路逻辑功能提供了方便。大部分fpga采用基于sram的查找表(lut,lookuptable)结构。查找表本质上就是一个ram。若逻辑函数具有11个输入项的话,就需要由输入个数为n、容量为2n个位的ram单元存放函数值,ram的地址线起输入线的作用,地址即输入变量,ram输出为逻辑函数值。每输入一个信号进行逻辑运算就等于输入一个地址进行查表,地址所对应的内容就是输出。2.3.2 fpga开发流程图2.3.2-1 fpga开发流程对于目标器件为fpga和cpld的hdl设计,其工程设计的基本流程如图图2.3.2-1所示

14、。现具体说明如下:1、文本编辑:用任何文本编辑器都可以进行,也可以用专用的hdl编辑环境。通常vhdl文件保存为.vhd文件2、功能仿真:将文件调入hdl仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)3、逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成.edf(edif)的eda工业标准文件。4、布局布线:将.edf文件调入pld厂家提供的软件中进行布线,即把设计好的逻辑安放到pld/fpga内。5、时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后

15、仿真)6、编程下载:确认仿真无误后,将文件下载到芯片中7、硬件测试:硬件测试的目的是为了在更真实的环境中检验hdl设计的运行情况,特别是对于hdl程序设计上不是十分规范,语义上含有一定歧义的程序。第三章 数字式秒表的软件开发环境本章主要介绍项目中将要用到了一系列软件,包括用于vhdl语言编写和编译的ise软件和用于程序仿真的仿真软件modelsim。3.1开发环境在考虑各种情况后,在本次设计中,由于选择的fpga芯片是由xilinx公司生产的,所以我们主要使用modelsim和ise软件进行仿真和综合。3.2modelsim介绍modelsim是业界最优秀的hdl语言仿真器,它提供最友好的调试

16、环境,是唯一的单内核支持vhdl和verilog混合仿真的仿真器。是作fpgaasic设计的rtl级和门级电路仿真的首选,它采用直接优化的编译技术、tcftk技术、单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护ip核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段。全面支持vhdl和verilog语言的ieee标准,支持cc+功能调用和调试。modelsim专业版,具有快速的仿真性能和最先进的调试能力,全面支持unix(包括64位)、linux和windows平台。主要特点:rtl和门级优化,本地编译结构,编译仿真速度快;单内核vhdl和verilog混合仿真;源

17、代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖等功能;数据流chasex;signal spy;c和tcltk接121,c调试。是业界唯一单一内核支持vhdl、verilog hdl和systemc混合仿真的仿真器。同时也支持业界最广泛的标准如verilog 2001、systemverilog等,内部集成了用于cc+,plifli和systemc的集成c调试器。支持众多的asic和fpga厂家库,可以用于fpga和asic设计的rtl级和门级电路仿真。modelsiml8j最大的特点是其强大的调试功能:先进的数据流窗121,可以迅速追踪到产生不定或者错误状态的原因;性能分析工具

18、帮助分析性能瓶颈,加速仿真;代码覆盖率检查确保测试的完备;多种模式的波形比较功能;先进的signal spy功能,可以方便地访问vhdl或者vhdl和verilog混合设计中的底层信号;支持加密ip;可以实现与matlab的simulink的联合仿真。modelsim分几种不同的版本:se、pe、le和oem,其中se是最高级的版本而集成在actel、atmel、altera、xilinx以及lattice等fpga厂商设计工具中的均是其oem版本。se版和oem版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以xilinx公司提供的oem版本modelsim xe为例,对于代

19、码少于40000行的设计,modelsim se比modelsim xe要快10倍;对于代码超过40000行的设计,modelsim se要比modelsimxe快近40倍。3.3 ise介绍iset是xilinx公司提供的集成化fpga开发软件,它的主要功能包括设计输入、综合、仿真、实现和下载。(1)设计输入ise软件提供的设计输入工具包括用于hdl代码输入和报告查看的ise文本编辑器(texteditor),用于原理图编辑的工具ecs(engineering capturesystem),用于p core的coregenerator,用于状态机设计的statecad,以及用于约束文件编辑的

20、constraint editor等。(2)综合ise的综合工具不但包括了xilinx自身提供的综合工具xsr,同时还可以集成mentorgraphics公司的leonardospectrum和synplicity公司的synplify。(3)仿真ise本身自带了图形化波形编辑功能的仿真工具hdl bencher,同时又提供了使用modeltechnology公司的modelsim进行仿真的接口。(4)实现ise的实现功能包括了翻译(translate)、映射(map)、布局布线(place androute)等。(5)下载下载功能包括了bitgen,用于将布局布线后的设计文件转换为比特流(b

21、itstream)文件。还包括了impact功能,用于进行设备配置和通信,控制将程序烧写到fpga芯片中去。使用ise进行fpga开发大致可以分为3个步骤。(1)设计输入和仿真设计输入(design entry)是指以hdl代码、原理图、波形图以及状态机的形式输入设汁源文件,而设计仿真(simdmion)是指通过仿真工具对设计的整体模块或局部模块进行仿真来检验设计的功能和性能。(2)用户约束条件、综合和实现用户约束条件(user constraints)的作用是对综合、实现过程进行控制,满足速度、面积、引脚位置等需求。编辑约束条件又包括了4个子项,意义分别为:创建时间约束、配置引脚、创建面积约

22、束、以文本方式编辑约束。综合(synthesize)是fpga设计流程中的重要环节,综合结果的优劣直接影响到设计的最终性能。ise自带的综合工具是xst,同时它也支持synplifysynplify pro等第三方综合工具,但是由于xilinx对于其器件的底层最为了解,所以使用xst综合往往会得到比较满意的结果。综合包含了3个子项,意义分别为:查看综合报告、查看综合器件的rtl级原理图和检查语法。实现(implementation)过程也包含了3个子项,implementdesign项所对应的子项,意义分别是:翻译、映射和布局布线。需要注意,进行实现步骤之前必须进行约束条件的编辑,否则实现可能

23、会出错。(3)硬件编程硬件编程(programming)是指生成编辑比特流文件bit,并将其下载到fpga芯片内部的过程。硬件编程对应图2-5所示的generate programming file项。第四章数字式秒表的设计与实现344.1 任务要求4.2 实验条件4.3 原理框图按照以上需求,整个电路的原理图如图4.3-1所示:图4.3-1 电路原理图从原理图可知,系统需要以下模块:1.分频器:对晶体振荡器产生的时钟进行分频,产生时间基准信号。2.计数器:对时间基准脉冲进行计数,完成计时功能。3.数据锁存器:锁存数据,使显示保持暂停。4.控制器:控制计数器的运行、停止以及复位,产生锁存器的使

24、能信号。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-1 1khz信号仿真图4.4.2

25、输入控制电路输入控制模块的功能是识别有效地按键输入和实现输入的按键信号对电子秒表不同状态的控制。,秒表的状态可分为计数开/关,显示锁定开/关和清零。考到有两个输入按键,所以必须有输入控制电路,同时考虑到按下按键以及松开按键会出现抖动,所以必须设计防抖动电路。即按键输入信号,必须先经过防抖电路,然后进入控制电路。4.4.2.1 消抖电路由于按键输入,在按下过程中电平可能会有一个不确定的抖动状态。由于识别的有效按键电平为持续的低电平,因此设计一消抖电路,顶层设计框图如下:消抖电路的仿真结果如下所示:由图可见在1khz的驱动下,消抖电路能够做到每按一次按键只输出一个时钟周期,达到了按键消抖的目的。在

26、实际板子上应用的时候,也还要根据按键实际情况来调整一下计数的周期,从而达到最佳的效果。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所示。源程序为见附录

27、。仿真结果如图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”。源程序为见

28、附录. 图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,所以需要四位十进制计数器,以及二位六进制计数器。所以需要将六个计数

29、器组合起来,由低位计数达到最大值,向前一位进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 显示模

30、块显示模块主要完成显示扫描和编码翻译的功能。其中需要用到扫描器,多路选择器和译码器, 时钟信号连接一个扫描器,用计数原理输出3bit扫描信号。利用3-8译码器的原理,实现对八位数码管的扫描,输出位选信号;另一方面根据相应的位选信号,将要现实的bacd码转换成数码管的七段显示码输出,整个显示模块的顶层电路图如下:4.4.4.1 扫描器扫描器实现了八位数码管共用一组输入数据的可能性。其通过一个计数器,在每个时钟信号的上升沿,其输出的三位二进制信号加一,从“000”计数到“111”。当输出为“111”时,下一个时钟上升沿输出变为“000”,关键的程序代码如下:weixuan_code = weixu

31、an_code+1 when clkevent and clk=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的设计实现,然后再打开xilinx pace,在里面分配引脚,即实现设计的输

32、入输出端口与实际芯片的输入输出端口的对应连接。比如七段led管的控制信号就连接到实际电路的七个引脚。需要注意的是一些端口是固定的,不能胡乱的连接。比如时基信号即石英振荡器所提供的信号就只能由t8输入。一切都准备就绪后就,便可开始下载了.分配引脚的源文件如下:net clk_raw loc = n9;net duanxuan loc = b12;net duanxuan loc = a11;net duanxuan loc = c11;net duanxuan loc = c10;net duanxuan loc = a10;net duanxuan loc = b10;net duanxuan

33、 loc = a9;net duanxuan loc = c9;net split_reset loc = f4;net start_stop loc = g5;net weixuan loc = n13;net weixuan loc = m13;net weixuan loc = l13;net weixuan loc = k13;net weixuan loc = j13;net weixuan loc = j12;net weixuan loc = h13;net weixuan loc = g13;4.6 测试结果这个电路完成后的最顶层模块电路图如下:在成功下载并运行后,进行了各按钮

34、功能的检测(包括计数、暂停、复位、清零等功能的检查),以及与标准时间进行了对比,符合实验预估的各项指标,成功完成了数字式秒表的设计与实现。第五章 结论本文主要介绍了利用vhdl语言完成基于fpga的数字秒表的设计与实现。详细介绍了设计原理,设计方案以及各模块的设计过程及其实现的功能,并利用ise和modelsim对设计进行了仿真,分析,综合,并最终下载实际电路板中,成功实现了数字式秒表的所有功能。参考文献1 朱正伟eda技术及应用清华大学出版社20092 ise开发流程3 modelsim仿真流程致谢首先必须感谢的是刘曦老师对我的教导,在实验过程中对我的帮助,在此对刘曦老师致于最衷心的感谢。其

35、次感谢我的同学们,在我遇到问题时,能给我分析以及解决。最后感谢电子技术综合实验这门课程,让我从中学到了很多的东西。 附录附录1.电子秒表的顶文件- company: - engineer: - - create date: 11:03:09 11/18/2015 - design name: - module name: my_watch - behavioral - project name: - target devices: - tool versions: - description: - dependencies: - revision: - revision 0.01 - file

36、 created- additional comments: -# obuf : 16-=-device utilization summary:-selected device : 3s200aft256-5 - number of slices: 61 out of 1792 3% - number of slice flip flops: 79 out of 3584 2% - number of 4 input luts: 109 out of 3584 3% - number of ios: 19- number of bonded iobs: 19 out of 195 9% -

37、number of gclks: 3 out of 24 12% -library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;- uncomment the following library declaration if instantiating- any xilinx primitives in this code.-library unisim;-use unisim.vcomponents.all;entity my_watch ispor

38、t(clk_raw,start_stop,split_reset:in std_logic;weixuan:out std_logic_vector(7 downto 0);duanxuan:out std_logic_vector(7 downto 0);end my_watch;architecture behavioral of my_watch iscomponent fenpin port(clk_raw : in std_logic; clk_1kh : out std_logic);end component;component douxiaoport(clk : in std_

39、logic;key_in : in std_logic; key_out : out std_logic);end component;component counterport(clk : in std_logic;rst : in std_logic;count_en : in std_logic; seg1 : out std_logic_vector(3 downto 0);seg2 : out std_logic_vector(3 downto 0);seg3 : out std_logic_vector(3 downto 0);seg4 : out std_logic_vector

40、(3 downto 0);seg5 : out std_logic_vector(3 downto 0);seg6 : out std_logic_vector(3 downto 0);end component;component controlport(clk : in std_logic;start_stop : in std_logic;reset_split : in std_logic; reset : out std_logic;counter_en : out std_logic;latch_en : out std_logic);end component;component

41、 latchport(latch_en : in std_logic;cin1 : in std_logic_vector(3 downto 0);cin2 : in std_logic_vector(3 downto 0);cin3 : in std_logic_vector(3 downto 0);cin4 : in std_logic_vector(3 downto 0);cin5 : in std_logic_vector(3 downto 0);cin6 : in std_logic_vector(3 downto 0); cout1 : out std_logic_vector(3

42、 downto 0);cout2 : out std_logic_vector(3 downto 0);cout3 : out std_logic_vector(3 downto 0);cout4 : out std_logic_vector(3 downto 0);cout5 : out std_logic_vector(3 downto 0);cout6 : out std_logic_vector(3 downto 0);end component;component displayport(clk : in std_logic;cin1 : in std_logic_vector(3

43、downto 0);cin2 : in std_logic_vector(3 downto 0);cin3 : in std_logic_vector(3 downto 0);cin4 : in std_logic_vector(3 downto 0);cin5 : in std_logic_vector(3 downto 0);cin6 : in std_logic_vector(3 downto 0); seg : out std_logic_vector(7 downto 0);weixuan : out std_logic_vector(7 downto 0);end componen

44、t;signal clk_1kh,net_start,net_split,net_reset,net_counter_en,net_latch_en :std_logic;signal net_seg1,net_seg2,net_seg3,net_seg4,net_seg5,net_seg6:std_logic_vector(3 downto 0);signal net_out1,net_out2,net_out3,net_out4,net_out5,net_out6:std_logic_vector(3 downto 0);beginu0: fenpin port map(clk_raw =

45、clk_raw ,clk_1kh =clk_1kh );u2: douxiao port map(clk =clk_1kh,key_in =start_stop ,key_out =net_start );u3: douxiao port map(clk =clk_1kh ,key_in =split_reset ,key_out =net_split );u4_control: control port map(clk =clk_1kh,start_stop =net_start ,reset_split = net_split,reset = net_reset,counter_en =n

46、et_counter_en ,latch_en =net_latch_en );u5: counter port map(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: latch port map(latch_en = net_latch_en,cin1 = net_seg1,cin2 = net_seg2,cin3 = net_seg3,

47、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: display port map(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分频器 signal a1: std_logic_vector(15 downto 0):= ( others =0);beginprocess(clk_raw) is begin if rising_edge(clk_raw) then if a1=47999 thena10); elsea1=a1+1; end if; end if;end process;clk_1kh0);signal k1,k2:std_logic;beginp1:process(key_in,clk)beginif key_in=1 thencnt=000;elsif f

温馨提示

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

评论

0/150

提交评论