Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/11/2011 #1


Programa de Sumador en Vhdl
Hola quisiera que alguin me pudiera ayudar con este circuito ya que por mas que intento se ni como hacerle, ya he intentado hacer cambios pero no me sale.

Solo tengo que incluir la parte de los mux y el sumador pero la verdad no se como, espero que alguien me dijera que tengo que hacer mas o menos



Miren esto es lo que escribi pero me da muchos errores

Library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.numeric_std.all;

entity Sumador is
port (A,I:in std_logic_vector(3 downto 0);
sel:in std_logic_vector(1 downto 0);
S:out std_logic_vector(3 downto 0);
Co:out std_logic);
end Sumador;

architecture Arch of Sumador is
signal B:std_logic;
signal y:std_logic;
signal t1:std_logic;
signal t2:std_logic;
signal t3:std_logic;
signal c :std_logic;
signal c1:std_logic;
signal c2:std_logic;
signal c3:std_logic;

begin
process (sel,I)
begin
case sel is
when "00" => y <= '0';
when "01" => y <= I;
when "10" => y <= not I;
when others => y <= '1';
end case;end process;

process(A,B)
begin
S(0)<= (A(0) AND NOT b1) OR (NOT A(0) AND b1);
c <= (A(0) AND b1);
t1 <= (A(1) AND NOT b2) OR (NOT A(1) AND b2);
S(1)<= (t1 AND NOT c) OR (NOT t1 AND c);
c1 <= (A(1) AND b2) OR (A(1) AND c)OR (c AND b2);
t2 <= (A(2) AND NOT b3) OR (NOT A(2) AND b3);
S(2)<= (t2 AND NOT c1) OR (NOT t2 AND c1);
c2 <= (A(2) AND b3) OR (A(2) AND c1)OR (c1 AND b3);
t3 <= (A(3) AND NOT b4) OR (NOT A(3) AND b4);
S(3)<= (t3 AND NOT c2) OR (NOT t3 AND c2);
c3 <= (A(3) AND b4) OR (A(3) AND c2)OR (c2 AND b4);

end process;
A(0)<= '0';A(3)<= '0';
A(1)<= '1';A(2)<= '1';
Co<= c3;
y<= B;
end Arch;

Espero que me puedan ayudar

Gracias
12/11/2011 #2


hola, dos preguntas, cual es el primer que error te marca y en que linea te lo marca, checando eso seria mas facil ayudarte
12/11/2011 #3


Ya lo pude arreglar, ya funciona, pero cuando "sel toma el valor 11" debe de restar un -1 a la entrada "A"(que es igual a 6, osea debe de dar 5 en el display) pero en vez de eso hace una suma.

Se supone que "1111" es igual a -1 por eso es que puse "when others => y <=(others=>'1');" pero no funciono.

Lo unico que necesito en lo que me ayuden es en como declarar el -1.

Espero me pueden ayudar. Gracias.

Library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

entity Sumador is
port (A,I:in std_logic_vector(3 downto 0);
sel:in std_logic_vector(1 downto 0);
S:out std_logic_vector(3 downto 0);
Co:out std_logic);
end Sumador;

architecture Arch of Sumador is
signal y:std_logic_vector(3 downto 0);
begin

process (sel,I)
begin
case sel is
when "00" => y <=(others=>'0');
when "01" => y <= I;
when "10" => y <=not I;
when others => y <=(others=>'1'); -----------> Aqui esta el problema
end case;end process;

process(A,y)
begin
S<= A xor y;
Co<=(A(1) and y(1)) or (A(2) and y(2));

end process;
end Arch;
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.