Sumador gal

Solo disponible en BuenasTareas
  • Páginas : 2 (366 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de enero de 2012
Leer documento completo
Vista previa del texto
Sumador convertidor 7 segmentos con gal
IMPLEMENTACIÓN DEL SUMADOR Y EL CONVERTIDOR BINARIO A 7 SEGMENTOS
En este ejercicio se unirán los dos diseños descritos anteriormente, el sumador y elconvertidor binario a
7 segmentos para mostrar la salida del primero en formato hexadecimal.
Es necesario usar un convertidor para los cuatro bits menos significativos y un convertidor mucho más
sencillopara el bit más significativo del resultado del sumador. Más simple porque solo puede ser 1 o 0
de acuerdo al valor del bit.
El cambio dentro del sumador es agregar al convertidor como unacomponente o directamente dentro
del mismo programa y pasarle los bits de la suma y modificar los pines de salida de los leds rojos al
display de 7 segmentos. Veamos el programa VHDL sumahex.vhd:
--sumahex.vhd
-- sumador paralelo de 4 bits, usando GENERATE y componentes
-- salida en hex en displays de 7 segmentos
ENTITY sumahex IS
PORT(
SW : IN BIT_VECTOR(9 downto 0);
--c0: IN BIT; =SW(0)--a,b: IN BIT_VECTOR(4 downto 1); a=SW(1-4) b=SW(6-9)
HEX0,HEX1,HEX2,HEX3: out bit_vector(0 to 6));
--c4: OUT BIT; =LEDR(4)
--sum: OUT BIT_VECTOR(4 downto 1)); =LEDR(3-0)
END sumahex;ARCHITECTURE forsuma OF sumahex IS
COMPONENT suma
PORT(
a, b, c_in : IN BIT;
c_out, suma : OUT BIT);
END COMPONENT;
-- Signal para carry bits internos; 5 valores
SIGNAL c: BIT_VECTOR (4 downto0);
signal sum: bit_vector(3 downto 0);
BEGIN
c(0) <= SW(0);
sumadores:
FOR i IN 1 to 4 GENERATE
sumador: suma PORT MAP (SW(i), SW(i+5), c(i-1), c(i), sum(i-1));
END GENERATE;
HEX1<= "1001111" when c(4)='1' else "0000001";
HEX2 <= "1111111";
HEX3 <= "1111111";
WITH sum(3 DOWNTO 0) SELECT
HEX0 <= "0000001" WHEN "0000",
"1001111" WHEN "0001",
"0010010" WHEN"0010",
"0000110" WHEN "0011",
"1001100" WHEN "0100",
"0100100" WHEN "0101",
"1100000" WHEN "0110",
"0001111" WHEN "0111",
"0000000" WHEN "1000",
"0001100" WHEN "1001",
"0001000" WHEN "1010",...
tracking img