本科毕业论文__基于FPGA的数字电子钟系统设计.doc_第1页
本科毕业论文__基于FPGA的数字电子钟系统设计.doc_第2页
本科毕业论文__基于FPGA的数字电子钟系统设计.doc_第3页
本科毕业论文__基于FPGA的数字电子钟系统设计.doc_第4页
本科毕业论文__基于FPGA的数字电子钟系统设计.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

xx大学学士学位论文基于fpga的数字电子钟系统设计摘要随着电子技术的飞速发展,现代电子产品渗透到了社会的各个领域,并有力地推动着社会生产力的发展和社会信息化程度的提高。在现代电子技术中,可编程器无疑是扮演着重要角色。现场可编程门阵列(fpga)是近年来迅速发展起来的新型可编程器,其灵活的可编程逻辑可以方便的实现高速数字信号处理。它突破了并行处理、流水级数的限制,具有反复的可编程能力,从而有效的地利用了片上资源,加上高效的硬件描述语言(vhdl),从而为数字系统设计提供了极大的方便。本文较系统地介绍了fpga的基本结构、基本原理、功能特点及其应用;阐述了数字系统设计的基本思想及设计流程,同时,也概述了fpga在数字系统设计中的作用,基于fpga的数字系统设计方法和流程;简要介绍了vhdl语言的发展历程,vhdl语言的功能特点等。本文的主要内容是根据上述原理和方法设计一个电子钟系统,目的在于通过该系统的功能,体现出fpga在数据处理中的应用。该电子钟系统功能齐全,设计思路清晰。系统程序基于vhdl语言,采用模块化设计方法。系统设计包含8个子程序模块:分频组件、六十进制计数器组件、二十四进制计数器组件、闹钟设定组件、校时组件、i60bcd组件、i24bcd组件、以及二进制转换成七段码组件。每个子程序均经过eda工具仿真,并附有仿真图,最后将各模块组装为一个整体电子钟。关键词 电子设计自动化;现场可编程门阵列;硬件描述语言;电子钟digital electronic clock design based on technology of fpgaabstractwith the rapid development of electronic technology, modern electronic products have infiltrated into various fields of the society, and have effectively promoted the development of social productive forces and social information, also increased. in modern electronic technology, the programmable logic devices play a key role. field programmable gate arrays (fpga), a new type of programmable device, is developing rapidly recent years. it introduced the concept of flexible programmable logic, which can realize high-speed digital signal processing conveniently. it broke through the parallel processing, water levels of restrictions, has repeatedly programmable capacity to effectively use the on-chip resources, coupled with efficient hardware description language vhdl, so as to design digital systems conveniently. this article introduces a system of the basic structure of the fpga, the basic principle of features and applications; expounded on the basic design of digital systems thinking and design process, at the same time, also outlined the fpga in the design of digital systems, fpga-based digital system design methods and processes; gave a briefing on the development of vhdl language, vhdl language and other features. the main work is based on the principles and methods, design an electronic clock system to the adoption of the system, embodied in the fpga data processing of applications. the electronic clock system is fully functional, designed clear ideas. based on vhdl system procedures, the system is modular in design methods. it includes 8 sub-system design process modules:frequency division system, 60 m counter system, 24 m counter system, alarm clock settings system, timing system, i60bcd system, i24bcd system, and convert binary into seven-segment code system. each subroutine have been simulated by eda tools, with a simulation map. the modules will be the final assembly as a whole - the electronic clock.key words eda;fpga; vhdl; electronic clock不要删除行尾的分节符,此行不会被打印- ii -目录摘要iabstractii第1章 绪论11.1课题背景和意义11.2可编程器件的发展历程11.2.1早期的可编程器件pld21.2.2高级可编程器件fpga/cpld31.3国内外研究现状41.4本文主要内容5第2章 fpga基本结构及数字系统设计原理62.1 fpga的基本结构及工作原理62.1.1基于查找表结构的fpga82.1.2查找表结构的fpga逻辑实现原理82.1.3 fpga的工作原理92.2数字系统设计概述92.2.1数字系统的组成102.2.2数字系统设计方法102.2.3数字系统设计的一般过程112.3本章小结12第3章 数字电子钟功能模块设计133.1数字系统设计中的fpga133.1.1 fpga在数字系统设计中的作用133.1.2基于fpga的应用系统设计133.2数字系统设计的重要工具vhdl163.2.1 vhdl语言的特点163.2.2基于vhdl的系统设计流程173.3电子钟主要功能模块设计183.3.1分频模块183.3.2六十进制计数器模块193.3.3二十四进制计数器模块203.3.4校时模块223.3.5 bcd七段显示译码器233.4本章小结23第4章 电子钟模拟仿真及其分析244.1系统设计的总体思路244.2各功能模块仿真分析254.2.1 分频组件254.2.2 六十进制计数器组件254.2.3 二十四进制计数器组件264.2.4 闹钟设定组件264.2.5 校时组件274.2.6 i60bcd组件284.2.7 i24bcd组件294.2.8 二进制转换成七段码组件304.3数字电子钟功能仿真图304.4采用fpga设计优势分析334.5本章小结34结论35致谢36参考文献37附录a38附录b43附录c47附录d48千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“abstract”这一行后加一空行- iv -第1章 绪论1.1课题背景和意义20世纪70年代,随着中小规模集成电路的开发应用,传统的手工制图设计印刷电路板和集成电路的方法已无法满足设计的精度和效率的要求。因此工程师们开始进行二维平面图形的计算机辅助设计,以解脱复杂机械的版图设计工作,这就产生了第一代eda工具。在80年代,电子产品的规模和复杂程度的增加促使第二代eda工具的产生。第二代eda主要以计算机仿真和自动布局布线技术为核心,与此同时,还引出了以半定制概念为特征的专用集成电路概念。eda技术的物质基础即为可编程逻辑器件,又称为可编程asic。目前,代表可编程器件发展潮流的是复杂可编程逻辑器件(cpld)和可编程逻辑门阵列(fpga)。使用fpga构造数字电子系统,设计者可以不用考虑芯片内部的具体结构,也不用顾虑与外部的电路连接。设计者只需依据电路所要完成的具体逻辑功能,然后设法用软件描述出来即可。至于数据在芯片内部的处理过程,设计者不用考虑,但设计者可以通过仿真软件观察和验证数据的处理结果。这种设计方法,极大地降低了设计难度,提高了工作效率。本论文以fpga在数据处理中的应用立题,系统阐述基于fpga的数字系统设计方法,并尝试设计出一个简单的系统电子钟,掌握其设计的思想和方法,为以后设计更复杂的系统打下基础。1.2可编程器件的发展历程当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(asic)芯片,而且希望asic的设计周期尽可能短,最好是在实验室里就能设计出合适的asic芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(fpld),其中应用最广泛的当属现场可编程门阵列(fpga)和复杂可编程逻辑器件(cpld)。在数字电子系统领域,存在三种基本的器件类型:存储器、微处理器和逻辑器件。存储器用来存储随机信息,如数据表或数据库的内容。微处理器执行软件指令来完成范围广泛的任务,如运行字处理程序或视频游戏。逻辑器件提供特定的功能,包括器件与器件间的接口、数据通信、信号处理、数据显示、定时和控制操作、以及系统运行所需要的所有其它功能1。1.2.1早期的可编程器件pld逻辑器件可分为两大类固定逻辑器件和可编程逻辑器件。正如其命名一样,固定逻辑器件中的电路是永久性的,它们完成一种或一组功能,一旦制造完成,就无法改变。另一方面,可编程逻辑器件(pld)是能够为客户提供范围广泛的多种逻辑容量、特性、速度和电压参数的标准成品部件,而且此类器件可在任何时间改变,从而完成许多种不同的功能。 对于固定逻辑器件,根据器件复杂性不同,从设计、原型到最终生产所需要的时间可从数月至一年多不等。而且,如果器件工作不合适,或者如果应用要求发生了变化,那么就必须开发全新的设计。设计和验证固定逻辑的前期工作需要大量的nre成本。nre代表在固定逻辑器件最终从芯片制造厂制造出来以前客户需要投入的所有成本,这些成本包括工程资源、昂贵的软件设计工具、用来制造芯片不同金属层的昂贵光刻掩膜组以及初始原型器件的生产成本。这些nre成本可能从数十万美元至数百万美元。 对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计。然后,可快速将设计编程到器件中,并立即在实际运行的电路中对设计进行测试。早期的可编程逻辑器件只有可编程只读存贮器(prom)、紫外线可擦除只读存贮器(eprom)和电可擦除只读存贮器(eeprom)三种。由于结构的限制,它们只能完成简单的逻辑功能。其后,出现了一类在结构上稍复杂的可编程芯片,即可编程逻辑器件(pld),它能够完成各种数字逻辑功能。典型的pld由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以,pld能以乘积和的形式完成大量组合逻辑功能,pld基本框图如图1-1所示。 图1-1 pld的基本框图这一阶段的产品主要有pal(可编程阵列逻辑)和gal(通用阵列逻辑)。 pal由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。pal器件是现场可编程的,它的实现工艺有反熔丝技术、eprom技术和eeprom技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(pla),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。 pla器件既有现场可编程的,也有掩膜可编程的。在pal的基础上,又发展了一种通用阵列逻辑gal (generic array logic),如gal16v8,gal22v10 等。它采用了eeprom工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用2。 固定逻辑器件和pld各有自己的优点。例如,固定逻辑器件经常更适合大批量应用,因为它们可更为经济地大批量生产。对一些需要极高性能的应用,固定逻辑也可能是最佳的选择。 然而,可编程逻辑器件提供了一些优于固定逻辑器件的重要优点,包括:1pld在设计过程中为客户提供了更大的灵活性,因为对于pld来说,设计反复只需要简单地改变编程文件就可以了,而且设计改变的结果可立即在工作器件中看到。 2pld不需要漫长的前导时间来制造原型或正式产品pld器件已经放在分销商的货架上并可随时付运。 3pld不需要客户支付高昂的nre成本和购买昂贵的掩膜组。pld供应商在设计其可编程器件时已经支付了这些成本,并且可通过pld产品线延续多年的生命期来分摊这些成本。4pld允许客户在需要时仅订购所需要的数量,从而使客户可控制库存。采用固定逻辑器件的客户经常会面临需要废弃的过量库存,而当对其产品的需求高涨时,他们又可能为器件短缺(供货不足)所苦,并且不得不面对生产延迟的现实。 5pld甚至在设备付运到客户那儿以后还可以重新编程。事实上,由于有了可编程逻辑器件,一些设备制造商现在正在尝试为已经安装在现场的产品增加新功能或者进行升级。要实现这一点,只需要通过因特网将新的编程文件上载到pld就可以在系统中创建出新的硬件逻辑3。1.2.2高级可编程器件fpga/cpld可编程逻辑器件的两种类型是现场可编程门阵列(fpga)和复杂可编程逻辑器件(cpld)。在这两类可编程逻辑器件中,fpga采用了逻辑单元阵列lca(logiccellarray)这样一个新概念,内部包括可配置逻辑模块clb(configurablelogicblock)、输出输入模块iob(inputoutputblock)和内部连线(interconnect)三个部分。fpga的基本特点主要有: 1采用fpga设计asic电路,用户不需要投片生产就能得到合适芯片。2fpga可做其它全定制或半定制asic电路的中试样片。 3fpga内部有丰富的触发器和io引脚。4fpga是asic电路中设计周期最短、开发费用最低、风险最小的器件之一。 5fpga采用高速chmos工艺,功耗低,可以与cmos、ttl电平兼容。fpga提供了最高的逻辑密度、最丰富的特性和最高的性能。现在最新的fpga器件,如xilinxvirtex系列中的部分器件,可提供八百万“系统门”(相对逻辑密度)。这些先进的器件还提供诸如内建的硬连线处理器(如ibmpowerpc)、大容量存储器、时钟管理系统等特性,并支持多种最新的超快速器件至器件(device-to-device)信号技术。fpga被应用于范围广泛的领域中,从数据处理和存储直到仪器仪表、电信和数字信号处理。 与此相比,cpld提供的逻辑资源少得多最高约1万门。但是,cpld提供了非常好的可预测性,因此对于关键的控制应用非常理想。而且cpld器件(如xilinxcoolrunner系列)需要的功耗极低,并且价格低廉,从而使其对于成本敏感的、电池供电的便携式应用(如移动电话和数字手持助理)非常理想4。由于cpld和fpga结构上的差异,具有各自的特点:1cpld更适合完成各种算法和组合逻辑,fpga更适合于完成时序逻辑。换句话说, fpga更适合于触发器丰富的结构,而cpld更适合于触发器有限而乘积项丰富的结构。2cpld的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而fpga的分段式布线结构决定了其延迟的不可预测性。3在编程上fpga比cpld具有更大的灵活性。cpld通过修改具有固定内连电路的逻辑功能来编程,fpga主要通过改变内部连线的布线来编程; fpga可在逻辑门下编程,而cpld是在逻辑块下编程。4fpga的集成度比cpld高,具有更复杂的布线结构和逻辑实现。5cpld比fpga使用起来更方便。cpld的编程采用e2prom或fastflash技术,无需外部存储器芯片,使用简单。而fpga的编程信息需存放在外部存储器上,使用方法复杂。6cpld的速度比fpga快,并且具有较大的时间可预测性。这是由于fpga是门级编程,并且clb之间采用分布式互联,而cpld是逻辑块级编程,并且其逻辑块之间的互联是集总式的。7在编程方式上, cpld主要是基于e2prom或flash存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。cpld又可分为在编程器上编程和在系统编程两类。fpga大部分是基于sram编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入sram中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。8cpld保密性好, fpga保密性差。9一般情况下, fpga的功耗要比cpld大,且集成度越高越明显5。1.3国内外研究现状过去几年时间里,可编程逻辑供应商取得了巨大的技术进步,以致现在pld被众多设计人员视为是逻辑解决方案的当然之选。能够实现这一点的重要原因之一是像赛灵思这样的pld供应商是“无晶圆制造厂”企业,并不直接拥有芯片制造工厂,赛灵思将芯片制造工作外包给联华电子(umc)和东芝,他们是芯片制造行业的领导厂商。这一策略使赛灵思可以集中精力设计新产品结构、软件工具和ip核心,同时还可以利用最先进的半导体制造工艺技术。先进的工艺技术在一系列关键领域为pld提供了帮助:更快的性能、集成更多功能、降低功耗和成本等。目前赛灵思提供采用先进的90nm和65nm工艺生产的可编程逻辑器件,它们都是业界最领先的工艺。例如,仅仅数年前,最大规模的fpga器件也仅仅为数万系统门,工作在40mhz。过去的fpga也相对较贵,当时最先进的fpga器件大约要150美元。然而,今天具有最先进特性的fpga可提供百万门的逻辑容量、工作300mhz,成本低至不到10美元,并且还提供了更高水平的集成特性,如处理器和存储器。 同样重要的是,pld现在有越来越多的核心技术(ip)库的支持-用户可利用这些预定义和预测试的软件模块在pld内迅速实现系统功能。ip核心包括从复杂数字信号处理算法和存储器控制器直到总线接口和成熟的软件微处理器在内的一切。此类ip核心为客户节约了大量时间和费用,否则,用户可能需要数月的时间才能实现这些功能,而且还会进一步延迟产品推向市间6。 1.4本文主要内容本文首先介绍了fpga相关的背景知识以及fpga的基本结构和工作原理,阐述了数字系统的构造方法和流程,从而为应用fpga构建数字系统打下基础。同时具体介绍了构成电子钟主要功能模块特性与功能,在此基础上给出电子钟系统的设计方法和设计过程,这其中包括电子钟的总体框图架构,各模块的模拟仿真及其分析。最后,结合此次设计的亲身经历,对fpga技术进行简单的总结。第2章 fpga基本结构及数字系统设计原理自1985年xilinx公司推出第一片现场可编程逻辑门阵列即fpga至今,fpga已经经历了20余年的发展历史。在这20多年的发展过程中,以fpga为代表的数字系统现场集成技术取得了惊人发展:fpga从最初的1200个可利用门,发展到20世纪90年代的25万个可利用门,进入2000年以后,国际上著名的fpga厂商altera公司和xilinx公司相继推出了数百万个可利用门的单片fpga芯片,将fpga的集成度提高到了一个新的水平。2.1 fpga的基本结构及工作原理fpga的基本结构由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块ram、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等,fpga的基本结构图如图2-1所示。可编程i/o单元 嵌入式ram 基本可编程逻辑单元 内嵌专用内核 底层嵌入 功能单元 布线资源图2-1 fpga的基本结构每个单元简介如下: 1可编程输入/输出单元(i/o单元)目前大多数fpga的i/o单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与i/o物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。2基本可编程逻辑单元fpga的基本可编程逻辑单元是由查找表(lut)和寄存器(register)组成的,查找表完成纯组合逻辑功能。fpga内部寄存器可配置为带同步/异步复位和置位、时钟使能的触发器,也可以配置成为锁存器。fpga一般依赖寄存器完成同步时序逻辑设计。一般来说,比较经典的基本可编程单元的配置是一个寄存器加一个查找表,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。学习底层配置单元的lut和register比率的一个重要意义在于器件选型和规模估算。由于fpga内部除了基本可编程逻辑单元外,还有嵌入式的ram、pll或者是dll,专用的hard ip core等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的register或lut的数量衡量。3嵌入式块ram目前大多数fpga都有内嵌的块ram。嵌入式块ram可以配置为单端口ram、双端口ram、伪双端口ram、cam、fifo等存储结构。cam,即为内容地址存储器。写入cam的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。简单的说,ram是一种写地址,读数据的存储单元;cam与ram恰恰相反。除了块ram,xilinx和lattice的fpga还可以灵活地将lut配置成ram、rom、fifo等存储结构。4丰富的布线资源布线资源连通fpga内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源的划分:(1) 全局性的专用布线资源:以完成器件内部的全局时钟和全局复位/置位的布线;(2) 长线资源:用以完成器件bank间的一些高速信号和一些第二全局时钟信号的布线。(3) 短线资源:用来完成基本逻辑单元间的逻辑互连与布线; (4) 其他:在逻辑单元内部还有着各种布线资源和专用时钟、复位等控制信号线。由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。其实布线资源的优化与使用和实现结果有直接关系。 (5) 底层嵌入功能单元72.1.1基于查找表结构的fpga 查找表(look-up-table)简称为lut,lut本质上就是一个ram。目前fpga中多使用4输入的lut,所以每一个lut可以看成一个有4位地址线的16x1的ram。当用户通过原理图或hdl语言描述了一个逻辑电路,pld/fpga开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入ram,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。基于查找表(lut)的fpga的结构如图2-2所示。图2-2 基于查找表(lut)的fpga的结构2.1.2查找表结构的fpga逻辑实现原理由于lut主要适合sram工艺生产,所以目前大部分fpga都是基于sram工艺的,而sram工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到fpga中,然后fpga就可以正常工作,由于配置时间很短,不会影响系统正常工作。也有少数fpga采用反熔丝或flash工艺,对这种fpga,就不需要外加专用的配置芯片。以图2-3电路所示。图 2-3 fpga逻辑实现原理a,b,c,d由fpga芯片的管脚输入后进入可编程连线,然后作为地址线连到到lut,lut中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。 该电路中d触发器是直接利用lut后面d触发器来实现。时钟信号clk由i/o脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与i/o脚相连,把结果输出到芯片管脚。这样pld就完成了图2-3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)这个电路是一个很简单的例子,只需要一个lut加上一个触发器就可以完成。对于一个lut无法完成的电路,就需要通过进位逻辑将多个单元相连,这样fpga就可以实现复杂的逻辑8。2.1.3 fpga的工作原理fpga中实现各种组合逻辑功能的原理是,通过对各存储器单元的编程,来控制门阵列中的开与关,从而实现不同的逻辑功能。编程过程实际上是对个存储单元写入数据的过程,这些数据也称为编程数据。存储单元中的编程数据一旦确定,门阵列的逻辑关系也就确定了。在上述门阵列的基础上增加些触发器,便可构成即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元电路。fpga中就是由很多类似这样的基本逻辑单元来完成各种复杂逻辑功能的。2.2数字系统设计概述所谓数字系统的设计,就是用规范的和形式化的方式做出正确的系统逻辑功能的描述,详细反应系统的逻辑进程和具体的逻辑运算操作,并选用具体的电路来实现所描述的系统逻辑。2.2.1数字系统的组成数字系统能够完成存储、处理、和传输数字信息的功能。数字系统主要由数据处理器和控制器两部分组成。大型的数字系统还可以包含若干的子系统,其结构如下图所示。图中数据处理器由寄存器和组合电路组成,寄存器用于暂存信息;组合电路实现对数据的加工和处理。控制器接受外部输入信号和各个逻辑功能部件或子系统的反馈输入信号,进行处理后,发出各种控制命令,用来控制各逻辑功能部件或子系统(对于由若干字系统组成的数字系统而言)协调的工作,实现整个数字系统的复杂功能。数字系统的组成流程图如图2-4所示。图 2-4 数字系统的组成2.2.2数字系统设计方法随着数字集成技术和计算机技术的发展,数字系统设计的理论和方法也在不断的发展和变化。数字系统的实现方法经历了由分立元件、小规模集成电路、中规模集成电路、大规模集成电路、到超大规模集成电路的过程。传统的数字系统设计方法是利用真值表、卡诺图、状态方程组、状态转换图等描述工具建立系统模型进行系统设计的方法。对于一个比较复杂的数字系统,由于它的输入变量数、输出变量数和内部状态变量数很多,如果用常规的工具(如真值表、卡诺图、状态方程等)和传统的数字系统设计方法来描述和设计将十分困难,有时甚至无法进行,因此必须寻求从系统总体出发。这样的数字系统设计方法有多种,常用的有自顶向下法和自底向上法等。1自顶向下法自顶向下法(from top to down)是一种从抽象定义到具体实现,从高层次到低层次逐步求精的分层次、分模块的设计方法,它是数字系统设计中最常用的方法之一。该设计方法的具体实施过程是:首先根据系统的总体功能要求,进行系统级设计;然后按照一定的标准将整个系统划分成若干子系统;接着将各个子系统划分为若干功能模块,针对各模块进行逻辑电路设计。在对系统进行划分时需要注意子系统的数目是否合适。子系统划分的太少,则失去了模块化设计的特点;子系统划分的太多,则系统之间的连接过于复杂,容易出错。子系统设计的首要任务是对其功能进行正确划分,也就是说,能将其正确的划分为:控制模块和数据处理模块。数据处理模块的设计一般比较简单,子系统设计的主要任务是控制器模块的设计。2自底向上法自底向上法是根据系统要求,从具体的器件、逻辑部件或者想死系统开始,凭借设计者熟练的技巧和丰富的经验通过对其进行相互连接、修改和扩大,构造所要求的系统。该方法是从底层设计开始的,设计者无论是取用现成模块还是自行设计电路,其设计成本和开发周期都优于自顶向下法;但由于设计是从低级别开始,所以不能保证整体设计的最佳性。2.2.3数字系统设计的一般过程数字系统设计分为系统级设计和逻辑级设计两个阶段。若采用自顶向下的设计方法,则需要先进行系统级设计,再进行逻辑级。其一般过程是:在详细了解设计任务的基础上,确定系统的整体功能;用某种方法描述系统功能,设计实现系统功能的算法;根据算法选择电路结构;选择器件并实现电路。1系统级设计的过程(1) 在详细了解设计任务的基础上,确定顶层系统的方案这是设计过程的第一阶段,要求对设计任务做透彻地了解,确定设计任务及系统的整体功能、输入信号及输出信号。(2) 描述系统功能,设计算法描述系统功能就是用符号、图形、文字、表达式等形式来正确描述系统应具有的逻辑功能和应达到的技术指标。设计算法就是寻求一个解决问题的步骤,实质是把系统要实现的复杂运算分解成一组有序进行的子运算。描述算法的工具有:算法流程图、asm图、mds图等。系统级设计实质上是原理性设计,是数字系统设计的关键步骤,也是最困难的、最具有创造性的一步。2逻辑级设计的过程(1) 根据算法选择电路结构系统算法决定电路结构。虽然不同的算法可以实现相同的系统功能,但是电路结构是不同的;相同的算法也可能对应不同的电路结构。(2) 选择器件并实现电路 根据设计选择适当的器件来实现电路,并导出详细的电路图。随着数字集成技术的飞速发展,vlsi规模核技术复杂度也在急剧增长,人工设计数字系统十分困难,必须依靠自动设计(eda)技术。用eda技术设计系统的实质是一种自顶向下的分层设计方法。在每一层次上,都有描述、划分、综合和验证四种类型的工作。描述是电路与系统设计的输入方法,它可以采用图形输入、硬件描述语言或二者混合使用的方法输入。整个设计过程只有该部分有设计者完成。划分、综合和验证则采用eda软件平台自动完成。这样做大大简化了设计工作,提高了效率,因此,采用eda技术设计数字系统地方法得到了越来越广泛的应用。2.3本章小结本章主要对fpga的基本结构和数字系统设计进行叙述。首先阐述了fpga各结构的简要介绍以及fpga的工作原理;并对数字系统设计的组成,其中常用的两种设计方法和数字系统设计的基本流程进行了简单介绍。 第3章 数字电子钟功能模块设计基于fpga的数字电子钟包含8个子程序模块:分频组件、六十进制计数器组件、二十四进制计数器组件、闹钟设定组件、校时组件、i60bcd组件、i24bcd组件、以及二进制转换成七段码组件。本章将结合数字系统设计相关知识对其中的主要功能模块组件进行设计。3.1数字系统设计中的fpga3.1.1 fpga在数字系统设计中的作用现场可编程门阵列fpga填补了数字系统设计的空白,是对微处理器的补充。尽管微处理器能用于许多场合,但是它们依靠软件才能实现其功能因此比起定制芯片,它们一般运行速度比较慢而且功耗大。同样的,fpga也不是定制芯片,因此,它们无法像那些为某一应用而设计的定制芯片那样擅长完成特定功能。fpga一般也比定制芯片运行速度慢而且功耗大,同时相对较贵,所以,人们认为定值芯片较为便宜。但是,由于fpga是标准芯片,因而能够弥补定制芯片的一些不足。1从完成设计到取得一个可工作的芯片之间不用等待,可以把程序写入fpga并立即进行测试。2fpga是一种出色的制作样机工具。当在最终设计中用到fpga时,可以更简单、更容易完成从样机到产品的飞跃。3同种类型的fpga可以用于不同类型的设计中,以降低库存费用。 fpga主要是胶合逻辑和样机设计的工具。所谓胶合逻辑,即将系统的主要元件连接在一起的逻辑。现在,fpga被用于组建各种各样的数字系统:高速电信设备、家庭个人视频录像机的视频加速器。fpga已经成为数字系统实现的主流器件。3.1.2基于fpga的应用系统设计实现逻辑功能只是fpga或任何数字系统设计必须达到的一个目标,为了使设计获得成功,还必须满足以下属性:1性能:逻辑器件必须在要求的速度下工作,性能可以用以下几种方案来衡量,比如吞吐量和等待时间。时钟频率也经常作为性能的一个衡量因素。2功率/能量:芯片通常在一定的能量或功率预算下工作。在电池供电的系统中,能量消耗是很关键的。即使系统用电取于电力网,热耗散也会浪费金钱,同时会对电器件构成损害,因此必须加以控制。3设计时间:不可能无限期地进行设计,由于fpga是标准器件,因此它在设计按时间上有一些优势。它们可以作为样机,可以快速编程,而且它们可以用作最终设计的一部分。4设计成本:设计时间是设计成本的一个重要组成部分,但是还需要考虑其他因素,比如对支持工具的投入等。fpga的开发工具一般比vlsi开发工具便宜。5生产成本:生产成本是多次复制系统的成本。通常情况下,fpga的编程费用比asic高,但是由于fpga是标准器件,这有助于降低生产成本。基于fpga的应用系统设计大体分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个流程。1设计输入设计输入包括使用硬件描述语言(hdl)、状态图与原理图输入三种方式。hdl设计方式是现今设计大规模数字集成电路的良好方式。hdl描述语言在状态机、控制逻辑、总线功能方面较强,使其描述的电路能在特定综合工具作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点。2设计综合总和就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。3仿真验证从广义上讲,设计验证包括功能与时序仿真和电路验证。方针是指使用设计软件包对已经实现的设计进行完整测试,模拟实际物理环境下的工作情况,前仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能是否满足设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性;而在布局布线后,提取有关的器件延时、连线延时等时序参数,并在此基础上进行的仿真称为后仿真,这是接近真实器件运行的仿真。4设计实现实现可理解为利用实现工具把逻辑映射到目标器件的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行布线,并产生相应的文件。通常可分为以下几个步骤;(1) 转换:将多个设计文件进行转换,并合并到一个设计库文件中。(2) 映射:将网表中的逻辑门映射成物理元素,即把逻辑设计分割到构成可编程逻辑阵列的可配置逻辑块与输入输出块及其他资源中的过程。(3) 布局与布线。(4) 时序提取:产生一个目标文件,供后续的时序仿真使用。(5) 配置:产生fpga配置时需要的位流文件。在实现过程中可以进行选项设置。引起支持增量设计,可以对其重复多次布线,且每次布线可利用上一次布线信息,以使布线更优或达到设计目标。在实现过程中应设置默认配置的下载形式,以使后续位流下载正常。5时序分析在设计实现过程中,在映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。从某种程度上讲,静态时序分析可以说是整个fpga设计中最重要的步骤,它允许设计者详尽地分析所有关键路径,并得出一个有次序的报告,而且报告中含有其他调试信息,比如每个网络节点的扇出或容性负载等。静态时序分析器可以用来检查设计的逻辑和时序,以便计算各通路性能,识别可靠的踪迹,检测建立和保持时间的配合。时序分析器不要求用户产生输入激励或测试矢量。设计流程图如图3-1所示。图 3-1 数字系统的设计流程6下载验证下载是在功能仿真和时序仿真正确的前提下,将综合后形成的位流下载到具体的fpga芯片中,也叫芯片配置,fpga设计有两种配置模式:直接由计算机经过专用下载电缆进行配置;由外围配置芯片进行上电时自动配置。因为fpga具有掉电信息丢失的性质,因此可以在验证初期使用电缆直接下载位流。3.2数字系统设计的重要工具vhdl3.2.1 vhdl语言的特点在传统的硬件电路设计中,主要的设计文件时电路原理图,而采用hdl设计系统硬件电路时主要使用hdl编写源程序。所谓硬件描述语言(hdl),就是该语言可以描述硬件的功能,信号连接关系及定时关系。许多公司开发了自己专有的hdl,包括zycad公司的isp,gateway design automation公司的verilog以及mentor graphics公司的blm。其中,silicon compiler公司及gateway公司的verilog以c语言为基础。udl/i在日本以标准hdl的形式出现。多年来设计者一直使用这些专门的hdl。 1982年,各asic芯片厂相继开发了用于各自目的的hdl,1987年底,ieee确认美国国防部开发的vhdl为标准硬件描述语言。之后,各eda公司研究的硬件电路设计工具逐渐向vhdl靠拢,vhdl在电子设计领域得到了广泛的接受,1993年,ieee对vhdl进行了修订,公布了新版本的vhdl。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,在电子工程领域,从各公司的设计人员到大学的教授、学生都极其重视对其的学习研究,vhdl已成为事实上的通用硬件描述语言。有专家认为,在21世纪中,几乎全部的数字系统设计将由vhdl与verilog语言承担。vhdl语言和其他语言相比,最大的区别在于计方法的差别。vhdl的主要优点有:1vhdl支持自顶至下的和基于库的设计方法,而且支持同步电路、异步电路、fpga以及其他随机电路的设计。vhdl具有比其他硬件描述语言更强的行为描述能力,基于抽象的行为描述风格避开了具体的硬件结构,是设计人员能从逻辑行为上描述和设计大规模电子系统。2vhdl语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计在利用的功能,它支持系统的数学模型直到门级电路的描述,并且高层次的行为描述和低层次的门级电路描述、结构描述可以混合使用。这些特点符合ic设计的市场要求。vhdl支持系统级描述,这是它由于其他硬件描述语言的突出优点。例如,verilog语言是一种门级电路描述语言,其风格接近于电路原理图,设计者需要搞清楚具体的电路结构的细节,因此其工作量通常较大。vhdl语言却最适合描述电路的行为,即描述电路的功能,然后由综合器生成符合要求的电路网络。3vhdl的硬件描述与具体的工艺技术和硬件结构无关,当门级或门级以上的描述通过仿真检验后,再利用相应的工具将设计映

温馨提示

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

评论

0/150

提交评论