EDA技术实用教程 第9章 VHDL基本语句
EDA技术实用教程 第9章 VHDL基本语句
K述列 91顺序语句 91.1赋值语句 之之信号赋值语句 变量赋值语句 贼值目标 赋值符号 赋值源 912IF语句
KX 康芯科技 9.1 顺序语句 9.1.1 赋值语句 9.1.2 IF 语句 信号赋值语句 变量赋值语句 赋值目标 赋值符号 赋值源
K述列 91顺序语句 CASE语句的结构如下: 913CASE语句 CASE表达式Is When选择值=>顺序语句; When选择值=>顺序语句; END CASE >选择值可以有四种不同的表达方式 多条件选择值的一般表达式为:单个普通数值,如6 数值选择范围,如(2To4),表示取值为 选择值[选择值] 2、34。 并列数值,如35,表示取值为3或者5 混合方式,以上三种方式的混合
KX 康芯科技 9.1 顺序语句 9.1.3 CASE语句 CASE语句的结构如下: CASE 表达式 IS When 选择值 => 顺序语句; When 选择值 => 顺序语句; ... END CASE ; 多条件选择值的一般表达式为: 选择值 [ |选择值 ] 选择值可以有四种不同的表达方式: 单个普通数值,如6。 数值选择范围,如(2 TO 4),表示取值为 2、3或4。 并列数值,如35,表示取值为3或者5。 混合方式,以上三种方式的混合
【例9-1】 工工 BRARY工; USE IEEE STD LOGIC 1164.ALL: ENTITY mux41 IS ORT(s4, s3, s2, s1: IN STD LOGICi z4, z3, z2, Z1: OUT STD LOGIC) END mux41 ARcH工 TECTURE ad七 1v OF mUX41工s SIGNAL sel: INTEGER RANGE 0 To 15; BEGIN PROCESs (sel s4, s3, s2, s1) BEGIN se1<=0; 输入初始值 IF (sl =1 THEN sel < sel+l i ElSIF (s2 =1)THEN sel < sel+2 ElSIF ( s3 =1 THEN sel < sel+4 i ElSIF (s4=l')THEN sel < sel+8 i ELSE NULL 注意,这里使用了空操作语句 END工F; z1<=·0;z2<=10";z3<="0';z4<="0"; 输入初始值 CASE sel IS WHeN o z1<=11!; 当se]=0时选中 接下页
KX 康芯科技 【例9-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (s4,s3, s2,s1 : IN STD_LOGIC; z4,z3, z2,z1 : OUT STD_LOGIC); END mux41; ARCHITECTURE activ OF mux41 IS SIGNAL sel : INTEGER RANGE 0 TO 15; BEGIN PROCESS (sel ,s4,s3,s2,s1 ) BEGIN sel<= 0 ; -- 输入初始值 IF (s1 ='1') THEN sel <= sel+1 ; ELSIF (s2 ='1') THEN sel <= sel+2 ; ELSIF (s3 ='1') THEN sel <= sel+4 ; ELSIF (s4 ='1') THEN sel <= sel+8 ; ELSE NULL; -- 注意,这里使用了空操作语句 END IF ; z1<='0' ; z2<='0'; z3<='0'; z4<='0'; --输入初始值 CASE sel IS WHEN 0 => z1<='1' ; -- 当sel=0时选中 接下页
康芯科技 MHEN13=>z2<=11 当se为1或3时选中 ⅦHEN4To72=>z3<=11"; 当se为2、4、5、6或T时选中 WHEN OTHERS =>z4<=1i 当se为8~15中任一值时选中 END CASE END PROCESS END activ 【例92】 SIGNAL value INTEGER RANGE 0 TO 15 SIGNAL out1: STD LOGIC CASE value IS 缺少以EN引导的条件句 END CASE CASE value Is When O ou七1<=11 --va1ue2~15的值未包括进去 WheN 1=> out1<=I0 END CASE CASE value Is WHEN0To10=。ut1<=11!; 选择值中5~10的值有重叠 WHEN 5 To 15 = outl<=0i END CASE;
KX 康芯科技 WHEN 13 => z2<='1' ; -- 当sel为1或3时选中 WHEN 4 To 72 => z3<='1'; -- 当sel为2、4、5、6或7时选中 WHEN OTHERS => z4<='1' ; -- 当sel为8~15中任一值时选中 END CASE ; END PROCESS ; END activ ; 【例9-2】 SIGNAL value : INTEGER RANGE 0 TO 15; SIGNAL out1 : STD_LOGIC ; ... CASE value IS -- 缺少以WHEN引导的条件句 END CASE; ... CASE value IS WHEN 0 => out1<= '1' ; -- value2~15的值未包括进去 WHEN 1 => out1<= '0' ; END CASE ... CASE value IS WHEN 0 TO 10 => out1<= '1'; -- 选择值中5~10的值有重叠 WHEN 5 TO 15 => out1<= '0'; END CASE;