资源描述:
《VHDL顺序语句SequentialStatem》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章VHDL顺序语句(SequentialStatement)Process,Function,Procedure中的语句都是顺序执行,以Process为例Process与Process之间,与其他并行语句之间都是并行的关系4.1、赋值语句1.顺序信号赋值语句信号名<=赋值源;赋值符号左边必须是信号名,但不能是端口声明中指定为in的信号。右边表达式中可以出现任意对象类,但不能出现端口声明中指定为out的信号。 例:B<=A;--惯性延迟,无时间延迟子句,即δ延迟D<=Cafter5ns;--传输延迟,指定延迟时间2.变量赋
2、值语句变量赋值的含义是:用计算赋值符号右边的表达式所得新值取代变量原来的值。变量赋值的语法形式为: 变量名:=表达式;3、赋值目标a:=‘1’;C1:=“1100”;G(2)<=y;H(I)<=z;F(1to4):=“1001”;SIGNALa,b,c,d:STD_LOGIC;SIGNALS:STD_LOGIC_VECTOR(1TO4);…VARIABLEe,f:STD_LOGIC;VARIABLEg:STD_LOGIC_VECTOR(1TO2);VARIABLEh:STD_LOGIC_VECTOR(1TO4);S<=(‘0
3、’,‘1’,‘0’,‘0’);(a,b,c,d)<=s;--a<=‘0’;b<=‘1’;c<=‘0’;d<=‘0’;…(3=>e,4=>f,2=>g(1),1=>g(2)):=h;--g(2):=h(1);g(1):=h(2);e:=h(3);f:=h(4);4.2流程控制结构VHDL为用户提供了若干控制进程内部执行流的结构,可分为条件控制和循环控制两种。IF语句CASE语句LOOP语句NEXT语句EXIT语句1.if语句(条件控制语句)if条件表达式then顺序语句endif;if条件表达式then顺序语句else顺序语句en
4、dif;if条件表达式then顺序语句elsif条件表达式then顺序语句else顺序语句endif;求取最大值BEGINIF(a
5、)beginif(clk’eventandclk=‘1’)thenif(t=‘1’)thenq<=not(q);elseq<=q;endif;endif;endprocess;ENTITYmulISPORT(a,b,sel:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINprocess_a:PROCESS(a,b,selx)BEGINIF(sel=‘0’)THENtemp<=a;ELSEtemp<=b;ENDIF;data_out<=t
6、emp;ENDPROCESSprocess_a;case语句的一般形式为:case值表达式iswhen选择值=>语句;when选择值=>语句;…[whenothers=>语句;]endcase;case语句选择项的要求: 选择唯一,覆盖全集。2、case语句选择值的表达方式单个普通数值8数值选择范围(2to4)并列数值3
7、5
8、8混合方式LIBRARYieee;USEieee.std_logic_1164.all;ENTITYmux41isPORT(s1,s2,a,b,c,d:INSTD_LOGIC;z:OUTSTD_LO
9、GIC);ENDmux41;ARCHITECTUREactivOFmux41ISSIGNALs:STD_LOGIC_VECTOR(1DOWNTO0);BEGINs<=s1&s2;PROCESS(s,a,b,c,d)BEGINCASEsISWHEN“00”=>z<=a;WHEN“01”=>z<=b;WHEN“10”=>z<=c;WHEN“11”=>z<=d;WHENOTHERS=>z<=‘x’;ENDCASE;ENDPROCESS;ENDactiv;azmuxcbdS1,s22例:signalC:Integerrange1to20
10、; signalOut1:('0','1','2','3'); process(C) begin caseCis when1=>Out1<='0'; --C=1 when2
11、4
12、8=>Out1