【正确答案】7447的VHDL程序如下:
LIBRARY ieee;
USE ieee.Std_logic_1164.ALL;
LIBRARY lattice;
USE lattice.components.ALL;
ENTITY v7447 IS
PORT(nit,nrbi:IN Bit;bi_rbo:INOUT Bit;di:IN Bit_vector(3 downto 0);a,b,C,d,e,f,g:OUT Bit):
END v7447:
ARCHITECTURE v7447_ar OF v7447 IS
SIGNAL ny_i:BiLvector(6 downto 0);
BEGIN
PROCESS(bi_rbo,nit,nrbi,di)
BEGIN
IF bi_rbo='1' THEN
IF nlt='l' THEN
CASE di IS
WHEN "0000"=>
IF nrbi='0' THEN
ny_i<="1111111";bi_rbo<='1';
ELSE
ny_i<="0000001";bi_rbo<='1';
END IF:
WHEN "0001"=>ny_i<="1001111";bi_rbo<='1';
WHEN "0010" =>ny_i<="0010010";bi_rbo<='1';
WHEN "0011"=>ny_i<="0000110";bi_rbo<='1';
WHEN "0100"=>ny_i<="1001100";bi_rbo<='1';
WHEN "0101"=>ny_i<="0100100"; bi_rbo<='1' ;
WHEN "0110" =>ny_i<="1100000"; bi_rbo<='1' ;
WHEN "0111"=>ny_i<="0001111"; bi_rbo<='1' ;
WHEN "1000"=>ny_i<i="0000000"; bi_rbo<=' 1' ;
WHEN "1001"=>ny_i<="0001100"; bi_rbo<='1' ;
WHEN "1010"=>ny_i<="1110010"; bi_rbo<='1' ;
WHEN "1011"=>ny_i<="1100110"; bi_rbo<='1' ;
WHEN "1100"=>ny_i<="1011100"; bi_rbo<='1';
WHEN "1101"=>ny_i<="0110100"; bi_rbo<='1';
WHEN "1110"=>ny_i<="1110000"; bi_rbo<='1';
WHEN "1111"=>ny_i<="1111111"; bi_rbo<='1';
WHEN OTHERS= >ny_i< = "0000000" ; bi_rbo< ='1';
END CASE;
ELSE
ny_i<= "0000000" ;
END IF ;
ELSE
ny_i< = "1111111" ;
END IF;
a<= ny_i(6) ;b< = ny_i(5) ; c<= ny_i(4) ; d<= ny_i(3) ;e<= ny_i(2) ;f<= ny_i(1) ;g<= ny_i(0) ;
END PROCESS;
END v7447_ar;
高电平有效的7448的VHDL程序如下:
LIBRARY ieee;
USE ieee. Std_logic_1164. ALL;
LIBRARY lattice ;
USE lattice, components. ALL;
ENTITY v7448 IS
PORT(nlt,nrbi:IN Bit;bi_rbo: INOUT Bit; di:IN Bit_vector(3 downto 0); a,b,c,d,e,f,g:OUT Bit) ;
END v7448 ;
ARCHITECTURE v7448_ar OF v7448 IS
SIGNAL ny_i: Bit_vector(6 downto 0) ;
BEGIN
PROCESS (bi_rbo, nlt, nrbi, di)
BEGIN
IF bi_rbo=' 1 ' THEN
IF nlt=' 1 ' THEN
CASE di IS
WHEN "0000" =>
IF nrbi=' 0 ' THEN
ny_i< = "0000000"; bi_rbo<=' 1 ';
ELSE
ny_i<="1111110"; bi rbo<='1';
END IF;
WHEN "0001"=>ny_i<="0110000"; bi_rbo<=' 1 ';
WHEN "0010"=>ny_i<="1101101"; bi_rbo<='1';
WHEN "0011"=>ny_i<="1111001"; bi_rbo<='1';
WHEN "0100"=>ny_i<="0110011"; bi_rbo<='1';
WHEN "0101" =>ny_i<= "1011011"; bi_rbo< =' 1 ';
WHEN "0110" =>ny_i<= "0011111"; bi_rbo<=' 1 ';
WHEN "0111"=>ny_i<="1110000"; bi_rbo<=' 1 ';
WHEN "1000" =>ny_i<= "1111111"; bi_rbo<=' 1 ';
WHEN "1001" =>ny_i<= "1110011"; bi_rbo<=' 1 ';
WHEN "1010"=>ny_i<= "0001000"; bi_rbo<=' 1 ';
WHEN "1011"=>ny_i<= "1100000"; bi_rbo<=' 1 ';
WHEN "1100"=>ny_i<="1110010"; bi_rbo<=' 1 ';
WHEN "1101"=>ny_i<= "1000010"; bi_rbo<=' 1 ';
WHEN "1110" =>ny_i<= "0110000"; bi_rbo<=' 1 ';
WHEN "1111" =>ny_i<= "0111000"; bi_rbo< =' 1 ';
WHEN OTHERS= >ny_i< = "0000000" ; bi_rbo<=' 1 ';
END CASE;
ELSE
ny_i< =" 1111111";
END IF;
ELSE
ny_i< =" 0000000" ;
END IF ;
a<= ny_i(6) ;b< = ny_i(5) ; c< = ny_i(4) ;d< = ny_i(3) ; e< = ny_i(2) ; f<= ny_i(1) ;g<= ny_i(0) ;
END PROCESS;
END v7448_ar;
【答案解析】