




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第二章VHDL基本数据类型与命令语句,2.2VHDL数据对象定义,2.1VHDL基本数据类型,2.3并行同时语句(When-Else,With-Select),2.4顺序语句一(Process,If-Else,Wait),2.5顺序语句二(Case-When,Null),2,2.1基本数据类型(逻辑信号、数值信号),在VHDL中每一个数据对象都必须具有确定的数据类型。只有在相同数据类型的数据对象之间,才能进行数据交换。,布尔代数数据类型(BOOLEAN);位逻辑数据类型(BIT);位逻辑序列数据类型(BIT_VECTOR);标准逻辑数据类型(STD_LOGIC);标准逻辑序列数据类型(STD_LOGIC_VECTOR);,3,整数数据类型(INTEGER);实数数据类型(REAL);字符串数据类型(STRING);字符数据类型(CHARACTER);无符号整数数据类型(UNSIGNED);,今后在逻辑设计中最常用到两种:标准逻辑数据类型STD_LOGIC和标准逻辑序列数据类型STD_LOGIC_VECTOR。其语法格式:在实体中是跟在端口模式(方向)后面,在结构体中是跟在数据对象后面。,4,2.1.1逻辑信号的数据类型,布尔代数数据类型(BOOLEAN),布尔代数数据类型(BOOLEAN)属于双值数据类型,其值只有“TRUE”(真)、“FALSE”(假)两种状态,常用来表示关系运算和关系运算的结果。,位逻辑数据类型(BIT),位逻辑数据类型(BIT)也属于双值数据类型,其值只有1、0(用单引号表示)两种状态,常用来表示某一管脚的逻辑值。,5,标准逻辑数据类型(STD_LOGIC),标准逻辑数据类型(STD_LOGIC)也属于双值数据类型,但它比“BIT”对于数字逻辑电路的逻辑特性的描述更完整、更真实。因此在VHDL中通常都是采用这种数据类型。它的取值共有九种形式:,U初始值;,X不定值;,0低电位0;,1高电位1;,Z高阻抗;,W弱信号不定值;,L弱信号0;,H弱信号1;,不可能情况,不必理会。,6,标准逻辑序列数据类型(STD_LOGIC_VECTOR),标准逻辑序列数据类型(STD_LOGIC_VECTOR)也属于双值数据类型,但它描述的是一组序列信号的数据类型。如:数据总线、地址总线等(排线)上面的数值。,位逻辑序列数据类型(BIT_VECTOR),位逻辑序列数据类型(BIT_VECTOR)也属于双值数据类型,其值只有1、0(用双引号表示)两种状态,常用来表示某一组管脚的位逻辑值。,7,逻辑信号的运算,配合逻辑信号的基本运算符,通常包含有两种:,逻辑运算符,关系运算符,注意:“=”符号与赋值符号相同,由上下文来区别。,8,2.1.2数值信号的数据类型,整数数据类型(Integer),整数数据类型的数有正整数、负整数和0,在VHDL中其取值范围是-21474836472147483646。即:。,无符号整数数据类型(UNSIGNED);,无符号整数数据类型的数与标准逻辑序列相似,定义时也必须指明这个无符号整数的位数。,例1假若A中的内容是3(11)2,B中的内容是2(10)2,试分析下程序运行后,C和D中的内容是多少?,9,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCH2_1_3isPORT(A:INStd_Logic_Vector(1DOWNTO0);B:INUnsigned(1DOWNTO0);C:OUTUnsigned(7DOWNTO0);D:OUTStd_Logic_Vector(1DOWNTO0);ENDCH2_1_3;ARCHITECTUREaOFCH2_1_3ISSIGNALE,F,G:Unsigned(1DOWNTO0);SIGNALH:Unsigned(7DOWNTO0);,10,因为A中的内容是3(11)2,B中的内容是2(10)2,故:E=Unsigned(A)后,E=3(11)2;F=B后,F=2(10)2;,11,因为E=3(11)2,F=2(10)2,故:H(1Downto0)=E+F后,H=5(101)2=1(01)2;H(3Downto2)=EF后,H=1(01)2;,12,因为E=3(11)2,F=2(10)2,故:H(7Downto4)=E*F后,H(7Downto4)=6(0110)2;所以:H(7Downto0)为(01100101)2=(65)16;,13,因为E=3(11)2,F=2(10)2,故:G(0)=E(0)ANDF(0)后,G(0)=0;G(1)=E(1)ORF(1)后,G(1)=1;,14,因为H(7Downto0)为(65)16,G(1Downto0)为2(10)2,故:C=H后,C(7Downto0)为(65)16=(01100101)2;D=Std_Logic_Vector(G)后,D(1Downto0)为2(10)2,15,程序运行后:C(7Downto0)为(65)16=(01100101)2;D(1Downto0)为2(10)2。仿真结果如下图所示:,A中的内容是3(11)2,B中的内容是2(10)2,仿真的结果是:C中的内容为65,D中的内容为2。,16,注意1、无符号整数(Unsigned)与标准逻辑序列(Std_Logic_Vector)信号之间是可以作转换的;2、无符号整数(Unsigned)信号的序列编号是由高至低的,所以一定要使用Downto的序列形式来定义。,17,实数数据类型(Real),VHDL的实数数据类型(Real)与数学中的实数浮点数相似,只是范围限定为:-1.0E381.0E38,并且在书写时一定要有小数。如下程序段所示:,ARCHITECTUREaOFTestISSIGNALA,B,C:Real;BEGINA=1.5;-带小数点B=5.0;C=3.0E8;-科学计数ENDa;,18,2.2数据对象定义(常数、信号、变量),2.2.1常数(Constant),将数据对象定义为常数(Constant),是希望该常数所代表的数据部分不会被改变。这样一来,程序的可读性和维护性相对提高。其语法格式为:,常数名称的命名规则:第一个字符必须是英文字母;,19,ConstantZero:Std_Logic_Vector(3Downto0):=0000;,最后一个字符不可以是下划线符号,中间也不能有两个连续下划线相连;常数名称不可以与VHDL的语法字相同。,例2定义Zero为一个四位长的标准逻辑序列数据类型的常数零。,例1定义V为一个正整数(INTEGER)数据类型的8。,ConstantV:INTEGER:=8;,20,2.2.2信号(Signal),信号(Signal)是VHDL中的一种重要的数据对象。主要用于描述硬件电路中的一条硬件连接线或指定电路内部的某一节点(补充的端口)。其语法格式为:,注意:,在VHDL语言程序中,信号赋值的符号与上面不同,不能用“:=”运算符,应为“=”运算符。,21,如果在说明信号的时候没有赋予初始值,那么则认为它取默认值,即指定数据类型的最左值或者是最小值。信号可以在程序包、实体和结构体中说明(定义),但说明(定义)的信号只能在本结构中或向下结构中使用。,例试用VHDL对CPLD或FPGA编程,实现右图电路的逻辑功能。当A=1,B=1,C=0仿真结果F为多少?,22,23,由于A、B、C、F是外部引脚,所以它们要在实体中说明(定义),而不是在结构体中说明。而D、E是电路的内部节点,因此须放在结构体中用信号的方式来说明(定义)。,24,当A=1,B=1,C=0时,F=1。见下面的仿真后的结果。,25,2.2.3变量(Variable),这种数据对象仅限用于进程、过程、函数语句和子程序(后面将要介绍)中,在程序其它部分是无效的,它没有物理意义。因此变量主要功能是做局部数据的暂时存储。其语法格式为:,注意:,在进程中若使用变量数据对象进行设置时,只能用“:=”运算符,而不是“=”。,26,变量的赋值是直接的,一经赋值立即生效,因此在变量赋值语句中,不允许出现附加延时。,若要将变量的值用于它的范围之外,必须先要将变量的值赋给一个相同类型的信号,然后再由该信号带出去才行。,对信号赋值是有一定延迟的,而对变量赋值是没有延迟的。对于进程语句来说,进程只对信号敏感,而不对变量敏感。,27,信号在某一时刻除了具有当前值外,还具有一定的历史信息(保存在预定义属性中);而变量在某一时该仅包含一个值。信号可以是多个进程的全局信号;而变量只在定义它的过程、函数和进程中可见。信号是硬件中连线的抽象描述、其功能是保存变化的数据值和在元件的端口连接元件;而变量在硬件中没有这种类似的关系。在VHDL语言中信号赋值与变量赋值的格式不同:信号=表达式变量:=表达式信号与变量之间允许相互赋值,但要保证两者的数据类型一致。,28,例2使用信号Signal的数据对象的程序范例,29,采用Process语句来感测下面CP和IP的变化;,若CP到来且为上升沿时,这时IP也到来了,程序往下;,30,将IP的变化暂存延迟一个周期左右的时间才传递到了信号D,注意使用“=”符号;,由于D收到信号后,CP已消失故必须等到下一个CP上升沿到来时,才能将信号送入OP中。,31,使用信号Signal的数据对象的程序仿真结果,32,讨论这两个例题中的程序虽然是完成同样的任务,但是由于分别采用了变量和信号这两种不同的数据对象,结果导致输出的波型不同(采用信号数据对象的程序出现了延迟现象)。,33,2.3并行同时语句(When-Else,With-Select),VHDL程序语言最大的优点是可以模仿芯片中信号的并行运行,而其它的程序语言一般都是顺序执行程序。在VHDL中,最基本的并行语句的三种形式:1、直接设置语句(使用=运算符);2、条件式信号设置语句(When-Else);3、选择式信号设置语句(With-Select)。,2.3.1直接设置语句:使用=运算符,34,直接设置语句应用实例:试用VHDL实现下任务,从上任务可以看出:A、B信号和C信号同时送入电路,同时处理,这就是硬件电路的动作规范。其程序如下所示:,芯片功能:A与B后送至D;C取非后送至E。,35,2.3.2条件式信号设置语句:(When-Else),语法格式:,说明:上面的条件式指布尔代数式,且结果只有两种:真(True)或者是假(False)。,36,当条件式1为真(True)时,则将信号B送入信号A,否则往下确定条件2;当条件2为真时,则将信号C送入信号A,否则再往下直到条件n为真时,将信号N送入信号A。,When-Else命令的应用范围非常广泛,常用于组合逻辑电路的设计中。,应用实例试用When-Else命令实现右边真值表中的逻辑功能。(无需化简,VHDL编译器会做最佳化处理),37,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCH2_3_2isPORT(X,Y:INStd_Logic;Z:OUTStd_Logic);ENDCH2_3_2;ARCHITECTUREaOFCH2_3_2ISBEGIN,只需确定真值表中前三行,最后一行自然送入Z中。仿真结果如下所示:,Z=0When(X=0andY=0)Else1When(X=0andY=1)Else1When(X=1andY=0)Else0;ENDa;,38,2.3.3选择式信号设置语句:(With-Select),语法格式:,39,说明:With-Select的命令作用是:判断选择信号X的值,依次是m或n等的相应条件值。若判断成立时,将它对应的信号值A或B等传递给信号Y。在选择过程中,若选择信号X没有一个是上述表示信号的值时,最后会将Others保留字前的信号值Z传递给信号Y。上述With-Select语法命令的m、n等数值,必须相互排斥,不能相同。,应用实例试用With-Select命令实现下面真值表中的逻辑功能。,40,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCH2_3_3isPORT(S:INStd_Logic_Vector(1Downto0);Z:OUTStd_Logic);ENDCH2_3_3;ARCHITECTUREaOFCH2_3_3ISBEGIN,WithSSelectZ=0When00,1When01,1When10,0WhenOthers;ENDa;,41,这也是一个典型的异或逻辑关系,由此可见,在VHDL设计中不需要进行逻辑化简,编译器会自动做最佳化处理。,42,讨论1、使用With-Select命令时,它的功能在于选择信号是针对某一特定的信号的;2、使用When-Else命令时,它可以对多个的信号条件方式进行比较。,43,2.4顺序语句(一):Process,If-Else,Wait,“顺序语句命令”与“并行同时命令”的最大不同是:前者与一般的程序语言相同,由上向下顺序执行,后者则如同电路板的动作方式,所有命令同时运行。在VHDL中,最基本的顺序语句的三种形式:1、进程语句(Process);2、判断比较语句(If-Then、If-Then-Else和If-Then-ElsIf-Else);3、等待语句(Wait)。,2.4.1进程语句:(Process),44,语法格式:,说明:上面中括号内为可省略的部分,即进程名称、感测信号和定义区均为可选项;,45,感测信号表示当该信号有任何变化时,将整个进程(Process)所包含的顺序语句立即执行一次;,我们在前面介绍变量和信号时举的两个例子中,就有进程语句的典型应用。关于进程语句的其它应用将在后面详细讨论。,2.4.2判断比较语句:(If-Then、If-Then-Else和If-Then-ElsIf-Else),语法格式:,在一个结构体(Architecture)中,可以存放多个进程(Process),并允许它们同时工作,交换数据。,46,47,功能说明:先判断条件表达式1结果是否为真。结果若是真:则执行顺序语句命令A方块。执行完后,程序则跳到最后面的EndIf处顺序执行;结果若是假:则再向下判断条件表达式2结果是否还为真,过程及步骤同上;假若没有任何一个条件成立(则表示剩余的最后结果为真),则最后执行顺序语句命令N方块。,判断比较语句的几种变形上述命令在应用中还有几种简化的用法如:If-Then-Else形式,48,If-Then形式,49,判断语句If-Then与进程语句Process的组合使用范例,*当感测CP变为1时向下执行,否则执行EndIf,*当感测CP变为0时向下执行,否则执行EndI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吕梁市人民医院科室规章制度与岗位职责熟知度考核
- 上海市人民医院患者沟通指导考核
- 黑河市人民医院肾功能保护技术考核
- 长治市人民医院财务管理者战略思维与商业洞察力测评
- 包头市人民医院成本核算基本概念与流程试题
- 2025年蓄热式高温预热烧嘴项目建议书
- 2025年车身底盘电控试题及答案
- 绥化市人民医院医学统计学与科研方法学基础试题
- 阳泉市中医院烧伤病房感染控制管理考核
- 白城市人民医院光动力治疗技能考核
- 2023年新高考模拟考试英语试卷(共18份)(含答案)
- 化工工艺流程图课件
- 荧光的原理及应用课件-
- 05 03 第五章第三节 投身崇德向善的道德实践
- 景区服务培训
- 处方点评和合理用药
- 电采暖产品购销合同模板
- 天津市小型建设工程施工合同
- 五年级美术上册课件-8.变脸-苏少版(共20张PPT)
- 六三制新青岛版四年级科学上册第三单元《天气与气候》全部课件(一共4课时)
- 高中数学 直线与圆的位置关系(第1课时) 课件
评论
0/150
提交评论