资源描述:
《第三讲 vhdl顺序语句》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、顺序语句1、顺序语句的特点:每一条顺序语句的执行顺序都和它们的书写顺序基本一致。2、出现的位置:只能出现在进程和子程序中,子程序包括函数(Function)和过程(Procedure)顺序语句赋值语句IF语句CASE语句FOR-LOOP语句NEXT-LOOP语句EXIT-LOOP语句NULL语句ASSERT语句赋值语句赋值语句包括变量赋值语句和信号赋值语句,前者的赋值是立刻发生的,后者的赋值发生在一个进程结束的时刻,并延时进行。变量赋值目标:=赋值源信号赋值目标<=赋值源在同一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值源的值,其前面相同的赋值目标不做
2、任何变化。注:信号和变量赋值Signals1,s2:std_logic;Signalsec:std_logic_vector(0to7);Process(s1,s2)Variablev1,v2:std_logic;Beginv1:=‘1’;v2:=‘1’;s1<=‘1’;s2<=‘1’;sec(0)<=v1;sec(1)<=v2;sec(2)<=s1;sec(3)<=s2;v1:=‘0’;v2:=‘0’;s2<=‘0’;sec(4)<=v1;sec(5)<=v2;sec(6)<=s1;sec(7)<=s2;ENDPROCESS“01000111”sec=IF语句根据条件进行相应赋
3、值操作语法格式:IfexpressionThenstatement;ElsifexpressionThenstatement;ElsifThenstatement;elsestatement;Endif;例1:Process(A)BeginIfA=”00”thenf<=D0;elsifA=”01”thenf<=D1;elsifA=”10”thenf<=D2;elsef<=D3;endif;endprocess;四选一数据选择器A1A2D0D1D2D3四选一数据选择器YA1A2Y00011011D0D1D2D3(1)IF的门闩控制格式:IF条件THEN顺序执行语句ENDIF;例:I
4、F(a>b)THENout<=‘1’;ENDIF;格式:IF条件THEN<顺序执行语句甲>ELSE<顺序执行语句乙>ENDIF;(2)二选一控制的IF语句例:IF(a>b)THENout<=‘1’;ELSEout<=‘0’;ENDIF;(3)多选择控制的IF语句格式:IF条件THEN<顺序执行语句1>ELSIF条件THEN<顺序执行语句2>:ELSIF条件THEN<顺序执行语句n>ELSE<顺序执行语句n+1>ENDIF;例:Signala,b,c,p1,p2,z:bit;IF(p1=‘1’)THENz<=a;ELSIF(p2=‘0’)THENz<=b;ELSEz<=c;ENDI
5、F;?选择方式cbaa画线部分意思:ELSIF(p1=‘0’andp2=‘0’)注例题2:8线-3线优先编码器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoderISPORT(I:INSTD_LOGIC_VECTOR(0TO7)Y:OUTSTD_LOGIC_VECTOR(1TO3));ENDcoder;实体设计功能:设计元件外观ARCHITECTUREa1orcoderISBeginIF(I(7)=‘1’)THENY<=“111”;ELSIF(I(6)=‘1’)THENY<=“110”;ELSIF(I(5)=‘1’)THENY<=“
6、101”;ELSIF(I(4)=‘1’)THENY<=“100”;ELSIF(I(3)=‘1’)THENY<=“011”;ELSIF(I(2)=‘1’)THENY<=“010”;ELSIF(I(1)=‘1’)THENY<=“001”;ELSEY<=“000”;ENDa1;结构体设计功能:描述输入和输出之间的逻辑关系ENDIF;CASE语句格式:CASE表达式ISWHEN条件表达式=>顺序处理语句WHEN条件表达式=>顺序处理语句…ENDCASE;例题1:用CASE语句设计四选一数据选择器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITYmux
7、41ISPORT(s1,s2:instd_logic;a,,b,c,d:instd_logic;z:outstd_logic);ENDENTITYmux41;ARCHITECTUREactivOFmux41ISSIGNALs:std_logic_vector(1downto0);BEGINS<=s1&s2PROCESS(s1,s2,a,b,c,d)BEGINCASEsISWHEN“00”=>z<=a;WHEN“01”=>z<=b;WHEN“10”=>z<=c;WHEN“11”=>