Variable 变量名:数据类型:= 表达式
例:variableresult : std_logic:= ‘0’;
2、VHDL数据对象(Data Objects)
(1)常数(Constant)
固定值,不能在程序中被改变; 增强程序的可读性,便于修改程序;
可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定。
Constant 常数名:数据类型:= 表达式
例:Constantdata_bus_width: integer := 8;
关于信号的使用规则说明:
“
:=
”——表示对信号直接赋值,可用来表示信号初始值
不产生延时;
“<= ”——表示代入赋值,是变量之间信号的传递,代入
赋值允许产生延时。
例:
T1<=T2 after 20ns;
配套清华大学出版社
3、VDHL数据类型
枚举(Enumeration)
标量类型整数(Integer)(Scalar)
浮点(Float)按数据类型的性质分
物理(Physical)
复合类型Composite)
③IEEE1164标准中预定义了一个枚举类型:std_logic(书P222)
例:Type std_logicis ‘W’, ‘L’, ‘H’, ‘-’);
Signala :std_logic;
¾std_logic类型能比较全面地包括数字电路中信号会
出现的几种状态,因此一般情况把这种类型代替
bit
(1)枚举
①列举数据对象可能存在的值,一般用于定义状态机的状态例:Typestatesis (idle, start, running, pause, stop);
Signal current_state: states;
②IEEE1076标准中预定义了两个枚举类型:boolean和bit例:Type booleanis (False, True);
Type bit
is (‘0’, ‘1’) ;
Signala :bit;
(2)整数、浮点数
①
方便用于数值方面的运算:加减乘除;②整数范围:-231-1 ~231–1,经常用于计数器;③实数范围:-1.0E38~+1.0E38,不被Max+PLusII
支持
例:Variable a : integer range–255 to+255;
(4)Array Types
①多个相同类型成员组成的队列,一般用于定义数据总
线、地址总线等
例:Signala: std_logic_vectorr(7 downto0);
a <= B“00111010”;
a <= X “3A”;②可自定义复合类型
例:Typeword is array(15 downto0) of bit;
Signal b : word;
Typetable8_4 is array(0 to 7, 0 to 3) of bit;
配套清华大学出版社
(5)Record Types
①相同或不同类型的元素组成,类似C中的结构;②具有模型抽象能力,用于描述一个功能模块。
例:Typeiocellis record
Enable :bit;
DataBus:bit_vector(7 downto0);
end record;singalbus : iocell;bus.Enable<= ‘1’;
bus.DataBus<= “00110110”;
(2)信号(Signal)类属性函数
event:返回boolean值,信号发生变化时返回true;last_value:返回信号发生此次变化前的值;
last_event:返回上一次信号发生变化到现在变化的时间
间隔;
delayed[(时延值)]: 使信号产生固定时间的延时并返回;stable[(时延值)]: 返回boolean, 信号在规定时间内没有变
化返回true;
transaction: 返回bit类型,信号每发生一次变化,返回
值翻转一次。
4、VHDL运算符
(
1)逻辑运算符
AND、OR、NAND、NOR、XOR、NOT
(2)关系运算符
=、/=
、<、>、<=、>=
(3)算术运算符
参见书P278+、-、*、/
表5-3-1
(
4)并置
(连接)运算符
&
(1)数值类属性函数
left:
返回左边界值;
right:
返回右边界值;high:返回上限值;low:
返回下限值;
length:返回总长度。
例:
type count is integer range 0 to 127;–count’left= 0; –count’right= 127;–count’high= 127;
–count’low= 0;
–count’length= 128;
配套清华大学出版社
例:delay和stable的应用。
(1)A <= B’delayed(10ns);
——B延时10ns后赋给A
等效于
A <= B after 10ns;
(2)if (B’stable(10ns) ) then…
——判断
B在10ns
中是否发生变化
例:试用when-else命令实现下列真值表。
输入输出xyZ0000111011
1
¾VHDL基本语句
1、并行语句(Concurrent)
z并行语句同时执行,不分位置的先后顺序z
并行语句包括:
–直接设置语句“<=”–With-select-when–
When-else
实现优先级编码器
encode <= “111”when D(7) = ‘1’else
“110”when D(6) = ‘1’else“101”when D(5) = ‘1’else“100”when D(4) = ‘1’else“011”when D(3) = ‘1’else“010”when D(2) = ‘1’else“001”when D(1) = ‘1’else“000”when D(0) = ‘1’else“000”;
配套清华大学出版社
2、顺序语句(Sequential)
zProcess,Function,Procedure等中的语句都是
顺序执行;
zProcess与Process之间,与其他并行语句之间都
是并行的关系;
z常用的顺序语句:If-then-else
Case-when
z断言语句:ASSERT
例:试用with-select-when命令实现下列真值表。
输入输出x
yZ
0000111
011
1
配套清华大学出版社
例:4选1数据选择器
ENTITY mux41 IS
PORT (en,a0,a1,d0,d1,d2,d3: IN Bit;
F: OUT Bit);
END mux41;
ARCHITECTURE bch_mux41 OF mux41 ISBEGIN
PROCESS(en,a1,a0,d3,d2,d1,d0)BEGIN
IF(en=0) THEN
IF(a1=’0’AND a0=’0’) THEN
f<= d0;
IF(en=’0’) THEN
CASS tmp_INIS
WHEN “00”=>tmp_OUT<=“1110”;WHEN “01”=>tmp_OUT<=“1101”;WHEN “10”=>tmp_OUT<=“1011”;WHEN “11”=>tmp_OUT<=“0111”;
WHEN OTHERS=>tmp_OUT<=“1111”;END CASS;ELSE
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说医药卫生VHDL与数字电路设计(2)在线全文阅读。
相关推荐: