【正确答案】用行为描述方法实现。 LIBRARY ieee; USE ieee.Std_logic_1164.ALL; ENTITY xiti4701 IS PORT(nst:IN Std_logic;a:IN Std_logic_vector(3 Std_logic_vector(15 downto 0))); END xiti4701 ARCHITECTURE xiti4701 ar OF xiti4701 IS SIGNAL ny_i: Std_logic_vector(15 downto 0) BEGIN WITH a SELECT ny i<= "1111111111111110" WHEN "0000", "1111111111111101" WHEN "0001", "1111111111111011" WHEN "0010", "1111111111110111" WHEN "0011", "1111111111101111" WHEN "0100", "1111111111011111" WHEN "0101" "1111111110111111" WHEN "0110" "1111111101111111" WHEN "0111" "1111111011111111" WHEN "1000" "1111110111111111" WHEN "1001" "1111101111111111" WHEN "1010" "1111011111111111" WHEN "1011" "1110111111111111" WHEN "1100" "1101111111111111" WHEN "1101" "1011111111111111" WHEN "1110" "0111111111111111" WHEN "1111" "1111111111111111" WHEN OTHERS; ny<=ny i WHEN nst='0' ELSE "11ii111111111111"; end xiti4701_ar; ARCHITECTURE xiti4701_ar OF xiti4701 IS BEGIN PROCESS(a) BEGIN IF nst=' 1 ' THEN ny<="1111111111111111"; ELSIF a="0000" THEN ny<="1111111111111110"; ELSIF a="0001" THEN ny<: "1111111111111101"; ELSIF a= "0010" THEN ny<="1111111111111011"; ELSIF a="0011" THEN ny<="1111111111110111"; ELSIF a='0100" THEN ny<= "1111111111101111"; ELSIF a:"0101" THEN ny<= "1111111111011111"; ELSIF a="0110" THEN ny<= "1111111110111111"; ELSIF a="0111" THEN ny<="1111111101111111"; ELSIF a="1000" THEN ny<= "1111111011111111"; ELSIF a= "1001" THEN ny<= "iiiiIi0111111111" ; ELSIF a="1010" THEN ny<= "1111101111111111"; ELSIF a="1011" THEN ny<= "1111011111111111"; ELSIF a= "1100" THEN ny<= "1110111111111111"; ELSIF a= "1101" THEN ny<="1101111111111111"; ELSIF a = "1110" THEN ny<= "1011111111111111"; ELSE ny<="0111111111111111" ; END IF; END PROCESS;
【答案解析】
【正确答案】用结构描述方法设计:首先用VHDL设计74LS139;再用结构描述设计总电路。 LIBRARY ieee USE ieee. Std_logic_1164. ALL; LIBRARY lattice; USE lattice, components. ALL; ENTITY v74x139 IS PORT(nst: IN Std_logic; A: IN Std_logic_vector(1 downto 0) ; ny: OUT Std_logic_vector(3 downto 0)) END v74x139 ARCHITECTURE v74x139_ar OF v74x139 IS SIGNAL s0, s1, s2, s3, s4 .. Std_logic; COMPONENT inv PORT ( a0: IN Std_Iogie ; zn0 : OUT Std_logic) ; END COMPONENT ; COMPONENT nand3 PORT(a0, al, a2: IN Std_logic ; zn0 : OUT Std_logic) END COMPONENT: BEGIN U1:inv PORT MAP(nst,s0); U2:inv PORT MAP(A(0),s1); U3:inv PORT MAP(A(1),s2); U4:inv PORT MAP(s1,s3); U5:inv PORT MAP(s2,s4); U6:nand3 PORT MAP(s0,s1,s2,ny(0)); U7:nand3 PORT MAP(s0,s2,s3.ny(1)); U8:nand3 PORT MAP(s0,s1,s4,ny(2)); U9:nand3 PORT MAP(s0.s3,s4,ny(3)); 顶层电路的VHDL程序如下: LIBRARY ieee: USE ieee.Std_logic_11 64.ALL; USE work.components.ALL; ENTlTY xiti4702 IS GENERIC(n:Integer:=8); PORT(nst:IN Std_logic;a:IN Std_logic_vector(3 downto 0); ny:OUT Std_logic_vector(15 downto 0)); END xiti4702: ARCHITECTURE xiti4702_ar OF xiti4702 IS SIGNAL m:Std_logic_vector(3 downto 0); COMPONENT v74x139 PORT(nst:IN Std_logic;a:IN Std_logic_vector(1 downto 0);ny:OUT Std_logic_ve ctor(3downto 0)); END COMPONENT: BEGIN u1:v74x139 PORT MAP(nst,a(3 downto 2),m): u2:v74x139 PORT MAP(m(0),a(1 downto 0),ny(3 downto 0)); u3:v74x139 PORT MAP(m(1),a(1 downto 0),ny(7 downto 4)); u4:v74x139 PORT MAP(m(2),a(I downto 0),ny(11 downto 8)); u5:v74x139 PORT MAP(m(3),a(1 downto 0),ny(15 dowmo 12)); END xiti4702_ar; end v74x139_ar;