第三章数据对象和数据类型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运算:位矢量是位类型数据的集合,同样要注意数 据的宽度和次序,而且只能进行逻辑运算
例: signal aa:std_logic_vector(3 downto 0); aa<=“zzzz”; aa<=“1011”; aa(3)<=‘1’;
5、有符号数(signed)和无符号数 (unsigned)
例:constant A1 :bit:=’1’; constant B1 :bit_vector(3 downto 0):=“1010”;
二、信号
信号代表电路中的“硬”连线,即用于电路的 输入/输出端口,也用于电路内部各元件之间的互联。
格式:signal 信号名:数据类型[:=初值];Leabharlann Baidu 初值可省略)
2、位类型(bit): 取值:取‘0’和‘1’两个值 运算:逻辑运算 例:signal tp:bit Tp<=’0’;
3、位矢量(bit_vector):位矢量 注:定义位矢量时,要注意位矢量的宽度和次序
赋值时可整体赋值,也可每1位单独赋值 运算:位矢量和位类型的数据只能进行逻辑运算 例:signal data:bit_vector(3 downtown 0);
无符号数 0~127
80H~FFH -128~-1 128~255
二、用户定义的数据类型(根据用户的需求, 重新定义新的数据类型)
1、用户定义的整数类型 格式:type 数据类型 is 范围
例:type my_integer is range 0 to 100 Signal data1:my_integer;
2、用户定义的枚举类型 数据类型的值由指定的枚举值确定 格式:type 数据类型 is (枚举值) 例:type mylogic is (‘0’,’1’,’Z’) Type state is (s0,s1,s2); Signal ps:state; Ps<=s0; 用户定义的数据类型可存放在自定义的程
3.3 数据类型间的转换(见书) conv_integer(p):
将integer,unsigned,signed,std_logic或者 std_ulogic的操作数p转换为integer类型.
注意:不包含std_logic_vector
conv_unsigned(p,b):
将integer,unsigned,signed,或者std_ulogic的 操作数p转换为位宽为b的unsigned类型. conv_signed(p,b):
Signal y,temp:bit_vector(0 to 3);
data<=”1110”(data(3)=’1’,data(2)=’1’,data(1)=’1’
data(0)=’0’)
单独1位赋值:data(3)<=‘0’; y<=”ZZZZ”; y<=(‘0’,’1’,’0’,’1’); y<=(others=>’0’); y<=(1=>’0’,others=>’1’);
第3章 数据对象和数据类型
3.1 数据对象 数据对象:通俗理解,数据对象是存放数据的 容器,在vhdl中数据对象有3种 (1)常量(constant) (2)信号(signal) (3)变量(variable)
一、常量 用来确定默认值,相当于电路中的固定电平
格式:constant 常量名:数据类型:=常量值;
3、整数(integer)
取值:提供最大32位的整数,整数范围( 231 ~ 231 1 ) 注:定义整数时,应制定整数的范围,便于综合,
否则综合器默认的位数是32位。 运算:整数类型只能进行算术运算 例:signal d:integer range 0 to 15;
Signal f:integer; d<=15(综合后位F,4位); f<=15(综合后位0000000F)
格式:VARIABLE 变量名:数据类型【:=初值】;
例:variable c,d:bit
变量的赋值:用“:=”对变量进行赋值,对变量 赋
值是瞬时完成的,只是在局部进程和函数,过程中 使用
例:c:=’1’; D:=’0’;
3.2 数据类型
一、预定义的数据类型
1、布尔类型(boolean) 取值:true,false 运算:逻辑运算
取值:定义和std_logic__vector相同,但支持 算术运算。 运算:算术运算 例:signal aa:signed(7 downto 0);
Signal bb:unsigned(7 downto 0);
aa<=”11111111”;
bb<=”11111111”;
有符号数 00H~7FH 0~127
取值:具有8种不同的值,为什么引入8值, 主要是考虑两个及两个以上的电路输出 端如连在同一节点上,此点的电平与电 路驱动能力有关,驱动能力强的输出可 将节点电平强行拉高或是拉低,因此建 立多值系统是为了对这种情况进行分析。
8值: ‘x‘ 强不确定值 ‘0‘强0 ‘ 1‘强1 ‘Z‘高阻 ‘W’弱不确定值 ‘L’弱0 ‘H’弱1 ‘-’不能出现的情况 实际中只有0.1,Z能被综合
序中,也可在主程序中直接定义
3、子类型 在原有的数据类型的基础上加一些约束条件,可 定义该数据类型的子类型。
格式:subtype 子数据类型 is 母数据类型 范围 例:subtype mylogic is integer range 0 to 10; Subtype mystate is state range s0 to s1;
例:signal a,b:bit; 信号的赋值:用“<=“符号对信号进行赋值 例:a<=’1’; b<=’0’; 信号赋值的特点:信号赋值是有延时的;且信号 赋值是并发的;信号是全局的,在整个结构体中全 局使用
三、变量
变量仅用于局部电路的描述,是临时存放数据的 单元,变量只能在进程,函数等中使用。
注意:定义整数指定了范围,也就是制定了 定义整数的二进制位数,当自身加一时,整 数值可超限,但是在对其进行具体的赋值 时,不可超限
例:signal temp;integer 0 to 26 Temp<=27(错误) temp<=temp+1(按照5为2进制数相加,
可加到32)
4、 标准逻辑位类型(std_logic) 标准逻辑位矢量(std_logic_vector)
相关文档
最新文档