• 894.26 KB
  • 2022-04-22 13:36:03 发布

出租车计价器的设计毕业论文.doc

  • 42页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'天津理工大学中环信息学院2010届本科毕业设计说明书出租车计价器的设计毕业论文目录前言1第一章可编程逻辑器件的发展与现状21.1可编程逻辑器件和EDA技术的发展概况21.1.1可编程逻辑器件的发展概况21.1.2EDA技术发展概况41.2阵列型可编程逻辑器件61.2.1简单PLD的基本结构61.2.2EPLD和CPLD的基本结构101.3现场可编程门阵列(FPGA)131.3.1FPGA的分类13第二章MAX+PLUSⅡ开发软件的使用152.1MAX+PLUSⅡ的安装152.1.1PC系统配置152.1.2MAX+PLUSⅡ软件版本152.1.3MAX+PLUSⅡ的安装152.1.4第一次运行MAX+PLUSⅡ152.2MAX+PLUSⅡ软件的认识162.2.1启动MAX+PLUSⅡ162.2.2MAX+PLUSⅡ的管理器162.2.3使用MAX+PLUSⅡ开发可编程逻辑器件的基本步骤172.3设计输入182.3.1图形设计输入182.3.2文本设计输入方法192.3.3创建顶层设计文件192.3.4层次显示192.3.5编辑用户库192.4设计项目的编辑192.4.1编译前的准备202.4.2运行编译器2141 天津理工大学中环信息学院2010届本科毕业设计说明书2.5模拟仿真和定时分析212.6器件编程25第三章计价器的设计283.1功能要求283.2计价电路的设计283.3设计价格累加单元293.4显示电路的设计343.5下载实验363.6组合逻辑电路的冒险现象373.6.1竞争冒险产生的条件和原因373.6.2解决竞争冒险的方法37结论39参考文献40附录41致谢42第一章可编程逻辑器件的发展与现状1.1可编程逻辑器件和EDA技术的发展概况1.1.1可编程逻辑器件的发展概况自20世纪60年代以来,数字集成电路已经历了从SSI、MSI到LSI、VLSI的发展过程。20世纪70年代初以1K位存储器为标志的大规模集成电路(LSI)问世以后,微电子技术得到迅猛发展,集成电路的集成规棋几乎以平均每1—2年翻一番的惊人速度迅速增长。集成技术的发展也大大促进了电子设计自动化(EDA)技术的进步,20世纪90年代以后,由于新的EDA工具不断出现,使设计者可以直接设计出系统所需要的专用集成电路,从而给电子系统设计带来了革命性的变化。过去传统的系统设计方法是采用SSI、MSI标准通用器件和其它元件对电路板进行设计,由于一个复杂电子系统所需要的元件往往种类和数量都很多,连线也很复杂,因而所设计的系统体积大、功耗大、可靠性差。先进的EDA技术使传统的“自下而上”41 天津理工大学中环信息学院2010届本科毕业设计说明书的设计方法,变为一种新的“自顶向下”的设计方法,设计者可以利用计算机对系统进行方案设计和功能划分,系统的关键电路可以采用一片或几片专用集成电路(ASIC)来实现,因而使系统的体积、重量减小,功耗降低,而且具有高性能、高可靠性和保密性好等优点。专用集成电路(ASIC—ApplicationSpecificIntegratedCircuit)是指专门为某一应用领域或为专门用户需要而设计、制造的LSI或VLSI电路,它可以将某些专用电路或电子系统设计在一个芯片上,构成单片集成系统。ASIC可分为数字ASIC和模拟ASIC,数字ASIC又分为全定制和半定制两种。全定制ASIC芯片的各层(掩膜)都是按持定电路功能专门制造的。设计人员从晶体管的版图尺寸、位置和互连线开始设计,以达到芯片面积利用率高、速度快、功耗低的最优性能,但其设计制作费用高,周期长,因此只适用于批量较大的产品。半定制是一种约束性设计方式。约束的主要目的是简化设计、缩短设计周期和提高芯片成品率。目前半定制ASIC主要有门阵列、标准单元和可编程逻辑器件三种。门阵列(GateArray)是一种预先制造好的硅阵列(称母片),内部包括几种基本逻辑门、触发器等,芯片中留有一定的连线区。用户根据所需要的功能设计电路,确定连线方式,然后再交生产厂家布线。标准单元(StandardCell)是厂家将预先配置好、经过测试.具有一定功能的逻辑块作为标准单元存储在数据库中,设计人员在电路设计完成之后,利用CAD工具在版图一级完成与电路一一对应的最终设计。和门阵列相比,标准单元设计灵活、功能强,但设计和制造周期较长,开发费用也比较高。可编程逻辑器件(PLD—ProgrammableLogic)是ASIC的一个重要分支。与上述两种半定制电路不同,PLD是厂家作为一种通用型器件生产的半定制电路,用户可以通过,对器件编程使之实现所需要的逻辑功能。PLD是用户可配置的逻辑器件,它的成本比较低,使用灵活,设计周期短,而且可靠性高,承担风险小,因而很快得到普通应用.发展非常迅速。可编程逻辑器件从20世纪70年代发展到现在,已形成了许多类型的产品,其结构、工艺、集成度、速度和性能等都在不断改进和提高。最早出现的可编程逻辑器件是1970年制成的PROM.它由全译码的与阵列和可编程的或阵列组成。由于阵列规模大,速度低,因此它的主要用途还是作存储器。20世纪70年代中期出现了可编程逻辑阵列(PLA—ProgrammableArray)器件.它由可编程的与阵列和可编程的或阵列组成,虽然其阵列规模大为减少,提高了芯片的利用率,但由于编程复杂,支持PLA的开发软件有一定难度,因而也没有得到广泛应用。20世纪70年代末美国MMI公司(MonolithicMemoriesInc,单片存储器公司)率先推出了可编程阵列逻辑(PLD—ProgrammableArrayLogic)器件,它由可编程的与阵列和固定的或阵列组成,采用熔丝编程方式,双极型工艺制造,器件的工作速度很高。由于它的输出结构种类很多,设计很灵活,因而成为第一个得到普通应用的可编程逻辑器件。20世纪80年代初Lattice公司发明了通用阵列逻辑(GAL—GenericArrayLogic)器件,它在PAL的基础上进一步改进,采用了输出逻辑宏单元(OLMC)的形式和E²CMOS41 天津理工大学中环信息学院2010届本科毕业设计说明书工艺结构,因而具有可擦除、可重复编程、数据可长期保存和可重新组合结构等优点。GAL比PAL使用更加灵活,它可以取代大部分SSI、MSI和PAL器件,所以在20世纪80年代得到广泛应用。PAL和GAL都属于低密度PLD,其结构简单,设计灵活,但规模小,难以实现复杂的逻辑功能。20世纪80年代末,随着集成电路工艺水平的不断提高,PLD突破了传统的单一结构,向着高密度、高速度、低功耗以及结构体系更灵活,适用范围更宽的方向发展.因而相继出现了各种不同结构的高密度PLD。20世纪80年代中期A1tera公司推出了一种新型的可擦除、可编程逻辑器件(EPLD—ErasableProgrammableLogicDevice),它采用CMOS和UVEPROM工艺制作,集成度比PAL和GAL高得多,设计也更加灵活,但内部互连能力比较弱。1985年Xilinx公司首家推出了现场可编程逻辑(FPGA—FieldProgrammableGateArray)器件,它是一种新型的高密度PLD,采用CMOS—SRAM工艺制作,其结构和阵列型PLD不同,内部由许多独立的可编程逻辑模块组成,逻辑块之间可以灵活地相互连接,具有密度高、编程速度快、设计灵活和可再配置设计能力等许多优点。FPGA出现后立即受到世界范围内电子设计工程师的普遍欢迎,并得到迅速发展。20世纪80年代末Lattice公司提出了在系统可编程技术以后,相继出现一系列具备在系统可编程能力的复杂可编程逻辑器件(CPLD-ComplexPLD)。CPLD是在EPLD的基础上发展起来的,它采用E²CMOS工艺制作,增加了内部连线,改进了内部结构体系.因而比EPLD性能更好,设计更加灵活,其发展也非常迅速。20世纪90年代以后高密度PLD在生产工艺、器件的编程和测试技术等方面都有了飞速发展。例如CPLD的集成度一般可达数千甚至上万门,Altera公司推出的EPM9560,其单密度达到12000个可用门,包含多达50个宏单元,216个用户I/0引脚,并能提供15ns的脚至脚延时,16位计数的最高工作频率为118MH2。AMD公司推出的MACH5系列产品,其单片密度最多达2万门,引脚到引脚的延时为7.5ns,构成计数器时最高工作频率达125MHz。目前CPLD的集成度最多可达25万个等效门,最高工作频率已达180MHz。可编程集成电路的线宽已广泛采用0.35um工艺,各厂家正在积极开发0.18um和0.5um工艺的器件。FPGA的门延时已小于3ns。Xilinx公司生产的FPGA从最初的1200个可利用门发展到现在已达25万个可利用门,规模已扩大了200多倍。在系统可编程技术、边界扫描技术的出现也使器件在编程技术和测试技术及系统可重构技术方面有了很快的发展。目前世界各著名半导体器件公司,如xilinx、Altera、Lattice和AMDAtmel等公司,均可提供不同类型的CPLD、FPGA产品,众多公司的竞争促进了可编程集成电路技术的提高,使其性能不断完善,产品日益丰富。可以预计,可编程逻辑器件将在结构、密度、功能、速度和性能等各方面得到进一步发展,并在现代电子系统设计中得到更广泛的应用。1.1.2EDA技术发展概况电于设计自动化(EDA)41 天津理工大学中环信息学院2010届本科毕业设计说明书技术是以计算机科学和微电子技术发展为先导.汇集了计算机图形学、拓朴逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术,它是在先进的计算机工作平台上开发出来的一整套电子系统设计的软件工具。从20世纪60年代中期开始,人们就不断开发出各种计算机辅助设计工具来帮助设计人员进行集成电路和电于系统的设计,集成电路技术的发展不断对EDA技术提出新的要求,并促进了EDA技术的发展。近30年来,EDA技术大致经历了三个发展阶段。1.CAD阶段(20世纪60年代中期--20世纪80年代初期)这个阶段分别研制了一些单独的软件工具,主要有PCB布线设计、电路模拟、逻辑模拟及版图的绘制等,从而可以利用计算机将设计人员从大量繁琐、重复的计算和绘图工作中解脱出来。例如,目前常用的PCB布线软件TANGO及用于电路模拟的SPICE软件和后来产品化的IC版图编辑与设计规则检查系统等软件,都是这个时期的产品。20世纪80年代初由于集成电路规模越来越大,制作也越来越复杂,EDA技术有了较快的发展,许多软件公司进入市场,软件工具的产品开始增多。这个时期的软件主要还是针对产品开发分为设计、分析、生产、测试等多个独立的软件包。每个软件只能完成其中的一项工作,但如果通过顺序循环使用这些软件,完成设计的全程,还存在两个方面的问题:首先,由于各个软件工具是由不同的公司和专家开发的,只解决一个领域的问题,若将一个软件工具的输出作为另一个软件工具的输入,就需要人工处理,这往往很繁琐.影响了设计速度;第二,对于复杂电子系统的设计,当时的EDA工具不能提供系统级的仿真与综合。由于缺乏系统级的设计考虑,常常在产品开发后期才发现设计有错误,此时再要进行修改十分困难。2.CAE阶段(20世纪80年代初期--20世纪90年代初期)这个阶段在集成电路与电子系统设计方法学以及设计工具集成化方面取得了许多成果。各种设计工具,如原理图输入、编译与连接、逻辑模拟、测试码生成、版图自动布局以及各种单元库均已齐全。由于采用了统一数据管理技术,因而能够将各个工具集成为一个CAE系统。运用这种系统,按照设计方法学制定的某种设计流程,可以实现由RT级开始,从设计输入到版图输出的全程设计自动化。这个阶段中主要采用基于单元库的半定制设计方法。采用门阵列和标准单元法设计的各种ASIC得到了极大的发展,将集成电路工业推入了ASIC时代.多数CAE系统中还集成了PCB自动布局布线软件以及热特性、噪声、可靠性等分析软件、进而可以实现电子系统设计自动化。这个阶段典型的CAE系统有MentorGraphics,ValidDaisy等公司的产品。3.EDA阶段(20世纪90年代以来)20世纪90年代以来,微电子技术以惊人的速度发展,其工艺水平已达到深亚微米级,在一个芯片上可集成数百万乃至上千万只晶体管,工作速度可达到Gb/s,这为制造出规模更大、速度和信息容量很高的芯片系统提供了基础条件。同时也对EDA系统提出了更高的要求,并大大促进了EDA技术的发展。20世纪90年代以后,主要出现了高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,它不仅极大地提高了系统的设计效率,而且使设计者摆脱了大量的辅助性工作,格精力集中于创造性的方案与概念的构思上。这个阶段的EDA技术主要有以下特征。⑴高层综合(HighLevelSynthesis41 天津理工大学中环信息学院2010届本科毕业设计说明书HLS)的理论与方法取得进展,从而将EDA设计层次由RT且推级提高到了系统级(又称行为级)。并出了相应的行为级综合优化工具,大大缩短了复杂ASIC的设计周期,同时改进了设计质量。典型工具有Synopsys公司的BehavioralCompiler,MentorGraphics公司的Monest和Renoir。⑵采用硬件描述语言(HardwareDescriptionLanguage,HDL)来描述10万门以上的设计,并形成了VHDL和VerilogHDL两种标准硬件描述语言。它们均支持不同层次的描述,使得复杂IC的描述规范化,使便于传递、交流、保存与修改,并可建立独立工艺的设计文档,便于设计重用。⑶采用平面规划(Floorplaning)技术对逻辑综合和物理版图设计进行联合管理,做到在逻辑综合早期设计阶段就考虑到物理设计信息的影响。通过这些信息,设计者能进行更进一步的综合与优化,并保证所做的修改,只会提高性能而不会对版图设计带来负面影响。这对于深亚微米级布线延时已成为主要延时的情况下,加速设计过程的收敛与成功是有所帮助的。在Synopsys和Codence等公司的EDA系统中均采用了这项技术。⑷可测性综合设计。随着ASIC的规模与复杂性的增加,测试的难度与费用急剧上升,由此而产生了将可测性电路结构做在ACIC芯片上的思想,于是开发了扫描插入、BLST(内建自测试)、边界扫描等可测性设计(DFT)工具,并已集成到EDA系统中。典型产品有Compass公司的TestAssistant,MentorGraphics公司的LBLSTArchitect、BSDArchitect、DFTAdvisor等。⑸为带有嵌入μP核的ASIC设计提供软、硬件协同设计工具。典型产品有MentouGraphics公司的SeamlessCVE(Co—VerificationEnviroment)等。⑹建立并行设计工程框架结构的集成化设计环境.以适应当今ASIC的如下特点:规模大而复杂;数字与模拟电路并存;硬件与软件设计并存;产品上市速度要快。该框架可以将不同公司的优秀工具集成为一个完整的EDA系统,并能在UNIX与WindowsNT两种平台之间实现平滑过渡。各种EDA工具在该框架中可以并行使用。通过统一的集成化设计环境,能够保证各个设计工具之间的相互联系与管理。在这种集成化设计环境中,使用统一的数据管理系统与完善的通讯管理系统.由若干个相关的设计小组共享数据库和知识库,同时并行地进行设计。一旦系统设计完成,相应的电路设计、版图设计、可测性设计与嵌入软件的设计等也都基本上完成了。在Internet迅速发展的今天,ASIC设计所要用到的EDA工具和元件(IP模块)均可在网上流动。销售方可利用Internet传播其EDA工具与IP模块,ASIC设计人员可以在网上通过电子付款的方式选购设计工具与元件,从而使ASIC的设计变得迅速、经济、高效。此外,基于Internet的虚拟设计组亦已出现,因而可将世界范围内最优秀的设计人才资源恰当地组合起来,来解决日益复杂的电子系统设计问题。1.2阵列型可编程逻辑器件41 天津理工大学中环信息学院2010届本科毕业设计说明书1.2.1简单PLD的基本结构1.PLD电路的表示方法因为PLD内部电路的连接规模很大,用传统的逻辑电路表示方法很难描述PLD的内部结构,所以对比D进行描述时采用了一种特殊的简化方法。PLD的输入、输出缓冲器都采用了互补输出结构,其表示法如图1.2所示。图1.2PLD缓冲器表示法Fig.1.2PLDbuffersthatFrancePLD的与门表示法如图1.3(a)所示。图中与门的输入线通常画成行(横)线,与门的所有输入变量都称为输入项,并画成与行线垂直的列线以表示与门的输入。列线与行线相交的交叉处若有“.”,表示有一个耦合元件固定连接;若有“×”,则表示是编程连接;若交叉处无标记,则表示不连接(被擦除)。与门的输出称为乘积项P,图1.3(a)中与门输出P=A.B.D.或门可以用类似的方法表示,也可以用传统的方法表示,如图I.3(b)所示。图1.3PLD的与门表示法或门表示法Fig.1.3PLDwithdoorsordoorsthatFranceexpressedFrance图1.4是PLD中与f1的简略表示法,图中与门P1的全部输入项接通,因此P1=A•A•B•B=0,这种状态称为与门的缺省(Default)状态。为简便起见,对于这种全部输入项都接通的缺省状态,可以用带有“×”的与门符号表示,如图中的P2=PI=0均表示缺省状态。P3中任何输入项都不接通,即所有输入都悬空,因此P3=1,也称为悬浮“1”状态。41 天津理工大学中环信息学院2010届本科毕业设计说明书图1.4PLD与门的简略表示法Fig.1.4PLDanddoorsbrieflyexpressedFrance2.简单PLD的基本结构简单PLD的基本结构框图如图1.5所示。团中,“与阵列”和“或阵列”是电路的主体,主要用来实现组合逻辑函数。输入电路由缓冲器组成,它使输入信号具有足够的驱动能力,并产生互补输入信号。输出电路可以提供不同的输出方式,如直接输出(组合方式)或通过寄存器输出(时序方式)。此外,输出端口上往往带有三态门,通过三态门控制数据直接输出或反馈到输入端。通常,PLD电路中只有部分电路可以编程或组态,PROM、PLA、PAL和GAL四种PLD电路主要是编程情况和输出结构不同,因而电路结构也不相同,表1.1列出了四种PLD电路的结构持点。图1.5简单PLD的基本结构Fig.1.5ThebasicstructureofsimplePLD图1.6、图1.7和图1.8分别画出了PR0M、PLA和PAL(GAL)41 天津理工大学中环信息学院2010届本科毕业设计说明书的阵列结构图。队这些阵列结构图可以看出,可编程阵列逻辑PAL和通用阵列逻辑GAL的基本门阵列结构相同,均为与阵列可编程,或阵列固定连接,也就是说,每个或门的输出是若干个乘积项之和,其中乘积项的数目是固定的。一般在PAL和GAL的产品中,最多的乘积项数可达8个。图1.6PROM阵列结构图1.7FPLA阵列结构Fig.1.6PROMarraystructureFig.1.7FPLAarraystructure图1.8PAL和GAL阵列结构图1.10寄存器输出结构Fig.1.8PALandGALarraystructureFig.1.10RegisterexportstructurePAL和GAL的输出结构却不相同。PAL有几种固定的输出结构,选定芯片型号后,其输出结构也就选定了。例如,产品PAL16L8属于组合型PAL器件,其芯片中每一个输出结构如图1.13所示。图中或门的输出最多可以包含7个乘积项,最上面的与门所对应的乘积项用来控制三态门的输出。当与门输出为“0”时,三态门禁止,输出呈高阻状态,I/O引脚作为输入使用;当与门输出为“1”时,三态门被选通.I/O引脚作为输出使用。两种情况下信号都可以通过右面的互补输出缓冲器反馈至与阵列的输入端。图1.13只画出了其中一个输出.PALl6L8有8个输出,由于8个输出的时间有可能不一致,因此称为“异步I/O输出结构”。又如,产品PALl6R8局于寄存器型(R代表Register)PAL器件,其芯片中每个输出结构如图1.10所示,它称为“寄存器输出结构”。当系统时钟(CL0CK)41 天津理工大学中环信息学院2010届本科毕业设计说明书的上升沿来到后,或门的输出被存入D触发器,然后通过选通三态缓冲器再将它送至输出端,该输出Q是低电平有效,而且Q还可以反馈至与门阵列,这样能记忆原来的状态,从而实现时序逻辑功能。PAL器件除了图1.13、图1.10两种输出结构外.还有专用组合输出、异或输出和算术选通反馈结构。PAL产品有20多种不同的型号可供用户选用。GAL和PAL最大的差别在于GAL有一种灵活的、可编程的输出结构,它只有两种基本型号,并可以代替数十种PAL器件,因而称为通用可编程逻辑器件。GAL的可编程输出结构称为输出逻辑定单元OLMC。图1.11是GAL22V10的图1.11GAL22V10的OLMCFig.1.11GAL22V10theOLMCOLMC内部逻辑图,从图中看出,OLMC中除了包含或门阵列和D触发器之外,还多了两个数选器(MUX),其中4选lMUX用来选择输出方式和输出极性,2选1MUX用来选择反馈信号,而这些数选器的状态取决于两位可编程特征码S1S0的控制。编程时,开发软件将根据设计者的要求将S1S0编为00、01、10、11中的一个.并通过编程器特此信息烧录到芯片中,OLMC便可以分别被组态为四种输出方式中的一种(见图1.12)。这四种输出方式分别是:S1S0=00时,低电平有效寄存器输出;S1S0=01时,高电乎有效寄存器输出;S1S0=10时,低电平有效组合I/O输出:S1S0=11时,高电乎有效组合I/O输出。GAL器件还有GALl6V8和GAL20V8两种基本型号,其OLMC与GAL22V10的OLMC相似。PAL和GAL器件与SSI、MSI标准产品相比,有许多突出的优点:⑴提高了功能密度,节省了空间,通常一片PAL或GAL可以代替4—12片SSI或2—4片MSI;⑵使用方便,设计灵活;⑶具有上电复位功能和加密功能,可以防止非法复制等。因而,这两种产品在早期得到了广泛应用。但PAL器件有许多缺陷,主要是PAL采用的是PROM编程工艺,只能一次性编程.而且由于输出方式是固定的.不能重新组态,因而编程灵活性较差。GAL器件的每个宏单元(OLMC)均可根据需要任意组态,所以它的通用性好,比PAL使用更加灵活,而且GAL器件采用了E²CM0S41 天津理工大学中环信息学院2010届本科毕业设计说明书工艺结构,可以重复编程,通常可以擦写百次以上,甚至上干次.由于这些突出的优点,因而GAL比PAL应用更为广泛。图1.12GAL22vlo的四种输出组态Fig.1.12GAL22vlofourformsofexport1.2.2EPLD和CPLD的基本结构EPCD和CPLD是从PAL、GAL发展起来的阵列型高密度PLD器件,它们大多采用了CMOSEPROM、E2PROM和快闪存储器等编程技术.因而具有高密度、高速度和低功耗等待点。目前主要的半导体器件公司,如Xilinx、Altera、Lattice和AMD公司等,在各自生产的高密度PLD产品中,都有自己的特点,但总体结构大致是相同的。大多数EPLD、CPLD器件中至少包含了三种结构;可编程逻辑宏单元,可编程I/O单元;可编程内部连线。1.可编程逻辑宏单元编辑宏单元内部主要包括与或阵列、可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式。EPLD器件与GAL器件相似,其逻辑宏单元同I/O做在一起,称为输出逻辑宏单元,但其宏单元及与阵列数目比GAL大得多。CPLD器件的宏单元在内部,称为内部逻辑宏单元。EPLD、CPLD除了密度高之外,许多优点都反映在逻辑宏单元上:⑴多触发器结构和“隐埋”触发器结构。GAL器件每个输出宏单元只有一个触发器,而EPLD和CPLD的宏单元内通常含两个或两个以上的触发器,其中只有一个触发器与输出端相连,其余触发器的输出不与输出端相连,但可以通过相应的缓冲电路反馈到与阵列,从而与其它触发器一起构成较复杂的时序电路。这些不与输出端相连的触发器就称为“隐埋”触发器。这种结构对于引脚数有限的EPLD和41 天津理工大学中环信息学院2010届本科毕业设计说明书CPLD器件来说.可以增加触发器数目,即增加其内部资源。⑵乘积项共享结构。在PAL相GAL的与或阵列中,每个或门的输入乘积项最多为7个或8个,当要实现多于8个乘积项的“与一或”逻辑函数时,必须将“与一或”函数表达式进行逻辑变换。在EPLD和CPLD的宏单元中,如果输出表达式的与项较多,对应的或门输入端不够用时,可以借助可编程开关将同一单元(或其它单元)中的其它或门与之联台起来使用,或者在每个宏单元中提供未使用的乘积项供其它宏单元使用和共享。图1.13是EPM7128E乘积项扩展和并联扩展项的结构图。从图中看出,每个共享扩展项可以被任何宏单元使用和共享,并联扩展项可以从邻近的宏单元中借用,宏单元中不用的乘积项都可以分配给邻近的宏单元。因此,乘积项共享结构提高了资源利用宰,可以实现快速复杂的逻辑函数。图1.13EPM7128E乘积项扩展和并联扩展项结构Fig.1.13EPM7128Eresultoftheexpansionandextensionofthestructureparallelconnection⑶异步时钟相时钟选择。一般GAL器件只能实现同步时序电路,在EPLD和CPLD器件中备触发器的时钟可以异步工作,有些器件中触发器的时钟还可以通过数据选择器或时钟网络进行选挣。此外,逻辑宏单元内触发器的异步清零和异步置位也可以用乘积项进行控制,因而使用更加灵活。2.可编程I/O单元输入/输出单元,简称I/O单元(或IOC),它是内部信号到I/O引脚的接口部分。由于阵列型HDPLD通常只有少数几个专用输入端,大部分端口均为1/O端,而且系统的输入信号常常需要锁存。因此I/O常作为一个独立单元来处理。图1.14(a)是LatticeispLI1016的I/O结构图,它由三态输出缓冲器、输入缓冲器41 天津理工大学中环信息学院2010届本科毕业设计说明书输入寄存器/锁存器和几个可编程的数据选择器组成。触发器有两种工作方式:当R/L为高电平时,它被设置成边沿触发器;而当R/L为低电平时,它被设置成锁存器。MUX1用于控制三态输出缓冲器的工作状态,MUX2用于选择输出信号的传送通道,MUX3用来选择输出极性。MUX4用于输入方式的选择:在异步输入方式下,输入信号直接经输入缓冲器送到全局布线区的输入端;在同步输入方式下,输入信号加到触发器的输入端,必须等时钟情号IOCLK到达后才能被存入触发器,并经过输入缓冲器加到全局布线区。MUX5和MUX6用于时钟信号的来源和极性的选择。根据这些数据选择器编程状态的组合,得到各种可能的IOC组合如图1.14(b)所示。图1.14LatticeispLI1016的I/O结构图Fig.1.14LatticeispLI1016theI/Ochart3.可编程连线阵列可编程连线阵列的作用是在各逻辑宏单元之间以及逻辑宏单元和I/O单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自专用输入或输入端的信号,并将宏单元的信号反馈到其需要到达的目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。1.3现场可编程门阵列(FPGA)41 天津理工大学中环信息学院2010届本科毕业设计说明书FPGA是20世纪80年代中期出现的高密度可编程逻辑器件。与前面所介绍的阵列型可编程逻辑器件不同,FPGA的结构类似于掩膜可编程门阵列(MPGA),它由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。FPGA兼容了MPGA和阵列型PLD两者的优点,因而具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。1.3.1FPGA的分类不同厂家、不同型号的FPGA其结构有各自的特色,但就其基本结构来分析,大致有以下几种分类方法:1.按逻辑功能块的大小分类可编程逻辑块是FPGA的基本逻辑构造单元。FPGA分为细粒度结构和粗粒度结构两类。细粒度FPGA的逻辑功能块一般较小,仅由很小的几个晶体管组成,非常类似于半定制门阵列的基本单元,其优点是功能块的资源可以被完全利用,缺点是完成复杂的逻辑功能需要大量的连线和开关,因而速度侵;粗粒度FPGA的逻辑块规模大,功能强,完成复杂逻辑只得较少的功能块和内部连线,因而能获得较好的性能,缺点是功能块的资源有时不能充分被利用。近年来随着工艺的不断改进,FPGA的集成度不断提高,同时硬件描述语言(HDL)的设计方法得到广泛应用,由于大多数逻辑综合工具是针对门阵列的结构开发的,细粒度的FPLA较粗粒度的FPGA可以得到更好的逻辑综合结果。因此许多厂家开发出了一些具有更高集成度的细粒度FPGA,如Xilinc公司采用MicroVia技术的一次编程反熔丝结构的XC8l00系列,GateField公司采用闪速EPROM控制开关元件的可再编程GF100K系列等,它们的逻辑功能块规模相对都较小。2.按互连结构分类根据FPGA内部的连线结构不同,可将其分为分段互连型相连续互连型两类。分段互连型FPGA中有不同长度的多种金属线,各金属线段之间通过开关矩阵或反镕丝编程连接。这种连线结构走线灵活,有多种可行方案.但走线延时与布局布线的具体处理过程有关,在设计完成前无法预测,设计修改将引起延时性能发生变化。连续互连型FPGA是利用相同长度的金属线,通常是贯穿于整个芯片的长线来实现逻辑功能块之间的互连,连接与距离远近无关。在这种连线结构中,不同位置逻辑单元的连接线是确定的,因而布线延时是固定和可预测的。3.按编程特性分类根据采用的开关元件的不同,FPGA可分为一次编程型和可重复编程型两类。一次编程型FPGA采用反熔丝开关元件,其工艺技术决定了这种器件具有体积小、集成度高、互连线特性阻抗低、寄生电容小及可获得较高的速度等优点;此外它还有加密位、反拷贝、抗辐射抗干扰、不带外接PROM或EPROM41 天津理工大学中环信息学院2010届本科毕业设计说明书等特点。但它只能一次编程,一旦将设计数据写入芯片后,就不能再修改设计,因此比较适合于定型产品及大批量应用。可重复编程型FPGA采用SRAM开关元件或快闪EPROM控制的开关元件。FPGA芯片中,每个逻辑块的功能以及它们之间的互连模式由存储在芯片中的SRAM或快闪EPROM中的数据决定。SRAM型开关的FPGA是易失性的,每次重新加电,FPGA都要重新装入配置数据。SRAM型FPGA的突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能。这种配置的改变甚至可以在系统的运行中进行,实现系统功能的动态重构。采用快闪置PROM控制开关的PPGA具有非易失性和可重复编程的双重优点,但在再编程的灵活性上较SRAM型FPGA差一些,不能实现动态重构。此外,其静态功耗较反熔丝型及SRAM型的FPGA高。第二章MAX+PLUSⅡ开发软件的使用2.1MAX+PLUSⅡ的安装2.1.1PC系统配置l奔腾机l有效内存在256MB以上,物理内存不低于128MBlWindowsNT4.0、Windows98/2000/XPl与MicrosoftWindows兼容的图形卡和17英寸彩色显视器lCD-ROM驱动器l与MicrosoftWindows兼容的两键或三键鼠标l全长8位的适用于逻辑编程卡的ISA插槽l并行口lRS-232串行口2.1.2MAX+PLUSⅡ软件版本MAX+PLUSⅡ软件根据使用平台可分为PC机版和工作站版,根据使用对象可分为商业版、基本版和学生版。商业版:支持全部输入方式和功能分析、时序分析等各种功能,支持版本发行时除APEX系列之外的Altera所有可编程逻辑器件。商业版的MAX+PLUSⅡ需要一个授权码和一个附加的并口硬件狗。基本版:在商业版上做了一些限制,如不支持VHDL、不能进行功能和时序仿真、不支持某些器件等。基本版不需要硬件狗,可从Altera网站上免费下载,只需向Altera申请一个基本版的授权码即可使用。41 天津理工大学中环信息学院2010届本科毕业设计说明书学生版:学生版在功能上基本和商业版一样,但可使用的逻辑功能模块受到限制,且支持的器件很少。从Altera网站上可下载学生版,但需要向Altera公司的大学项目部申请学生版的授权码才可使用。2.1.3MAX+PLUSⅡ的安装插入MAX+PLUSⅡ安装光盘并自动运行后,双击Setup.exe。后选择Next,按屏幕提示进行操作,任一步选择Cancel将退出安装。安装完毕后,提示是否打开Read.me文件,选择“是”可仔细阅读其总包含的一些重要信息。阅读完毕后关闭文件,出现开始菜单中的Altera文件夹。2.1.4第一次运行MAX+PLUSⅡ安装好后,为了保证该软件的正常运行还需要做很多工作。(1)在MAX+PLUSⅡ软件目录中,双击MAX+PLUSⅡ10.1图标,或者在Windows98的开始菜单中选择程序项中的Altera组成的MAX+PLUSⅡ10.1项,开始运行MAX+PLUSⅡ。第一次运行时,屏幕上会出现关于授权的协议提示窗口。(2)阅读完授权协议信息后,选择YES按钮,出现防止复制警告信息。选择NO,则退出MAX+PLUSⅡ。(3)在复制警告信息框中选择YES按钮,则显示任何获得基本版授权码的帮助信息。若有硬件狗,则选择否,并将硬件狗插在并口(打印机口)上。(4)在http://www.altera.com上申请授权码,将获得授权码文件license.dat拷贝到MAX+PLUSⅡ文件夹里(也可拷贝到别的路径下)。(5)设置授权码的过程是:在MAX+PLUSⅡ界面中,选择菜单命令Options/licensesetup。2.2MAX+PLUSⅡ软件的认识2.2.1启动MAX+PLUSⅡ在Windows桌面选择开始/程序/Altera/MAX+PLUSⅡ10.1菜单命令即可启动MAX+PLUSⅡ。2.2.2MAX+PLUSⅡ的管理器MAX+PLUSⅡ管理器窗口包括项目路径、工作文件标题签、MAX+PLUSⅡ菜单条、快捷工具条和工作区等几部分。设置好授权码后,运行MAX+PLUSⅡ即进入MAX+PLUSⅡ管理器窗口,如下图2.1所示。41 天津理工大学中环信息学院2010届本科毕业设计说明书图2.1MAX+PLUSⅡ管理器窗口Fig.2.1MAX+PLUSIImanagementdevicewindow41 天津理工大学中环信息学院2010届本科毕业设计说明书2.2.3使用MAX+PLUSⅡ开发可编程逻辑器件的基本步骤设计输入阿MAX+PLUSⅡ文本编辑器MAX+PLUSⅡ信息处理器和层次显示器件编程项目校验项目处理MAX+PLUSⅡ仿真器MAX+PLUSⅡ编程器MAX+PLUSⅡ时间分析器MAX+PLUSⅡ符号编辑器MAX+PLUSⅡ图形编辑器MAX+PLUSⅡ波形编辑器编译器网表提取器适配器逻辑综合器数据库建库器图2.2基本步骤图Fig.2.2Basicsteps如上图所示,上图是MAX+PLUSⅡ软件的组成模块图,其开发流程分为4个步骤:1.设计输入;2.项目处理;3.项目校验;4.器件编程。2.3设计输入在Windows的程序管理器窗口中用鼠标左键双击MAX+PLUSⅡ图标,或在开始菜单内选择MAX+PLUSⅡ项,开始运行MAX+PLUSⅡ,管理器窗口被打开。2.3.1图形设计输入1.指定设计项名称MAX+PLUSⅡ41 天津理工大学中环信息学院2010届本科毕业设计说明书编译器的工作对象是项目,所以在进行一个逻辑设计时,首先要指定该设计的项目名称,对于每个新的项目应该建立一个单独的子目录,如果该子目录不存在,将自动创建,以后所有与该项目有关的文件都将存在这个子目录下。2建立新文件3.输入图元和宏功能符号MAX+PLUSⅡ为实现不同的逻辑功能提供大量的图元和宏功能符号(Primitive&Macrofunction)库,设计人员在图形编辑器文件中直接使用。他们的分类信息放在max2workmaxlib子目。4.连线如果需要连接两个端口,可将鼠标移到其中一个端口,这是鼠标自动变为“+”形状,即可开始连线。5.为引脚和接点命名(1)放置输入和输出引脚放置输入引脚和输出引脚的方法与图元的输入方法相似。如果要重复放置同一个符号或者器件,可以用复制的方法,可提高图形输入的效率。(2)为引脚命名在引脚上的PIN_NAME处双击鼠标座键,然后输入指定的名字即可。6.图形编辑选项在图形编辑穿口中的Options菜单中列出了一些图形编辑时的选项,包括文本的字型(Font)、大小控制(TextSize)、线形(LineStyle)、显示任务、网络控制等,设计时用户可根据需要进行选择。7.保存文件并检查错误在设计过程中,如果需要保存新文件或者将文件重新命名,选择File菜单中的SaveAs项,将出现SaveAs对话框。在FileName对话框中输入设计文件名,然后点击OK按钮即可保存文件。若是为了保证输入逻辑的正确性,可以将此逻辑文件保存起来并进行错误检查。8.创建一个默认的逻辑符号对于一贯和经过保存并检查没有错误的设计文件,可以创建一个代表该文件的符号文件(.sym)。该符号就像其他符号一样,可以被其他图形设计文件(.gdf)调用。(1)在File菜单中选择CreateDefaultSymbol项,即可创建一个默认的逻辑符号。该符号可以被高层设计调用。(2)若选择File菜单中选择CreateDefaultIncludeFile项,则可以创建一个默认的逻辑文件(.inc)供其他AHDL文本设计文件调用。(3)可以通过选择File菜单中的Symbol命令编辑所选的符号。9.关闭文件如果要关闭文件,选择File菜单中的Close命令,或者用鼠标左键单击图形编辑器右上角的关闭按钮来关闭图形编辑器窗口。41 天津理工大学中环信息学院2010届本科毕业设计说明书2.3.2文本设计输入方法MAX+PLUS2支持AHDL、VHDL、VerilogHDL等硬件描述语言。AHDL是AlteraHardwareDescriptionLanguage的缩写,它是一种高级硬件行为描述语言。2.3.3创建顶层设计文件MAX+PLUSⅡ支持层次化设计输入方法,顶层设计文件就是把一个设计的各个模板放在一起,形成一个便于阅读的图形形式,如图4所示,该电路的模块都是采用前面所创造的符号,每个模块都包好着各自的实现电路。2.3.4层次显示层次显示方式就是以一个层次树的形式显示整个项目和电路的设计文件。打开层次显示的方法是从MAX+PLUSⅡ菜单中选择HierarchyDisplay项,一个项目的层次就显示出来了,图5为图4顶层文件的显示层次。层次中的每个文件都可以通过双击文件名的方式打开,并带到前台来显示。2.3.5编辑用户库MAX+PLUSⅡ允许设计人员对用户库进行编辑。在Options菜单中UserLibraries~,这时就会出现用户编辑框。如果想要加入一个新的用户库,可以在Directoryname输入框中直接键入用户所在的路径和名称,然后点击Add按钮,或者通过Directories和Drives对话框确定所要加入的用户库。如果想要改变用户库在列表中的先后次序,可以通过点击Up或Down按钮来完成。Delete按钮用语删除已选中的库。点击OK按钮即可完成用户库的编辑。2.4设计项目的编辑使用MAX+PLUSⅡ编译器设计项目时,编译器将进行错误检查、网表提取、逻辑综合、器件配适,并产生仿真文件、定是分析文件和编程配置文件。MAX+PLUSⅡ编译器既能接受多种文件输入格式,有可以输出多种文件格式。它能接受的输入设计文件包括MAX+PLUSⅡ自己的图形文件(.gdf)、AHDL文件(.tdf)、VHDL文件(.vhd)。2.4.1编译前的准备1.打开编译器窗口(1)在MAX+PLUSⅡ菜单中选择Complier项,则会出现编译器窗口。选择Start按钮即可开始编译,MAX+PLUSⅡ编译器将检查被编译的项目是否有错误,并对项目进行逻辑综合,然后配置到一个Altera器件中,同时将产生报告文件、编译文件和用于时间仿真的输出文件。(2)但是在开始编译前,还必须设定一些其他的选项。41 天津理工大学中环信息学院2010届本科毕业设计说明书2.选择一个器件首先,设计人员需要为项目指定一个器件系列,然后设计人员可以自己选择某个具体的器件,也可以让编译器在该器件系列内自动选择最合适设计人员项目的器件。确定器件系列的步骤如下:(1)在Assign菜单中选择Device项,将出现Device对话框。图2.3选择器件Fig.2.3Choicedevicea.在DeviceFamily框中选择一个器件系列。b.在Device框中选择一器件或选择AUTO,让MAX+PLUSⅡ为你选择一个器件。c.点击OK按钮。3.打开设计规则检查工具编译时,可选的设计规则检查(DesignDoctor)工具将检查项目中的所有设计文件,以发现器件编译时可能存在的可靠性不好的逻辑。4.管脚分配Altera推荐让编译器自动为设计人员的项目进行管脚分配,也可自行分配管脚。2.4.2运行编译器在Processing菜单中,还有一些会对编译产生影响的选项。运行编译的过程如下:(1)在编译器(Complier)窗口中选择Start开始编译。41 天津理工大学中环信息学院2010届本科毕业设计说明书(2)此时,若选择编译器穿口中的Stop/ShowStatus按钮,Partitioner/FitterStatus对话框就会显示出来。在Partitioner/FitterStatus对话框中选择ContinueCompilation按钮继续进行编译。(3)阅读报告文件。报告文件一般包括两种类型的信息:项目信息(如器件列表、项目编译信息、文件层次结构信息)和器件信息(如资源使用、布线资源、逻辑单元互连等)。2.5模拟仿真和定时分析创建一个仿真器通道文件:(1)打开波形编辑器窗口,从File中选择New,在对话框中选择WaveformEditorFile,并从下拉列表中选择.scf扩展名,按后点击OK按钮即可。(2)从File菜单中选择EndTime按钮,键入仿真的时间长度即可。(3)从Option菜单中选择GridSize,键入时间轴网格大小值即可。(4)从Node菜单中选择EnterNodesfromSNF,或者在窗口内的空白区域单击鼠标右键,则会出现EnterNodesfromSNF对话框。图2.4设置结束时间图2.5设置网格Fig.2.4EndoftimeFig.2.5Agrid41 天津理工大学中环信息学院2010届本科毕业设计说明书图2.6EnterNodesfromSNF对话框Fig.2.6EnterNodesfromSNFDialogueDiagram(5)如选择Type中的Inputs和Outputs,点击List按钮,则在AvailableNodes&Groups栏内列出所有的Inputs和Outputs节点。(6)按住Ctrl键,点击AvailableNodes&Groups栏中所需要观察的节点,或者按住鼠标左键,在节点上拖动可连续选择节点,然后选择右箭头,则将已选中的节点拷贝到SelectedNodes&Groups栏。(7)点击OK按钮,所选的节点刷新波形编辑器。在这里,所有未编辑的输入节点波形都默认为低电平,而所有输出和隐含节点波形都默认为未定义(X)电平。41 天津理工大学中环信息学院2010届本科毕业设计说明书图2.7WaveformEditor对话框Fig.2.7WaveformEditorDialogueDiagram(8)对波形编辑器中的节点可以进行添加和重新排列顺序,用鼠标点击后,就可以拖到不同的位置,也可以按Delete键将节点删除。(9)编辑输入节点波形。通过编辑输入节点的激励波形为仿真器提供输入向量。(10)保存文件。选择FileSaveAs项,在FileName中自动出现默认的当前项目名,扩展名为.scf,然后点击OK按钮来保存文件。2.运行仿真(1)打开仿真器窗口在MAX+PLUSⅡ菜单中选择Simulator,即可打开仿真器,并自动装载当前项目的仿真网表文件和上面刚创建的与当前项目同名的仿真器通道文件(.scf)。41 天津理工大学中环信息学院2010届本科毕业设计说明书图2.8TimeSimulation对话框Fig.2.8TimeSimulationDialogueDiagram(2)设置仿真时间在StartTime对话框中输入仿真器的起始时间,在EndTime对话框中输入仿真器的终止时间,二者都应处于.scf文件所设置的时间范围内。(3)进行仿真按下Start按钮,即可开始仿真当前项目。3.分析仿真结果在仿真窗口中选择OpenSCF,即可打开当前项目的.scf3文件,使用波形编辑器窗口周围的图形缩、放、前景按钮及滚动条可详细观察波形。如果输出结果不正确,就要对设计进行修改,直到满足设计要求为止。有经验的设计人员都要用多组输入来多次仿真他们的设计,以得到期望的设计结果。这就要求重新编辑修改输入激励信号波形并重复仿真该设计项目。4.定时分析(1)启动定时分析工具编译完成后,设计人员可以利用定时分析器来分析设计项目的性能。定时分析器提供了三种分析模式:延迟矩阵、时序逻辑电路性能、创建/保持矩阵。(2)传播延时分析如果在打开定时分析器窗口时DelayMatrix分析模式没有自动打开的话,则在Analysis菜单中选择DelayMatrix项,然后点击Start按钮,则定时分析器立即开始分系设计人员的当前项目并计算项目中每对连接的源节点(输入引脚)和目标节点(输出引脚)之间的最大和最小传播延迟。41 天津理工大学中环信息学院2010届本科毕业设计说明书(3)时序逻辑电路性能分析在Analysis菜单内选择RegisterPerformance项,然后点击Start按钮,就开始进行时序逻辑电路性能的分析。(4)建立和保持时间分析在Analysis菜单内选择Set/HoldMatrix项,然后点击Start按钮,即开始进行建立/保持时间分析。2.4器件编程Altera可编程逻辑器件的编程可通过编程器、JATG在线编程及Altera在线配置等三种方式。1.打开编程器窗口首先确认编程器硬件是否已安装好,在MAX+PLUSⅡ菜单中选择Programmer项,则打开编程器窗口。2.利用Altera编程器对MAX和EPROM系列器件进行编程(1)在Options菜单中选择HardwareSetup项,然后在HardwareType对话框中的下拉菜单中先则适当的Altera编程连接硬件,最后点击OK按钮。(2)在编程器窗口中检查设计人员选择的编程文件和器件是否正确。在对MAX和EPROM器件进行编程时,要用扩展名为.pof的文件。如果选择的编辑文件不正确,可以在File菜单中选择SelectProgrammingFile命令来选择你的编程文件。(3)将编程目标器件插到编程插座中。(4)点击Program按钮,编程器将检查器件并将设计项目编程到器件中,而且还将检查器件中的内容是否正确。3.通过JTAG实现单器件在线编程一个编程目标文件(.pof)可以通过ByteBlaster或者其它连接电缆直接编程到器件中,其过程如下:(1)编译一个项目,MAX+PLUSⅡ编译器将自动产生用于MAX器件的编程目标文件。(2)将ByteBlaster电缆的一端与微机的并行接口相连,另一端10针阴极头与装有可编程器件的PCB板上的阳极头插座连接。该PCB板还必须为ByteBlaster电缆提供电源。(3)开MAX+PLUSⅡ编程器。(4)在Options菜单中选择HardwareSetup命令,将出现HardwareSetup窗口,如上图所示。(5)在HardwareType下拉条中选择ByteBlaster。(6)指定配置时使用的并行口,如LPTI。(7)点击Program按钮,开始对JTAG器件进行编程。若器件、电缆或电源有问题,则产生错误警告信息:若编程成功,则点击OK按钮。41 天津理工大学中环信息学院2010届本科毕业设计说明书4.设置在线编程链(1)在JTAG菜单中打开Multi-DeviceJTAG-Chain并选择Multi-DeviceJTAG-ChainSetup项,进行多个器件的JTAG链的摄制。该对话框如图2.9所示。图2.9设置在线编程链Fig.2.9Achainofonlineprogramming(2)SelectProgrammingFile,选择ProgrammingFileName框宁日显示出你选择的编程文件。(3)击Add按钮。(4)如果使用过个器件,重复(2)、(3)步即可,并要确保与电路板上的顺序相同。(5)完成设置后,点击OK按钮。(6)按下Programmer按钮,开始对JTAG期间进行编程。5.利用ByteBlaster在线配置FLEX系列器件设计人员可以在MAX+PLUSⅡ中,通过ByteBlaster对多个器件进行在线配置,过程如下:(1)先编译一个项目,MAX+PLUSⅡ编译器将自动为FLEX器件产生一个SRAM目标文件(.sof)。(2)将ByteBlaster电缆的一端与微机的并行接口相连,另一端10针阴极头与装有可编程器件的PCB板上的阳极头插座连接。该PCB板还必须为ByteBlaster电缆提供电源。(3)MAX+PLUSⅡ菜单中打开编程器窗口,在Options菜单中选择HardwareSetup命令,在该窗口中选择ByteBlaster并设定相应的LPT口。41 天津理工大学中环信息学院2010届本科毕业设计说明书(4)如果只需要配置一个FLEX器件,首先检查编程器窗中的编程文件和器件是否正确。如果不正确,在File菜单中选择SelectProgrammingFile命令来改变编程文件。(5)如果需要配致以个含多个FLEX器件的FLEX链,在FLEX菜单中打开Multi-DeviceFLEX-Chain,然后选择Multi-DeviceFLEX-ChainSetup,接着按设计人员电路板上的顺序添加FLEX编程文件。选定全部文件后,点击OK按钮。(6)在编程器窗口中点击Configure按钮。除此之外,设计人员还可以用Multi-DeviceJTAG-Chain来配置多个FLEX器件,也可以用AlteraEPROM,或者用微处理器来配置FLEX器件。第三章计价器的设计3.1功能要求要求设计一个出租车计价器,出租车的单价是1.5元/公里,在小于3公里的时候,按起步价5元计算,超过3公里在和单价进行相加。在超过20公里的时候,出租车的单价翻倍,成为3.0元/公里。这时需要与双倍单价进行相加。3公里和20公里的控制线由里程表提供,分别为begin0和begin1。并且把总价显示出来,精确到角。3.2计价电路的设计图3.1计价电路原理图Fig.3.1Valuationprinciplescircuit41 天津理工大学中环信息学院2010届本科毕业设计说明书图3.2计价电路波形图Fig.3.2Figurevaluationcircuitwaveform图3.3计价电路符号Fig.3.3Valuationcircuitsymbols此计价电路的作用是根据sel的不同,进行不同的计价,出租车原来的价是每100米计价为0.15元,在超过20公里数的时候,价格就变为0.30元了,此电路就是实现这个功能。在此电路中sel0是3公里的控制线,即到3公里的时候sel0为1,因为在3公里以内,价格是一定的(现定义为5元),只有在过3公里的时候,价格才开始累加。sel1是20公里的控制线,功能和sel0差不多,在超过20公里的时候,价格翻倍,为3元/公里。3.3设计价格累加单元在累加单元中分为个位的累加(adder-1)和十位的累加(adder-3),即价钱分的累加和角的累加:1.个位累加器adder-1图3.4adder-1的原理图Fig.3.4adder-1principles41 天津理工大学中环信息学院2010届本科毕业设计说明书图3.5adder-1的波形图Fig.3.5adder-1thewaveformchartda[4..1]是固定的单价值,q[4..1]是经过累加以后的值。把它们存放在寄存器dreg中,储存以后再进行累加。74283是一个4位全加器,在于6相加的时候,由于6是10的补码,所以加6和减10是等价的,所以在左下方的74283就等于把加完的数进行减10运算,lmp_compare是一个比较器,在全加器得到的数大于10的时候,选择减过的数继续循环加,如果小于10,选择没减过的数继续循环加。在此图中有一个寄存器dreg:图3.6寄存器组合电路图Fig.3.6Registerportfoliocircuitdiagram图3.7寄存器组合的波形图Fig.3.7Figureregisterportfoliowaveform41 天津理工大学中环信息学院2010届本科毕业设计说明书这是寄存器的具体框图以及仿真波形图。它要保证数据的累加不会发生多加或少加的情况,在脉冲的上升沿到达是把数据送出。因为D触发器是上升沿触发的,就可以用D触发器设计一个组合电路来完成这个功能。ena是一个使能信号,只有ena在高的时候才让寄存器工作。为了便于以后的调用,我们在文件夹中建立了默认符号。如图3.8所示。图3.8寄存器默认符号Fig.3.8Registeracquiescencesymbols2.十位累加器adder-3图3.9十位累加器adder-3的原理图Fig.3.910accumulatoradder-3principles图3.10十位累加器adder-3的波形图Fig.3.10Figure10accumulatoradder-3thewaveform十位累加器的功能和个位累加器的功能基本上是相同的,在十位累加器中有一个a441 天津理工大学中环信息学院2010届本科毕业设计说明书电路和一个D触发器,作用是延时,cout的输出是一个比clk高电位更短的脉冲,防止时序电路中竞争冒险的出现。在此我也生成一个符号用于以后使用:图3.11adder-3的符号Fig.3.11Adder-3symbols3.计数电路1在计数电路中,由于出租车在小于3公里以内价格是一定的,规定在3公里以内价格为5元,大于3公里价格才进行递加。所以我设计了如下的电路:图3.12计数电路jj_cnt1的原理图Fig.3.12Countcircuitjj_cnt1principles41 天津理工大学中环信息学院2010届本科毕业设计说明书图3.13计数电路jj_cnt的波形图Fig.3.13Countcircuitjj_cntthewaveformchartjj_cnt1的功能是在开始保持5不变,即在行驶的前3公里内,价格一直在5元。在超过3公里以后,再进行价格递加。根据进位信号的输出来控制jj_cnt2的计数。即控制更高价格位的数值。jj_cnt1也是作为单价元的计数位。同样我也给它生成一个符号:图3.14jj_cnt1的符号Fig.3.14jj_cnt1symbols4.计数电路2图3.15jj_cnt2的原理图Fig.3.15jj_cnt2principles图3.16jj_cnt2的原理图Fig.3.16jj_cnt2principles根据从jj_cnt1得到的进位信号作为jj_cnt2的时钟,进行十元,百元,千元的计数。说明一下,7490TTL是一个可二/五分频十进制计数器,从QA接到CLKB进行组合,输出1041 天津理工大学中环信息学院2010届本科毕业设计说明书分频,正好作为高位的时钟。图3.17jj_cnt2的符号Fig.3.17jj_cnt2symbols3.4显示电路的设计图3.18显示电路的原理图Fig.3.18Thattheprinciplesofcircuit图3.19显示电路的波形图41 天津理工大学中环信息学院2010届本科毕业设计说明书Fig.3.19Showcircuitthewaveform此显示电路是选用了一个20选4的一个选择器,时钟经过一个计数器,产生一个0-4的的三位BCD码,即sel0,sel1和sel2。运用这三个信号,对20to4的选择输入,同时也作为数码的选择信号,进行外部数码管的选择。值得说明一下的是,dp是在sel[2..0]=“001”的时候产生,即只有在倒数第二位显示。也就是在元的那位上有小数点,这样在显示的时候变的比较清楚了,小数点前是整数(单位元),小数点后是单位角。用扫描方式完成,就对扫描的频率有要求。根据人眼的视觉特征,若在不产生闪烁感觉的情况下,扫描频率必须在20HZ以上。在此需要显示的是金额,用在出租车计价器上到千元应该足够了。所以有5个数字需要扫描,这样100HZ的扫描频率即满足要求。1.数据选择器扫描电路每次只显示一个数字,阐释显示那位数字有数据选择器决定。因为有6位数需要显示,每位又是由4个二进制数表示。这样就需要20选4的集成芯片才能完成。2.六进制计数器它的作用是为数据选择器提供地址码,数据选择器根据它提供的地址码,从24个数据中选出4个。3.七段显示显示数字图3.20显示电路的符号Fig.3.20Showcircuitsymbols为了给显示一个比较合适的时钟脉冲,在此我设计了一个分频器jj_fre:41 天津理工大学中环信息学院2010届本科毕业设计说明书图3.21分频电路的原理图Fig.3.21Theprinciplesofsub-frequencycircuits图3.22分频电路的波形图Fig.3.22Sub-frequencycircuitswaveformFigure这是一个25分频电路,它是由两个5分频电路组成的(7490是一个2/5分频器和十进制计数器,给clka输入时钟的时候,从qa输出2分频信号;给clkb输入时钟的时候,从qb输出5分频信号)。在由以上几个部分的综合,可以得到总的设计。总的设计原理图见附件。3.5下载实验介绍一下进行下载的主要过程:1.打开MAX+plusII,输入设计文件。2.指定为当前文件:Assign/Device选择下载器件。3.MAX+plusII/compiler进行编译。4.进行管脚分配(一般由软件自动分配,如果人工分配,配置后重新编译方可以生效。41 天津理工大学中环信息学院2010届本科毕业设计说明书1.MAX+plusII/programmer,打开编程界面,在option/HardwareSetup,设置下载方式(BlasterINV)。2.指定编程文件(一般自动进行)*.pof执行program。3.打开MAX+plusII/FloorplanEditor查看管脚。4.在开发机上连线,并验证设计结果。3.6组合逻辑电路的冒险现象3.6.1竞争冒险产生的条件和原因前面所有的组合逻辑电路的设计都是在理想情况下进行的,即假设电路中的连线和元件中的集成门都没有延迟,电路中的多个输入信号发生变化时,都同时瞬间完成的。信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA设计中尤为突出。所以我们必须检查设计中所有时钟、清零和置位等对毛刺敏感的输入端口,确保输入不会含有任何毛刺。如图3.23所示,这是对最低计费显示位的仿真波形图。图中在输出端q1多次出现毛刺。图3.23仿真波形图Fig.3.23Figuresimulationwaveform41 天津理工大学中环信息学院2010届本科毕业设计说明书3.6.2解决竞争冒险的方法我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说D触发器的D输入端对毛刺不敏感。根据这个特性,我们应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。以上方法可以大大减少毛刺,但它并不能完全消除毛刺,有时,我们必须手工修改电路来去除毛刺。我们通常使用"采样"的方法。一般说来,冒险出现在信号发生电平转换的时刻,也就是说在输出信号的建立时间内会发生冒险,而在输出信号的保持时间内是不会有毛刺信号出现的。如果在输出信号的保持时间内对其进行“采样”,就可以消除毛刺信号的影响。有两种基本的采样方法:一种方法是在输出信号的保持时间内,用一定宽度的高电平脉冲与输出信号做逻辑"与"运算,由此获取输出信号的电平值。另一种方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。结论通过本次可编程逻辑器件设计计价器的设计,使我整体上有一个提高,了解了设计过程,使我基本掌握了Max+plusⅡ的使用,同时深刻体会到CPLD的设计特点。运用了所学的知识,解决了实际问题,增长了经验。设计基本能够达到预期的结果,在计价器的组合逻辑电路中,我在仿真的过程中出现过竞争冒险的现象。根据我们在《数字电路逻辑设计》中学到的知识,可以通过修改逻辑设计、引入取样脉冲或在输出端加滤波电容的方法来消除竞争冒险现象。我在设计中运用了增加多个反向二极管的组合电路来增加脉冲输出的延迟时间,以达到消除竞争冒险的作用。由于时间仓促,在整体设计中还未达到理想的设计效果。希望在以后的学习工作中继续完善。41 天津理工大学中环信息学院2010届本科毕业设计说明书参考文献[1]宋万杰,罗丰,吴顺君编著。CPLD技术及应用。西安电子科技大学出版社,1999[2]赵曙光,郭完有,杨颂华编著。可编程逻辑器件原理、开发和应用。西安:西安电子科技大学出版社,2000[3]刘宝琴,张芳兰,田立生编著。Altera可编程逻辑器件及其应用。北京:清华大学出版社,1995[4]褚振勇,翁木云编著。FPGA设计及应用。西安:西安电子科技大学出版社,2002[5]黄正瑾。在系统编程技术及其应用。南京:东南大学出版社,1997[6]马群生等。MAX+PLUSⅡ入门.清华大学出版社,1995[7]孟宪元.可编程专用集成电路原理设计和应用.北京:电子工业出版社,1994[8]Altera公司.AHDL语言[9]宋万杰。FLEX10K系列可编程逻辑器件。国外电子元器件,199941 天津理工大学中环信息学院2010届本科毕业设计说明书[10]高梅国等。三种信号处理器的CPLD设计。电子技术应用,1999[11]Altera公司。DesignwithMAX+PLUSⅡ.1997[12]常青,陈辉煌等。可编程专用集成电路及应用及设计实践。北京:国际工业出版社,1998[13]李惠敏。数字集成电路设计及实验。天津大学电子系实验技术教研室,1994[14]赵曙光等.可编程逻辑器件原理、开发与应用.西安:西安电子科技大学出版社,2000[15]刘宝琴等.ALTERA可编程逻辑器件及其应用.北京:清华大学出版社,1998[16]杨晖、张凤言.大规模可编程逻辑器件与数字系统设计.北京:北京航空航天大学出版社,1997[17]朱明程.FPGA原理及其应用设计.北京:电子工业出版社,1994[18]宋万杰,罗丰,吴顺君.CPLD技术及其应用.西安:西安电子科技大学出版社,1999[19]褚振勇,翁木云.FPGA设计及应用.西安:西安电子科技大学出版社,2002[20]琼:努特森,艾拉.比茨.Workshop:visualuser’sGuide[M].California:SunMicrosystems,Inc.Business,2001.[21]薛志华刘松秋.数字线性计数率计,核电子学与探测技术-2004年1期[22]黄越辉黄自龙基于CPLD的电力电子集成化控制器的研究,电力电子技术,2004年2期附录A设计总图41 天津理工大学中环信息学院2010届本科毕业设计说明书致谢41 天津理工大学中环信息学院2010届本科毕业设计说明书本次毕业设计的完成有赖于各位老师和同学的热心帮助,在此我要向冯老师表示由衷的感谢。感谢他在毕业设计期间给与我的悉心指导。在几个月的毕业设计中,冯老师待人和蔼,工作认真,治学严谨,对我影响很深,并且对我论文提出了不少宝贵意见。通过本次的毕业设计使我的专业知识不断提高,锻炼了我的理论应用能力,掌握了一些解决问题的方法。同时,感谢我们组的同学,我们一起解决困难,增进了友谊,培养了团队合作精神。在此,我再次向以上各位老师和同学们表示衷心的感谢。41'