基于FPGA的数字电子时钟_第1页
基于FPGA的数字电子时钟_第2页
基于FPGA的数字电子时钟_第3页
基于FPGA的数字电子时钟_第4页
基于FPGA的数字电子时钟_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、基于fpga的数字电子时钟第1章 绪 论数字化是电子设计发展的必由之路已成为共识。在数字化的道路上,我国电子设计技术的发展经历了,并将继续经历许多重大的变革与飞跃、从应用ssi通用数字电路芯片构成电路系统,到广泛地应用mcu(微控制器或单片机),它使得电子系统的智能化水平在广度和深度上产生了质的飞跃。mcu的广便应用并没有抛弃ssi的应用,而是为它们在电于系统中找到了更合理的地位。随着社会经济发展的延伸、各类新型电子产品的开发为我们提出了许多全新的课题和更高的要求。fpga在eda基础上的广泛应用从某种意义上说,新的电子系统运转的物理机制又将回到原来的纯数字电路结构,但这是种更高层次的循环,应

2、是一次否定之否定的运动,它在更高层次上容纳了过去数字技术的优秀部分,对mcu系统将是种扬弃,但在电子设计的技术操作和系统构成的整体上却发生质的飞跃。如果说mcu在逻辑的实现上是无限的话,那么高速发展的fpga不但包括了mcu这一特点,并兼有串、并工作方式和高速、高可靠性以及宽口径适用等诸多方面的特点、不仅如此,随着eda技术的发展和fpga在深亚微米领域的进军、它们与mcu、mpu、dsp、ad、da、ram和rom等独立器件问的物理与功能界限正日趋模糊。以大规模集成电路为物质基础的eda技术终于打破了软硬件之间最后的屏障,使软硬件工程师们有了共同的语言1。1.1 课题背景电子产品随着技术的进

3、步,更新换代速度可谓日新月异。不同行业层出不穷的技术需求,使得对配套电子系统或部件的功能、可靠性、集成度、成本、设计周期的要求日益提高。随着时间的推移,科学研究与技术开发行为日益市场化,而远非纯粹的学术行为,这要求设计工作必须在较短的时间内出色完成,技术人员感到工作压力越来越大。显然,采用传统的电子设计手段完成复杂电子系统设计显得越来越力不从心了,传统的电子设计与现实手段受到极大的挑战。 如果在激烈的技术产品竞争中仍沿用老办法,很可能在激烈的竞争中处于被动落后的境地,例如,当设计比较复杂的电子系统时,要等到做完全部硬件试验才开始设计印制电路板,这样,设计周期必然会相应拉长,即使设计出印制电路板

4、来,也很难保证它的电气连接全部正确、各个元器件参数合理以及完善的电磁兼容性能,如果需要设计实现的数字电路部份规模较大,仍习惯地利用中、小规模数字集成芯片实现,电路的集成度和可靠性在许多应用场合会受到很大限制,甚至根本无法满足需求。作为电路主体的器件,特别是集成电路器件功能越来越强大,集成度越来越高,传统设计方式已难以胜任。 eda即电子设计自动化,英文全称electronic design automation,eda技术是以计算机为工作平台,以eda软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以芯片为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。eda

5、技术满足了提高设计规模、质量和效益的需要。目前,电子产品开发领域的竞争十分激烈,其产品的市场周期越来越短,这意味着电子产品的设计开发周期必须大大缩短,没有高效率的设计手段是无法参与市场竞争的。eda工具的优势体现在复杂电路系统的设计上,其设计效率远远高于人工设计,而且可按照事先规定的设计规则随时进行检查,及时提醒设计者出现的设计失误,设计质量得到保障,这自然会缩短周期、降低成本、提升竞争力,从而最大限度地提高经济效益。 eda技术是以计算机科学和微电子技术发展为先导,汇集了计算机图形学、拓扑逻辑学、微电子工艺与结构等多种学科的先进技术,它是在计算机工作平台产生的电子系统设计应用技术。eda技术

6、随着计算机、集成电路和电子系统设计的发展,经历了计算机辅助设计cad、计算机辅助工程设计cae和电子设计自动化eda 3个发展过程。eda技术融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。eda软件在电子行业的应用也越来越广泛,但和发达国家相比,我国的电子设计水平仍然存在着相当大的差距,随着经济全球化,中国已走入wto,随着加入wto,电子行业将会受到较大的冲击。但我国许多从事电子设计工作的人员对eda软件并不熟悉,因此需提高电子设计在电脑方面应用的水平。1.2 硬件描述语言硬件描述语言(hardware description language )是

7、硬件设计人员和电子设计自动化(eda)工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用erilog hdl或vhdl 建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(netlist),根据网表和某种工艺的器件自动生成具体电路, 然后生成该工艺条件下这种具体电路的延时模型。仿真验证无误后,用于制造asic芯片或写入cpld和fpga器件中。随着pc平台上的eda工具的发展,pc平台上的verilog hdl和vhdl仿真综合性能已相当优越,这就为大规模普及这种新技术铺平了道路。目前国内只有少数重点

8、设计单位和高校有一些工作站平台上的eda工具,而且大多数只是做一些线路图和版图级的仿真与设计,只有个别单位展开了利用verilog hdl和vhdl模型(包括可综合和不可综合)的进行复杂的数字逻辑系统的设计。随着电子系统向集成化、大规模、高速度的方向发展,hdl语言将成为电子系统硬件设计人员必须掌握的语言3。1.2.1 vhdl语言vhdl(very high speed integrated circuit hardw are description language,超高集成电路硬件描叙语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为ieee(the ins

9、titute of electrical and electronics)的一种工业标准硬件描叙语言。vhdl主要用于描述数字系统的结构、行为、功能和接口,非常适合用于可编程逻辑芯片的应用设计。除了含有许多具有硬件特征的语句外,vhdl的语言形式和描述风格与句法十分类似于一般的计算机高级语言。vhdl的程序特点是将一项工程设计,或称为设计实体(可以是个元件、电路模块或一个系统)分成外部(或称可示部分,即端口)和内部(或称为不可视部分,即结构体)两部分,外部负责对设计实体和端口引脚命名和说明,内部负责对模块功能和算法进行描述。在对一个设计实体定义了外部界面后,一旦其内部结构、功能开发完成,即可生

10、成共享功能模块,这就意味着,在顶层综合或其他设计中可以直接调用这个实体模块。vhdl具有较强的行为描述能力,可避开具体的器件结构,从逻辑功能和行为上进行描述和设计3。1.2.4 vhdl设计中电路简化问题的探讨8 随着集成电路技术的发展,用传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率。在这样的技术背景下,能大大降低设计难度的vhdl设计方法正越来越广泛地被采用。但是 vhdl设计是行为级的设计所带来的问题是设计者的设计思考与电路结构相脱节。设计者主要是根据vhdl的语法规则对系统目标的逻辑行为进行描述,然后通过综合工具进行电路结构的综合、编译、优化,通过仿真工具进行逻辑功能

11、仿真和系统时延的仿真。用vhdl进行集成电路的设计,牵涉到对vhdl语言的使用方法和对设计的理解程度。本文讨论了以下几个简化和优化电路设计的3个值得注意的方面:(1)在用vhdl进行设计中要注意避免不必要的寄存器描述。(2)在编写程序前要先对整个设计进行较深入的了解,科学的划分设计,多设想几种方案再进行比较,用多个较少位数的单元取代较多位数的单元。(3)在延时要求不高的情况下,可提取逻辑电路公因子,把它分解成含有中间变量的多级电路。 1.2.6用eda方法设计数字系统的灵活性10用eda方法设计数字系统,就是以硬件描述语言为系统逻辑描述的主要手段完成计数器设计文件,再运用eda开发软件,对设计

12、文件自动地完成逻辑编译、化间、分割、综合及优化逻辑仿真。直到对特定目标芯片的适配编译、逻辑映射和编程下载。在本文中是以eda技术中的isp软件为开发平台,来说明eda方法设计数字系统的灵活性。1、设计输入方式的灵活性,使用eda方法设计数字系统可以按照设计要求和硬件描述语言的语法规则编写输入文件,而把其余的大部分工作留给计算机完成,真正体现了eda方法的优点。尤其是设计复杂的数字系统或者需要改动系统功能时,设计效率可成倍提高,eda方法的优越性就会更加突出;2、功能仿真的灵活性,用eda方法设计数字系统是同一个测试向量可以对任何一种设计输入方式产生的源文件进行仿真,而不许要单独编写测试文件;3

13、、功能扩展的灵活性,在数字系统设计输入过程中,用eda方法实现了硬件设计软件化,所以改动源文件的内容即可改变系统功能,使其扩展为复杂度更高的数字系统。1.3 设计指标设计一个基于fpga的数字电子时钟的具体化技术指标如下。1:电子钟基本功能设计目标数字钟能进行正常的时、分、秒计时,小时计时要求为12进制循环,分和秒计时要求为60进制循环。2:电子钟扩展功能设计目标整点报时:要求逢整点报时,在5959即到整点时,扬声器发出最后一声整点报时。校时:校正时间,能够通过手动按键来调整时间,实现校时功能,具有闹钟功能。1.4 本文工作详细分析课题任务,对数字系统设计的历史和现状进行分析,并对数字秒表的v

14、hdl设计原理进行了深入的研究,并将其综合。本文设计了一个基于fpga的数字秒表,设计选用altera公司的fpga芯片flex10k系列的epf10k10lc84-4,在开发软件protel进行输入、编译、综合、仿真并下载到在系统可编程实验板中测试实现。信号源是由实验板上的时钟信号经分频而得到的0.0 1 秒信号。而我采用了 eda 技术 ,整个设计仅分两步:首先,在protel开发工具中 ,先用 vhdl语言分别编写出以上几个模块的文本文件 (称为底层文件) ,并将它们分别转换成相应的器件 ,然后分别进行时序仿真 ,每个器件的时序仿真结果与设计要求一致;然后,再将这几个模块共相关芯片按电路

15、设计图连接起来,形成顶层文件后进行整个系统的综合 ,并将整个数字秒表作为一个器件进行时序仿真。仿真完成后,将程序下载到大规模可编程逻辑器件epm7128slc84-15中,确定引脚的功能,即可实现数字电子时钟的芯片化。第2章 eda设计方法及其应用传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成个模块后进行连接,最后形成系统。而基于eda技术的设计方法则是自顶向下进行设计的,也就是首先采用可完全独立于目标器件芯片物理结构的硬件描述语言,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术,在确保设计的可行性于正确的前

16、提下,完成功能确认。然后利用eda工具的逻辑综合功能,进行逻辑映射及布局布线,在利用产生的仿真文件进行包括功能和时序的验证,以确保实际系统的性能5。2.1 分析方法在基于eda技术的系统设计最重要的环节在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们是采用自顶向下分析,自底向上设计。所谓“自顶向下分析”就是指将数字系统的整体分解为各个系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各个子系统关系合理、并便于逻辑电路级的设计和实现为止。图2.1是一个自顶向下设计的结构分解图。所谓“自底向上设计”,就是在自顶向下分析建立各种设计模型的

17、基础上,先进行低层模块的设计,完成低层模块设计后再进行高一层次的设计,依次类推,直到完成顶层的设计为止。采用该方法进行分析和设计时,高层设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细的描述在下一层次说明,最底层的设计才涉及具体的寄存器和逻辑门电路等方式的描述6。采用自顶向下的设计方法有如下优点: 自顶向下设计方法是一种模块化设计方法。对设计的描述从上到下逐步由粗略到详细,符合常规的逻辑思维习惯。 由于高层设计同器件无关,可以完全独立于目标器件的结构,在设计的最初阶段,设计人员可以不受芯片结构的约束,集中精力对产品进行最适应市场需求的设计,从而避免了传统设计方法的再设计风险,缩短

18、了产品的上市周期。 由于系统采用硬件描述语言进行设计,可以完全对立于目标器件的结构,因此设计易于在各种集成电路工艺或可编程器件之间移植。 适合多个设计同时进行设计。现在随着技术的不断进步,许多设计由一个设计者已无法完成,必须经过多个设计者分工协作完成一项设计的情况越来越多,在这种情况下,应用自顶向下设计方法便于由多个设计者同时进行设计,对设计任务进行合理分配,用系统工程的方法对设计进行管理。针对具体的设计,实施自顶向下设计方法的形式会有所不同,但均需要遵循以下两条原则:逐步分解功能,分层次进行设计。在个设计层次上,考虑相应的 仿真验证问题。结构分解完整树设计部分树设计行为建模行为建模图2.1

19、自顶向下的结构分解图2.2 表示方法2.2.1文本表示方法在eda的设计中,最一般化、普遍性的设计表示方式就是文本表示方式,也就是利用硬件描述语言(hdl)用软件编程方式来表达自己的设计。根据文本表示方式所使用的抽象层次,我们又可将文本表示方式分为:行为描述,结构描述,数据流(寄存器传输级)描述。行为描述就是设计一个部件是通过定义它的输入/输出响应来描述,也就是说对一个部件的设计,只描述了所希望电路的功能/行为,而没有直接指明或涉及实现这些行为的硬件结构。结构描述就是设计一个部件是通过一些基本部件的互连来描述,也就是说对一个不见的设计,是通过描述该设计部件的硬件结构/硬件组成来表示的。数据流描

20、述就是一个部件通过一些寄存器部件的互连并在寄存器之间插入组合逻辑来描述,这类积存器或者显示地通过元件具体装配,或者通过推论作隐含的描述7。2.2.2 图形表示方式在eda的设计中,有时也用图形表示方式来表示自己的设计。图形表示方式常用的有原理图、状态图、波形图等。图形表示方式的优点是直观、方便,但是其存在以下缺点:设计的可读性差;设计的复用性差;设计的移植性差;入档、交流、交付不方便。2.2.3 文本、图形混用方式在eda的设计中,根据自己设计所使用的性能及如何使设计简单易行,有时也经常采用文本、图形混用的形式。2.3 实现方法 2.3.1硬件描述语言编程实现法硬件描述语言编程实现法,就是用v

21、hdl硬件描述语言来表达自己的设计思想,并使用eda工具提供的文本编辑器以文本的方式进行设计输入的一种实现方法。它是eda的设计中最一般化、最具普遍性的实现方法,根据设计系统的实际情况,实际可从行为级、寄存器级、门电路级等不同层次进行描述,非常灵活,并且设计的移植性非常好。所有eda工具都支持文本方式的编程和编译。2.3.2 原理图设计实现法原理图设计实现法,就是利用原理图表示自己的设计思想,并使用eda工具提供的图形编辑器以原理图的方式进行设计输入的一种实现方法。原理图输入法的实现方式,简单、直观、方便,并且可利用许多现成的单元器件或根据需要设计的元器件。第3章 设计思想与方案论证数字电子钟

22、主干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器和分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用12进制计时器,可实现12小时的累计。通过六个led显示器显示出来。整点报时电路根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路

23、用来对“时”、“分”、“秒”显示数字进行校对调整。电子钟系统总体规划如图3-1所示:图3-1 电子钟系统总体规划3.2 论证分析课题的角度来说可以选用单片机和fpga芯片作为系统的mcu,从优势上讲利用单片机作为控制系统的核心元器件,其最大的优势是电路简单,价格便宜,实验所需仪器少。而fpga是英文field programmable gate array的缩写,即现场可编程门阵列,它是在pal、gal、epld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可在有现成的条件

24、下,fpga还是有其具大的优势比如它的高速性,让我们更清楚地认识到硬件的性能及硬件描述语言对硬件的驱动。fpga是asic电路中设计周期最短、开发费用最低、风险最小的器件之一。所以本方案选用以fpga作为核心器件来设计。3.1 总体设计设计一个显示时(2位)、分(2位)、秒(2位)共六位的多功能电子钟,它的主要功能是进行准确的计时。利用vhdl语言对硬件进行描述,通过下载到fpga之中进行硬件验证。系统采用4mhz的石英晶体振荡器作为时钟源,经过分频之后得到1hz的秒钟信号,秒计满60即得1分钟,分计满60便得1小时的信号,小时计满24即得一天,电子时钟的外观图如图3.1所示。其中有六个按键用

25、于调整时间,复位等功能。具体功能如下:图3.1 电子钟的外观图ok键:开始计时。set键:与调时、调分、调秒键配合,可以调整到指定的时间。reset键:清零。电子时钟硬件总体框图如图3.2所示。图3.2 电子时钟硬件总体框图在每个功能模块分项设计和组合前,先简单介绍一下每个方块的功能作用。分频器通过分频将4mhz的信号分频为1hz的秒信号和100hz的同步扫描时钟信号。1hz的秒信号输入到秒计数电路,当计数器溢出时,向分计数器进位,当分计数器溢出时,向时计数器进位。bcd译码电路是将计数器的十六进制计数值转换为数码管显示所需要的段码。位码电路是用来选通某一位数码管,使其显示数字。扫描同步电路作

26、用控制同一个数码管的段码和位码同步,同时对多个数码管轮流扫描。键盘控制电路作用是启动电子时钟计时,设定时间等。3.2 显示电路设计显示电路有lcd和led显示电路,系统中选用led显示电路,led器件是一种发光二极管显示器。其特点如下:(1)led显示器具备稳定、高速、简单的系统;(2)led显示结构简单、性能稳定;(3)led显示应用在成熟的生产技术上。发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。八段发光二极管结构如图3.3所示。图3.3 八段发光二极管外型发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。1位显示器有8个发光二极管组成,其中7个发

27、光二极管ag控制7个笔段的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的八段显示器能显示的字符少。字符的形象有些失真,但控制方便,使用简单。图3.4 共阴极数码管图3.5 共阳极数码管 显示器的显示方法有静态和动态两种方法。显示器位数较少时,采用静态显示的方法是合适的。当位数较多时,用静态显示所需的i/o太多,一般采用动态显示方法,所以在系统中我们采用动态显示。此类数码管的工作特点是:1 码管片选端清0时,对应位的数码管才有可能亮; 每次只能有一个片选端清0,即只能动态移位显示相应的数据;控制器通过控制数码管显示相应数字要用查表子程序来实现。系统中显示电路是由分频电路、扫描电路、bcd码多

28、路选择器、位选码电路和bcd译码器构成的。数码管动态扫描电路如图3.6所示,其中fpq为分频器,通过分频得到扫描时钟信号,时钟信号为100hz;scan为扫描电路,它是由状态机组成的,循环扫描数码管,使得数码管稳定的显示数据;bcdymq为bcd译码器,作用是将计数器输出的十六进制数转换为数码管显示所需要的段码;bit为位码,作用是轮流选择数码管的位。3.2.1 分频器电路 扫描电路所需要的扫描时钟信号为100hz,是通过分频器将系统的4mhz时钟信号经过10000分频之后,再通过四分频得到的。系统中采用四个十进制计数器相级联实现10000分频,然后通过两个t触发器实现四分频得到100hz信号

29、。十进制计数器的vhdl语言描述如下:library ieee;use ieee. std_logic_1164.all;图3.6 数码管动态扫描电路use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,rst,en:in std_logic;cq:out std_logic_vector(3 downto 0);cout:out std_logic);end cnt10;architecture behav of cnt10 isbeginprocess(clk,rst,en)variable cqi:std_logic_vector

30、(3 downto 0);beginif rst= 1 then cqi:= (others =0); elsif clkevent and clk=1 then if en = 1 then if cqi 0); end if;end if;end if;if cqi = 1001 then cout = 1; else cout = 0;end if;cq = cqi; end process;end behav;其中,clk为外部脉冲输入端;rst为复位端,高电平有效,en为使能端,高电平有效;co为计数器的计数值输出端;cout为进位输出端。十进制计数器的仿真图如图3.7所示。图3.7

31、 十进制计数器的仿真图3.2.2 扫描电路电路扫描电路是动态数码管显示的核心部件,通过扫描电路使得同一位数码管的段码、位码能够同步选择并稳定显示数据。其vhdl语言描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scan isport( scan:in std_logic; comclk:out std_logic_vector(1 downto 0); end;architecture behave of scan issignal q:std_logic_vector(

32、1 downto 0):=00; begin process(scan) begin if scanevent and scan=1 then if q=3 then q=00; else q=q+1; end if; end if; end process;comclk=q; end;图3.8 扫描电路仿真图扫描电路是由四位二进制计数器组成的状态机构成的,其仿真图如图3.8所示。其中scan为扫描时钟信号输入端,comclk为状态输出端。3.2.3 bcd码多路选择器bcd码多路选择器是输入的四位的bcd码根据扫描电路的输出进行选择,然后通过bcd译码器将对应的bcd码转换成显示所需要的段码

33、。library ieee;use ieee.std_logic_1164.all;entity bcdmux is port( clk:in std_logic_vector(1 downto 0); bcddata:in std_logic_vector(15 downto 0); bcdled:out std_logic_vector(3 downto 0); end;architecture behave of bcdmux isbeginbcdled(3 downto 0)=bcddata(3 downto 0) after 5 ms when clk=00 elsebcddata(

34、7 downto 4) after 5 ms when clk=01 elsebcddata(11 downto 8) after 5 ms when clk=10 else bcddata(15 downto 12) after 5 ms ;end;其中,clk为输入选择,bcddata 为输入数据,bcdled为输出数据。3.2.4 bcd译码器 bcd译码器是将输入的四位二进制数转换成七段显示代码,通过对应的显示代码驱动led显示相应的数据,其vhdl语言描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_un

35、signed.all;entity bcdymq isport ( bcdin :in std_logic_vector(3 downto 0); bcdout :buffer std_logic_vector(7 downto 0) );end bcdymq;architecture behave of bcdymq is begin bcdout(7 downto 0)=00111111 when bcdin(3 downto 0)=0000 else -0 00000110 when bcdin(3 downto 0)=0001 else -1 01011011 when bcdin(3

36、 downto 0)=0010 else -2 01001111 when bcdin(3 downto 0)=0011 else -3 01100110 when bcdin(3 downto 0)=0100 else -4 01101101 when bcdin(3 downto 0)=0101 else -5 01111101 when bcdin(3 downto 0)=0110 else -6 00000111 when bcdin(3 downto 0)=0111 else -7 01111111 when bcdin(3 downto 0)=1000 else -8 011011

37、11 when bcdin(3 downto 0)=1001 else -9 01110111 when bcdin(3 downto 0)=1010 else -a 01111100 when bcdin(3 downto 0)=1011 else -b 00111001 when bcdin(3 downto 0)=1100 else -c 01011110 when bcdin(3 downto 0)=1101 else -d 01111001 when bcdin(3 downto 0)=1110 else -e 01110001 when bcdin(3 downto 0)=1111

38、 else -f zzzzzzzz; end behave;其中,bcdin为四位二进制数输入端,bcdout为七段显示代码输出端,其仿真波形如图3.9所示。图3.9 bcd译码器仿真波形3.2.5 位选码电路 位选码电路的作用是在扫描电路作用下,依次输出对应的数码管的位选码。library ieee;use ieee.std_logic_1164.all;entity bit isport( clk:in std_logic_vector(1 downto 0); ledenable:out std_logic_vector(3 downto 0); end;architecture beh

39、ave of bit isbegin ledenable0); -计数器复位 elsif clkevent and clk=1 then -检测时钟上升沿if en = 1 then -检测是否允许计数if cqi 0); -大于23,计数值清零end if;end if;end if;if cqi = 10111 then cout = 1; -计数大于23,输出进位信号else cout = 0;end if;cq one one one one one one one one one oneone ten ten ten ten=1110; end case;end process;en

40、d behav;其中interg为输入的十进制数据,ten和one为分解后的十位数据和个位数据,其仿真图如图3.18所示,它生成的图标文件如图3.19所示:图3.18 二十四进制计数器的计数值分解为十位和个位仿真图图3.19 二十四进制计数器的计数值分解为十位和个位生成的图标3、时计数器总体电路时钟系统总体电路如图3.20所示,其中cnt10为十进制计数器,cnt6为六进制计数器;cnt23为二十四进制计数器;zhhuan为将二十四进制计数器的计数值分解为十位数据和个位数据的转换电路;clk2为输入的秒信号;ent2为使能信号,高电平有效。图3.20 时钟系统总体键盘的硬件结构为独立式键盘,直

41、接连到epf10k10lc84-4芯片的引脚上,其特点是便于编程操作。1) 开始/停止键key的设计我们将此键经去抖后连接一t触发器,使其输出为电平方式,即按键盘一次,电平进行一次翻转。输出q0端接74161芯片的ent端,从而达到了控制秒表的启动停止。其原理图如图3.21所示。图3.21 key的quartusii原理图2) 清零键key1的设计为了使键盘达到按下清零,松开恢复的功能,key1键我们应用脉冲输出方式,即按键盘一次,输出一个脉冲信号。输出端q0连接74161芯片的clrn端。这样在按下键盘时输出为低电平使能clrn,松开后为高电平,禁止了该引脚。电路图如图3.22所示。图3.2

42、2 key1键的quartus ii原理图第4章系统仿真quartus ii 是altera公司的综合性pld开发软件,支持原理图、vhdl、veriloghdl以及ahdl(altera hardware description language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整pld设计流程。,是fpga应用软件中比较典型和常见的一种工具,在我国应用较为普遍。4.1 quartus简介4.1.1quartus的功能quartus 接受对一个电路设计的图形描述(电路图)或文本描述(硬件描述语言),通过编辑、编译、仿真、综合、fpga编程等一系

43、列过程,将用户所设计的电路原理图或电路描述转变为fpga内部的基本逻辑单元,写入fpga芯片中,从而在硬件上实现用户所设计的电路。该fpga可用于正式的产品,也可作为对最终实现的asic芯片的硬件验证。4.1.2quartus的主要特点1 开放的界面quartus软件可与其他eda厂家的设计输入、综合、验证工具相连接。设计人员可使用altera或标准eda设计输入工具建立电路设计,使用quartus编译器(compiler)对altera的器件进行编译,然后使用altera或其他标准eda验证工具进行验证。目前,quartus 支持与cadence,exemplarlogic,mentor g

44、raphics,synopsys , synplicity,viewlogic等公司的eda工具接口。2 与结构无关quartus系统的核心编译器(compiler)支持altera公司的flex10k,flex8000,flex6000, max9000, max7000,max5000和classic等可编程逻辑器件系列,提供了业界惟一真正与结构无关的可编程逻辑设计环境。quartus的编译器还提供了强大的逻辑综合与优化功能,使设计人员能比较容易地将其设计集成到可编程逻辑器件中。3 多平台quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl脚本完成设计流程外,提

45、供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 4 完全集成化quartus的设计输入、处理、验证、器件编程等功能全部集成在统一的开发环境下,可以使用户进行动态调试,加快开发进程。5 丰富的设计库 quartus提供了丰富的库单元供设计者使用,其中包括74系列的全部器件和多种特殊的逻辑功能(macro-function)以及新型的参数化兆功能(mega-function)。6 接受高级描述语言quartus接受多种硬件描述语言(hdl),包括vhdl,verilog和abtera自己的硬件描述语言ahdl。4.2 可编程逻辑器件4.2.1 可编程逻辑器件简

46、介可编程逻辑器件(pld:programmable logic device)是当前数字系统设的主要硬件基础,是硬件编程语言的物理实现工具。所谓可编程逻辑器件是这样一些器件,其制作工艺采用的是cmos工艺在这些器件的内部,集成了大量功能独立的分离元件,它们可以是基本逻辑门、由基本逻辑门构成的宏单元,以及与阵列、或阵列等。依据不同需求,芯片内元件的种类、数量可以有不同的设置。此外芯片内还有大量可配置的连线,在器件出厂时,芯片内的各个元件、单元相互间没有连接芯片则不具有任何逻辑功能。芯片内的各个元件、单元如何连接,由用户根据自身设计的电路功能要求通过计算机编程决定。在实际中用户是这样使用上述器件的:首先使用计算机,利用专用的软件、硬件对器件进行系列编程;然后通过程序指挥芯片内配置的连线和编程器件,把应连接的元件、单元连接起来。由于芯片内的元件是按用户编写的指令进行连接的,所以,根据用户编写的不同程序,就可制造出具有不同电路功能的器件。我们把这种由用户通过编程手段才使芯片产生一定逻辑功能的器件称为可编程逻辑器件。随着大规模集成电路、超大规模集成电路技术的发展,可编程逻辑器件发展迅速,从20世纪70年代至今,大致可分为以下几个阶段:第一

温馨提示

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

评论

0/150

提交评论