硬件描述语言及器件3(侯伯亨版).ppt_第1页
硬件描述语言及器件3(侯伯亨版).ppt_第2页
硬件描述语言及器件3(侯伯亨版).ppt_第3页
硬件描述语言及器件3(侯伯亨版).ppt_第4页
硬件描述语言及器件3(侯伯亨版).ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、适合班级: 09060241 09060242 教学东区01107H,第三课 VHDL语言数据类型及运算操作符,数据对象/客体,在VHDL中把保存数据的单元称为数据对象。 客体(Object):凡是可以赋予一个值的对象成为客体。 VHDL中的四种客体: 信号(Signal) 变量(Variable) 常量(Constant) 文件(File),四类客体含义及说明场合,常数(constant),语法格式如下: constant 常数名:数据类型名:= 表达式; 例: constant VCC :real := 5.0; constant daly : time := 100 ns; consta

2、nt fbus : bit_vector := “0101”; 常数一旦设定后,在整个程序中将不再改变。,常数名称的命名规则: 第一个字符是英文字母。 最后一个字符不能是下划线,中间也不能有两个连续的下划线。 常数名称不能是VHDL的保留字。,常数所赋的值应与定义的数据类型一致。 例如: constant VCC :real := “0101”;,变量(Variable),临时数据,没有物理意义 只能在Process、Function和Procedure中定义,并只在其内部有效 语法格式: variable 变量名 :数据类型 约束条件 := 表达式; 例: variable x,y : in

3、teger; variable count : integer range 0 to 255 :=10; 用 := 进行赋值,共享变量,实际使用过程中,有时希望进程或子程序的结果以变量形式进行数据传递。 不能在Process、Function和Procedure中定义 语法格式: shared variable 变量名 :数据类型 约束条件 := 初始值; 慎用。,共享变量,Architecture sample of test is shared variable notclk: std_logic; signal clk : std_logic; Begin p1: process(clk

4、) is begin if (clkevent and clk = 1) then notclk := 0; end if; end process p1;,p2: process(clk) is begin if (clkevent and clk = 0) then notclk := 1; end if; end process p2; End architecture sample;,信号 (signal),信号是逻辑电路内部硬件连接(节点)的抽象,它除了没有数据流动方向的说明外,其它性质几乎和“端口”一样。信号通常在结构体、程序包集合和实体中说明。,信号A,信号说明语句的格式为: s

5、ignal 信号名:数据类型 约束条件:= 设置值; 例如: signal sys_clk: bit := 0; signal ground : bit := 0;,使用信号(signal)的VHDL程序,有关信号的使用规则说明如下:,“:”表示对信号直接赋值,表示信号初始值不产生延时。 “”表示代入赋值,是变量之间信号的传递,代入赋值法允许产生延时。例如:T1 T2; 在仿真中,初始化能保证信号设定在指定值上。对于存储元件的加电初始状态,应该设计复位或予置位机构,而不是通过信号指定初始化值来实现。 在EDA工具综合时,信号应在结构体中描述清楚。,信号与变量的区别,architecture r

6、tl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;-信号延时赋值,architecture rtl of start is begin process(clk) variable count : integer range 0

7、 to 7; begin if (clkevent and clk=1) then count := count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;-变量实时赋值,VHDL的数据类型,所有的信号、变量和常量,在VHDL程序中都要指定数据类型。数据类型用来指定工程可以采用的数据集合或数值的范围,并且也有与给定类型相关联的一套操作(如或、与,等等)。 VHDL是强类型语言,强类型是指数据类型的定义相当严格,不同类型之间的数据不能直接代入,而且,即使数

8、据类型相同,而位长不同时也不能直接代入。这意味着编译器不允许给类型不同的信号赋值。,VHDL的数据类型,bit(位),信号定义: Type bit is(0,1) 0或者1表示在数字电路中一个位的两种取值: 0可与数字电路里的低电平对应, 1可与数字电路里的高电平对应。,bit_vector(位向量),signal a: bit_vector (0 to 7); signal b: bit_vector (7 downto 0); signal c: bit_vector (0 to 3) := “0110”; 可按位来表示,如: c(0)= 0,c(1)= 1,c(2)= 1,c(3)= 0

9、,递增,递减,单个位用单引号,向量用双引号“ ”,std_logic(标准逻辑),在VHDL程序里,对逻辑信号的定义,通常都是采用这个std_logic信号形式 。,std_logic_vector (标准逻辑向量),将几个信号合成一组来代表特定功能的逻辑信号,例如:数据总线(date bus)、地址总线(address bus)等 。 std_logic_vector与bit_vector相似,只是数据内容多了Z与_两种。Z表示电路的高阻状态,仅能指定给最外层电路输出,并且必须对应到IC的实际引脚上。 例: signal bus: std_logic_vector (7 downto 0);

10、 begin bus = “ZZZZZZZZ”;,使用标准逻辑向量将两个信号相加,boolean(布尔量),定义是: type boolean is ( false, true ); 布尔量只有两种状态:false 和true,默认为false。,integer(整数),在VHDL语言中,整数范围从(2311)到(2311),例如: 128,5,12,。 在电子系统中,整数可以用进制来表示。 整数不能看作矢量,不能单独对某一位操作。 整数不能用于逻辑运算,只能用于算术运算。 对象的数据类型定义为整数时,范围应有约束。例如: VARIABLE A: INTEGER RANGE 128 TO 12

11、8;,Positive(正整数)和natural(自然数),subtype positive is range 0 to integer high subtype natural is range 1 to integer high 正整数和自然数是整数的子集。 正整数是0和0以上的整数。 自然数是大于零的整数。两者的范围是不同的。,unsigned(无符号整数),和std_logic_vector相似,并且可以相互转换。 必须指明这个无符号整数的位数序列编号是从高到低,一定要使用downto的序列。 具有与“标准逻辑”向量信号相似的逻辑运算特性,real(实数),定义为: typereal

12、isrange -1.7E38 to1.7E38 实数类型的信号必须表示成带小数点或科学计数的表示方式。 architecture a of test is signal A, B, C, D: REAL; begin A = 2.6; B = 5.0; C = 3.14E8; D = -7.2E-9; End a;,CHARACTER(字符),字符在VHDL语言中编程时用单引号括起来。A,a,B,b,都认为是不同的字符。 VHDL语言对大小写英文字母不敏感,但区分字符量中的大小写。字符1,2仅是符号。 字符包括AZ,az,09,空格及一些特殊字符。,STRING(字符串),字符串是由双引号括

13、起来的一个字符序列。 例如“VHDL”,“STRING”,“MULTI_SCREEN COMPUTER”等。 字符串在其他文献中也称为字符矢量或字符串数组。 字符串一般用于程序的提示、结果的说明等场合,TIME(时间),时间类型值的范围是整数所定义的范围,(2311)到(2311) 。 时间类型的完整书写格式应包含整数和单位两部分。如16 ns 时间类型一般用于仿真,而不用逻辑综合。 时间单位的描述规范说明如下: TYPE_TIME IS RANGE -2147483647 to 2147483647 UNITS FS; PS = 1000 fs; Ns = 1000 ps; Us = 100

14、0 Ns; Ms = 1000 us; Sec = 1000 ms; Min = 60 sec; Hr = 60 min; End units;,SEVRITY LEVEL(错误等级),错误等级这个数据类型用于表示电子系统工作状态。 错误等级分为:NOTE,WARAING,ERROR,FALILURE,即注意、警告、错误、失败4个等级。 错误等级常用来在仿真时给设计者提供电子系统的工作情况。,枚举、数组用户自定义的类型,枚举式数据类型是混合不同数据类型的元素,组合出特殊的数据类型,也可将相同类型元素以枚举方式组成一种新的数据类型。 定义格式为: type 名称 is(元素1,元素2) 例: t

15、ype states is (state0,state1,state2,state3);,枚举、数组用户自定义的类型,数组是相同类型元素的集合。数组可以是一维的或多维的。 数组定义格式如下: type 数组名 is array 范围 of 数组元素类型; 例1: type bits is array (7 downto 0) of bit ; 例2: type matrix_type is array ( 0 to 15, 0 to 31) of std_logic;,数据类型转换,使用转换函数进行算术运算,Library ieee; Use ieee.std_logic_1164.all;

16、Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity conv is port( a : in unsigned(3 downto 0); b: in std_logic_vector(3 downto 0); sum : out std_logic_vector(7 downto 0) ); end conv; Architecture a of conv is Begin sum = conv_std_logic_vector(a,4) + b; End a;,运算操作符,VHDL运算符的种类包含数值运算

17、、赋值(assignment)与连接运算。 数值运算以运算优先权的低高分为逻辑、关系、加法、乘法及其它运算符; 赋值(assignment)运算符可以完成数据赋值操作; 连接(association)运算符( -是不合法的 a=(b and c) or d -是正确的,向量信号进行逻辑运算,逻辑运算符必须是一个位执行逻辑与、或等运算,如果多个位数做运算,必须先将其分解成一个个独立的位运算,最后再用连接符号“,关系运算符,关系运算符是两个对象在比较运算时,将两个操作数比较的结果表示出来所使用的符号,列表如下: 等于 / 不等于 小于 小于等于 大于 大于等于,关系运算符,关于运算符,在VHDL程

18、序设计中有如下规则: 两个对象进行比较时,数据类型一定要相同。 (等于)和/(不等于)适用于所有数据类型的对象之间的比较。 大于、小于、大于等于、小于等于适用于整数、实数位、位矢量及数组类型的比较。 符号有两种含义:赋值符和小于等于符,要根据上下文判断。,两个位矢量类型的对象比较时,自左至右,按位比较。 如: Signal a : std_logic_vector(3 donwto 0); Signal b : std_logic_vector(2 donwto 0); a b) then - a(2) b(2) Else End if; (使用ieee.std_logic_usigned.all程序包,保证按位比较不会出错),算术运算符,VHDL算术运算符的例表如下: (1) -加运算 (2) - -减运算 (3)* -乘运算 (4)/ -除运算 (5)MOD -求模运算 (6)REM -取余运算 (7) -正 (8) -负 (9)* -指数运算

温馨提示

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

评论

0/150

提交评论