Autor Tema: Propuesta infernal  (Leído 3617 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mr_rubrik

  • PIC10
  • *
  • Mensajes: 5
Propuesta infernal
« 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.

Desconectado cHiPmAn

  • PIC16
  • ***
  • Mensajes: 110
RE: Propuesta infernal
« Respuesta #1 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!

Desconectado mr_rubrik

  • PIC10
  • *
  • Mensajes: 5
RE: Propuesta infernal
« Respuesta #2 en: 01 de Septiembre de 2004, 03:30:00 »
Entonces como quedaria el codigo del comparador de un bit? gracias a todos.

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Propuesta infernal
« Respuesta #3 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?


Desconectado mr_rubrik

  • PIC10
  • *
  • Mensajes: 5
RE: Propuesta infernal
« Respuesta #4 en: 02 de Septiembre de 2004, 03:14:00 »
Muchisimas gracias Elena. Ya te comentaré. Gracias otra vez, que lista..jeje. Hasta pronto

Desconectado mr_rubrik

  • PIC10
  • *
  • Mensajes: 5
RE: Propuesta infernal
« Respuesta #5 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.



Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: Propuesta infernal
« Respuesta #6 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.


Desconectado mr_rubrik

  • PIC10
  • *
  • Mensajes: 5
RE: Propuesta infernal
« Respuesta #7 en: 24 de Septiembre de 2004, 10:05:00 »
Gracias por todo. Ya conseguí construirlo.