数据类型和运算操作符课件_第1页
数据类型和运算操作符课件_第2页
数据类型和运算操作符课件_第3页
数据类型和运算操作符课件_第4页
数据类型和运算操作符课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL文字书写规则数字型的文字书写规则;字符型的文字书写规则;标识符的命名规则;数组中下标的选取规则。VHDL的客体(对象)1、Constant(常量)2、Variable(变量)3、Signal(信号)对象的说明常数(constant):是一个固定的值,常数说明就是对某一常数名赋予一个固定的值,常量只能在说明时被赋值。 语法形式:constant常数名:数据类型:=表达式; 例:constantVCC:real:=5.0;变量(variable):只能在process、function和procedure结构中使用,是一个局部量。 语法形式:variable变量名:数据类型约束条件:=表达式; 例:variablex,y:integer; variablecount:integerrange0to255:=10;信号(signal):电路内部硬件连接的抽象。信号可以在architecture、package、entitiy中声明。是一个全局量。 语法形式:signal信号名:数据类型约束条件:=表达式; 例:signalclk:std_logic:=‘1’;信号与端口的比较信号与端口的比较信号和变量的区别(1)信号赋值是有一定延迟的,在进程中,信号的代入是在进程结束或者WAIT语句时进行。而变量赋值没有延迟。(2)对于进程语句来说,进程只对信号敏感,不对变量敏感。(3)信号在某一时刻除了具有当前值外,还具有一定的信息(保存在预定义属性中),可以形成波形。而变量在某一时刻仅包含一个值。(4)信号可以是多个进程的全局信号,实现在多个进程之间传递信息;而变量只在定义它的过程、函数和进程中可见。(5)信号是硬件中连线的抽象描述,其功能是保存变化的数据值和连接子元件。变量在硬件中没有类似的对应关系,主要应用于高层次的建模中。(6)信号赋值和变量赋值的格式如下所示: 信号<=表达式; 变量:=表达式;或者x:=(integer)y;y:=(real)x;type类型名is类型定义;typebankisrecordr0:integer;typewordisarray(31downto0)ofbit;语法形式:constant常数名:数据类型:=表达式;Functionmax(a,b:std_logic_vector)整数/实数:限定范围的整数/实数。a:=b;

b:=a;c3:outintegerrange0to15);VHDL的自定义数据类型(记录)Signalee,aa:bit;signalccc:std_logic_vector(7downto0);Architecturebhvofexpttis信号和变量的区别举例ARCHITECTURE

rtlOFsigISsignalxa,xb,c:STD_LOGIC;BEGIN PROCESS(xa,xb,c)

BEGIN

if(c=‘1’)then

xa<=xb;

xb<=xa;

endifENDPROCESS;

PROCESSvariablea,b:STD_LOGIC;BEGIN

…….a:=b;

b:=a; c<=a;ENDPROCESS;……ENDrtl;

VHDL数据类型预定义数据类型VHDL预定义数据类型IEEE预定义数据类型其他预定义数据类型自定义数据类型枚举类型整数/实数类型数组类型记录类型基本数据类型简表VHDL的数据类型限定任何一个信号和变量都必须落入区间约束中所说明的值域有效范围内。举例: a:outstd_logic_vector(7downto0); b:inintegerrange1to10; signalabc:std_logic_vector(0to2);variableaaa:realrange2.0to30.0;预定义数据类型1VHDL预定义数据类型1,布尔数据类型2,BIT数据类型(BIT_VECTOR数据类型)3,字符数据类型(字符串数据类型)4,整数数据类型(自然数和正整数数据类型)5,实数数据类型6,时间数据类型预定义数据类型2IEEE预定义数据类型1,STD_LOGIC数据类型2,STD_LOGIC_VECTOR数据类型bit与std_logic比较bit:

`0`,(逻辑0)`1`(逻辑1)std_logic:`U`,(未初始化)`X`,(未定)`0`,(0)`1`,(1)`Z`,(高阻)`W`,(弱未定)`L`,(弱0)`H`,(弱1)`-`(忽略)预定义数据类型3符号数据类型1,无符号数据类型2,有符号数据类型3,小整型数据类型VHDL的自定义数据类型语法介绍语法形式: type类型名is类型定义;举例typeindexisintegerrange15downto0;typevoltageisrealrange0.0to10.0;typeweekis(sun,mon,tue,wed,thu,fri,sat);Variableabc:index:=6;Variableday:week:=tue;VHDL的自定义语法举例(物理量)type数据类型名is范围units基本单位;单位;endunitstypetimeisrange1e-18to1e18unitsfs;ps=1000fs; ns=1000ps; …. sec=1000ms;endunitstypevlotageisrange0to1000000unitsuV;mV=1000uV; V=1000mV;endunitsVHDL的自定义子数据类型语法介绍当一个对象可能取值的值域是某个类型说明定义的值域的子集,则可以使用子类型定义。语法形式: subtype子类型名is数据类型名[范围];举例subtypeiobusisstd_logic_vector(7downto0);说明 子类型和父类型完全兼容 为了增加可重用性,只要有可能定义为子类型时,就不要将其定义为新类型。VHDL的自定义数据类型(枚举)枚举:用文字表示一组二进制数据语法形式: TYPE类型名IS(文字表)举例 typeweekis(Sun,Mon,Tue);调用 signalwd:week; wd<=Mon;VHDL的自定义数据类型(整数/实数)整数/实数:限定范围的整数/实数。语法形式: TYPE类型名IS限定范围描述subtypeiobusisstd_logic_vector(7downto0);变换函数通常由VHDL语言的包集合提供。subtypeiobusisstd_logic_vector(7downto0);Signalee,aa:bit;信号(signal):电路内部硬件连接的抽象。整数/实数:限定范围的整数/实数。r0:integer;例:signalclk:std_logic:=‘1’;VHDL的运算操作符优先级据值和连接子元件。为了方便各种不同数据类型间的运算,VHDL允许用户对原有的基本操作符重新定义,赋予新的含义和功能,从而建立一种新的操作符,这就是重载操作符。2,STD_LOGIC_VECTOR数据类型typeweekis(sun,mon,tue,wed,thu,fri,sat);bit与std_logic比较BEGIN

…….VHDL的自定义数据类型(数组)数组:用于定义同一类型值的集合语法形式: TYPE类型名ISARRAY范围OF原数据类型名举例 typewordisarray(31downto0)ofbit;调用 signalabc:word; data_bit<=abc(2);VHDL的自定义数据类型(记录)记录:用于定义不同类型值的集合语法形式: TYPE类型名ISRECORD 元素名:数据类型名 元素名:数据类型名 …… ENDRECORD举例 typebankisrecord addr0:std_logic_vector(7downto0); r0:integer; endrecordVHDL的自定义数据类型(记录)调用(单个元素赋值) signalabc:bank; signalccc:std_logic_vector(7downto0); signalddd:integer;ccc<=abc.addr0;abc.r0<=ddd;VHDL的自定义数据类型(记录)调用(整体赋值) signalabc:bank; signalccc:std_logic_vector(7downto0); signalddd:integer;abc<=(ccc,ddd);位置关联或者abc<=(r0=>ddd,addr0=>ccc);名字关联数据类型转换VHDL是强类型语言,每一个对象只能有一种类型,并且只能取该类型的值。如果值类型和对象类型不一致,需要使用显式类型转换。VHDL中没有隐式类型转换。为了实现正确的带入操作,必须将要带入的数据进行类型转换。数据类型转换方法类型标记法 用类型名称实现关系密切的标量类型之间的转换。 例如: variablex:integer;variabley:real; x:=(integer)y;y:=(real)x;类型函数法 变换函数通常由VHDL语言的包集合提供。数据类型转换函数说明数据类型转换函数说明举例Entityadd5is port(num:instd_logic_vector(2downto0);……);Endadd5;architecturertlofadd5is signalin_num:integerrange0to5; begin in_num<=conv_integer(num); …..Endrtl;VHDL的运算操作符算术运算符关系运算符逻辑运算符符号运算符被操作符所操作的对象是操作数,操作数的类型应该和操作符所要求的类型相一致。运算操作符有优先级。VHDL的运算操作符优先级ccc<=abc.c3:outintegerrange0to15);VHDL的自定义数据类型(记录)ps=1000fs;signalabc:word;VHDL预定义数据类型c1<=max(a1,b1);(6)信号赋值和变量赋值的格式如下所示:signalccc:std_logic_vector(7downto0);type数据类型名is范围2、Variable(变量)VHDL中没有隐式类型转换。VHDL预定义数据类型主要应用于高层次的建模中。语法形式:constant常数名:数据类型:=表达式;并置例题Signalb:bit_vector(0to3);Signaltmp:bit_vector(0to3);Signalout:bit_vector(0to7);Signalee,aa:bit;Tmp<=band(ee&ee&aa&ee);Tmp<=(ee,ee,ee,aa);Out<=tmp&(ee,ee,ee,aa);VHDL的重载操作符为了方便各种不同数据类型间的运算,VHDL允许用户对原有的基本操作符重新定义,赋予新的含义和功能,从而

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论