EDA应用技术 第2版 课件 02-VHDL程序数据对象与基本运算符课件_第1页
EDA应用技术 第2版 课件 02-VHDL程序数据对象与基本运算符课件_第2页
EDA应用技术 第2版 课件 02-VHDL程序数据对象与基本运算符课件_第3页
EDA应用技术 第2版 课件 02-VHDL程序数据对象与基本运算符课件_第4页
EDA应用技术 第2版 课件 02-VHDL程序数据对象与基本运算符课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1.VHDL程序数据对象VHDL程序使用的数据对象包括常量、变量、信号和文件4种类型。前3种属于可综合的数据对象,在硬件电路系统中通常有一定的物理含义。文件数据对象仅在行为仿真时使用。项目3VHDL程序的数据对象与基本运算符(1)常量常量是一个固定的值,相当于数字电路中的电源与地等。定义和设置常量是为了程序更易阅读和修改。常量语句允许在实体、结构体、程序包、进程和子程序中定义,常量的适用范围取决于它被定义的位置。常量定义的一般格式如下:

constant常量名:数据类型:=表达式;【例3.1】常量的定义constantDATA:integer:=50;constantVCC:real:=5.0;constantRISE:time:=25ns;项目3VHDL程序的数据对象与基本运算符定义了一个名为“DATA”的整数常量,并且赋予初值50;定义了一个名为“VCC”的实数常量,并且赋予初值5.0;定义了一个名为“RISE”的时间常量,并且赋予初值25纳秒。项目3VHDL程序的数据对象与基本运算符(2)变量

变量是一种内容可发生变化的数据对象,其主要作用是在进程中作为临时的数据存储单元。变量只能在进程语句和子程序中使用,它是一个局部量,在仿真过程中执行到变量赋值语句后,变量就被即时赋值。变量定义语句的格式如下:variable变量名:数据类型[约束条件][:=初值表达式];变量数值的改变是通过变量赋值来实现,变量赋值的一般形式:目标变量名:=表达式;变量赋值符号为“:=”,变量赋值语句后的“表达式”必须与目标变量名具有相同的数据类型,这个数值可以是运算表达式,也可以是一个数值。项目3VHDL程序的数据对象与基本运算符【例】二进制计数器VHDL程序中变量的使用

libraryieee;useieee.std_logic_1164.all;entitybinary_counterisgeneric(MIN_COUNT:natural:=0;MAX_COUNT:natural:=255);port(clk:instd_logic;reset:instd_logic;enable:instd_logic;q:outintegerrangeMIN_COUNTtoMAX_COUNT);endentity;architecturertlofbinary_counterisbeginprocess(clk)variablecnt:integerrangeMIN_COUNTtoMAX_COUNT:=0;beginif(rising_edge(clk))thenifreset='1'thencnt:=0;elsifenable='1'thencnt:=cnt+1;endif;endif;q<=cnt;endprocess;endrtl;变量定义语句:在进程内定义变量cnt,整数类型,数值范围限定在255-0内,赋初值0。变量赋值语句:cnt赋0值变量赋值语句:cnt赋cnt+1表达式,实现加1计数(3)信号信号信号相当于组合电路中门与门之间的硬件连接线或数值寄存器。信号通常在结构体、包集合和实体中说明,是个全局量。信号的定义语句格式:

Signal信号名:数据类型[约束条件][:=表达式];给信号赋初值用“:=”符号,在程序中,给信号赋值用“<=”符号,信号赋值语句形式:

目标信号名<=表达式[after时间量];这里的“表达式”可以是一个运算表达式,也可以是数据对象(变量、信号或常量),信号赋值时可附加延时。

项目3VHDL程序的数据对象与基本运算符项目3VHDL程序的数据对象与基本运算符【例】异步清零十进制加法计数器VHDL程序中信号的使用

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt10yisport(clr:in

std_logic;

clk:in

std_logic;

cnt:out

std_logic_vector(3downto0));endcnt10y;architectureexample9ofcnt10yissignalcnt_temp:std_logic_vector(3downto0):="0000";beginprocess(clr,clk)beginifclr='0'thencnt_temp<="0000";elsif

clk'eventandclk='1'thenif(cnt_temp="1001")thencnt_temp<="0000";elsecnt_temp<=cnt_temp+'1';endif;endif;endprocess;cnt<=cnt_temp;endexample9;信号定义语句:在结构体内定义变量cnt_temp,4位宽标准逻辑矢量数据类型,赋初值“0000”。信号赋值语句:cnt_temp赋”0000”值信号赋值语句:cnt_temp赋cnt_temp+’1’表达式,实现加1计数信号赋值语句:cnt_temp赋”0000”值信号赋值语句:端口信号cnt赋cnt_temp信号值(4)变量、信号的比较信号和变量是VHDL程序中重要的数据对象,它们间主要区别有:①物理意义不同:信号用于电路中的信号连接,变量用于进程中局部数据存储。②定义位置不同:信号的使用和定义位置在结构体、程序包和实体中,不能在进程、函数和子程序中使用,而变量只能在进程、函数和子程序中定义。③赋值符号不同:变量用“:=”,信号用“<=。④附加延时不同:变量赋值语句一旦被执行,其值立即被赋予变量。信号实际赋值过程和赋值语句的处理是分开进行的,也即信号赋值语句执行时附加了延时。

项目3VHDL程序的数据对象与基本运算符2.VHDL程序数据类型VHDL程序的每个数据对象都有确定的数据类型,不同类型的数据间无法直接进行操作,数据类型相同而位长不同时,也不能直接代入,数据类型不匹配时必须使用转换函数,VHDL程序提供了多种预定义的标准数据类型。

项目3VHDL程序的数据对象与基本运算符(1)标准数据类型标准的数据类型有10种,这些数据类型及其含义如表3.1所示。10种标准数据类型中,实数、时间、错误等级和字符串等数据类型不可综合,只可用于系统仿真。

项目3VHDL程序的数据对象与基本运算符(2)用户自定义数据类型VHDL程序允许用户定义新的数据类型,用户自定义数据类型书写格式为:type数据类型名is数据类型定义of基本数据类型;或type数据类型名is数据类型定义;可以综合的常用的用户自定义数据类型。①枚举类型枚举类型是把类型中的各个可能的取值都列举出来,枚举类型可以用符号来代替数值,在使用状态机时常采用枚举类型来定义状态参数。枚举类型的定义格式:

type数据类型名is(元素1,元素2,…);例:typestatesis(s0,s1,s2,s3);--自定义数据类型“states”有4种状态

项目3VHDL程序的数据对象与基本运算符②数组类型数组是将相同的数据集合在一起所形成的一个新的数据类型。它可以是一维的,也可以是二维或多维的。数组的定义格式如下:

type数组名isarray(数组范围)of数据类型;例:定义一个名为“ram”的一维数组表述如下: typeramisarray(0to63)ofstd_logic;定义一个名为“matrix”的二维数组表述如下: typematrixisarray(15downto0)ofstd_logic_vector(15downto0);项目3VHDL程序的数据对象与基本运算符③纪录类型记录类型是将不同类型的数据和数据名组织在一起而形成的数据类型。记录类型的一般书写格式如下:type数据类型名isrecord元素名1:数据类型名;元素名2:数据类型名;…endrecord;项目3VHDL程序的数据对象与基本运算符(3)数据类型转换VHDL程序是一种强类型的语言,不同类型的数据之间不能直接进行运算和赋值操作,必须要对信号或者变量的数据类型进行类型转换。IEEE库各程序包提供的数据类型的转换函数如表3.2所示。

项目3VHDL程序的数据对象与基本运算符(4)数值类属性数值类属性用于返回有关数据类型或数组类型的特定值,通常用单引号“'”指定属性。常用的各数值类属性的含义说明如下:①'left:返回数据类区间最左端值;②'right:返回数据类区间最右端值;③'high:返回数据类区间高端值;④'low:返回数据类区间低端值;⑤'length:返回限制性数组中的元素数。

项目3VHDL程序的数据对象与基本运算符3.VHDL程序基本运算符IEEE库预定义的运算符,主要有算术运算符、关系运算符、逻辑运算符、移位运算符、赋值运算符、关联运算符、并置运算符等。VHDL程序的各运算符如表3.3所示

项目3VHDL程序的数据对象与基本运算符3.VHDL程序基本运算符IEEE库预定义的运算符,主要有算术运算符、关系运算符、逻辑运算符、移位运算符、赋值运算符、关联运算符、并置运算符等。VHDL程序的各运算符如表3.3所示

项目3VHDL程序的数据对象与基本运算符3.VHDL程序基本运算符IEEE库预定义的运算符,主要有算术运算符、关系运算符、逻辑运算符、移位运算符、赋值运算符、关联运算符、并置运算符等。VHDL程序的各运算符如表3.3所示

项目3VHDL程序的数据对象与基本运算符3.VHDL程序基本运算符IEEE库预定义的运算符,主要有算术运算符、关系运算符、逻辑运算符、移位运算符、赋值运算符、关

温馨提示

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

评论

0/150

提交评论