当前位置:文档之家› VHDL基础入门学习

VHDL基础入门学习

第二章 VHDL基本数据类型与命令语句 第二章 VHDL基本数据类型与命令语句2.1 VHDL基本数据类型 2.2 VHDL数据对象定义 2.3 并行同时语句( When-Else, With-Select ) 2.4 顺序语句一(Process,If-Else,Wait) 2.5 顺序语句二(Case-When,Null)12.1 基本数据类型 (逻辑信号、数值信号) 在VHDL中每一个数据对象都必须具有确 定的数据类型。

只有在相同数据类型的数据对 象之间,才能进行数据交换。

⑴ ⑵ ⑶ ⑷ ⑸ 布尔代数数据类型(BOOLEAN); 位逻辑数据类型(BIT); 位逻辑序列数据类型(BIT_VECTOR); 标准逻辑数据类型(STD_LOGIC); 标准逻辑序列数据类型(STD_LOGIC _VECTOR);2⑹ ⑺ ⑻ ⑼ ⑽整数数据类型(INTEGER); 实数数据类型(REAL); 字符串数据类型(STRING); 字符数据类型(CHARACTER); 无符号整数数据类型(UNSIGNED);今后在逻辑设计中最常用到两种:标准逻辑 数据类型 STD_LOGIC 和标准逻辑序列数据类型 STD_LOGIC _VECTOR。

其语法格式:在实体中是跟在端口模式 (方 向) 后面,在结构体中是跟在数据对象后面。

32.1.1 逻辑信号的数据类型 ⑴ 布尔代数数据类型(BOOLEAN) 布尔代数数据类型(BOOLEAN)属于双值数据 类型,其值只有“TRUE”(真)、“FALSE”(假) 两种 状态,常用来表示关系运算和关系运算的结果。

⑵ 位逻辑数据类型(BIT) 位逻辑数据类型(BIT)也属于双值数据类型, 其值只有 ‘ 1 ’、 ' 0 ' (用单引号表示)两种状态,常 用来表示某一管脚的逻辑值。

4⑶ 标准逻辑数据类型(STD_LOGIC) 标准逻辑数据类型 (STD_LOGIC) 也属于双值 数据类型,但它比“BIT”对于数字逻辑电路的逻辑 特性的描述更完整、更真实。

因此在VHDL中通常 都是采用这种数据类型。

它的取值共有九种形式: ① ' U ' —— 初始值; ② ' X ' —— 不定值; ③ ' 0 ' —— 低电位0; ④ ' 1 ' —— 高电位1; ⑤ ' Z ' —— 高阻抗; ⑥ ' W ' —— 弱信号不定值; ⑦ ' L ' —— 弱信号0; ⑧ ' H' —— 弱信号1; ⑨ ' – ' —— 不可能情况,不必理会。

5⑷ 标准逻辑序列数据类型(STD_LOGIC_VECTOR) 标准逻辑序列数据类型 (STD_LOGIC_ VECTOR) 也属于双值数据类型,但它描述 的是一组序列信号的数据类型。

如:数据总 线、地址总线等(排线)上面的数值。

⑸ 位逻辑序列数据类型(BIT_VECTOR) 位逻辑序列数据类型 (BIT_VECTOR) 也 属于双值数据类型,其值只有"1"、"0" (用双 引号表示) 两种状态,常用来表示某一组管脚 的位逻辑值。

6⑹ 逻辑信号的运算 配合逻辑信号的基本运算符,通常包含有两种: ① 逻辑运算符and与门or或门nand与非门nor或非门xor异或门xnor同或门not非门② 关系运算符=等于/=不等于<小于<=小于等于>大于>=大于等于注意:“<=”符号与赋值符号相同,由上下文来区别。

72.1.2 数值信号的数据类型 ⑴ 整数数据类型(Integer) 整数数据类型的数有正整数、负整数和0,在 VHDL中其取值范围是 -2147483647~2147483646。

即: ( −2 31 ) ~ ( 2 31 − 1) 。

⑵ 无符号整数数据类型(UNSIGNED); 无符号整数数据类型的数与标准逻辑序列相 似,定义时也必须指明这个无符号整数的位数。

[例1] 假若A中的内容是3(11)2,B中的内容是2(10)2,试 分析下程序运行后,C和D中的内容是多少?8LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CH2_1_3 PORT(A : B C D END CH2_1_3; is IN Std_Logic_Vector(1 DOWNTO 0); : IN Unsigned(1 DOWNTO 0); : OUT Unsigned(7 DOWNTO 0); : OUT Std_Logic_Vector(1 DOWNTO 0));ARCHITECTURE a OF CH2_1_3 IS SIGNAL E,F,G : Unsigned(1 DOWNTO 0); SIGNAL H : Unsigned(7 DOWNTO 0);9BEGIN E <= Unsigned (A); F <= B; H(1 DOWNTO 0) <= E+F; H(3 DOWNTO 2) <= E-F; H(7 DOWNTO 4) <= E*F; G(0) <= E(0) AND F(0); G(1) <= E(1) OR F(1); C <= H; D <= Std_Logic_Vector (G); END a;--(1) --(2) --(3) --(4) --(5) --(6) --(7) --(8) --(9)因为A中的内容是3(11)2,B中的内容是2(10)2,故: ① E <=Unsigned (A) 后, E=3 (11)2 ; ② F <= B 后, F=2 (10)2 ;10BEGINE <= Unsigned (A);--(1)F <= B;--(2)H(1 DOWNTO 0) <= E+F; --(3)H(3 DOWNTO 2) <= E-F; --(4)H(7 DOWNTO 4) <= E*F; --(5)G(0) <= E(0) AND F(0); --(6)G(1) <= E(1) OR F(1);--(7)C <= H;--(8)D <= Std_Logic_Vector(G);--(9) END a;BEGINE <= Unsigned (A);--(1)F <= B;--(2)H(1 DOWNTO 0) <= E+F; --(3)H(3 DOWNTO 2) <= E-F; --(4)H(7 DOWNTO 4) <= E*F; --(5)G(0) <= E(0) AND F(0); --(6)G(1) <= E(1) OR F(1);--(7)C <= H;--(8)D <= Std_Logic_Vector(G);--(9) END a;BEGINE <= Unsigned (A);--(1)F <= B;--(2)H(1 DOWNTO 0) <= E+F; --(3)H(3 DOWNTO 2) <= E-F; --(4)H(7 DOWNTO 4) <= E*F; --(5)G(0) <= E(0) AND F(0); --(6)G(1) <= E(1) OR F(1);--(7)C <= H;--(8)D <= Std_Logic_Vector(G);--(9) END a;BEGINE <= Unsigned (A);--(1)F <= B;--(2)H(1 DOWNTO 0) <= E+F; --(3)H(3 DOWNTO 2) <= E-F; --(4)H(7 DOWNTO 4) <= E*F; --(5)G(0) <= E(0) AND F(0); --(6)G(1) <= E(1) OR F(1);--(7)C <= H;--(8)D <= Std_Logic_Vector(G);--(9) END a;A中的内容是3(11)2,B中的内容是2(10)2,仿真的结果是:C中的内容为65,D中的内容为2。

注意1、无符号整数(Unsigned)与标准逻辑序列(Std_Logic_Vector)信号之间是可以作转换的;2、无符号整数(Unsigned)信号的序列编号是由高至低的,所以一定要使用Downto的序列形式来定义。

Constant 常数名称:数据类型:= 设置值;注意:设置值一旦设定,就不能再更改。

Signal 信号名[,信号名…]: 数据类型[:=表达式];LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CH2_2_1 isPORT( A : IN Std_Logic;B : IN Std_Logic;C : IN Std_Logic;F : OUT Std_Logic); END CH2_2_1;ABCDEFARCHITECTURE a OF CH2_2_1 IS SIGNAL D, E : Std_Logic;BEGIND <= A and B;--A 与B 后送入DE <= not C;--将C 取非后送入EF <= D or E;--D 或E 后送到FEND a;AB C D E FVariable 变量名[,变量名…]: 数据类型[:=表达式];补充:信号和变量的区别LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CH2_2_2 isPORT( IP : IN Std_Logic;CP : IN Std_Logic;OP : OUT Std_Logic);END CH2_2_2;ARCHITECTURE a OF CH2_2_3 ISSignal D: Std_Logic;BEGINProcess (CP,IP) --(1) BeginIF CP'EVENT AND CP ='1' THEN --(2)D <= IP ; --(3)OP <= D ; --(4) END IF ;End Process ;END a;ARCHITECTURE a OF CH2_2_3 ISSignal D: Std_Logic;BEGINProcess (CP,IP) --(1) BeginIF CP'EVENT AND CP ='1' THEN --(2)D <= IP ; --(3)OP <= D ; --(4) END IF ;End Process ;END a;将IP的变化暂存延迟了一个周期左右的时间后才传递到了变量D。

相关主题