第2-1讲 VHDL语言的数据类型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL数据对象(Data Objects)
2、信号
信号数据对象,代表电路内部线路,其在元件之间起互连 作用,没有方向性,可给它赋值,也可当作输入。 定义格式为: Signal
如:
Signal A : Std_logic_vector(3 Down to 0) := “0000”;
信号名:数据类型[:=设定值];
信号、变量、常数对比
四、适用范围 信号:实体、结构体、程序包 变量:定义了变量的进程、子程序的顺序语句中
常数:视其定义的位置而定
若常数定义在实体中,适用范围是实体所对应的所 有结构体。 若常数定义在结构体中,适用范围就是本结构体。
信号和变量赋值区别举例
信号赋值(非立即) Architecture abc of example is signal tmp:std_logic; Begin process(a,b,c) begin tmp<=a; x<=c and tmp; tmp<=b; y<=c and tmp; end process; End abc;
使用这类数据信号,必须包含下面两条声明语句:
Library IEEE; Use IEEE.std_logic_1164.all;
VHDL数据类型
该类型能比较全面地包括数字电路中信号的几种状态,比 位“bit”信号对于数字逻辑电路的逻辑特性描述更完整、更真 实。所以在VHDL的程序里,对于逻辑信号的定义,通常都是采 用这个“标准逻辑”信号形式,不再使用“BIT”。
VHDL的优点
VHDL描述能力比其它硬件描述语言更强,用于 设计复杂的、多层次的数字系统。支持设计库 和设计的重复使用; 具有相对独立性,设计者可以不管硬件结构及 最终设计实现的目标器件; 支持广泛,目前大多数EDA软件都支持VHDL语 言; 更方便地向ASIC过渡; VHDL有良好的可读性,容易理解。
为最高位。如:Unsigned(“0110”)代表 +6;Unsigned(“1010”)代表 + 10 有符号类型数据代表有符号数值,即可以是正数,0,负数;编 译器将有符号数类型作为一个补码的二进制数,最左边的位为 符号位。 如:signed(“0110”)代表+6;signed(“1010”)代表 -2。
执行结果:x=c and b y=c and b
变量赋值(立即) Architecture abc of example is Begin process(a,b,c) variable tmp:std_logic; begin tmp:=a; x<=c and tmp; tmp:=b; y<=c and tmp; end process; End abc;
Variable a,b,c: interger;
C=a+b;
VHDL数据类型
(2)无符号(Unsigned)和有符号(Signed)类型
定义位置:有符号(Signed)和无符号(Unsigned)逻辑 信号定义在库IEEE的程序包std_logic_arith中。
无符号类型数据代表无符号数值,即代表0或正数;最左边的位
信号赋值语句的语法格式为: 目标信号名<=表达式(设定值); A <= “1010”
注意:设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。
VHDL数据对象(Data Objects)
1、信号分外部端口信号和内部信号,外部端口信号不需
说明,可直接使用。内部信号赋值前必须定义。
2、信号不能在进程中定义,但可在进程中赋值。 3、信号在进程外赋值是并行执行的,在进程中,只 有进程被激活后,在进程结束时才赋新值。 4、变量所赋值的数据类型必须与定义的数据类型一致。
A(7)=0 B(7)=0
A(6)=1 A(5)=0 A(4)=1 A(3)=0 A(2)=0 A(1)=0 A(0)=0 B(6)=0 B(5)=0 B(4)=0 B(3)=1 B(2)=0 B(1)=1 B(0)=0
VHDL数据类型
(4)标准逻辑型(Std_Logic )
定义位置:在IEEE库的std_logic_1164程序包中进行定义
data<= “0100” ;
(a,b,c,d) <= bus ;
位置关联
VHDL数据类型
数值数据类型
(1)整数(Integer) 定义位置:在std库的standard程序包中进行定义。 即数值范围为-231~231。 整数不能用于逻辑运算,只能用于算术运算。 Signal day: integer range 0 to 31;
7、字符串 (STRING):用“”
8、时间 (TIME):fs,ns,us,ms,sec,min,hr
VHDL数据类型
IEEE库 1、STD_LOGIC:是标准的BIT数据类型的扩展,共定义了九种值:
‘U‟,‟X‟,‟0‟,‟1‟,‟Z‟,‟W‟,‟L‟,‟H‟ 2、STD_LOGIC_ VECTOR:是定义在STD_LOGIC_1164 程序包中的标准
EDA技术实用教程
第2-1讲 VHDL语言的数据类型
什么是VHDL语言?
V HSIC (Very High Speed Integrated Circuit) Hardware Description Language 它是20世纪80年代初,由美国国防部为其超 高速集成电路VHSIC计划提出的硬件描述语言, 它支持硬件的设计、综合、验证和测试。 IEEE于1987年公布了VHDL的标准版本(IEEE STD 1076/1987),1993年重新公布了新的标准 (IEEE STD 1076-1993)。
VHDL数据类型
1、逻辑数据类型
(1)布尔代数(Boolean)型
定义位置:在std库的standard程序包中进行定义。 取值:FALSE,TRUE
(2)位(Bit)
定义位置:在std库的standard程序包中进行定义。 取值:0,1
(低电平,高电平 )
VHDL数据类型
(3)位矢量(Bit_Vector) 定义位置:在std库的standard程序包中进行定义。 位矢量是基于“位”数据类型的数组 Signal A: bit_vector(0 to 7); Signal B: bit_vector(7 downto 0); A<=“00001010”; B<=“00001010”;
1、常数(Constant)
定义格式为: Constant 常数名:数据类型 :=表达式; Constant width: integer := 7; Constant Vcc: REAL:=5.0; Constant D2:Std_Logic_Vector(width Downto 0):= ”0000”;
执行结果:x=c and a y=c and b
VHDL数据类型
STANDARD库
1、整数(INTEGER):-231~231-1
2、实数(REAL):1.0, 1.0E4, -5.2 3、位(BIT): „0‟和„1‟,可进行算术和逻辑运算。 4、位向量(BIT_VECTOR): 用双引号括起来 SIGNAL:BIT_VECTOR(3 DOWNTO 0); A<=“1110” 5、布尔(BOOLEAN):TURE 和FALSE 6、字符(CHARCTOR):用„ ’区分大小写。
clk: std_logic;
data: std_logic_vector(7 downto 0); width: integer :=7 ;
clk <= „1‟; data := “1010”; 三、定义区域
(非立即) (立即)
信号:实体、结构体、程序包
变量:进程、子程序Q<=a and b or c AFTER 10ns;
一维数组,数组中的每一个元素的类型都是以上定义的标准逻辑位 STD_LOGIC。 3、无符号(UNSIGNED):数据可执行算术运算和逻辑运算 4、带符号(SIGNED): 5、用户自定义
TYPE 数据类型 名称 IS 数据类型 RANGE 数据范围;
TYPE 数据类型 名称 IS (取值1,取值2,…..) 6、数组
逻辑数据类型赋值举例
2. 段赋值
Signal data : std_logic_vector(0 to 3); data(1 to 2) <=“10”; data(0) <=„1‟;
3. 块赋值
Signal a,b,c,d : std_logic; Signal data : std_logic_vector(3 downto 0);
1、赋值符为“:=”, 2、常数赋值后不能再改变。 3、常量的使用范围取决于其定义位置,可在Library、Entity、 Architecture、Process中进行定义,在结构体中赋值为全局 量,在PROCESS语句或子程序中赋值,属于局部量。 4、常数所赋值的数据类型必须与定义的数据类型一致。
Signal A: STD_LOGIC_VECTOR(0 to 7); Signal B: STD_LOGIC_VECTOR (7 downto 0); A<=“10100000”; B<=“00001010”; A(7)=? B(7)=?
逻辑数据类型赋值举例
1、直接整体赋值 Variable a , b : std_logic; Signal data : std_logic_vector(0 to 3); a: = „1‟; b: = „0‟; data<=“1100”; 一位值用单引号 多位值用双引号
“U” “0”
初始值 0
“X” “1”
不定 1
Z
“L”
高阻
弱0
“W” 弱不定
“H” 弱1
“-”
忽略
VHDL数据类型
(5)标准逻辑数组类型(Std_Logic_vector) 定义位置:在ieee库的std_logic_1164程序包中进行定义。
Bit_Vector与Std_Logic_vector的区别在于数组的 每一位前者为BIT型(0,1)后者为Std_Logic型
VHDL数据类型
时间(TIME)数据类型(仿真使用,不能综合)
TYPE time IS RANGE -2147483647 TO 2147483647 units fs ; -- 飞秒,VHDL中的最小时间单位 ps = 1000 fs ; -- 皮秒 ns = 1000 ps ; -- 纳秒 us = 1000 ns ; -- 微秒 ms = 1000 us ; -- 毫秒 sec = 1000 ms ; -- 秒 min = 60 sec ; -- 分 hr = 60 min ; -- 时 end units ;
VHDL数据对象(Data Objects)
3、 变量
变量是一个局部量,用于对中间数据的临时存储,并不一 定代表电路的某一硬件,没有物理意义。 定义格式为: Variable 变量名:数据类型[:=设定值]; 如:Variable a: integer := 0;
变量赋值语句的语法格式为: 目标变量名 := 表达式(设定值);
如: a := b and c;
VHDL数据对象(Data Objects)
1、变量只能在进程和子程序中定义和使用。
2、变量赋值没有时间延时。 3、变量不能放在进程的敏感信号表中。 4、变量所赋值的数据类型必须与定义的数据类型一致。
信号、变量、常数对比
一、定义
Signal
Variable Constant 二、赋值方式
VHDL数据类型
字符(CHARACTER)数据类型
单引号引起来,如:‘A’ ‘a’
字符分大小写。’A’不等于’a’
字符串(STRING)数据类型
双引号引起来字符串数组,一般用于程序的提示和结果说明, VARIABLE string_yin : STRING (1 TO 7 ) ; string_yin := "a b c d" ;

EDA技术实用教程
标记
1、标识符:由26个字母、数字以及下划线组成。以 字母打头,不能有两个连续的“_”,最后一个字符不 能是下划线。字母不区分大小写。最长是32个字符。
2、保留字 3、界符:语句以;结束,注释“-”,信号赋值“<=”,
变量赋值“:=”
VHDL数据对象(Data Objects)
相关文档
最新文档