1,IF语句(续1) 例5.4采用两种不同F语句结构实现同一结构和功能的数据选择器 ENTITY if statement IS PORT (A,B,C,X:IN BIT_VECTOR(3 DOWNTO 0); Z:OUT BIT_VECTOR(3 DOWNTO 0)); END if statement; ARCHITECTURE example1 OF if_statement IS BEGIN PROCESS(A,B,C,X) BEGIN Z<=A; IF (X="1111")THEN Z<=B; ELSIF(X>"1000")THEN Z<=C; END IF; END PROCESS; END example1;
1. IF语句(续1) 例5.4 采用两种不同IF语句结构实现同一结构和功能的数据选择器。 ENTITY if_statement IS PORT (A, B, C, X: IN BIT_VECTOR(3 DOWNTO 0); Z: OUT BIT_VECTOR(3 DOWNTO 0)); END if_statement; ARCHITECTURE example1 OF if_statement IS BEGIN PROCESS (A, B, C, X) BEGIN Z <= A; IF (X="1111") THEN Z<=B; ELSIF (X>"1000") THEN Z<=C; END IF; END PROCESS; END example1;
1.IF语句(续2) 例5.4采用两种不同IF语句结构实现同一结构和功能的数据选择器 ARCHITECTURE example2 OF if statement IS BEGIN PROCESS(A,B,C,X) BEGIN IF(X="1111")THEN Z<=B; 4'h8 Z-3.0j ELSIF(X>"1000")THEN Z-7.41 X3.01 Z<=Ci As得UT B OUTO ELSE Equalo A3.01 MUX21 Z<=A; .01U7 MUX21 4'hF END IF; END PROCESS; END example2; 图5.4例5.4的RTL图
1. IF语句(续2) 例5.4 采用两种不同IF语句结构实现同一结构和功能的数据选择器。 ARCHITECTURE example2 OF if_statement IS BEGIN PROCESS (A, B, C, X) BEGIN IF (X="1111") THEN Z<=B; ELSIF (X>"1000") THEN Z<=C; ELSE Z <= A; END IF; END PROCESS; END example2; A[3..0] B[3..0] OUT A[3..0] B[3..0] OUT SEL A B OUT0 MUX21 SEL A B OUT0 MUX21 B[3..0] C[3..0] Z[3..0] Equal0 4' hF Z~[3..0] Z~[7..4] LessThan0 4' h8 A[3..0] X[3..0] 图5.4 例5.4 的RTL图
1.IF语句(续3) 例5.5利用IF语句的多分支嵌套实现四选一多路选择器。 LIBRARY IEEE; USE IEEE.STD LOGIC 1164.ALL; ENTITY MUX 41 IS PORT (S1,SO,A,B,C,D:IN STD LOGIC; Z:OUT STD_LOGIC ) END MUX 41; ARCHITECTURE BEHAV MUX41 OF MUX 41 IS BEGIN P1:PROCESS(S1,SO,A,B,C,D) BEGIN IF S1=0'AND SO='0'THEN Z<=A; ELSIF S1='0'AND SO='1'THEN Z<=B; ELSIF S1='1'AND SO='0'THEN Z<=C; ELSE Z<=D; END IF; END PROCESS P1; END BEHAV_MUX41;
1. IF语句(续3) 例5.5 利用IF语句的多分支嵌套实现四选一多路选择器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX_41 IS PORT (S1, S0, A, B, C, D : IN STD_LOGIC; Z : OUT STD_LOGIC ); END MUX_41; ARCHITECTURE BEHAV_MUX41 OF MUX_41 IS BEGIN P1: PROCESS (S1, S0, A, B, C, D) BEGIN IF S1='0' AND S0= '0' THEN Z <= A; ELSIF S1= '0' AND S0='1' THEN Z <= B; ELSIF S1= '1' AND S0='0' THEN Z <= C; ELSE Z <= D; END IF; END PROCESS P1; END BEHAV_MUX41;
1.IF语句(续4) 例5.6利用IF语句的多分支嵌套实现四选一多路选择器的错误示例。 P1:PROCESS(S1,SO,A,B,C,D) BEGIN IF S1='0'AND SO='0'THEN Z<=A; ELSIF S1='0'AND SO='1'THEN Z<=Bj ELSIF S1='1'AND SO='0'THEN Z<=Ci ELSIF S1='1'AND SO='1'THEN Z<=D; END IF; END PROCESS P1; S1 51 ® D B 9 图5.5例5.5的RTL图 图5.6例5.6的RTL图
1. IF语句(续4) 例5.6 利用IF语句的多分支嵌套实现四选一多路选择器的错误示例。 P1: PROCESS (S1, S0, A, B, C, D) BEGIN IF S1='0' AND S0= '0' THEN Z <= A; ELSIF S1= '0' AND S0='1' THEN Z <= B; ELSIF S1= '1' AND S0='0' THEN Z <= C; ELSIF S1= '1' AND S0='1' THEN Z <= D; END IF; END PROCESS P1; 图5.5 例5.5的RTL图 A S1 S0 B D C Z 0 0 0 1 1 1 图5.6 例5.6的RTL图 A S1 S0 B D C Z 0 0 0 1 1 1 D ENA PRE CLR Q latch
5.2.3 顺序控制语句 2.CASE语句 CASE表达式IS WHEN选择值1=>顺序语句: WHEN选择值2选择值3=>顺序语句: WHEN选择值_4TO选择值N=>顺序语句: VHEN OTHERS=>顺序语句: END CASE; 选择值可以有四种不同的表达方式: 单个普通数值,如选择值1: 并列数值,如选择值2选择值3,表示取值为选择值2或者选择值3: ·数值选择范围,如选择值4TO选择值N,表示取值可以是该范围中的 任意一个: 混合方式,以上三种方式的混合
5.2.3 顺序控制语句 2. CASE 语句 CASE 表达式 IS WHEN 选择值_1 =>顺序语句; WHEN 选择值_2|选择值_3 =>顺序语句; WHEN 选择值_4 TO选择值_N =>顺序语句; WHEN OTHERS=>顺序语句; END CASE; 选择值可以有四种不同的表达方式: •单个普通数值,如选择值_1; •并列数值,如选择值_2|选择值_3,表示取值为选择值_2或者选择值_3; •数值选择范围,如选择值_4 TO 选择值_N,表示取值可以是该范围中的 任意一个; •混合方式,以上三种方式的混合