TODOPIC

Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: mr_rubrik en 31 de Agosto de 2004, 03:27:00

Título: Propuesta infernal
Publicado por: mr_rubrik en 31 de Agosto de 2004, 03:27:00
Hola buen dia a todos. Resulta que estoy estudiando vhdl, y tengo algunos ejercicios resueltos. Sin embargo, tengo uno marcado como "importante" sin resolver y querria tener su respuesta. A ver si m ayudais: se trata de generar el codigo de un comparador de un bit, y a partir de ese codigo generar un comparador de 4 bits. Gracias de antemano a todos.
Título: RE: Propuesta infernal
Publicado por: cHiPmAn en 31 de Agosto de 2004, 07:51:00
HOlas.

ASí de golpe se me ocurre hacer la XOR bit a bit y luego sumar los 4 resultados.

La XOR es la función que haria de comparador de un bit.

Salu2!
Título: RE: Propuesta infernal
Publicado por: mr_rubrik en 01 de Septiembre de 2004, 03:30:00
Entonces como quedaria el codigo del comparador de un bit? gracias a todos.
Título: RE: Propuesta infernal
Publicado por: Elena2000 en 02 de Septiembre de 2004, 02:03:00
Hola!!

Este sería el código (un ejemplo, porque hay más maneras) de un comparador de 1 bit:

Codigo:

entity Compara1 is
  port (
      A, B: IN STD_LOGIC;
      Igual, Amayor, Bmayor : OUT STD_LOGIC;
          );
end Compara1

architecture Compara1Arq of Compara1 is
begin
  Igual = (A & B) | (~A & ~B);
  Amayor = (A & ~B);
  Bmayor = (~A & B);
end Compara1arq;



Espero que te sirva. A ver cómo se te ocurre hacer el comparador de 4 bits a partir de este, y nos lo enseñas, vale? Si te atascas dime, ok?

Título: RE: Propuesta infernal
Publicado por: mr_rubrik en 02 de Septiembre de 2004, 03:14:00
Muchisimas gracias Elena. Ya te comentaré. Gracias otra vez, que lista..jeje. Hasta pronto
Título: RE: Propuesta infernal
Publicado por: mr_rubrik en 08 de Septiembre de 2004, 13:12:00
Elena una cuestion, ¿el ejercicio de compara1 se podria hacer asi??

entity Compara1 is
  port (
      A, B: IN BIT;
      RESUL: OUT BIT;
          );
end Compara1

architecture Compara1Arq of Compara1 is
COMPARA: process(A,B)
begin
  if((A="1" & B="1") or (A="0" & B="0"))
   then RESUL<="1";
   else RESUL<="0";
end if
end process COMPARA;
end Compara1arq;

¿seria correcto este codigo? A partir de este constuyo el de 4 bits, pero no se como enlazar los comparadores de un bit en el modulo architecture. El entity seria:

entity Compara4 is
  port (
      x3,x2,x1,x0: in STD_LOGIC;
      y3,y2,y1,y0: in STD_LOGIC;
      RESUL:out STD_LOGIC;
   );
end Compara4
 
como seria el modulo architecture?? enga gracias a todos.


Título: RE: Propuesta infernal
Publicado por: Elena2000 en 23 de Septiembre de 2004, 02:51:00
Hola mr_rubrik!

Tal y como has planteado el comparador, definiendo la entidad con las cuatro entradas, no estás implementando un comparador de 4 bits a partir de cuatro comparadores de 1 bit.
Con el código que has propuesto (que tiene muy buena pinta), podrías construir un comparador de 4 bits muy fácilmente; pero yo haría esto:

Bloque de entidad:
Codigo:

entity Compara4 is
  port(A:in std_logic_vector(3 downto 0);
   B:in std_logic_vector(3 downto 0);
   menor:out std_logic;
   igual:out std_logic;
   mayor:out std_logic
  );
end Compara4;


Bloque de arquitectura, incluyendo un proceso:
---------------------------------------------------
Codigo:

architecture comp of Compara4 is

begin
   
    process(A,B)
    begin
       if (A<B) then
         menor <= "1";
         igual <= "0";
         mayor <= "0";
       elsif (A=B) then  
         menor <= "0";
         igual <= "1";
         mayor <= "0";
       else
         menor <= "0";
         igual <= "0";
         mayor <= "1";
       end if;
    end process;

end comp;



Si quieres construir un comparador de n bits en lugar de cuatro, en la definición del puerto de entrada tendrías que poner un vector de n posiciones, en lugar de 4 como el ejemplo que te he puesto.

Otra cosa, si quieres utilizar 4 comparadores de 1 bit para hacer el comparador de 4 bits, te doy una pista: necesitas definir la entidad con COMPONENT, componentes que serán precisamente los comparadores de 1 bits, y que tendrás que configurarlos como entradas y salidas en los puertos. A ver si lo pillas, vale? y me cuentas.

Título: RE: Propuesta infernal
Publicado por: mr_rubrik en 24 de Septiembre de 2004, 10:05:00
Gracias por todo. Ya conseguí construirlo.