赞
踩
1,VHDL中可被赋值的对象
VHDL中可以被赋值的对象有三种:signal,variable,constant。
signal <signal_name>:<type>:=<value>; --有初始值
signal <signal_name>:<type> --无初始值
//多个同类型信号的声明
signal <signal_name_list>:<type>; --多个信号名之间用逗号隔开
entity语法中port语法结构中的 in,out,buffer,inout 都是 signal 类型。library里的package语法中也可以声明signal。
variable<name>:<type>:=<value>; --有初始值
variable<name>:<type>; --无初始值
//声明多个同类型变量
variable<variable_name_list>:<type>; -- 多个变量之间用逗号隔开
//function 和 procedure语法结构中也可以声明 variable.
constant <name>:<type>:=<value>;
//注:常量不能单独赋值,只能在声明的同时初始化
2,命名规则
3,VHDL数据类型
signal a:std_logic;
a <= '1';
//定义3个位宽为3的数据 signal a,b,c:std_logic_vector(2 downto 0); c <= a and b; //逻辑向量的常数要用双引号括起来,并且逻辑向量的位宽必须大于1. signal a:std_logic_vector(3 downto 0); a <= B"1100"; //逻辑向量不支持十进制常数赋值,要用十进制常数对逻辑向量赋值,必须使用转换函数 a <= conv std_logic_vector(11,4); //boolean 布尔代数类型,定义如下 type BOOLEAN is (FALSE,TRUE); //bit 比特类型,也叫位类型 type BIT is('0','1'); //bit_vector 比特数组、位数组类型或比特向量。 type BIT_VECTOR is array (NATURAL range <>) of BIT;
type <enum_type_name> is (<element1>,<other elements>);
//假如有两个状态机状态:idle work
type myStateType is (idle,work);
signal stateBuf:myStateType;
myStateType <= work;
//语法如下
type<array_type_name> is array(<index_range>) of <element_type>;
//定义一个共有8个元素的数组,且元素类型是32位逻辑向量
typearrayofVector32 is array(7 downto 0)of std_logic_vector(31 downto 0);
type <record_name is record
<element_name>:<element_type>;
<other elements>
end record;
type byteWord is record
byte:std_logic_vector(7 downto 0);
word:std_logic_vector(15 downto 0);
end record;
signal tmp:byteWord
tmp.byte <=X"FO";
tmp,word<='1'&0"77007";
subtype <subtype_name is<type><range_definition>;
//例如,要定义一个大于或等于9小于或等于99的整数集合,可以这样描述:
subtypeingAnd99 is integer range 9 to 99;
conv_std_logic_vector(x,y) integer、unsigned、signed转换为std_logic_vector
conv_integer (x) std_logic_vector、unsigned、signed转换为integer
to_std_logic_vector(x) bit_vector转换为std_logic_vector
to_bit_vector(x) std_logic_vector转换为bit_vector
to_std_logic(x) bit转换为std_1ogic
to_bit(x) std_logic转换位bit
数值类属性 :'left, 'right, 'low, 'high, 'length
left表示数组的左边界;
right表示数组的右边界;
low表示数组的下边界;
high表示数组的上边界;
length表示数组的长度。
signal A:std_logic_vector(7 downto 0);
signal B:std_logic_vector(0 to 3);
A'left =7;A'right =0;A low =0;A high=7;A length=8;
B'left =0;B'right =3;B'low =0;B'high=3;B'length=4;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。