配色: 字号:
VHDL数据对象应用
2020-04-13 | 阅:  转:  |  分享 
  
EDA技术实用教程第8章VHDL设计深入第8章VHDL设计深入8.1、数据对象?8.2、含高阻输出的电路设计?8.3、顺序
语句8.4、并行赋值语句讨论8.5、IF语句概述8.6、仿真延时8.7、VHDL的描述风格8.1数据对象变量variable
常量constant信号signal8.1.1常数1、在程序中,常数是一个恒定不变的值,具有全局性意义。2、常数定义的一般表
述如下:CONSTANT常数名:数据类型:=表达式;CONSTANTFBT:STD_LOGIC_VECTOR:
="010110";--标准位矢类型CONSTANTDATAIN:INTEGER:=15;--整数类型
3、常数的可视性规则。8.1.2变量定义变量的一般表述如下:VARIABLE变量名:数据类型:=初始值;V
ARIABLEa:INTEGERRANGE0TO15;--变量a定义为常数,取值范围是0到5VARIABLE
d:STD_LOGIC:=‘1’;--变量a定义为标准逻辑位数据类型,初始值是1变量赋值的一般表述如下:目标变量名
:=表达式变量是一个局部量,且赋值是立即发生的8.1数据对象8.1.3信号SIGNAL信号名:数据类型:=
初始值;目标信号名<=表达式AFTER时间量;SIGNALa,b,c,y,z:INTEGER;...PRO
CESS(a,b,c)BEGINy<=a+b;z<=c–a;y<=b;ENDPROCESS;
8.1数据对象常量、信号、变量区别常量:电源,地,恒定逻辑值等常数。变量:某些值的载体,存储单元,常用于描述算法。信号
:物理设计中的硬连接线,包括输入输出端口。信号与常数相当于全局变量,变量相当于局部变量,变量只能存在于PROCESS,FUNCT
ION,PROCEDUCE中。不能带出PROCESS,FUNCTION,PROCEDUCE,传送出去,而信号可以。8.1数据对
象8.1.4进程中的信号与变量赋值信号SIGNAL<=变量VARIABLE:=定义位置结构体中进程或子程序中基本用法用于作
为电路中的信号连线用于作为进程中局部数据存储单元,内部数据运算作用范围在整个结构体内的任何地方都能适用只能在所定义的进程或子程序内
部使用赋值行为延迟赋值,在进程的最后才对信号赋值立即赋值8.1数据对象8.1.4进程中的信号与变量赋值【例8-1】LI
BRARYIEEE;USEIEEE.STD_LOGIC_1164.all;ENTITYDFFVISPORT(CLK
,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhv
OFDFF3ISBEGINPROCESS(CLK)VARIABLEQQ:STD_LOGIC;BEGIN
IFCLK''EVENTANDCLK=''1''THENQQ:=D1;ENDIF;Q1<=QQ;
ENDPROCESS;END;8.1数据对象8.1.4进程中的信号与变量赋值【例8-2】LIBRARYIE
EE;USEIEEE.STD_LOGIC_1164.all;ENTITYDFFSISPORT(CLK,D1:IN
STD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3
ISSIGNALQQ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK''EV
ENTANDCLK=''1''THENQQ<=D1;ENDIF;ENDPROCESS;Q1<=Q
Q;END;8.1.4进程中的信号与变量赋值【例8-3】LIBRARYIEEE;USEIEEE.STD_L
OGIC_1164.ALL;ENTITYDFF3SISPORT(CLK,D1:INSTD_LOGIC;Q
1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3SISSIGN
ALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK''EVENTAND
CLK=''1''THENA<=D1;B<=A;Q1<=B;ENDIF;ENDPROCES
S;END;8.1数据对象8.1.4进程中的信号与变量赋值例8-3的RTL电路8.1.4进程中的信号与变量
赋值【例8-4】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDF
F3VISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);EN
D;ARCHITECTUREbhvOFDFF3VISBEGINPROCESS(CLK)VARIABLEA
,B:STD_LOGIC;BEGINIFCLK''EVENTANDCLK=''1''THENA:=
D1;B:=A;Q1<=B;ENDIF;ENDPROCESS;END;8.1数据对象8
.1.4进程中的信号与变量赋值例8-4的RTL电路【例8-6】LIBRARYIEEE;USEIEEE.STD_LOGIC
_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC
;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISsi
gnalmuxval:integerrange7downto0;BEGINprocess(i0,i1,i2,i3,a
,b)beginmuxval<=0;if(a=''1'')thenmuxval<=muxval+1;en
dif;if(b=''1'')thenmuxval<=muxval+2;endif;casemuxval
iswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when
3=>q<=i3;whenothers=>null;endcase;endprocess;ENDbod
y_mux4;8.1.4进程中的信号与变量赋值例8-6的RTL电路【例8-7】LIBRARYIEEE;USEIEEE.
STD_LOGIC_1164.ALL;ENTITYmux4vISPORT(i0,i1,i2,i3,a,b:IN
STD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OF
mux4vISBEGINprocess(i0,i1,i2,i3,a,b)variablemuxval:integerr
ange7downto0;beginmuxval:=0;if(a=''1'')thenmuxval:=muxv
al+1;endif;if(b=''1'')thenmuxval:=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;endcase;endprocess;ENDbody_mux4;8.1.4进程中的信号与变量赋值例8-7的RTL电路
献花(0)
+1
(本文系大音善士首藏)