购买

¥ 30.0

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第7章 硬件描述语言VHDL

第7章 硬件描述语言VHDL.ppt

第7章 硬件描述语言VHDL

精品课件库
2019-06-22 0人阅读 举报 0 0 暂无简介

简介:本文档为《第7章 硬件描述语言VHDLppt》,可适用于综合领域

第章硬件描述语言VHDL第章硬件描述语言VHDLVHDL模型的基本结构VHDL的基本元素VHDL的语句VHDL设计实例第章硬件描述语言VHDLVHDL模型的基本结构半加器是我们熟悉的器件,输入变量a和b表示两个加数,输出S和CO表示和及进位位。于是我们可以用如下逻辑函数式表示半加器:第章硬件描述语言VHDL也可以用如表―所示的真值表来表示,还可以用如图―(a)所示的逻辑图或用如图―(b)所示的逻辑符号表示之。图―半加器电路符号(a)逻辑图(b)逻辑符号第章硬件描述语言VHDL表―半加器真值表第章硬件描述语言VHDL除上述三种表达方式外,现在我们还可以用VHDL来表达。即:halfadderisahalfadderLIBRARYIEEEUSEIEEESTDLOGICALLENTITYhalfadderISPORT(a,b:INSTDLOGICs,co:OUTSTDLOGIC)ENDhalfadderARCHITECTUREhalfOFhalfadderISSIGNALc,d:STDLOGICBEGIN第章硬件描述语言VHDLc<=aORbd<=aNANDbco<=NOTds<=cANDdS=(ab)·abENDhalf第章硬件描述语言VHDL我们以VHDL术语作为学习VHDL的开始。在VHDL中,一个设计单元被称为一个设计实体。它可以是一个简单的电路(如:一个与门、一个译码器或加法器等),也可以是一个复杂的电路(如:一个微处理器或一个系统)。如本例中的半加器就是一个设计实体。在VHDL中,由关键字、标识符、对象、符号和表达式按VHDL的语法规则构成的句子称为VHDL语句。而能完成一定功能的若干条VHDL语句就组成VHDL程序。第章硬件描述语言VHDL关键字(又称保留字)是具有特殊含义的标识符。它是组成VHDL语句最基本的元素之一。用户不能把它作为自己创建的标识符。为了醒目和易于发现错误,在书写VHDL程序时,建议关键字用大写字母或黑体字母,而用户自己创建的标识符用小写字母或非黑体字母。本书用大写字母表示关键字,用小写字母表示用户自己创建的标识符。在VHDL中,任何一个设计实体都至少由实体说明和结构体说明两部分构成。第章硬件描述语言VHDL实体说明是一个设计实体的外部视图。它对应传统的逻辑图表示法中的逻辑符号,它定义实体名称、类属、实体输入输出端口和一些参数。实体说明以关键字ENTITY开始,以关键字END结束,它的一般格式是:ENTITY实体名IS[GENERIC(类属参数说明)][PORT(端口说明)]实体说明部分[BEGIN实体语句部分]END实体名第章硬件描述语言VHDL对于一个VHDL的初学者来说,在学习一般格式时,除要记住语句外,还要记住每行有没有标点符号和有没有用括号用的是逗号(,)还是分号()用的是圆括号()还是方括号[]。如ENTITY实体名IS及BEGIN这两行并没有使用任何标点符号。我们约定:方括号里的内容为选择项,设计者根据设计要求进行选择。在写程序时方括号要省略。而圆括号及圆括号里的内容为必选项,在写程序时,圆括号要照写。第章硬件描述语言VHDL结构体主要用来描述实体的功能或内部操作特性。如果把设计实体比喻为“黑盒子”的话,那么,实体说明只定义了“黑盒子”的输入输出,而结构体则描述了“黑盒子”内部的详细内容。下面是结构体的一般格式。第章硬件描述语言VHDLARCHITECTURE结构体名OF实体名IS[说明区]包括:内部信号、常数、数据类型和函数等的定义BEGIN结构体语句部分END[结构体名] 有了上述的VHDL知识后,让我们一起来阅读上述半加器的程序,以求对VHDL程序有更进一步的认识。第行以表示注释的双连线()开始,故该行为注释行,告诉使用者以下是一个半加器程序。第章硬件描述语言VHDL第行以关键字LIBRARY开始,表示程序所用的库为IEEE。一般地,程序行以分号()结束。第行以关键字USE开始,以关键字ALL结束,表示程序中使用的数据类型是调用由库IEEESTDLOGIC提供的数据类型。第~行是实体说明。第行中用语句ENTITY…IS定义本实体的名称为halfadder。第行用关键字PORT(…)定义输入输出端口,即:把a和b定义为输入端,把s和co定义为输出端。并且把输入输出端的数据类型都定义为STDLOGIC。第章硬件描述语言VHDL第行用关键字END结束名为halfadder的实体说明。第~行是结构体。第行给出了结构体的名称为half,并说明了与实体名halfadder的所属关系。第行是说明区,结构体的说明部分、信号、类型、元器件及其他说明可在该区中描述。本例说明了信号c和d的数据类型为STDLOGIC。第行关键字BEGIN之后直至第行为止是结构体语句部分,用来叙述设计的函数功能。本实例是一个半加器的VHDL程序,第行的语义是信号c等于a或b的结果第章硬件描述语言VHDL第行的语义是d等于a和b的与非第行的语义是co等于,即co等于a和b的与第行的语义是s等于c和d的与,即。综上所述,表达一个设计实体的完整VHDL程序通常含有五个部分,如图―所示。第章硬件描述语言VHDL图―VHDL程序基本结构第章硬件描述语言VHDL()实体(Entity)说明:描述设计实体的外部接口信号。()结构体(Architecture):描述设计实体的内部结构和功能。()配置(Configuration)说明:它是属性选项,描述层与层之间、实体说明与结构体之间的连接关系。比如高层设计需要将底层实体作为文件调用,这就要用到配置说明。第章硬件描述语言VHDL()库(Library)和程序包(Package):库是一种VHDL设计单元的特定集合,用于存放可重复使用的元件和数据类型说明。它可由用户生成,也可由ASIC芯片制造商提供。程序包是属性选项,用于存放各模块都能共享的数据类型、常数、元件和子程序等,它通过编译后成为库。其中,实体说明、结构体和库是每一个VHDL程序必不可少的三大部分,而配置说明和程序包则是选项,它们的取舍视具体情况来定。第章硬件描述语言VHDLVHDL的基本元素通过上节对VHDL程序基本结构的介绍,我们对如何用VHDL来描述一个设计实体有了一个框架性的认识。本节将对VHDL的基本元素加以简要介绍,以求掌握VHDL中需要的基本知识。第章硬件描述语言VHDLVHDL是一门高级硬件描述语言,故它有一套自身的、严格的语法规则。可编程器件的开发软件只能识别按照这些语法规则编写VHDL程序,因此学习VHDL的基本格式和基本元素就显得十分重要了。VHDL的基本元素包括:关键字、标识符、数据类型、对象、词法单元、表达式和运算符。第章硬件描述语言VHDL关键字 在VHDL语句的开始、结尾或中间过程都要用到关键字,它被赋予编译器能识别的特殊含义。在编写程序时用户不能把关键字用作为自己创建的标识符。为了便于阅读,一般用大写字母来写关键字。下面列出了VHDL所有的关键字。VHDL’中新引入的关键字以黑体形式表示。第章硬件描述语言VHDL标识符的命名在VHDL中,用户必须遵循VHDL标识符的命名规则来创建标识符,否则就会出现因可编程开发软件不能识别创建的标识符而导致VHDL程序无法运行的后果。在此,我们只介绍VHDL’标识符的命名规则。有关VHDL’标识符的命名规则请参考有关资料。标识符中可使用的有效字符:个大小写英文字母(a~z和A~Z)个数字(~)和下划线()。例如,illegalname被视为不合法的标识符,因为不是有效字符。标识符必须以英文字母开头。例如,illegalname被视为不合法的标识符,因为它以数字开头,而不是以英文字母开头。第章硬件描述语言VHDL标识符中下划线()的前后都必须有英文字母或数字,在一个标识符中只能有一个下划线()。例如,illegal和illegalname被视为不合法的标识符,因为前者下划线()的后面没有英文字母或数字,后者有两个下划线()。标识符不区分大小写英文字母。例如,HALFAdder和halfadder被视为同一标识符。第章硬件描述语言VHDL数据类型 VHDL是一种强类型语言,即每一个对象具有一种类型且只能具有该类型的值。换句话说,施加于某对象上的操作必须与该对象的类型匹配。在VHDL中,信号、变量和常数都要指定数据类型,而且VHDL的数据类型定义相当严格,不同类型之间的数据不能直接代入。即使数据类型相同,位长不同时也不能直接代入。因此要正确使用VHDL,就必须理解各种数据类型的定义。第章硬件描述语言VHDL标准的数据类型由开发软件提供,共有种,如表―所示。如果用户需要这种以外的数据类型,则必须自行定义。用户可定义的数据类型共有五种,如表―所示。第章硬件描述语言VHDL表―标准的数据类型第章硬件描述语言VHDL表―用户定义的数据类型第章硬件描述语言VHDL对象 VHDL把信号、变量、常量和文件统称为对象。信号和常量都可以连续赋值,而常量只能在它被说明的时候赋值(仅此一次)。VHDL’把文件也当作对象。文件可以以子程序进行读写操作,但不可以通过赋值来更新文件的内容。第章硬件描述语言VHDL对象说明的格式为CONSTANT标识符表:子类型[∶=初值]常数的说明格式VARIABLE标识符表:子类型[∶=初值]变量的说明格式SIGNAL标识符表:子类型[∶=初值]信号的说明格式FILE标识符表:子类型[∶=初值]文件的说明格式第章硬件描述语言VHDL例如:CONSTANTrest,rest:TIME∶=ns把标识符rest和rest定义为常数,数据类型为物理型,其初值为nsSIGNALclk:BIT把标识符clk定义为信号,数据类型为位第章硬件描述语言VHDL词法单元 注释 VHDL中的注释是以双连符()开始直到本行末尾的一段文字。它是以文本形式对程序的说明,其目的是便于设计者和使用者阅读程序,但它不能被编码器识别。注释可以在程序中的任意位置标注,但总是以双连符()表征,如前面学过的半加器VHDL程序的第一行和第行中均有注释。双连符的右边文字均属于注释部分。如果注释文本很长需要延续到第二行,那么在第二行的行首也要用双连符()表征。第章硬件描述语言VHDLVHDL中的数字 在VHDL中使用的数字可以用十进制、二进制、八进制或十六进制表示。用八进制表示时数字前冠以基数说明符O,用二进制表示时数字前冠以基数说明符B,用十六进制表示时数字前冠以基数说明符X。例如数字用八进制表示为O用二进制表示为B用十六进制表示为XE。第章硬件描述语言VHDL字符 VHDL中的文字字符表示形式为:被单引号括起来的ASCII字符。如‘A’、‘*’、‘“’。符串 VHDL中的文字字符串表示形式为:被双引号括起来的图形字符序列(可以为空)。如“howareyou?”、“”等。位串 VHDL中的位串表示形式为:被双引号括起来的扩展的数字序列,数字序列前冠以基数说明符。如:B“”长度为八的二进制数,等效第章硬件描述语言VHDLVHDL语句中使用的标点符号 分号()是一条语句结束的标志,逗号(,)是对象的分隔符。冒号(:)和原点()也是VHDL语句中常用的标点符号,它们的用法在每条语句的一般格式里给出。在书写VHDL程序时,用错标点符号的情况时常会发生,所以大家在学习VHDL时,一定要注意语句中使用的标点符号。第章硬件描述语言VHDL表达式与运算符 VHDL中的表达式和其他程序设计语言中的表达式非常相似。一个表达式是由运算符把对象名、文字、函数调用及括起来的表达式连接起来的式子。VHDL的运算符可分为四组: 算术运算符、关系运算符、逻辑运算符和其他运算符,如表―所示。其中VHDL’引用的新运算符用黑体表示。第章硬件描述语言VHDL表―VHDL运算符第章硬件描述语言VHDL各运算符优先级排列顺序如下(同一行各运算符优先级相同):**ABSNOT最高优先级*MODREM(正号)(负号)SLLSLASRLSRAROLROR ==<><=>=ANDORNANDNORXORXNOR最低优先级第章硬件描述语言VHDL几点说明:()关系运算符<、>、<=和>=的两边数据类型必须相同,其结果为Boolean类型=和=的两边数据类型不必相同。()连接运算符()用于位的连接,即把右边的内容接在左边内容之后形成一个新的数组。例如,四个位用连接运算符()连接起来就可以构成一个四位长度的位矢量两个四位的位矢量用连接运算符()连接起来就可以构成一个八位长度的位矢量。连接操作也常用于字符串,如“VH”“DL”的结果为“VHDL”‘’‘’的结果为‘’。第章硬件描述语言VHDL()移位关键字有四个,循环移位关键字有两个,我们应该留意它们之间的差别。图―是移位和循环移位运算符的语义示意图。()VHDL表达式语法规定,一个表达中可含有两个或两个以上的AND运算符而不加括号。这一规定同样适用OR、XOR和XNOR运算符。但一个表达中含有两个或两个以上的NAND运算符一定要加括号。NOR和**运算符的规定同NAND运算符。另外,当一个表达式含有不同的运算符时,一定要用括号。第章硬件描述语言VHDL图―移位和循环移位运算符的语义示意图第章硬件描述语言VHDL例如:e∶=aANDbANDc正确e∶=aXNORbXNORc正确e∶=aNORbNORc错误e∶=aNOR(bNORc)正确e∶=aANDbORc错误e∶=(aANDb)ORc正确因此,如果一个表达式中含有多个运算符在没有把握的时候,最明智的做法就是用括号。第章硬件描述语言VHDLVHDL的语句我们知道VHDL语句是由关键字、标识符、对象、符号和表达式按VHDL的语法规则构成的句子而VHDL程序则由完成一定功能的若干条VHDL语句构成。在VHDL中,若按语句执行的顺序对VHDL语句分类,可分为顺序语句和并行语句两类。顺序语句主要用来实现模型的算法,而并行语句则基本上用来表示连接关系。下面对这两类语句分别加以介绍。第章硬件描述语言VHDL顺序语句 顺序语句是包含在进程、函数或子程序中的语句,按书写顺序执行。它定义进程、函数或子程序所执行的算法。语句中所涉及到的系统行为有:时序流、控制、条件和迭代等。语句的功能有:算术运算、逻辑运算、信号和变量的赋值以及子程序的调用等。VHDL中所包含的常用顺序语句有以下几种:第章硬件描述语言VHDL①等待(WAIT)语句②断言语句③信号代入语句④变量赋值语句⑤IF语句⑥CASE语句⑦LOOP(循环)语句⑧NEXT语句⑨EXIT语句第章硬件描述语言VHDL过程调用语句返回(RETURE)语句空操作()语句下面对以上种顺序语句的书写格式、功能及使用时的注意事项逐一加以介绍。第章硬件描述语言VHDL等待(WAIT)语句 在仿真过程中,进程不是处于执行状态就是处于挂起状态。设计者可以利用WAIT语句把一个进程或子程序挂起。挂起的进程或子程序恢复或再次执行的条件可以由WAIT语句设置。表―给出了五种不同格式的WAIT语句。在VHDL中,WAIT语句有多种用途,如为综合指定各种输入、延迟进程的执行时间或动态修改进程的敏感量。第章硬件描述语言VHDL表―WAIT语句的五种格式第章硬件描述语言VHDL断言语句 书写格式:ASSERT条件[REPORT输出信息][SEVERITY级别]其功能是检查条件为真或假。如果条件为真,该语句不起作用如果条件为假,该语句把输出信息送到输出终端。关键字REPORT后跟的输出信息说明错误的原因关键字SEVERITY后跟的级别说明错误的严重程度。在VHDL中,错误严重程度分为四个级别:FAILURE、ERROR、WARING和NOTE。该语句为程序仿真和调试带来了极大的方便。第章硬件描述语言VHDLASSERTreset=‘’REPORT“Resettimedoutat‘’”SEVERITYERROR若信号reset不为‘’,就输出字符串“Resettimedoutat‘’”,其错误严重程度是ERROR第章硬件描述语言VHDL信号代入语句 书写格式:信号量<=信号量表达式其功能是把右边信号量表达式的值赋予给左边的信号量。例如:X<=a信号X的值此时为a值得注意的是,代入符号(<=)两边信号量的类型和位长度应该是一致的。另外,代入符号和关系操作符号中的小于等于都是用符号<=,在应用时须根据上下文的含义和说明来确定其含义。第章硬件描述语言VHDL变量赋值语句 书写格式:变量∶=表达式其功能是把右边表达式的值赋予给左边的变量。符号∶=可以给任何对象赋初值,包括变量、信号、常量和文件。例如:reset∶=把赋予给变量reset值得注意的是,变量值只能在本进程或子程序中使用,不能传递到本进程或子程序之外,也就是说,它是局部变量。第章硬件描述语言VHDLIF语句书写格式:IF条件THEN顺序语句[ELSIF条件THEN此处的关键字为ELSIF,而不是ELSEIF顺序语句]…第章硬件描述语言VHDL其功能是根据所指定的条件来确定执行的语句。从条件到条件n逐个进行判断,如果某个条件成立,就执行该条件后跟的顺序语句。如果所有设置的条件都不满足,则执行最后一个ELSE和ENDIF之间的顺序语句。例如:第章硬件描述语言VHDLIF(sel=“”)THEN如果sel=“”满足,Y<=input()将input()的值赋给YELSIF(sel=“”)THEN如果sel=“”满足,Y<=input()将input()的值赋给YELSIF(sel=“”)THEN如果sel=“”满足,Y<=input()将input()的值赋给YELSE如果sel=“”,sel=“”sel=“”Y<=input()都不满足,将input()的值赋给YENDIF第章硬件描述语言VHDLCASE语句 书写格式:CASE表达式ISWHEN条件表达式=>顺序语句[WHENOTHERS=>顺序语句]ENDCASE其中,关键字WHEN后跟的条件表达式有三种不同的形式,即:第章硬件描述语言VHDLWHEN值=>顺序语句WHEN值[值][值]…[值]=>顺序语句WHEN[值]TO[值]=>顺序语句其功能是当CASE和IS之间的表达式的取值满足制定的条件表达式的值时,程序将执行该条件表达式后跟的由符号=>所指定的顺序语句。条件表达式的值可以是一个值,或是多个值的“或”关系,或是一个值的取值范围,或表示其他所有的默认值。第章硬件描述语言VHDLCASE语句是选择执行多个序列中的其中之一,故通常用来描述总线、编码或译码功能。虽然IF语句也有类似的功能,但CASE语句的可读性好,阅读者很容易找出条件与动作的对应关系。例如:第章硬件描述语言VHDLCASEindataISWHEN“”=>y<=“”当信号indata为时,y=“”WHEN“”=>y<=“”当信号indata为时,y=“”WHENOTHERS=>y<=“XXXXXXX”当信号indata不为或时y<=“XXXXXXX”ENDCASE第章硬件描述语言VHDL循环(LOOP)语句 LOOP语句与其他高级语言中的循环语句一样,使程序能进行有规则的循环,循环的次数受迭代算法控制。其语句书写格式有两种,如表―所示。第章硬件描述语言VHDL表―LOOP语句的两种格式第章硬件描述语言VHDL格式举例:FORIINTOLOOP循环变量I的变化范围是~Trile∶=I*Trile循环体是求~的连乘积I=I每求一次连乘积,循环变量I加。若I不超过,ENDLOOP继续执行求连乘积循环,否则结束求连乘循环第章硬件描述语言VHDL格式举例:WHILE(I<)LOOPI是循环变量,变化范围是~sum∶=Isum求~的和I=I每求一次和,循环变量I加,若I<条件满足,ENDLOOP继续执行求和循环,否则结束求和循环第章硬件描述语言VHDLNEXT语句 NEXT语句是用在LOOP语句内部的语句,用来有条件地或无条件地终止当前循环迭代并开始下一次循环。其书写格式有四种,如表―所示。EXIT语句 EXIT语句也是用在LOOP语句内部的语句,它是有条件地或无条件地跳出循环迭代。其书写格式有四种,如表―所示。第章硬件描述语言VHDL表―NEXT语句的四种格式第章硬件描述语言VHDL表―EXIT语句的四种格式第章硬件描述语言VHDL过程调用语句在VHDL中也有子程序,其含义与其他高级语言中的子程序概念相当。它可以反复调用,使用非常方便。VHDL中的子程序有两种类型,即过程和函数。函数可以在结构体语句中直接调用,过程调用则要用过程调用语句调用。书写格式:过程名[参数表]其功能是调用过程名指定的过程。例如:mytest(sig,var,sig)调用过程mytest第章硬件描述语言VHDL返回(RETURN)语句 RETURN语句只能用在函数或过程体内,用于函数的格式和用于过程的格式不同,所以在使用时应多加小心。格式:RETURN用于过程其功能是结束当前最内层过程体,返回到上一级程序。格式:RETURN表达式用于函数,表达式是结束执行函数体的惟一条件其功能是结束当前最内层函数,返回到上一级程序。函数只能用该语句返回到上一级程序。第章硬件描述语言VHDL空操作()语句 书写格式:其功能是不产生任何动作。其目的是使运行流程走到下一个语句,是等待的另一种形式,不过等待的时间是固定的。第章硬件描述语言VHDL并行语句 VHDL中的结构体语句部分(参见结构体一般格式)既可以由一些顺序语句组成,也可由一个或多个并行语句组成。如果我们说结构体描述一个设计实体内部的详细内容的话,那么,顺序语句的主要目的是用来实现这个详细内容的算法,而并行语句则基本上用来表示这个详细内容的内部连接关系。并行语句区别于顺序语句的最大特点之一是:并行语句的书写顺序并不代表其执行的顺序,它们是并行执行的。第章硬件描述语言VHDLVHDL中所包含的常用并行语句有以下几种:①进程(PROCESS)语句②信号赋值语句③断言(ASSERT)语句④过程调用语句⑤块(BLOCK)语句⑥生成(GENERATE)语句⑦元件例化语句第章硬件描述语言VHDL进程(PROCESS)语句 在用原理图描述一个较复杂电路时,为了便于设计和调试,设计者往往会把整个电路分成若干个相对独立的模块进行描述。在用VHDL设计时,设计者同样也是采用这种描述思想,也就是将一个结构体分成若干个相对独立的模块来描述。每一个相对独立的模块可以用四种不同的形式来描述,即一系列的顺序语句、块(BLOCK)语句、进程(PROCESS)语句和子程序(SUBPROGRAM)语句。第章硬件描述语言VHDL子程序(SUBPROGRAM)语句又包含过程(PROCEDURE)语句和函数(FUNCTION)语句。换句话说,每一个相对独立的模块既可以用顺序语句来描述,也可以用并发语句来描述。然而,用多个进程(PROCESS)语句是结构体最基本的表示方法。其中包含的所有进程之间的关系是并行的关系。第章硬件描述语言VHDL进程语句书写格式:[进程名]:PROCESS[(敏感信号表)]说明区BEGIN进程的主体程序是一段用顺序语句表达的程序ENDPROCESS其功能是完成进程的主体程序表达的功能。第章硬件描述语言VHDL一个进程可以看作是一个无限循环,即在模拟期间,当进程的最后一条语句执行完毕之后,敏感信号表里的敏感信号之一发生变化,便又开始从该进程的第一条语句开始执行。如此反复循环。另外,在说明区里可以说明数据类型、子程序和变量。关于进程有两点需要说明。其一,如果关键字PROCESS之后跟有敏感信号表,那么在进程的主体程序中决不允许再出现WAIT语句。因为敏感信号表等效于该进程语句内的最后一个语句是一个隐含的“WAITON敏感信号表”的WAIT语句。其二,一个进程可以被看作是一个程序,在一个进程中可以有过程语句,并且还可以调用子程序。第章硬件描述语言VHDL信号赋值语句在上一节中已经介绍了顺序语句的信号赋值语句,在此介绍并发语句的信号赋值语句。一个并行信号赋值语句等效一个对该信号赋值的进程语句。并行信号赋值语句有三种不同格式,如表―所示。第章硬件描述语言VHDL表―并行信号赋值语句的三种格式第章硬件描述语言VHDL格式:条件信号代入语句信号量<=表达式WHEN条件ELSE…表达式nWHEN条件nELSE表达式n把满足条件对应的表达式的值赋给左边的信号量。若n个条件都不满足,就把表达式n的值赋给左边的信号量第章硬件描述语言VHDL格式:选择信号代入语句信号量<=表达式WHEN条件表达式WHEN条件…表达式nWHEN条件n把满足条件对应的表达式的值赋给左边的信号量第章硬件描述语言VHDL格式的并行信号赋值语句与顺序信号赋值语句格式相同,功能相当。格式的条件信号代入语句与顺序语句中的IF语句对应,其区别是:条件信号代入语句不能嵌套,且每一个条件后一定要有关键字ELSE。一般说来,在用IF语句表达有困难时,才用它。格式的选择信号代入语句类似于顺序语句中的CASE语句。第章硬件描述语言VHDL断言语句(ASSERT)和过程调用语句 断言语句(ASSERT)和过程调用语句与顺序语句中的断言语句(ASSERT)和过程调用语句格式相同,功能相当。在此不再赘述。第章硬件描述语言VHDLVHDL设计实例本节将通过一些简单的例子,向读者介绍用VHDL程序描述一个设计实体的要求和格式,以及用并发语句和顺序语句来描述组合电路和时序电路的设计思想,从而使读者对用VHDL进行电路设计有一个整体的认识。不过在此再次声明:本节仅仅只是VHDL的一个入门,若在应用可编程器件FPGA或CPLD设计电子系统时,要用VHDL编程的话,还有很多技巧和实际应用知识,届时请读者参考其他有关书籍。第章硬件描述语言VHDL【例】利用一个布尔算符设计二选一多路转换器。LIBRARYIEEEline,库说明USEIEEEstdlogicallline,调用库IEEE实体说明line,注释行ENTITYmuxtoISline,实体名为muxtoPORT(S:INStdlogicline,端口说明语句。端口S的模式为IN,第章硬件描述语言VHDL其数据类型为StdlogicZero,One:INStdlogicVector(DOWNTO)line,端口Zero和One的模式为IN,其数据类型为StdlogicVector,位长是八Y:OUTStdlogicVector(DOWNTO))line,端口Y的模式为OUT,其数据类型为StdlogicVector,位长是八ENDmuxtoline结构体说明line,注释行第章硬件描述语言VHDLARCHITECTUREbehaviorOFmuxtoISline,结构体名为behavior temp:StdlogicVector(DOWNTO)line,信号说明语句。定义信号temp的数据类型为StdlogicVector,位长为八BEGINlineTemp<=(s,s,s,s,s,s,s,s)lineY<=(tempANDOne)OR(NOTtempANDZero)lineENDbehaviorline第章硬件描述语言VHDL本例完成的功能是当S=时,Y=Zero当S=时,Y=One。即用S来控制Y在端口One和端口Zero中二选一。本例中的第行程序是对端口的说明。它定义设计实体的外部接口,即定义外部引脚信号名称、信号流动模式和数据类型。其一般格式是:PORT(端口名[,端口名]:模式数据类型…端口名[,端口名]:模式数据类型)第章硬件描述语言VHDL其中,端口名就是赋予每个外部引脚的名称,其命名规则同标识符命名规则模式是外部引脚的信号流动方向。VHDL提供了如下五种模式:()IN模式,称为输入,即信号从端口进入结构体内。()OUT模式,称为输出,即信号从结构体内流经端口输出。()INOUT模式,称为双向模式。()BUFFER模式,称为缓冲输出模式,即信号从结构体内流经端口输出,同时可反馈到结构体再被使用。第章硬件描述语言VHDL()LINKAGE模式,即不指定方向,无论哪一个方向都可连接。OUT、INOUT和BUFFER模式的区别:OUT模式仅允许信号从结构体内向外流动INOUT模式既允许信号从结构体内向外流动,又允许信号从外向结构体内流动,还允许信号反馈到结构体内再使用BUFFER模式只允许信号从结构体内向外流动,但允许信号反馈到结构体内再使用。本例中的第~行分别定义外引脚S、One、Zero和Y。第章硬件描述语言VHDL信号S的数据类型是Stdlogic,信号One或信号Zero的数据类型是八位的StdlogicVector,它们的数据类型不同。在介绍数据类型的时候,曾经提到过VHDL是一种强类型语言,故三者不能直接运算。为了能使三者进行运算,采用一个与信号One和信号Zero的数据类型相同的内部信号Temp,把Temp的每个位设置成等于信号S的值,见程序第行。这样三者就变换成为同类型的数据,它们就可以进行运算了,见程序第行。第章硬件描述语言VHDL【例】利用并发语句设计二选一多路转换器。LIBRARYIEEE库说明USEIEEEstdlogicall调用库IEEE实体说明ENTITYmuxtoIS实体名为muxtoPORT(S:INStdlogicZero,One:INStdlogicVector(DOWNTO)Y:OUTStdlogicVector(DOWNTO))ENDmuxto第章硬件描述语言VHDL结构体说明ARCHITECTUREbehaviorOFmuxtoIS结构体名为behaviorBEGINY<=OneWHEN(S=‘’)ELSE条件信号代入语句,它是一条Y<=Zero并发语句条件S=为真ENDbehaviorY=One,否则Y=Zero 本例的结构体是利用一条并发语句来描述二选一多路转换器的运算。第章硬件描述语言VHDL【例】利用进程语句设计二选一多路转换器。 LIBRARYIEEE库说明USEIEEEstdlogicall调用库IEEE 实体说明ENTITYmuxtoIS实体名为muxtoPORT(S:INStdlogicZero,One:INStdlogicVector(DOWNTO)第章硬件描述语言VHDLY:OUTStdlogicVector(DOWNTO))ENDmuxto结构体说明ARCHITECTUREbehaviorOFmuxtoIS结构体名为behaviorBEGINComb:PROCESS(S,Zero,One)一个带敏感表的进程语句BEGINIF(S=‘’)THENIF语句第章硬件描述语言VHDLY<=OneELSEY<=ZeroENDIFENDPROCESSCombENDbehavior本例的结构体是利用一个进程来描述二选一多路转换器的运算,该进程中使用了信号赋值和IF语句等顺序语句。第章硬件描述语言VHDL以上是用三种不同的方法来实现一个二选一多路转换器的例子。在这三种不同的方法中,库和实体说明部分是完全相同的,只是结构体部分不同而已。这就让我们清楚地看到:同一实体可用多种方式来描述各种方式之间的差别主要体现在结构体上结构体既可以用顺序语句表达,也可以用并发语句表达。第章硬件描述语言VHDL一般说来,结构体有三种表达方式:()结构描述:从硬件结构的角度来描述设计实体,即描述该设计实体由哪些子元件组成,以及各元件之间的相互关系如何。这与系统的原理图描述方法很类似。它主要使用配置指定语句和元件例化语句来描述元件的类型及互连关系如例。()行为描述:从功能的角度来描述设计实体,即描述设计实体能完成什么功能。它主要通过一系列的顺序语句和并行语句描述。其中用并行语句来描述各模型算法之间的连接关系如例。第章硬件描述语言VHDL()数据流描述:又称RTL级方式,从数据的变换和传送的角度来描述设计实体。它主要使用并行的信号赋值语句,既显式地表示了该设计实体的行为,也隐式地表示了该设计实体的结构,如例。以上是用VHDL描述组合电路的例子,下面再让我们看看几个用VHDL描述时序电路的例子。 第章硬件描述语言VHDL【例】用VHDL描述上升沿D触发器。LIBRARYIEEEline,库说明USEIEEEstdlogicallline,调用库IEEEENTITYdfflogicISline,实体名为dfflogic PORT(d,clk:INStdlogicq:OUTStdlogic)lineENDdfflogiclineARCHITECTUREmypromOFdfflogicISline,结构体名为mypromBEGINline第章硬件描述语言VHDLd:PROCESS(d,clk)line,一个带敏感表的进程语句 BEGINlineIF(clk=‘’)THENline,IF语句q<=dlineENDIFlineENDPROCESSdlineENDmypromline时序电路的结构体总是用进程方式来描述的,时钟信号应作为敏感信号,如上例第行程序。另外,还要对时钟信号触发边沿进行说明,如上例第行程序说明上升沿触发。第章硬件描述语言VHDL【例】带有异步复位、置位和时钟使能的八位二进制计数器。 LIBRARYIEEE库说明USEIEEEstdlogicall调用库IEEELIBRARYDATAIOUSEDATAIOstdlogicOPSall调用库DATAIOENTITYasynloadcndIS实体名为asynloadcndPORT(clk,ce,reset,preset,load:INStdlogic第章硬件描述语言VHDLd:INStdlogicVector(DOWNTO)q:OUTStdlogicVector(DOWNTO))ENDasynloadcnd结构体说明ARCHITECTUREtestpromOFasynloadcndIS结构体名为testpromSIGNALnextq:StdlogicVector(DOWNTO)定义内部信号nextqBEGIN第章硬件描述语言VHDLnextq<=q‘’PROCESS(clk,reset,preset,load,d)BEGINFORiINTOFFLOOPIF(reset=‘’)OR(load=‘’ANDd(i)=‘’)THEN复位条件q(i)<=‘’复位ELSIF(preset=‘’)OR(load=‘’ANDd(i)=‘’)THEN置位条件q(i)<=‘’ 第章硬件描述语言VHDL置位ELSE(risingedge(clk))THEN计数条件:时钟上升沿到IF(ce=‘’)THEN计数条件:计数使能信号为q(i)<=nextq(i)计数第章硬件描述语言VHDLENDIFENDIFENDLOOPENDPROCESSENDtestprom在此例中,PORT语句定义clk时钟信号、ce计数使能信号、reset复位信号、preset置位信号、load置数控制信号、d(i)八位字长的置数输入端,q(i)八位字长的输出端的模式和数据类型。结构体采用进程PROCESS语句方式描述。该进程由一个LOOP内套一个内含IF语句的多重选择IF语句构成,形成三重嵌套。

VIP尊享8折文档

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/103

第7章 硬件描述语言VHDL

¥30.0

会员价¥24.0

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利