




已阅读5页,还剩152页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硬件课程设计,设计目标:1。学习现代集成电路设计方法2。熟悉在系统可编程逻辑器件上进行编程,及相应软件的应用。3。学习使用硬件描述语言VHDL进行集成电路设计。,设计要求:,1。熟悉VHDL编程语言方法,掌握VHDL语言的基本结构和语句,能编写规范的系统描述;基本掌握逻辑综合的方法;编写具有一定要求的逻辑电路源程序,并进行调试。2。熟悉在系统逻辑设计软件环境下,完成源程序转换,下载和在可编程器件上进行调试。学会使用ispDesignExpert软件工具进行系统设计。3。完成设计说明文件,考核方式:,(1)上课,上机。(2)验机,通过测试,实现要求功能。(3)硬件课程设计报告包括:VHDL语言源程序、设计说明、逻辑图、真值表。,参考文献:1。李辉编著,ISP系统设计技术入门与应用,电子工业出版社,20022。乔长阁等,VHDL简明教程,清华大学出版社,19973。北京理工大学ASIC研究所,VHDL语言100例详解,清华大学出版社,1999相关网址连接//VHDL在线参考,第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,第1章在系统可编程集成电路基础,1。1概述主要术语与概念1专用集成电路ASICsApplicationSpecificIntegratedCircuits2非专用集成电路有PLDProgrammableLogicDeviceEPLDErasableProgrammableLogicDevice,一个门阵等效门就是一个两输入端与非门的低密度的PLD(1000个)有:1CPLDComplexProgrammableLogicDevice2FPGAFieldProgrammableGateArray两者都具有更多的I/O,Productterm(乘积项)和Macrocell(宏单元)通过内部可编程连线PI(ProgrammableInterconnect)将内部逻辑单元(LogicCell)连接起来,以构成芯片。,FPGA(FieldProgrammableGateArray)的基本结构由以下几个部分组成1可编程逻辑块CLB(ConfigurableLogicBlocks),按矩阵排列2芯片四周的多个IOB(Input/OutputBlocks)3由可编程内部连线PI(ProgrammableInterconnect);将行与列的CLB以及IOB之间实现互连。由这3个主要部分就构成了可编程逻辑单元阵列LCA(LogicCellArray),第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,1。2在系统可编程逻辑器件的结构,一。ISP含义ISP在系统可编程(InSystemProgrammable)ispLSI在系统可编程大规模集成电路(InSystemProgrammableLargeScaleIntegration)ISP指用户为修改或重构数字逻辑系统,在已设计和制作的系统中,通过器件的编程控制信号线直接在线编程、修改、调试、验证。使已经定型的产品性能可以不断地改进。,二。Isp系列在系统可编程逻辑芯片特点:1。通用性:可以实现几乎所有逻辑电路功能。如:编码器、译码器、寄存器、计数器、串并转换、波特率发生器、网络器件;用于:数据采集、图像处理、多媒体。,2。可在系统编程,灵活性强3。高集成度:ispLSI1000系列:等效PLD门密度2000-8000ispLSI2000系列:等效PLD门密度1000-8000ispLSI3000系列:等效PLD门密度7000-20000ispLSI5000系列:等效PLD门密度12000-24000ispLSI8000系列:等效PLD门密度25000-450004。低功耗:供电电压:5V、3.3V、2.5V、1.8V,三。在系统可编程逻辑芯片型号含义:见P6图1-1,第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,1。2。1ispLSI1016的结构,ispLSI1016采用了电可擦除(ElectricalErasable)CMOS(E2CMOS)技术,由2000个PLD门组成,用PLCC塑料引线芯片载体封装(PlasticLeadChipCarrierPackage)一。外部特性引脚图:图12,引脚44个5V供电,内部有:96个逻辑寄存器。2000个PLD门3个时钟输入端:Y0-11,Y1-35,Y2-334个指定数据输入脚:IN3-IN0(2,36,24,14脚),132个I/O23个专用输入(DedicatedInput)IN0,IN1,IN235个编程用引脚:(1)编程允许ISPEN-13,(2)串行数据输入和指定输入SDI/IN0-14,(3)方式控制和输入MODE/IN2-36,(4)串行数据和指定输出SDO/IN1-24,(5)串行时钟SCLK/Y2-33.,这5个编程用引脚是计算机与ispLSI之间通信的接口信号。计算机将已经设计好的逻辑方程或电路原理图文件,按照一定的协议编译通过后,转换为JEDEC(JoinElectronicDeviceEngineeringCouncil电子器件工程联合协会)(熔丝图文件)标准文件。通过这5个编程引脚把扩展名为.JED(熔丝图文件)的文件下载到(DownLoad)ispLSI器件中。,4指定时钟输入引脚Y05时钟输入和复位输入引脚Y1/RESET,第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,1。2。1。1芯片结构ispLSI1016逻辑器件从结构上看:是由以下5个大部分组成:16个通用逻辑块GLB(GenericLogicBlock),输出布线区ORP(OutputRoutingPool),全局布线区GRP(GlobalRoutingPool),输入输出单元(IOCell)时钟分配网络CDN(ClockDistributionNetwork)ispLSI1016逻辑器件共有两个组合模块(Megablock)。每个组合模块由5个部分组成:8个GLB(GenericLogicBlock),1个ORP(OutputRoutingPool),16个输入输出单元(IOCell)2个专用输入(DedicatedInput)1个公共乘积项输出使能,1。通用逻辑块GLB(GenericLogicBlock)每个GLB含有18个输入信号,4个输出信号GLB主要由4个部分组成:1)与阵列2)乘积共享阵列PTSA(ProductTermSharingArray)3)输出逻辑宏单元(OutputLogicMacroCell)4)逻辑控制单元,1)与阵列(20个与项)16个输入来源于全局布线区GRP(GlobalRoutingPool),即可以来自于外引脚也可以来自于反馈信号。2个输入来源于专用的输入(DedicatedInput)引脚。2)或阵列(乘积共享区)4个或门,有4种连接模式:(1)标准模式:图15,或门起作用,可灵活连接到输出。(2)直通模式:GLB乘积项的直通模式图17,将乘积项的输出直接连接到GLB,速度快。(3)异或逻辑模式:图18,利用异或门和D触发器可以构成T,JK触发器;组成计数器,累加器,比较器等。(4)混合模式:(2)和(3)两种模式的组合:图19,时钟分配网络控制可来自:CLK0,CLK1,CLK2,或GLB中的任意一个乘积项。,3)输出逻辑宏单元OLMC(OutputLogicMacroCell)可使或门的输出经过各种连线模式,最终通过多路选择器送到输出端。4)逻辑控制单元。通用逻辑块GLB中的触发时钟由CDN提供;通用逻辑块GLB中的触发复位信号RESET来源于RESET脚和一个乘积项产生。,2。输出布线区(ORP)见图110功能:用于输出控制。任何一个GLB的输出端都能够通过输出布线区(ORP)与I/O相连,将各GLB的输出灵活的连接到输出管脚上。即可实现不改变芯片引脚的外部连线,通过修改输出布线区的布线逻辑,使该引脚的输出信号符合设计要求。注意:连接有限制;如A0的Q0只能接I/O0,4,8,12。(即寄存器内的位置顺序不变),3。全局布线区(GRP)见图111功能:将GLB的输出或I/O管脚的输入信号灵活的连接到GLB的各输入端。,4。输入输出单元(I/OCELL)结构:见图112将I/OPin定义为输出时:I/O单元的输入信号来源于ORP;将I/OPin定义为输入时:I/O单元将引脚输入信号送到GRP。几种输入输出结构:见图113,5。时钟分配网络:见图114功能:接受3个时钟输入Y2,Y1,Y0产生5个时钟输出CLK0,1,2,IOCLK0,1,第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,1。2。1。2功耗与延迟时间1。功耗:与工作速度与使用的乘积项有关。见图1162。延迟时间与传输路径及负载有关。见图118,第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,1。2。2ispLSI1016编程接口和编程,1。编程接口编程下载:指源程序经编译形成的熔丝图文件.JEDEC。PC机通过25芯并行通信电缆和编程器接口电路相连,传送到ispLSI芯片中的E2CMOS,以便保存信息。编程缓冲接口电路见图119,主机一侧:25针并行接口,使用其中8根连线经扁平电缆接编程接口电路ispLSI芯片一侧接6个管脚多个芯片可共用一个接口,形成串行连接。见图120,ISP菊花链下载软件ISP菊花链是基于Windows环境的可编程工具,在一个链路上可编程达100个ISP器件。软件包括混合的5V、3.3V的ISP和ispJATG编程能力。使用者可以对芯片进行单路或多路编程,对链上所有器件编程的时间仅为其中最长的器件的编程时间。内部的ispATE编程工具是完全集成化的且允许用ATE设备快速编程。,编程控制信号有:(1)ispEN在系统可编程容许(2)SCLK(SerialClock),作为内部移位寄存器的时钟(3)SDI(SerialDataInput)(4)SDO(SerialDataOutput)(5)Mode方式控制信号,第1章在系统可编程集成电路基础1。1概述1。2在系统可编程逻辑器件的结构1。2。1ispLSI1016的结构1。2。1。1芯片结构1。2。1。2功耗与延迟时间1。2。2ispLSI1016编程接口和编程1。编程接口2。编程下载操作,2。编程下载操作ispLSI芯片有两种工作状态:ISPEN=1:非编辑状态(NormalState)使ispLSI芯片处于非编辑状态,其它4个编程信号可作为输入信号使用。ISPEN=0:编辑状态(EditState)编程操作受到片内的状态机(StateMachine)控制,该状态机有3个状态:空闲状态,移位状态,执行状态。根据控制信号Mode和SDI的状态,状态机决定:是停留在现状态;还是转移到下一个状态。,编程状态下共3种状态:见图1211。空闲状态(IdleState):MODE1SDI=0:识别可编程芯片的型号,将可编程芯片的识别码装入移位寄存器。MODE0在时钟信号的作用下,从SDO送出识别码数据。MODE1SDI=1:转到命令移位状态。,2。移位状态(ShiftState):串行接受指令MODE0,且在串行时钟信号的配合下将操作命令送到状态机;操作命令送到状态机后;当MODE1SDI=1:转到命令执行状态。MODE1SDI=0:状态机转到空闲状态。3。执行状态(ExecuteState):MODE0,且在串行时钟信号的配合下状态机开始执行在移位状态装入的操作命令。MODE1SDI=1:转到移位状态,接受新的命令。MODE1SDI=0:状态机转到空闲状态。,4操作命令编程命令由5位二进制组成,可表示17种不同的操作:全擦除,部分擦除,移位,校验,编程,编程加密,写入等,第四节ISP开发软件SYNARIO的使用,一。新建项目:P232二。选择器件:P233三。建立源文件:P234四。编辑修改源文件:双击或打开,五。编译源文件:P257六。连接,验证,生成JED文件:P258七。下载JED文件到芯片中:P259八。调试:连接输入信号:实验台开关。连接输出信号:实验台喇叭,LED灯。,第2章硬件描述语言VHDL基础,2。1概述2.2VHDL语言的语法规则2.2.1标识符2.2.2数据对象2.2.3数据类型2.2.4VHDL运算符,2。1概述,传统数字电路设计方法不适合设计大规模的系统。工程师不容易理解原理图设计的功能。众多软件公司开发研制了具有自己特色的电路硬件描述语言HDL(HardwareDescriptionLanguage),存在着很大的差异,工程师一旦选用某种硬件描述语言作为输入工具,就被束缚在这个硬件设计环境之中。因此,硬件设计需要一种强大的、标准化的硬件描述语言,作为可相互交流的设计环境。,美国国防部在80年代初提出了VHSIC(VeryHighSpeedIntegratedCircuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。1981年提出了一种新的HDL,称之为VHSICHardwareDescriptionLanguage,简称为VHDL。这种语言的成就有两个方面:描述复杂的数字电路系统;成为国际的硬件描述语言标准。,主要术语与概念VHDL是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage的缩写。VHDL语言可描述一个数字电路的输入、输出以及相互间的行为与功能,而其硬件关联性的语法与形式虽类似于一般程序语言,但是涵盖许多与硬件关联的语法构造,它特有的层次性设计语法结构适合大型设计项目的团队合作,是目前最通用的硬件描述语言。,硬件描述语言(HDL):即可以描述硬件电路的功能、信号连接关系及定时关系的一种语言。目前,VHDL和Verilog已先后成为IEEE标准硬件描述语言。,硬件描述语言(HDL)的特点:可以借鉴高级编程语言的功能特性对硬件电路的行为和结构进行高度抽象化和规范化的描述;同时,还可以对硬件电路的设计进行不同层次、不同领域的模拟验证和综合优化等处理,从而使硬件电路的设计达到高度自动化。,VHDL的优点1用于设计复杂的、多层次的设计,支持设计库和设计的重复使用;2与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节;3有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本;4VHDL有良好的可读性,容易理解。,VHDL的应用VHDL是由美国国防部(DOD)制定,以作为各合同商之间提交复杂电路设计文档的一种标准方案.现在VHDL被广泛用于:电路设计的文档记录设计描述的逻辑综合电路仿真1995年我国技术监督局制定的CAD通用技术规范推荐VHDL作为我国电子设计自动化硬件描述语言的国家标准。至此,VHDL在我国迅速普及,现在已成为从事硬件电路设计开发人员所必须掌握的一门技术。,学习VHDL的几点重要提示1.了解VHDL的可综合性问题:VHDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。不可综合的VHDL语句在软件综合时将被忽略或者报错。应当牢记:“所有的VHDL描述都可以用于仿真,但不是所有的VHDL描述都能用硬件实现。”,2.用硬件电路设计思想来编写VHDL:学好VHDL的关键是充分理解VHDL语句和硬件电路的关系。编写VHDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要多实践,多思考,多总结。,3.语法掌握贵在精,不在多。30%的基本VHDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新语法要有用的多。,VHDL与原理图输入法的关系VHDL和传统的原理图输入方法的关系就好比是高级语言和汇编语言的关系。VHDL的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率高,比较直观,但设计大规模CPLD/FPGA时显得很烦琐,移植性差。在真正的PLD/FPGA设计中,建议采用原理图和VHDL结合的方法来设计,适合用原理图的地方就用原理图,适合用VHDL的地方就用VHDL,并没有强制的规定。在最短的时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路才是最终目的。,VHDL开发流程用VHDL语言开发PLD/FPGA的完整流程为:1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的VHDL编辑环境。通常VHDL文件保存为.vhd文件。2.功能仿真:将文件调入VHDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真),3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真),6.编程下载:确认仿真无误后,将文件下载到芯片中通常以上过程都可以在PLD/FPGA厂家提供的开发工具(如MAXPLUSII,Foundation,ISP)中完成,但许多集成的PLD开发软件只支持VHDL的子集,可能造成少数语法不能编译,如果采用专用VHDL工具分开执行,效果会更好,否则这么多出售专用VHDL开发工具的公司就没有存在的理由了。,VHDL与计算机语言的区别1运行的基础不同:计算机语言是在CPURAM构建的平台上运行;VHDL设计的结果是由具体的逻辑、触发器组成的数字电路。2执行方式不同:计算机语言基本上以串行的方式执行;VHDL在总体上是以并行方式工作;3验证方式不同计算机语言主要关注于变量值的变化;VHDL要实现严格的时序逻辑关系;,数字系统自动设计流程图,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型2.2.4VHDL运算符,标识符规则:标识符规则是在书写VHDL程序时的一般文字规则。基本标识符由字母、数字以及下划线字符组成,且具有以下特征要求:第一个字符必须是字母;最后一个字符不能是下划线;不允许连续两个下划线;在标识符中大、小写字母是等效的。VHDL中的注释文字一律为2个连续的连接线“-”,可以出现在任一语句后面,也可以出现在独立行;VHDL的保留字(关键字)不能用于标识符;,2.2.1标识符(Identifiers),如下标识符是非法的:_tx_clk8B10Blarge#numberlink_barselectrx_clk_,例如:如下标识符是合法的:tx_clkThree_state_Enablesel7DHIT_1124,-标识符必须起始于字母,-只能是字母、数字、下划线,-不能有连续两个下划线,-关键字(保留字)不能用于标识符,-最后字符不能是下划线,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象1常量(CONSTANT)2信号(SIGNAL)3变量(VARIABLE)2.2.3数据类型2.2.4VHDL运算符,2.2.2数据对象(DataObjects),在VHDL中,数据对象是可以赋予一个值的客体。常用的数据对象为常量、变量和信号,在使用前必须给予说明。,1常量(CONSTANT)常量是指在设计描述中不会变化的值。在VHDL描述中,一般用常量名代替数值,便于修改程序。在综合后,连接到电源和地。可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定。,常量说明语句的一般格式为:CONSTANT常量名,常量名:数据类型:=取值;,例如:CONSTANTwidth:integer:=8;,常量所赋值和定义的数据类型应一致。常量一旦赋值就不能再改变。,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象1常量(CONSTANT)2信号(SIGNAL)3变量(VARIABLE)2.2.3数据类型2.2.4VHDL运算符,2信号(SIGNAL)信号是电子电路内部硬件实体相互连接的抽象表示。信号能够代表连线,也可是内连元件;信号没有方向性,也可当作输入。端口(Port)也是信号。可给它赋值,用:=表示直接赋值用=表示信号赋值,信号说明语句的格式为:SIGNAL信号名,信号名:数据类型:=初始值;,信号包括I/O引脚信号以及IC内部缓冲信号,有硬件电路与之对应,故信号之间的传递有实际的附加延时。信号通常在Entity中和Architecture中定义;信号不能在进程中说明(但可以在进程中使用)。,硬件中的信号总是同时工作的,即信号同时在各个模块中流动,这就是硬件电路的并发性。VHDL体现了实际电路中信号“同时”流动的这种基本特性。,信号赋值语句格式为:目标信号名=表达式;,赋值语句中的表达式必须与目标信号具有相同的数据类型。,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象1常量(CONSTANT)2信号(SIGNAL)3变量(VARIABLE)2.2.3数据类型2.2.4VHDL运算符,3变量(VARIABLE)变量是暂存数据的量。,变量说明语句的格式是:VARIABLE变量名,变量名:数据类型:=初始值;,例如:VARIABLEcount:INTEGERRANGE0TO99:=0变量是一个局部量,它只用于进程和子程序。变量必须在进程或子程序(Process和Function中定义)的说明区域中加以说明,只能在并只在其内部有效。变量赋值是直接的、非预设的,它在某一时刻仅包含一个值。变量的赋值立即生效,不存在延时行为。临时数据,没有物理意义;要使其全局有效,先转换为Signal。,赋值语句中的表达式必须与目标变量具有相同的数据类型。,变量赋值语句格式为:目标变量名:=表达式;,信号和变量的主要区别:,1.变量是一个局部量,只能用于进程或子程序中;信号是一个全局量,它可以用来进行进程之间的通信。,2.变量赋值立即生效,不存在延时行为;信号赋值具有非立即性,信号之间的传递具有延时性。,4.信号赋值可以出现在进程中,也可以直接出现在结构体中,但它们的运行含义不同:前者属顺序信号赋值,此时的赋值操作要视进程是否已被启动;后者属并行信号赋值,其赋值操作是各自独立并行发生的。,3.变量用作进程中暂存数据的单元;信号用作电路中的信号连线。,5.在进程中变量和信号的赋值形式与操作过程不同:在变量的赋值语句中,该语句一旦被执行,其值立即被赋予变量。在执行下一条语句时,该变量的值即为上一句新赋的值。在信号的赋值语句中,该语句即使被执行,其值不会使信号立即发生代入,在下一条语句执行时,仍使用原来的信号值。直到进程结束之后,所有信号赋值的实际代入才顺序进行处理。因此,实际代入过程和赋值语句的执行是分开进行的。如例1所示。,例1信号和变量值代入的区别举例PROCESS(a,b,c,d)BEGINd=a;x=b+d;d=c;y=b+d;ENDPROCESS;结果:x=b+c;y=b+c;PROCESS(a,b,c)VARIABLEd:std_logic_vector(3downto0);BEGINd:=a;x=b+d;d:=c;y=b+d;ENDPROCESS;结果:x=b+a;y=b+c;,当进程运行时,信号赋值将自上而下顺序执行,但第一项赋值操作并不会发生,这是因为信号赋值是在进程结束时才起作用。因为在进程结束更新时,d的最后一个赋值为c,因此执行结果为该式。,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型2.2.4VHDL运算符,2.2.3数据类型,VHDL是一种类型型很强的语言。不同类型之间的转换必须用类型转换函数.对象的数据类型定义了该对象可以具有的值和对该对象可以进行运算的限制。在VHDL中,这种限制是被强制执行的。VHDL提供了多种标准的数据类型。在VHDL描述中,每个信号、常量、变量都要指定它的数据类型,以确定它能保持那一类数据。VHDL对数据类型的定义相当严格,在进行赋值或数据类型变换过程中都要进行类型检查。VHDL不允许不同类型的数值相互赋值或使用类型不允许的运算符进行运算。这种特性可以帮助设计者在设计前期发现错误。,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型1.定义数据类型2IEEE预定义的标准逻辑数据类型3.用户自定义的数据类型4。数据类型的转换5属性(Attributes)2.2.4VHDL运算符,1.定义数据类型VHDL提供的10种标准数据类型。,(2)Real(实数)。取值范围为1.0E+38+1.0E+38。和整数一样,实数能被约束。由于实数运算需要大量的资源,因此综合工具常常并不支持实数类型。,(3)Bit(位)。只有两种取值,即0和1,可用于描述信号的取值。,(4)Bit_Vector(位矢量)。是用双引号括起来的一组数据,每位只有两种取值:0和1。在其前可加数制标记,如X(16进制)、B(2进制、默认)、O(8进制)等。位矢量常用于表示总线的状态。,(1)Integer(整数)。取值范围为(2311)(2311)。一个整数类型和要被综合进逻辑的信号或变量在其范围上应有约束。例如:variablea:integerrange255to255;整数可通过语句内带符号矢量来表达给综合工具。,(5)Boolean(布尔量)。又称逻辑量。有“真”、“假”两种状态分别用TRUE和FALSE标记。用于关系运算和逻辑运算,(6)Character(字符)。是用单引号括起来的一个字母、数字、空格或一些特殊字符(如$、%等)。字符区分大、小写字母。,(7)String(字符串)。是用双引号括起来的一个字符序列。字符串区分大、小写字母。常用于程序的提示和结果说明等。,(8)Time(时间)。时间取值范围从(2311)(2311)。时间由整数值、一个以上空格以及时间单位组成。常用的时间单位有:fs、ns、s、ms、s、min、hr等。时间常用于指定时间延时和标记仿真时刻。,上述10种数据类型是VHDL中标准的数据类型,在编程时可以直接引用。如果用户需使用其它的数据类型,则必须进行自定义。,(9)Natural(自然数)和Positive(正整数)。是整数类型的子类型。自然数取值范围为0(2311);正整数是大于0的整数。,(10)SeverityLevel(错误等级)。错误等级分为:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)四级,用于提示系统的错误等级。,标准数据类型,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型1.定义数据类型2IEEE预定义的标准逻辑数据类型3.用户自定义的数据类型4。数据类型的转换5属性(Attributes)2.2.4VHDL运算符,2IEEE预定义的标准逻辑数据类型IEEE库STD_LOGIC_1164程序包中定义的STD_LOGIC类型和STD_LOGIC_VECTOR类型。STD_LOGIC类型的数据可以具有九种取值,其含义如下:U:初始值X:不定态0:强制01:强制1Z:高阻态W:弱信号不定态L:弱信号0H:弱信号1_:不可能情况(可忽略值)其中,“X”方便了系统仿真,“Z”方便了双向总线的描述。该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bit.,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型1.定义数据类型2IEEE预定义的标准逻辑数据类型3.用户自定义的数据类型4。数据类型的转换5属性(Attributes)2.2.4VHDL运算符,3.用户自定义的数据类型VHDL允许用户自己定义数据类型。,常用的用户自定义数据类型主要有:(1)枚举(Enumerated)(Enumeration)类型。通过列举某类变量所有可能的取值来加以定义。对这些取值,一般使用自然语言中有相应含义的单词或字符序列来代表,以便于阅读和理解。,自定义数据类型说明语句的一般格式是:TYPE数据类型名,数据类型名IS数据类型定义;,枚举类型定义的格式为:TYPE数据类型名IS(元素1,元素2,);,该数据类型括号中的值自左向右按升序排列,中间用逗号分隔。在VHDL中,对其中每一个元素都赋予一个位置编号,最左边的元素开始记为“0”,向右依次递增“1”。这为“属性”提供了一个访问位置编号的机制。,例如,在程序包STD_LOGIC_1164中对STD_LOGIC的定义为TYPESTD_LOGICIS(U,X,0,1,Z,W,L,H,_);,(2)数组(ARRAY)类型。又称为向量,是多个相同类型的数据集合。它可以是二维和多维的。一般用于定义数据总线、地址总线等。,数组类型定义的格式为:TYPE数据类型名ISARRAY(范围)OF元素类型名;,范围一项规定数组下标的类型和范围。默认的下标类型是整型,但也可以使用其它数据类型,这就需要在范围中标明下标的类型。例如:TYPEcount1ISARRAY(STD_LOGIC_DOWNTOU)OFINTEGER;,多维数组需要用两个以上的范围来描述,而且多维数组不能生成逻辑电路,因此只能用于生成仿真图形及硬件的抽象模型。,(3)纪录(RECORD)类型。是多个不同类型的数据集合。具有模型抽象能力,用于描述一个功能模块。,纪录类型定义的格式为:TYPE数据类型名ISRECORD元素名:数据类型名;元素名:数据类型名;ENDRECORD;,纪录适用于描述总线、仿真等。对于记录类型的对象进行单元素赋值时,可在记录类型对象名后加点“”,然后再加赋值元素的元素名。,(4)时间(TIME)类型(物理类型)。表示时间的数据类型,在仿真时是必不可少的。,时间类型定义的一般格式为:TYPE数据类型名IS范围;UNITS基本单位;单位;ENDUNITS;,例如:TYPEtimeISrange1e18TO1e18;UNITSfs;ps=1000fs;ns=1000ps;s=1000ns;ms=1000s;set=1000ms;min=60set;hr=60min;ENDUNITS;这里的基本单位是“fs”。时间是物理类型的数据,当然对容量、阻抗值也可以做定义。,(5)子类型(SYBTYPE)。子类型是一个具有限制条件的类型,通常用来定义具有一定限制条件的基本类型的数据对象。,子类型定义的一般格式为:SYBTYPE子类型名IS数据类型名约束范围;,例如:如下Byte被定义作为一个子类型,而后数据对象被定义为从属于该子类型。SYBTYPEByteISBit_Vector(7downto0);SIGNALByte1,Byte2:Byte;SIGNALData1,Data2:Byte;SIGNALAddr1,Addr2:Byte;,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型1.定义数据类型2IEEE预定义的标准逻辑数据类型3.用户自定义的数据类型4。数据类型的转换5属性(Attributes)2.2.4VHDL运算符,4。数据类型的转换在VHDL程序中,不同类型的对象不能代入,因此要进行类型转换。类型转换的方法有:,(1)类型标记法。用类型名称来实现关系密切的标量类型之间的转换。例如:VARIABLEx:INTEGER;VARIABLEy:REAL;使用类型标记(即类型名)实现类型转换时,可采用赋值语句:x:=INTEGER(y);y:=REAL(x)。,(2)类型函数法。VHDL程序包中提供了多种转换函数,使得某些类型的数据之间可以相互转换,以实现正确的赋值操作。常用的类型转换函数有:,CONV_INTEGER():将STD_LOGIC_VECTOR类型转换成INTEGER类型。CONV_STD_LOGIC_VECTOR():将INTEGER类型、UNSIGNED类型或SIGNED类型转换成STD_LOGIC_VECTOR类型。TO_BIT():将STD_LOGIC类型转换成BIT类型。TO_BIT_VECTOR():将STD_LOGIC_VECTOR类型转换BIT_VECTOR类型。TO_STD_LOGIC():将BIT类型转换成STD_LOGIC类型。TO_STD_LOGIC_VECTOR():将BIT_VECTOR类型转换成STD_LOGIC_VECTOR类型。,注意:引用时必须首先打开库和相应的程序包。,该函数由STD_LOGIC_UNSIGNED程序包定义,该函数由STD_LOGIC_ARITH程序包定义,以下函数由STD_LOGIC_1164程序包定义,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型1.定义数据类型2IEEE预定义的标准逻辑数据类型3.用户自定义的数据类型4。数据类型的转换5属性(Attributes)2.2.4VHDL运算符,5属性(Attributes),VHDL没有一般程序设计语言中那些运算类标准函数,取而代之的是多种能反映和影响硬件行为的属性。VHDL的属性可分为数值类、函数类、信号类、类型类和范围类等属性。提供Entity、Architecture、Type和Signals的信息。有许多预定义的值、信号和范围的属性,属性的一般格式为:ObjectAttributes,为获取硬件设计中的一些有关信息(各类项目特性)而定义的内部函数,某一项目的属性或特征通常可以用一个值或一个表达式来表示;它可以通过VHDL的属性描述语句加以访问。,1数值类属性数值类属性用于返回数组、块、或一般数据的有关值,如边界、数组长度等。对一般数据属性,返回函数的边界值。其格式为ObjectLEFT;ObjectRIGHT;ObjectHIGH;ObjectLOW;对于数组的数值属性,返回数组的长度值。其格式为ObjectLENGTH;对于块结构体的数值属性,返回块的信息。其格式为ObjectBEHAVIOR;ObjectSTRUCTURE;,例如:TYPEnumISARRAYRANGE7DOWNTO0;VARIABLEi1,i2,i3,i4,M:INTEGER;BEGINi1:=numLEFT;-i1取得num的左边界值7i2:=numRIGHT;-i2取得num的右边界值0i3:=numHIGH;-i3取得num的上限值7i4:=numLOW;-i4取得num的下限值0M:=numLENGTH;,2函数类属性函数类属性是以函数形式为设计人员提供数据类型、数组、信号的相关信息的。数据类型的属性函数。利用数组属性可以获得数组的区间,该属性的格式为ObjectSUCC(X);-获取X的下一个值ObjectPRED(X);-获取X的前一个值ObjectLEFTOF(X);-获取X的左边值ObjectRIGHTOF(X);-获取X的右边值其中,“Object”为数据类型名,X为其中的一个元素。例如:TYPEtimeIS(year,month,day,hour,min,sec);则timeSUCC(hour);-获取元素hour的下一个值mintimeLEFTOF(day);-获取元素day的左边值month,数组的属性函数。其格式为ObjectLEFT(n);-获取索引号为n的区间左端边界值ObjectRIGHT(n);-获取索引号为n的区间右端边界值ObjectHIGH(n);-获取索引号为n的区间高端边界值ObjectLOW(n);-获取索引号为n的区间低端边界值其中,“Object”为数组名;n为多维数组中所定义的多维区间的序号。默认值n=1,表示对一维空间进行操作。,信号的属性函数。利用信号属性可得到信号的行为和功能信息,其格式为ObjectEVENT;-反映信号的值是否变化,是,则返回为“真”ObjectACTIVE;-反映信号是否活跃,是,则返回为“真”ObjectLAST_EVENT;-反映从最近一次事件到现在经过的时间,返回一个时间值ObjectLAST_VALUE;-反映信号变化前的取值,并将该历史值返回ObjectLAST_ACTIVE;-反映从最近一次活跃到现在经过的时间,返回一个时间值,需要注意的是:信号的事件(Event)和活跃(Active)是两个不同的概念,必须严格区分。信号的活跃定义为信号值的任何变化。信号值由1变为0是一个活跃,而从1变为1也是一个活跃,唯一的准则是发生了事情,这种情况被称为一个事项处理(Transaction)。然而,信号的事件则要求信号值发生变化。信号值从1变为0是一个事件,但从1变为1虽是一个活跃却不是一个事件。所有的事件都是活跃,但并非所有的活跃都是事件。,例如:利用函数信号属性检查信号的建立时间。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdff1ISPORT(d,clk:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff1;ARCHITECTUREsetup_time_checkOFdff1ISBEGINPROCESS(clk)BEGINIF(clk=1)AND(clkEVENT)THENq=d;ASSERT(dLAST_EVENT5ns)-条件为真,向下执行REPORT“SETUPVIOLATION”-条件为假,报告错误信息:建立时间不符合要求SEVERITYERROR;-出错等级:ERRORENDIF;ENDPROCESS;ENDsetup_time_check;,3信号类属性信号类属性的作用对象是信号,其返回值也是一个信号。共有四种信号类属性,分别是:DELAYED(time),即延时。该属性使受它作用的信号延时time所规定的值。如:aDELAYED(5ns)即信号a延时5ns。STABLE(time)。用于监测信号在规定时间内的稳定性。若受它作用的信号在time所规定的时间内没有发生事件,则该属性的结果为“TRUE”。QUIET(time)。用于监测信号在规定时间内的是否“安静”。若受它作用的信号在time所规定的时间内没有发生事情或事件(Active或Event),则该属性的结果为“TRUE”。TRANSACTION。用于检测信号的Active或Event。当Active或Event发生时,该属性的值也将发生改变。,4类型类属性该属性可获得数据类型中的一个值。,格式为:ObjectBASE,其中,Object为数据类型名。例如:TYPEtimeIS(sec,min,hour,day,month,year);a:=timeBASERIGHT;-a=yeara:=timeBASELEFT;-a=sec,5范围类属性该属性的返回值是一个数据区间。其这两个属性功能相同,但得到的区间范围是颠倒的。,范围类属性的格式为:ObjectRANGE(n);ObjectREVERSERANGE(n);,2.2VHDL语言的语法规则,2.2.1标识符2.2.2数据对象2.2.3数据类型2.2.4VHDL运算符,2.2.4VHDL运算符,VHDL为构造计算数值的表达式提供了许多预定义算符。预定义算符共有四类运算符:(1)算术运算符:包括一元算术运算符和二元算术运算符。一元算术运算符包括:+(正号)、(负号)、ABS(求绝对值)二元算术运算符包括:+、*、/、MOD(求模)、REM(求余)、*(指数运算)(2)关系运算符:它包括:=、/=、=、=(3)逻辑运算符:包括一元逻辑运算符和二元逻辑运算符。一元逻辑运算符包括:NOT二元逻辑运算符包括:AND、OR、NAND、NOR、XOR(4)并置运算符:SIGNALflag:integer;SIGNALmtag:integerrange0to15;SIGNALstag:integerrange100downto0;BEGIN-mtagisa4-bitarray;MSBismtag(0);LSBismtag(3)-stagisa7-bitarray;MSBisstag(6);LSBisstag(0)-总是在结构体(ARCHITECTURE)中声明信号也可在状态机中表示状态变量,如:ARCHITECTUREbehaviorofexampleisTYPEstatesis(state0,state1,state2,state3);BEGINSIGNALmemread:states;-每个状态(state0,state1,etc)代表一个独有的状态。,常量(Constant)常量在设计描述中保持某一规定类型的特定值不变,例如:ARCH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年烟台市人民警察培训学校公开招聘工作人员模拟试卷及答案详解(各地真题)
- 2025广东广州市中山大学孙逸仙纪念医院皮肤科技术助理岗位招聘1人模拟试卷参考答案详解
- 2025年4月四川成都师范学院考核招聘人员(第二批)考前自测高频考点模拟试题及答案详解(典优)
- 2025辽宁中国地质科学院岩溶地质研究所招聘交流选调人员1人考前自测高频考点模拟试题及答案详解1套
- 2025金华市天禾实业有限公司招聘2人模拟试卷及答案详解(有一套)
- 2025安徽池州市投资控股集团有限公司招聘24人笔试题库历年考点版附带答案详解
- 2025年台州仙居县卫生健康系统公开招聘卫技人员8人考前自测高频考点模拟试题有完整答案详解
- 2025福建技术师范学院招聘44人模拟试卷及参考答案详解一套
- 2025年个人土地转让协议
- 福建龙岩安全员培训课件
- 爆破工程技术人员初级练习题库及答案
- 风电叶片修复技术方案和措施
- 药店库房储存管理制度
- 2025至2030中国无线通讯检测行业发展分析及投资风险预警与发展策略报告
- 2025年云南文山州富宁县建设投资集团有限公司招聘笔试参考题库含答案解析
- 2025年广东惠州市交通投资集团有限公司招聘笔试参考题库附带答案详解
- 工人工资专户开户及监管协议模板
- T-CSCS 056-2024 民用建筑钢结构防腐蚀技术标准
- 高速公路隧道施工方案及步骤
- 2025年职业技能大赛(电工赛项)理论考试指导题库500题(含答案)
- 协议离婚三大忌净身出户
评论
0/150
提交评论