如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
上节回顾上节回顾-信号(Signals)3.变量(Variable)信号与变量赋值(差异)信号与变量赋值(差异)数据类型7891011121314【例9-21】SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;...a<=bANDc;--b、c相与后向a赋值,a、b、c的数据类型同属4位长的位矢量d<=eORfORg;--两个操作符OR相同,不需括号h<=(iNANDj)NANDk;--NAND不属上述三种算符中的一种,必须加括号l<=(mXORn)AND(oXORp);--操作符不同,必须加括号h<=iANDjANDk;--两个操作符都是AND,不必加括号h<=iANDjORk;--两个操作符不同,未加括号,表达错误a<=bANDe;--操作数b与e的位矢长度不一致,表达错误h<=IORL;--I的数据类型是位STD_LOGIC,而L的数据类型是...--布尔量BOOLEAN,因而不能相互作用,表达错误。1617181920212223241顺序赋值语句IF<条件>THEN<语句>;ELSIF<条件>THEN<语句>;ELSIF<条件>THEN<语句>;……ELSE<语句>;ENDIF;272829303132333435363738IF语句PORT(…z1,z2,z3,z4:outstd_logic);…SIGNALvalue:INTEGERRANGE0TO15;CASEvalueISWHEN0=>z1<=‘1’;--value=0时WHEN1|3=>z2<=‘0’;--value=1或3时WHEN4TO7|2=>z3<=‘1’;--value=4、5、6、7或2时WHENOTHERS=>z4<=‘1’;--value=8~15时ENDCASESIGNALvalue:INTEGERRANGE0TO15;SIGNALout1:STD_LOGIC;...CASEvalueIS--缺少以WHEN引导的条件句ENDCASE;...CASEvalueISWHEN0=>out1<='1';--value2~15的值未包括进去WHEN1=>out1<='0';ENDCASE...CASEvalueISWHEN0TO10=>out1<='1';--选择值中5~10的值有重叠WHEN5TO15=>out1<='0';ENDCASE;【例】(3-8译码器)libraryieee;useieee.std_logic_1164.all;entitydecode38isport(a,b,c,G1,G2,G2B:instd_logic;y:outstd_logic_vector(7downto0));endentitydecode38;architectureexofdecode38issignalindata:std_logic_vector(2downto0);beginindata<=c&b&a;process(indata,G1,G2,G2B)beginif(G1='1'andG2='0'andG2B='0')thencaseindataiswhen"000"=>y<="11111110";when"001"=>y<="11111101";when"010"=>y<="11111011";when"011"=>y<="11110111";when"100"=>y<="11101111";when"101"=>y<="11011111";when"110"=>y<="10111111";when"111"=>y<="01111111";whenothers=>y<="XXXXXXXX";endcase;elsey<="11111111";endif;endprocess;endarchitectureex;IF与Case的区别—if具有优先级4LOOP语句【例】SIGNALa,b,c:STD_LOGIC_VECTOR(1TO3);...FORnIN1To3LOOPa(n)<=b(n)ANDc(n);ENDLOOP;【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYp_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDp_check;A