欢迎来到天天文库
浏览记录
ID:58885372
大小:340.50 KB
页数:66页
时间:2020-09-30
《EDA 技术实用教程 第6章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、EDA技术实用教程第6章VHDL设计进阶6.1数据对象KX康芯科技6.1.1常数常数定义的一般表述如下:CONSTANT常数名:数据类型:=表达式;CONSTANTFBT:STD_LOGIC_VECTOR:="010110";--标准位矢类型CONSTANTDATAIN:INTEGER:=15;--整数类型6.1数据对象KX康芯科技6.1.2变量变量赋值的一般表述如下:目标变量名:=表达式定义变量的一般表述如下:VARIABLE变量名:数据类型:=初始值;VARIABLEa:INTEGERRANGE0
2、TO15;--变量a定义为常数,取值范围是0到5VARIABLEd:STD_LOGIC:=‘1’;--变量a定义为标准逻辑位数据类型,初始值是16.1数据对象KX康芯科技6.1.3信号SIGNAL信号名:数据类型:=初始值;目标信号名<=表达式AFTER时间量;SIGNALa,b,c,y,z:INTEGER;...PROCESS(a,b,c)BEGINy<=a+b;z<=c–a;y<=b;ENDPROCESS;6.1数据对象KX康芯科技6.1.4进程中的信号与变量赋值信号SIGNAL变量VARIABL
3、E基本用法用于作为电路中的信号连线用于作为进程中局部数据存储单元适用范围在整个结构体内的任何地方都能适用只能在所定义的进程中使用行为特性在进程的最后才对信号赋值立即赋值表6-1信号与变量赋值语句功能的比较KX康芯科技6.1.4进程中的信号与变量赋值【例6-1】...ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEQQ:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENQQ:=D1;ENDIF;ENDPROCESS;Q1<=Q
4、Q;END;6.1数据对象KX康芯科技6.1.4进程中的信号与变量赋值【例6-2】...ARCHITECTUREbhvOFDFF3ISSIGNALQQ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQQ<=D1;ENDIF;ENDPROCESS;Q1<=QQ;END;6.1数据对象KX康芯科技6.1.4进程中的信号与变量赋值【例6-3】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3I
5、SPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENA<=D1;B<=A;Q1<=B;ENDIF;ENDPROCESS;END;KX康芯科技6.1.4进程中的信号与变量赋值6.1数据对象图6-1例6-3的RTL电路图6-2D触发器电路KX康芯科技6.1.4进程中的信号与变量赋值【例6-
6、4】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEA,B:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENA:=D1;B:=A;Q1<=B;ENDIF;ENDPROCESS;END;KX康芯科技6.1.4进程中的信号与变量赋值【例6
7、-5】SIGNALin1,in2,e1,...:STD_LOGIC;...PROCESS(in1,in2,...)VARIABLEc1,...:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFin1='1'THEN...–-第1行e1<="1010";–-第2行...IFin2='0'THEN...–-第15+n行...c1:="0011";–-第30+m行...ENDIF;ENDPROCESS;6.1数据对象KX康芯科技【例6-6】LIBRARYIEEE;USEIEEE.STD_
8、LOGIC_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISsignalmuxval:integerrange7downto0;BEGINprocess(i0,i1,i2,i3,a,b)beginmuxval<=0;if(a='1')thenmuxval<=muxval+1;endif;if
此文档下载收益归作者所有