• Jueves 28 de Marzo de 2024, 23:31

Autor Tema:  Transmitir Una Ristra De 10 Bits, Bit A Bit  (Leído 2167 veces)

xernovil

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
Transmitir Una Ristra De 10 Bits, Bit A Bit
« en: Viernes 28 de Abril de 2006, 10:30 »
0
Hola, me gustaría saber si alguien me puede ayudar en la programación de un módulo que contiene:

Entradas:

Trama:  10 bits en paralelo que salen de otro módulo
Reset global del sistema
clk: reloj que vendrá generado por el módulo clk16 de la parte de recepción
Load: Solo será necesario que esté a '1' para iniciar el envio de la trama, cada vez que queramos enviar una trama deberemos hacer un pulso en Load
Enable: podrá tener dos valores, si está en '1' estará en reposo, si está en '0' funcionará.

Salidas:

-TxD(databit):Es la línea de datos que irá a parar a la parte receptora del otro extremo, los datos salen en serie.

es decir, esto resultaría ser un conversor Paralelo-in Serie-out.

Este módulo sería una parte del bloque transmisión de un sistema de comunicación mediante RS232.

Gracias por vuestra ayuda.

xernovil

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
Re: Transmitir Una Ristra De 10 Bits, Bit A Bit
« Respuesta #1 en: Viernes 5 de Mayo de 2006, 12:02 »
0
Bueno, ya he logrado hacerlo por mi propia cuenta, por si a alguien le interesa saber cual sería el código, pues bién, sería el siguiente:

Entity PISO is
    port(trama:in std_logic_vector(9 downto 0);
           reset, clk, load, enable:in std_logic;
           TxD:out std_logic
          );
end PISO;

Architecture ARC_PISO of PISO is
    begin
       signal S: std_logic_vector(9 downto 0);
       process(trama,reset,clk,load,enable)
          begin
              if reset='1' then
                 TxD='0';
              elsif enable = '0' then
                 if (clk='1' and clk'event) then
                     if load='1' then
                         TxD <= S(0) & S(9 downto 0);
                     endif;
                 endif;
              endif;
          end process;
    end ARC_PISO;