




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目基于CPLD可变模计数器的设计与实现作者姓名侯文强指导教师刘笃仁二级学院电气信息工程学院专业电子信息工程学号7B0812132012年5月10日基于CPLD的可变模计数器的设计与实现摘要随着电子技术、计算机技术和EDA技术的不断发展,利用FPGA/CPLD进行数字系统的开发已被广泛应用于通信、航天、医疗电子、工业控制等领域。与传统电路设计方法相比,FPGA/CPLD具有功能强大,开发周期短,投资少,便于追踪市场变化及时修改产品设计,以及开发工具智能化等特点。近年来,FPGA/CPLD发展迅速,随着集成电路制造工艺的不断进步,高性价比的FPGA/CPLD器件推陈出新,使FPGA/CPLD成为当今硬件设计的重要途径。在FPGA/CPLD的应用设计开发中,VERILOG作为一种主流的硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,并在语言易读性和层次化、结构化设计方面表现出了强大的生命力和应用潜力。本论文研究、设计的计数器电路是数字系统中使用最多的时序电路之一,不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。可变模计数器由于计数容量可以根据需要进行变化,为其广泛使用创造了便利。本论文基于复杂可编程逻辑器件CPLD,在ALTERAQUARTUS开发环境下,用VERILOGHDL语言设计了一种具有清零、置数、使能控制、可逆计数和具有可变模功能的计数器。关键词CPLD;VERILOGHDL;可变模计数器CPLDBASEDDESIGNANDREALIZATIONOFTHEVARIABLEMODULOCOUNTERABSTRACTWITHTHECONTINUOUSDEVELOPMENTOFELECTRONICTECHNOLOGY,COMPUTERTECHNOLOGYANDEDATECHNOLOGY,DIGITALSYSTEMSWITHFPGA/CPLDHASBEENWIDELYUSEDINCOMMUNICATIONS,AEROSPACE,MEDICALELECTRONICS,INDUSTRIALCONTROLANDOTHERFIELDSCOMPAREDWITHTHETRADITIONALCIRCUITDESIGN,FPGA/CPLDHASADVANTAGESOFPOWERFUL,SHORTDEVELOPMENTCYCLE,LESSINVESTMENT,EASYTOTRACKCHANGESINTHEMARKETINATIMELYMANNERTOMODIFYPRODUCTSDESIGN,ANDINTELLIGENTDEVELOPMENTTOOLSINRECENTYEARS,FPGA/CPLDHASDEVELOPEDRAPIDLY,WITHTHECONTINUOUSADVANCEMENTOFINTEGRATEDCIRCUITMANUFACTURINGPROCESSES,EFFICIENTANDCOSTEFFECTIVEFPGA/CPLDDEVICESHAVEBECOMEASIGNIFICANTWAYINHARDWAREDESIGNINTHEAPPLICATIONOFFPGA/CPLDDESIGN,VERILOGISACTINGASAMAINSTREAMHARDWAREDESCRIPTIONLANGUAGE,WITHTHECIRCUITDESCRIPTIONANDMODELINGCAPABILITIESFROMMULTIPLELEVELSOFDIGITALSYSTEMSMODELINGANDDESCRIPTION,WHICHGREATLYSIMPLIFIESTHEHARDWAREDESIGNTASKS,IMPROVESDESIGNEFFICIENCYANDRELIABILITY,ANDMAKESITEASYINSTRUCTUREDDESIGNVERILOGISDEMONSTRATINGTHEGREATVITALITYANDPOTENTIALAPPLICATIONSCOUNTERISONEOFTHEMOSTIMPORTANTSEQUENTIALCIRCUITSINDIGITALSYSTEMSITNOTONLYCANBEUSEDTOMEASURECLOCKPULSES,BUTALSOCANBEUSEDTODIVIDEFREQUENCY,COUNTTHEBEATPULSEANDDIGITALOPERATIONACCORDINGTOTHENEEDS,VARIABLEMODULUSCOUNTERCANCHANGEITSMODULUSSOTHATITCANBEUSEDMORECONVENIENTUNDERTHEALTERAQUARTUSIIDEVELOPMENTENVIRONMENT,WEUSEVERILOGHDLTODESCRIBEACOUNTERWHICHCANCLEARSETNUMBER,ENABLECONTROL,REVERSIBLECOUNTANDCHANGEVARIABLEMODULUSKEYWORDSCPLD;VERILOGHDL;VARIABLEMODULUSCOUNTER目录1绪论12VERILOGHDL321VERILOGHDL简介322VERILOGHDL指南3221模块3222数据流描述方式3223行为描述方式4224结构化描述方式4225设计模拟423VERILOG语言要素5231标识符注释格式5232系统任务和函数编译指令5233值6234数据类型6235表达式624门电平模型化7241内置基本门、多输入门、多输出门7242三态门MOS开关83CPLD器件原理1031CPLD简介10311CPLD的概念10312CPLD器件选型10313CPLD设计步骤1032CPLD结构11321CPLD内部划分11322逻辑块11323逻辑宏单元12324可编程连线PI13325可编程的I/O控制块1333CPLD的性能特点1334CPLD与FPGA的异同14341FPGA简单介绍14342CPLD和FPGA的相同点144开发软件QUARTUSII和MODELSIM1541ALTERAQUARTUSII简述15411ALTERAQUARTUSII设计流程15412ALTERAQUARTUSII在每个设计流程中的作用15413ALTERAQUARTUSII图形界面16414ALTERAQUARTUSII图形用户界面基本设计流程17415利用QUARTUSII可变模计数器设计流程1742MODELSIM简述18421MODELSIM简介18422仿真的分类18423MODELSIM仿真流程195可变模计数器实现与仿真2151模计数器原理2152可变模计数器解析2253可变模计数器VERILOGHDL模型2254可变模计数器的MODELSIM仿真2455综合器综合2756板级验证平台2857改进和升级31结论34参考文献35致谢361绪论20世纪70年代,最早的可编程逻辑器件PLDPROGRAMMABLELOGICDEVICE诞生了,其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。为了弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件CPLDCOMPLEXPROGRAMMABLELOGICDEVICE。目前应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。CPLD具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品设计当中。几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件。CPLD器件已成为电子产品不可缺少的组成部分。CPLD是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围,是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言HDL等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。很久以来,人们使用诸如FORTRAN,PASCAL,C等语言来进行计算机程序设计,这些程序本质上是顺序执行的。同样,在硬件设计领域,设计人员也希望使用一种标准的语言来进行硬件设计。在这种情况下,许多硬件描述语言应运而生。在出现的各种硬件描述语言当中,VERILOGHDL和VHDL使用最为广泛。在20世纪80年代后期,逻辑综合工具的发展对数字电路的设计方法学产生了巨大的影响,设计者可以使用VERILOGHDL在寄存器传输级对电路进行描述,逻辑综合工具的出现和发展使得VERILOGHDL在数字电路设计中占据了重要的地位,设计者不在需要手工用逻辑门来搭建电路,他们可以使用HDL来描述电路的功能和数据的流向,然后由逻辑综合工具自动综合出由逻辑门及其相互连接构成的电路结构细节,实现VERILOGHDL所描述和指定的特定功能。目前VERILOGHDL已经是公认的IEEE标准。这里以抢答器为例讲一下它的设计(装修)过程,即使用CPLD的设计流程,首先打开集成开发软件ALTERA公司QUARTUSII写硬件描述语言(VERILOG)编译给出逻辑电路的输入激励信号,进行仿真,查看逻辑输出结果是否正确进行管脚输入、输出锁定(7128的64个输入、输出管脚可根据需要设定)生成代码通过下载电缆将代码传送并存储在CPLD芯片中。7128这块芯片各管脚已引出,将数码管、抢答开关、指示灯、蜂鸣器通过导线分别接到芯片板上,通电测试,当抢答开关按下,相应位的指示灯应该亮,答对以后,裁判给加分后,看此时数码显示加分结果是否正确,如发现有问题,可重新修改原理图或硬件描述语言,完善设计。设计好后,如批量生产,可直接复制其他CPLD芯片,即写入代码即可。如果要对芯片进行其它设计,比如进行交通灯设计,要重新画原理图、或写硬件描述语言,重复以上工作过程,完成设计。这种修改设计相当于将房屋进行了重新装修,这种装修对CPLD来说可进行上万次。计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。可变模计数器作为一种基本数字电路模块,在各种数字系统中广泛应用。在对现有的可变模计数器的研究基础上,在QUARTUS开发环境中,通过对传统的可变模计数器的计数失控问题进行研究,用VERILOGHDL语言最终设计出一种没有计数失控缺陷的可变模计数器,并通过仿真验证了其各项设计功能,仿真表明该计数器能达到设计要求,运行稳定等。2VERILOGHDL21VERILOGHDL简介VERILOGHDL是一种硬件描述语言,用于从算法级、门级、开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。VERILOGHDL语言具有下述描述能力设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制,所有这些都使用同一种建模语言。此外,VERILOGHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。VERILOGHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用VERILOG仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。VERILOGHDL提供了扩展的建模能力,其中许多扩展最初很难理解,但是,VERILOGHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。22VERILOGHDL指南221模块模块是VERILOG的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;设计的数据流行为使用连续赋值语句进行描述;时序行为使用过程结构描述。一个模块可以在另一个模块中使用。222数据流描述方式用数据流描述方式对一个设计建模的最基本的机制就是使用连续赋值语句。在连续赋值语句中,某个值被指派给线网变量。连续赋值语句的语法为ASSIGNDELAYAB;右边表达式使用的操作数无论何时发生变化,右边表达式都重新计算,并且在指定的时延后变化值被赋予左边表达式的线网变量。时延定义了右边表达式操作数变化与赋值给左边表达式之间的持续时间。如果没有定义时延值,缺省时延为0,即为延时,右边的值立即赋给左边线网变量WIRE。223行为描述方式设计的行为功能使用下述过程语句结构描述1INITIAL语句此语句只执行一次。2ALWAYS语句此语句总是循环执行,或者说此语句重复执行。只有寄存器类型数据REG能够在这两种语句中被赋值。寄存器类型数据在被赋于新值前保持原有值不变。所有的初始化语句和ALWAYS语句在0时刻并发执行。224结构化描述方式在VERILOGHDL中可使用如下方式描述结构1内置门原语门级;2开关级原语晶体管级;3用户定义的原语门级;4模块实例创建层次结构。225设计模拟VERILOGHDL不仅提供描述设计的能力,而且提供对激励、控制、存储响应和设计验证的建模能力。激励和控制可用初始化语句产生。验证运行过程中的响应可以作为“变化时保存”或作为选通的数据存储。最后,设计验证可以通过在初始化语句中写入相应的语句自动与期望的响应值比较完成。23VERILOG语言要素231标识符注释格式VERILOGHDL中的标识符IDENTIFIER可以是任意一组字母、数字、符号和_下划线符号的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的,即VERILOG区分大小写的。在VERILOGHDL中有两种形式的注释。第一种形式多行注释/注释内容/第二种形式在本行结束/注释内容VERILOGHDL是自由格式的,即结构可以跨越多行编写,也可以在一行内编写。空白(新行、制表符和空格)没有特殊意义。232系统任务和函数编译指令以字符开始的标识符表示系统任务或系统函数。任务提供了一种封装行为的机制。这种机制可在设计的不同部分被调用。任务可以返回0个或多个值。函数除能返回一个值以外与任务相同。此外,函数在0时刻执行,即不允许延迟,而任务可以带有延迟。以(反引号)开始的某些标识符是编译器指令。在VERILOG语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。完整的标准编译器指令如下DEFINE,UNDEFIFDEF,ELSE,ENDIFDEFAULT_NETTYPEINCLUDERESETALLTIMESCALEUNCONNECTED_DRIVE,NOUNCONNECTED_DRIVECELLDEFINE,ENDCELLDEFINE233值VERILOGHDL有下列四种基本的值10逻辑0或“假”21逻辑1或“真”3X未知4Z高阻注意这四种值的解释都内置于语言中。如一个为Z的值总是意味着高阻抗,一个为0的值通常是指逻辑0。在门的输入或一个表达式中的为“Z”的值通常解释成“X”。此外,X值和Z值都是不分大小写的,也就是说,值0X1Z与值0X1Z相同。VERILOGHDL中的常量是由以上这四类基本值组成的。VERILOGHDL中有三类常量1整型2实数型3字符串型下划线符号(_)可以随意用在整数或实数中,它们就数量本身没有意义。它们能用来提高易读性;唯一的限制是下划线符号不能用作为首字符。234数据类型VERILOGHDL有两大类数据类型。1线网类型。NETTYPE表示VERILOG结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为Z。2寄存器类型。REGISTERTYPE表示一个抽象的数据存储单元,它只能在ALWAYS语句和INITIAL语句中被赋值,并且它的值从一个赋值到另一个赋值被保存下来。寄存器类型的变量具有X的缺省值。235表达式常量表达式是在编译时就计算出常数值的表达式。通常,常量表达式可由下列要素构成1表示常量文字,如B10和326。2参数名,如RED的参数表明PARAMETERRED4B1110;标量表达式是计算结果为1位的表达式。如果希望产生标量结果,但是表达式产生的结果为向量,则最终结果为向量最右侧的位值。24门电平模型化241内置基本门、多输入门、多输出门1、VERILOGHDL中提供下列内置基本门1多输入门AND,NAND,OR,NOR,XOR,XNOR2多输出门BUF,NOT3三态门BUFIF0,BUFIF1,NOTIF0,NOTIF14上拉、下拉电阻PULLUP,PULLDOWN5MOS开关CMOS,NMOS,PMOS,RCMOS,RNMOS,RPMOS6双向开关TRAN,TRANIF0,TRANIF1,RTRAN,RTRANIF0,RTRANIF12、多输入门内置的多输入门如下AND,NAND,NOR,OR,XOR,XNOR这些逻辑门只有单个输出,1个或多个输入。多输入门实例语句的语法如下INSTANCE_NAMEOUTPUT,INPUT1,INPUT2,INPUT3,INPUTN3、多输出门有BUFNOT这些门都只有单个输入,一个或多个输出。这些门的实例语句的基本语法如下INSTANCE_NAMEOUTPUT1,OUTPUT2,OUTPUTN,INPUT最后的端口是输入端口,其余的所有端口为输出端口。242三态门MOS开关三态门有BUFIF0BUFIF1NOTIF0NOTIF1这些门用于对三态驱动器建模。这些门有一个输出、一个数据输入和一个控制输入。三态门实例语句的基本语法如下TRISTATE_GATEINSTANCE_NAMEOUTPUT,INPUT,CONTROL第一个端口OUTPUT是输出端口,第二个端口INPUT是数据输入,CONTROL是控制输入。根据控制输入,输出可被驱动到高阻状态,即值为Z。对于BUFIF0,若通过控制输入为1,则输出为Z;否则数据被传输至输出端。对于BUFIF1,若控制输入为0,则输出为Z。对于NOTIF0,如果控制输出为1,那么输出为Z;否则输入数据值的非传输到输出端。对于NOTIF1,若控制输入为0,则输出为Z。MOS开关有CMOS,PMOS,NMOS,RCMOS,RPMOS,RNMOS双向开关有TRAN,RTRAN,TRANIF0,RTRANIF0,TRANIF1,RTRANIF1这些开关是双向的,即数据可以双向流动,并且当数据在开关中传播时没有延时。后4个开关能够通过设置合适的控制信号来关闭。TRAN和RTRAN开关不能被关闭。门时延可以使用门时延定义门从任何输入到其输出的信号传输时延。门时延可以在门自身实例语句中定义。实例数组当需要重复性的实例时,在实例描述语句中能够有选择地定义范围说明范围说明也能够在模块实例语句中使用。隐式线网如果在VERILOGHDL模型中一个线网没有被特别说明,那么它被缺省声明为1位线网。编译指令格式如下DEFAULT_NETTYPENET_TYPEDEFAULT_NETTYPE编译指令在模块定义外出现,并且在下一个相同编译指令或RESETALL编译指令出现前一直有效。3CPLD器件原理31CPLD简介311CPLD的概念CPLDCOMPLEXPROGRAMMABLELOGICDEVICE直译的话称为复杂可编程逻辑芯片。它也属于大规模集成电路LSILARGESCALEINTEGRATEDCIRCUIT里的专用集成电路ASICAPPLICATIONSPECIFICINTEGRATEDCIRCUIT。适合控制密集型数字型数字系统设计,其时延控制方便。CPLD是目前集成电路中发展最快的器件之一。312CPLD器件选型由于CPLD器件厂商众多,CPLD器件的选择同其它通用逻辑器件不同,除考虑器件本身的性能外,配套软件的支持也是器件选择的重要依据。目前市场上已有的CPLD/FPGA器件生产厂家有20多个,而设计软件除生产厂家自行研制的软件外还有几十多种独立软件。加上高性能器件的价格已经不菲,更不用说设计软件的价格,所以如何选用合适的CPLD器件,不只是一件一次性的工作,还涉及到设计软件的选用以及今后进一步工作的开展。首先,用户应该根据自身的技术环境、技术条件、使用习惯等选择一种合适的软件工具,同时要兼顾EDA技术的发展。其次,用户可根据设计的需要确定选择哪一类可编程器件。如果用于航天、军事领域等性能要求高的领域,反熔丝技术的一次编程型可编程芯片是首选。313CPLD设计步骤逻辑输入利用EDA设计软件对逻辑进行设计,一般可以采用原理图、状态图、真值表、硬件描述语言对逻辑进行输入;逻辑仿真逻辑设计完成后,可以利用仿真软件来评估所设计逻辑的效果,以减小失败的风险;逻辑编程逻辑设计完成后,利用烧录器或JTAG电缆将最终生成的JED文件烧录进CPLD,完成逻辑设计。32CPLD结构321CPLD内部划分ALTERA的MAX7000,MAX9000,MAX3000,MAXII系列(E2PROM工艺)XILINX的XC9500系列(FLASH工艺)LATTICE的大部分产品(E2PROM/FLASH工艺)以MAX7000结构为例,其余基本类似注LBLOGICBLOCKSPIPROGRAMMABLEINTERCONNECTI/OBI/OBLOCKMCMACROCELLSPTAPRODUCTTERMARRAYPTDPRODUCTTERMDISTRIBUTION322逻辑块逻辑块LB也称逻辑阵列块(LAB)是PLD的基础,由它来实现基本的逻辑功能。一个逻辑块LB一般由8个逻辑宏单元构成,不同厂家、不同系列的产品结构略有差异。可编程连线PI负责信号传递,连接所有的逻辑宏单元,或I/O与宏单元的连接。I/O控制块IOB负责输入输出引脚的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。CPLD的逻辑宏单元主要包括与或阵列、触发器和多路选择器等电路,能独立地配置为组合或时序工作方式。GAL器件的逻辑宏单元与I/O单元做在一起,称为输出逻辑宏单元(OLMC);CPLD的逻辑宏单元都做在内部,称为内部逻辑宏单元。323逻辑宏单元逻辑宏单元结构和I/O控制结构比GAL有所改进,逻辑宏单元具有如下特点R乘积项共享结构为提供所需要的逻辑资源,可以借助可编程开关将同一宏单元(或其他宏单元)中未使用的乘积项联合起来使用,这称为乘积项共享。每个宏单元中含有两个或项输出,每个或项均由固定的几个乘积项输入。每个或项输出均可连接到相邻的宏单元,从而提高了各单元或门的使用效率,可实现较复杂的逻辑功能。图31逻辑宏单元乘积项共享结构多触发器和“隐埋”触发器结构每个逻辑宏单元内含有两个或两个以上的触发器。其中只有一个可与I/O引出端相连,其余均为“隐埋”触发器,不与输出端相连,但可以反馈到与阵列,构成更复杂的时序电路。可提高内部资源利用率。触发器类型可编程结构通过对输出触发器编程,可实现4种不同类型触发器结构D、T、JK和RS触发器。它们与逻辑宏单元相配合,可实现多种逻辑电路结构。324可编程连线PI在各个逻辑宏单元之间以及逻辑宏单元与I/O单元之间提供可编程的信号连接网络分为基于阵列的内连线和基于多路选择器内连线。CPLD中一般采用固定长度的线段来进行连接,因此信号传输的延时是固定的,使得信号传输时间延时能够预测。325可编程的I/O控制块输入输出单元(I/O单元)要考虑以下一些要求1能够兼容TTL和CMOS多种接口电压和接口标准;2可配置为输入、输出、双向I/O、集电极开路和三态门等各种组态;3能提供适当的驱动电流,以直接驱动发光二极管等器件;4降低功率消耗,防止过冲和减少电源噪声。I/O单元分布于器件的四周,提供器件外部引脚与内部逻辑之间的连接,主要由触发器和缓冲器组成。每个IOB控制一个外部引脚,可将其编程为输入、输出或双向I/O功能,或集电极开路、三态门等。33CPLD的性能特点CPLD能实现较复杂的逻辑,不仅仅因为采用了先进的编程工艺和逻辑结构,还在于提供了先进的数字系统设计开发工具,它具有如下性能特点(1)可多次编程、改写和擦除。(2)采用CMOSEPROM、EEPROM、FLASHMEMORY等编程技术,具有高密度、高速度、高可靠性和低功耗。(3)I/O端口数和内含触发器可多达数百个,集成度远远高于PAL和GAL。(4)有灵活多样的逻辑结构,可满足各种数字电路系统设计的需要。(5)内部时间延迟与器件结构及逻辑连接等无关,可预测,易消除竞争冒险。(6)有多位加密位,且器件等效数千个逻辑门以上,因此可杜绝编程数据非法抄袭。34CPLD与FPGA的异同341FPGA简单介绍目前用途比较广泛的逻辑器件分为两大类CPLD和FPGA。其中FPGAFIELDPROGRAMMABLEGATEARRAY即为现场可编程门阵列。FPGA相比较CPLD内部资源增加了PLL锁相环、RAM块、DSP乘法器,大大加快处理速度,所以FPGA处理速度更快,效率更高。342CPLD和FPGA的相同点相同点CPLD与FPGA在很大程度上具有类似之处,概括起来,可以认为它们都是由以下三部分共同组成(1)输入/输出单元。(2)逻辑块阵列,是PLD器件逻辑组成的核心(3)用于连接逻辑块的互连资源,其中可以是各种长度的连线线段,也可以是一些可编程的连接开关,通常用来连接逻辑块之间、逻辑块与输入/输出块之间的连线。用一句话概括一下就是他们都是用作逻辑设计,都有可编程能力,基本的功能都可以代替传统的74系列器件,逻辑又分组合逻辑和时序逻辑。这里的可编程不是指可以给他编写程序,而是拥有对其功能重新配置的能力,CPLD/FPGA开发不是写程序而是用语言描述硬件结构和功能,写代码时务必做到心中对所要描述的逻辑和结构心中有数。CPLD和FPGA的区别参见表31。表31CPLD和FPGA的区别CPLDFPGA用途方面适合算法和组合逻辑适合时序逻辑内部资源触发器资源、IO、全局时钟、布线资源、逻辑查找表比CPLD多出PLL锁相环、RAM块、DSP乘法器编程方式在EE2PROM或FASTFLASH上编程在SRAM上编程保密性保密性好保密性相对差点复杂度相对简单布线、逻辑能做到很复杂延迟预测容易预测延时时间延迟不可预测功耗相对较大相对较小4开发软件QUARTUSII和MODELSIM41ALTERAQUARTUSII简述411ALTERAQUARTUSII设计流程ALTERAQUARTUSII设计软件提供完整的多平台设计环境,能够满足特定的需要,为可编程芯片系统(SOPC)提供全面的设计环境,QUARTUSII软件含有FPGA和CPLD设计所有阶段的解决方案。如图41所示图41QUARTUSII设计流程412ALTERAQUARTUSII在每个设计流程中的作用QUARTUSII软件为用户提供设计流程的所有阶段,图42为QUARTUSII在设计流程的每个阶段提供的功能。图42QUARTUSII在设计阶段中的作用413ALTERAQUARTUSII图形界面首次打开QUARTUSII软件,图形界面如下图43所示图43QUARTUSII图形界面414ALTERAQUARTUSII图形用户界面基本设计流程1在FILE菜单中,单击NEWPROJECTWIZARD,建立新工程并指定目标器件或器件系列。2使用文本编辑器建立VERILOGHDL、VHDL或者ALTERA硬件描述语言AHDL设计。使用模块编辑器建立以符号表示的框图,表征其他设计文件,也可以建立原理图。3使用MEGAWIZARD插件管理器生成宏功能和IP功能的自定义变量,在设计中将它们例化,也可以使用SOPCBUILDER或者DSPBUILDER建立一个系统级设计。4利用分配编辑器、引脚规划器、SETTINGS对话框、布局编辑器以及设计分区窗口指定初始设计约束。5可选进行早期时序估算,在适配之前生成时序结果的早期估算。6利用分析和综合对设计进行综合。7可选如果您的设计含有分区,还没有进行完整编译,则需要通过PARTITIONMERGE将分区合并。8可选通过仿真器为设计生成一个功能仿真网表,进行功能仿真。9使用适配器对设计进行布局布线。10使用POWERPLAY功耗分析器进行功耗估算和分析。11使用仿真器对设计进行时序仿真。使用TIMEQUEST时序分析器或者标准时序分析器对设计进行时序分析。415利用QUARTUSII可变模计数器设计流程1首先需要在QUARTUSII里面建立一个工程,并指定使用的CPLD型号,如ALTERA公司设计的CPLD,MAXII系列EPM240,EPM570,EPM1270等,其中240、570为CPLD的逻辑扎单元数(LE),不同的封装其IO口数目不同,针对本次毕业设计,使用240的CPLD即可。注保存的文件名应该与MODULENAME一致,否则会报错。2其次继续做完正确的SETTING,因为本次设计使用的是MODELSIM仿真软件,可指定对应的仿真软件为ALTERAMODELSIM。3建立个V文档使用,使用VERILOG语言描述可变模计数器的硬件结构,详见第五章。4编译通过且仔细分析所有的WARNING。5仿真阶段,因为使用MODELSIM仿真软件,需要给予的激励来仿真,这时需要编写相应的TESTBENCH文件,TESTBENCH文件也是V文件,其实就是给予源文件模拟输入来看是否得到想要的结果,这只是前仿真,也称之为功能仿真。如果想要成为产品,还应进行后仿真,也称之为时序仿真,即延迟也需要考虑进去。6仿真后,可以把端口与CPLDIO口对应起来,在给予CPLD最小系统后,即是用CPLD做出了一个可变模计数器。42MODELSIM简述421MODELSIM简介MODELSIM仿真工具是MODEL公司开发的。它支持VERILOG、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在DATAFLOW窗口查看某一单元或模块的输入输出的连续变化等,比QUARTUSII的仿真器功能强大的多,是目前业界最通用的仿真器之一。MODELSIM分几种不同的版本SE、PE和OEM,其中集成在ACTEL、ATMEL、ALTERA、XILINX以及LATTICE等FPGA厂商设计工具中的均是其OEM版本。比如为ALTERA提供的OEM版本是MODELSIMALTERA,XILINX提供的版本为MODELSIMXE。422仿真的分类仿真分为功能仿真、门级仿真和时序列仿真。1功能仿真前仿真,代码仿真主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与TESTBENCH在设计的最初阶段发现问题,可节省大量的精力。2门级仿真和时序列仿真后仿真使用综合软件综合后生成的门级网表进行仿真,不加入时延文件的仿真就是门级仿真。可以检验综合后的功能是否满足功能要求,其速度比功能仿真要慢,比时序仿真要快在门级仿真的基础上加入时延文件SDF的仿真就是时序仿真,比较真实地反映了逻辑的时延与功能综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。423MODELSIM仿真流程1首先编好TESTBENCH,做好例化,一般例化为源程序MODULENAMEMODULENAME_DUTDUT为DESIGNUNDERTEST。2打开ALTERAMODELSIM,建立一个工程WORK,将TOPV和TBV加载并编译成功后,(必须编译成功后才能仿真),然后点击STARTSIMULATION,进入以下画面,如图44图44开始仿真画面3然后点选TESTBENCH,一般刚开始仿真不选择ENABLEOPTIMIZATION(因为有些波形可能会被系统自动否决不显示,从而你不能看到所有的波形情况,不便于分析),然后点击OK,进入以下画面,如图45图45进入仿真画面4将你需要观看的WAVEFORM右键选择加入WAVE,在下列命令行打入RUN1000(仿真整个长度为1000NS,具体情况根据你的程序来),至于要仿真多大宽度可自己根据需要调控。5最后仿真的波形将会出现在右面的波形栏当中。对于产生的波形里面有放大、缩小的工具可供使用,常用的为ZOOMMODE,ZOOMIN、ZOOMFULL等。仿真出的波形可以与自己设想的波形进行比较,从而得出差异,再到源程序中进行修改,再仿真,一般仿真调试需要多次才能得到比较满意的结果。6以上仿真称之为前仿真,也就是逻辑仿真、功能仿真,这是仿真的第一步,流程如图46所示。图46前仿真示意图5可变模计数器实现与仿真51模计数器原理模计数器原理为从零开始进行计数,当计数到指定的值时,又重头开始计数,如此循环计数。例如在通用的2进制数,10进制数,16进制数,只是模计数器的特例,其中10进制数是被人得生活所习惯,而2进制数和16进制数则是更适用于计算机的处理。其中模2进制计数、模10进制计数和模16进制计数的计数原理如图51至图53。01图51模2进制计数0916274583图52模10进制计数0916274583151413121110图53模16进制计数器0N11N42N34N23图54模N计数器原理52可变模计数器解析由模2、模10和模16计数器得出,其计数截止值分别为1、9和15。因此可以得出,对于模N计数器,其技术的截止值均为N1,其对应的计数器原理图图54所示。因此要实现9、11、13和15可变模计数器,其计数值分别为8、10、12和14。8、10、12和14的2进制值如图所示图55。图558、10、12和14的2进制值从图中可以看出8、10、12和14所对应的2进制值的最高位和最低位均相同,四者的区别只是中间两位。而这四个值应该是有S0和S1控制的的,由此可以得出,9、11、13和15的可变模计数器值的截止值为1B1,S1,S0,1B0。53可变模计数器VERILOGHDL模型下面为可变模计数器VERILOGHDL模型,其中ASSIGNLIMITED_VALUE1B1,S1,S0,1B0这一句模型正是在章节52中得出的结论,也是整个模计数单元的核心。其指定了计数的限定值,但计数值大于或者等于这个值时,其计数值清零,当计数值小于这个值是,不断的执行加一操作。MODULEMODCOUNTERCLK,RST_N,S1,S0,COUNTER_VALUEINPUTCLK/时钟INPUTRST_N/复位INPUTS1/控制信号S1INPUTS0/控制信号S0OUTPUT30COUNTER_VALUE/定义截止值WIRE30LIMITED_VALUE/定义计数值REG30COUNTER_VALUE/给截止值赋值ASSIGNLIMITED_VALUE1B1,S1,S0,1B0/可变模计数模块/ALWAYSPOSEDGECLKORNEGEDGERST_NBEGINIFRST_NCOUNTER_VALUELIMITED_VALUECOUNTER_VALUELIMITED_VALUEBCDHIGHLIMITED_VALUEBCDLOW4H0ELSEIFBCDLOW4H9BCDLOW4H0ELSEBCDLOWBCDLOW1B1ENDENDENDM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航海船舶航行注意事项
- 金融经济学考研复习方法总结
- 职业教育学生职业技能鉴定工作流程指南
- 农学中的畜禽疾病预防与控制技术
- 2025四川宜宾市正信法律咨询服务有限公司招聘4人笔试历年参考题库附带答案详解
- 2025年社会医学公共卫生理论评估答案及解析
- 2025年速学渗透测试题及答案
- 2025年四川宜宾市筠连县事业单位引进81名高层次人才笔试高频难、易错点备考题库含答案详解
- 2025年眼视光学眼部疾病常见病例分析考试卷答案及解析
- 2025年医学统计学研究设计分析试卷答案及解析
- 陈嘉庚生平介绍(中文+英文版)
- 静脉血栓栓塞症预防与护理课件
- 西门子低压电器快速选型手册
- 养羊与羊病防治技术课件
- 我和我的祖国课件
- 蔬菜大棚项目计划书
- 医学资料品管圈十大步骤的运用
- 餐饮空间设计课件ppt
- 《基因组学》课程教学大纲(本科)
- DB51T 5036-2017 四川省屋面工程施工工艺规程
- 装饰装修工程培训课件(ppt-162页)
评论
0/150
提交评论