




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
适合班级:0906024109060242教学东区01107H,第三课VHDL语言数据类型及运算操作符,数据对象/客体,在VHDL中把保存数据的单元称为数据对象。客体(Object):凡是可以赋予一个值的对象成为客体。VHDL中的四种客体:信号(Signal)变量(Variable)常量(Constant)文件(File),四类客体含义及说明场合,常数(constant),语法格式如下:constant常数名:数据类型名:=表达式;例:constantVCC:real:=5.0;constantdaly:time:=100ns;constantfbus:bit_vector:=“0101”;常数一旦设定后,在整个程序中将不再改变。,常数名称的命名规则:第一个字符是英文字母。最后一个字符不能是下划线,中间也不能有两个连续的下划线。常数名称不能是VHDL的保留字。,常数所赋的值应与定义的数据类型一致。例如:constantVCC:real:=“0101”;,变量(Variable),临时数据,没有物理意义只能在Process、Function和Procedure中定义,并只在其内部有效语法格式:variable变量名:数据类型约束条件:=表达式;例:variablex,y:integer;variablecount:integerrange0to255:=10;用:=进行赋值,共享变量,实际使用过程中,有时希望进程或子程序的结果以变量形式进行数据传递。不能在Process、Function和Procedure中定义语法格式:sharedvariable变量名:数据类型约束条件:=初始值;慎用。,共享变量,Architecturesampleoftestissharedvariablenotclk:std_logic;signalclk:std_logic;Beginp1:process(clk)isbeginif(clkeventandclk=1)thennotclk:=0;endif;endprocessp1;,p2:process(clk)isbeginif(clkeventandclk=0)thennotclk:=1;endif;endprocessp2;Endarchitecturesample;,信号(signal),信号是逻辑电路内部硬件连接(节点)的抽象,它除了没有数据流动方向的说明外,其它性质几乎和“端口”一样。信号通常在结构体、程序包集合和实体中说明。,信号A,信号说明语句的格式为:signal信号名:数据类型约束条件:=设置值;例如:signalsys_clk:bit:=0;signalground:bit:=0;,使用信号(signal)的VHDL程序,有关信号的使用规则说明如下:,“:”表示对信号直接赋值,表示信号初始值不产生延时。“”表示代入赋值,是变量之间信号的传递,代入赋值法允许产生延时。例如:T1T2;在仿真中,初始化能保证信号设定在指定值上。对于存储元件的加电初始状态,应该设计复位或予置位机构,而不是通过信号指定初始化值来实现。在EDA工具综合时,信号应在结构体中描述清楚。,信号与变量的区别,architecturertlofstartissignalcount:integerrange0to7;beginprocess(clk)beginif(clkeventandclk=1)thencount=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;-信号延时赋值,architecturertlofstartisbeginprocess(clk)variablecount:integerrange0to7;beginif(clkeventandclk=1)thencount:=count+1;if(count=0)thencarryout=1;elsecarryout=0;endif;endif;endprocess;endrtl;-变量实时赋值,VHDL的数据类型,所有的信号、变量和常量,在VHDL程序中都要指定数据类型。数据类型用来指定工程可以采用的数据集合或数值的范围,并且也有与给定类型相关联的一套操作(如或、与,等等)。VHDL是强类型语言,强类型是指数据类型的定义相当严格,不同类型之间的数据不能直接代入,而且,即使数据类型相同,而位长不同时也不能直接代入。这意味着编译器不允许给类型不同的信号赋值。,VHDL的数据类型,bit(位),信号定义:Typebitis(0,1)0或者1表示在数字电路中一个位的两种取值:0可与数字电路里的低电平对应,1可与数字电路里的高电平对应。,bit_vector(位向量),signala:bit_vector(0to7);signalb:bit_vector(7downto0);signalc:bit_vector(0to3):=“0110”;可按位来表示,如:c(0)=0,c(1)=1,c(2)=1,c(3)=0,递增,递减,单个位用单引号,向量用双引号“”,std_logic(标准逻辑),在VHDL程序里,对逻辑信号的定义,通常都是采用这个std_logic信号形式。,std_logic_vector(标准逻辑向量),将几个信号合成一组来代表特定功能的逻辑信号,例如:数据总线(datebus)、地址总线(addressbus)等。std_logic_vector与bit_vector相似,只是数据内容多了Z与_两种。Z表示电路的高阻状态,仅能指定给最外层电路输出,并且必须对应到IC的实际引脚上。例:signalbus:std_logic_vector(7downto0);beginbus=“ZZZZZZZZ”;,使用标准逻辑向量将两个信号相加,boolean(布尔量),定义是:typebooleanis(false,true);布尔量只有两种状态:false和true,默认为false。,integer(整数),在VHDL语言中,整数范围从(2311)到(2311),例如:128,5,12,。在电子系统中,整数可以用进制来表示。整数不能看作矢量,不能单独对某一位操作。整数不能用于逻辑运算,只能用于算术运算。对象的数据类型定义为整数时,范围应有约束。例如:VARIABLEA:INTEGERRANGE128TO128;,Positive(正整数)和natural(自然数),subtypepositiveisrange0tointegerhighsubtypenaturalisrange1tointegerhigh正整数和自然数是整数的子集。正整数是0和0以上的整数。自然数是大于零的整数。两者的范围是不同的。,unsigned(无符号整数),和std_logic_vector相似,并且可以相互转换。必须指明这个无符号整数的位数序列编号是从高到低,一定要使用downto的序列。具有与“标准逻辑”向量信号相似的逻辑运算特性,real(实数),定义为:typerealisrange-1.7E38to1.7E38实数类型的信号必须表示成带小数点或科学计数的表示方式。architectureaoftestissignalA,B,C,D:REAL;beginA=2.6;B=5.0;C=3.14E8;D=-7.2E-9;Enda;,CHARACTER(字符),字符在VHDL语言中编程时用单引号括起来。A,a,B,b,都认为是不同的字符。VHDL语言对大小写英文字母不敏感,但区分字符量中的大小写。字符1,2仅是符号。字符包括AZ,az,09,空格及一些特殊字符。,STRING(字符串),字符串是由双引号括起来的一个字符序列。例如“VHDL”,“STRING”,“MULTI_SCREENCOMPUTER”等。字符串在其他文献中也称为字符矢量或字符串数组。字符串一般用于程序的提示、结果的说明等场合,TIME(时间),时间类型值的范围是整数所定义的范围,(2311)到(2311)。时间类型的完整书写格式应包含整数和单位两部分。如16ns时间类型一般用于仿真,而不用逻辑综合。时间单位的描述规范说明如下:TYPE_TIMEISRANGE-2147483647to2147483647UNITSFS;PS=1000fs;Ns=1000ps;Us=1000Ns;Ms=1000us;Sec=1000ms;Min=60sec;Hr=60min;Endunits;,SEVRITYLEVEL(错误等级),错误等级这个数据类型用于表示电子系统工作状态。错误等级分为:NOTE,WARAING,ERROR,FALILURE,即注意、警告、错误、失败4个等级。错误等级常用来在仿真时给设计者提供电子系统的工作情况。,枚举、数组用户自定义的类型,枚举式数据类型是混合不同数据类型的元素,组合出特殊的数据类型,也可将相同类型元素以枚举方式组成一种新的数据类型。定义格式为:type名称is(元素1,元素2)例:typestatesis(state0,state1,state2,state3);,枚举、数组用户自定义的类型,数组是相同类型元素的集合。数组可以是一维的或多维的。数组定义格式如下:type数组名isarray范围of数组元素类型;例1:typebitsisarray(7downto0)ofbit;例2:typematrix_typeisarray(0to15,0to31)ofstd_logic;,数据类型转换,使用转换函数进行算术运算,Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_arith.all;Useieee.std_logic_unsigned.all;Entityconvisport(a:inunsigned(3downto0);b:instd_logic_vector(3downto0);sum:outstd_logic_vector(7downto0);endconv;ArchitectureaofconvisBeginsum=conv_std_logic_vector(a,4)+b;Enda;,运算操作符,VHDL运算符的种类包含数值运算、赋值(assignment)与连接运算。数值运算以运算优先权的低高分为逻辑、关系、加法、乘法及其它运算符;赋值(assignment)运算符可以完成数据赋值操作;连接(association)运算符(-是不合法的a=(bandc)ord-是正确的,向量信号进行逻辑运算,逻辑运算符必须是一个位执行逻辑与、或等运算,如果多个位数做运算,必须先将其分解成一个个独立的位运算,最后再用连接符号“,关系运算符,关系运算符是两个对象在比较运算时,将两个操作数比较的结果表示出来所使用的符号,列表如下:等于/不等于小于小于等于大于大于等于,关系运算符,关于运算符,在VHDL程序设计中有如下规则:两个对象进行比较时,数据类型一定要相同。(等于)和/(不等于)适用于所有数据类型的对象之间的比较。大于、小于、大于等于、小于等于适用于整数、实数位、位矢量及数组类型的比较。符号有两种含义:赋值符和小于等于符,要根据上下文判断。,两个位矢量类型的对象比较时,自左至右,按位比较。如:Signala:std_logic_vector(3donwto0);Signalb:std_logic_vector(2donwto0);ab)then-a(2)b(2)ElseEndif;(使用ieee.std_logic_usigned.all程序包,保证按位比较不会出错),算术运算符,VHDL算术运算符的例表如下:(1)-加运算(2)-减运算(3)*-乘运算(4)/-除运算(5)MOD-求模运算(6)REM-取余运算(7)-正(8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 坡屋面挂瓦施工技术操作流程
- 市场调研报告编写范文与模板
- 企业导师带徒计划模板
- 五年级下册数学专项计算训练题
- 建筑工程装饰施工合同范例
- 小学美术剪纸手工创新课堂教学设计
- 教育心理学在教师培训中的应用方案
- 证券公司客户资料管理规范
- 物业保洁服务质量标准及承诺书
- 动力电池成本构成及优化降本方案报告
- JJG(交通) 133-2023 落锤式弯沉仪
- 工厂主管人员值班表
- 消防安全周巡查记录表
- 俱舍论原文内容
- 第三章 护理伦理学基本原则规范和范畴
- 能源化学与能源化工概论-第一章 能源简介
- GB/T 18742.3-2017冷热水用聚丙烯管道系统第3部分:管件
- FZ/T 52058-2021低熔点聚乳酸(LMPLA)/聚乳酸(PLA)复合短纤维
- 2023年华中师范大学研究生入学考试试题汉语言文字专业语言及应用语言学对外汉语教学专业试题
- 2021新教材高中历史第四单元资本主义制度的确立-教学课件-人教版历史纲要下
- 高中生职业生涯规划主题班会课件
评论
0/150
提交评论