TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

VHDL TRANSMISSÂO ASSINCRONO VHDL

Por:   •  9/8/2015  •  Trabalho acadêmico  •  567 Palavras (3 Páginas)  •  338 Visualizações

Página 1 de 3

INTERFACE RX ASSINCRONO:

library IEEE;

use IEEE.std_logic_1164.all;

package envioAssincrono is

type ESTADO_RECEPCAO is (esperaSend, baixaAck);

end envioAssincrono;

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use work.envioAssincrono.all;

entity InterfaceAssincronaRX is

port(clock : in STD_LOGIC;

reset : in STD_LOGIC;

-- Interface de comunicacao assincrona

receive : in STD_LOGIC;

accept : out STD_LOGIC;

dataIn : in STD_LOGIC_VECTOR(7 downto 0);

-- Interface com a maquina local

dadoParaMaq : out STD_LOGIC_VECTOR(7 downto 0);

dadoRecebido: out STD_LOGIC

);

end InterfaceAssincronaRX;

architecture InterfaceAssincronaRX of InterfaceAssincronaRX is

signal estadoRx: ESTADO_RECEPCAO;

signal regDataIn: STD_LOGIC_VECTOR(7 downto 0);

begin

dadoParaMaq <= regDataIn;

Recepcao: process(clock, reset)

begin

if(reset = '1') then

dadoRecebido <= '0';

accept <= '0';

estadoRx <= esperaSend;

elsif(clock'event and clock='1') then

case estadoRx is

when esperaSend =>

if receive = '1' then

accept <= '1';

regDataIn <= dataIn;

dadoRecebido <= '1';

estadoRx <= baixaAck;

end if;

when baixaAck =>

if receive = '0' then

dadoRecebido <= '0';

accept <= '0';

estadoRx <= esperaSend;

end if;

when others=> null;

end case;

end if;

end process;

end InterfaceAssincronaRX;

INTERFACE TX ASSINCRONO:

library IEEE;

use IEEE.std_logic_1164.all;

package definicoesTransmissaoAssincrona is

type ESTADO_TRANSMISSAO is (esperaDados, esperaAck, esperaFimAck);

end definicoesTransmissaoAssincrona;

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use work.definicoesTransmissaoAssincrona.all;

entity InterfaceAssincronaTX is

port(clock : in STD_LOGIC;

reset : in STD_LOGIC;

-- Interface de comunicacao assincrona

send : out STD_LOGIC;

ack : in STD_LOGIC;

dataOut : out STD_LOGIC_VECTOR(7 downto 0);

-- Interface com a maquina local

dadoDaMaq : in STD_LOGIC_VECTOR(7 downto 0);

prontoParaProximoDado: out STD_LOGIC;

transmitirDado: in STD_LOGIC

);

end InterfaceAssincronaTX;

architecture InterfaceAssincronaTX of InterfaceAssincronaTX is

signal estadoTx: ESTADO_TRANSMISSAO;

signal regDataOut: STD_LOGIC_VECTOR(7 downto 0);

begin

dataOut <= regDataOut;

Transmissao: process(clock, reset)

begin

if(reset = '1') then

estadoTx <= esperaDados;

prontoParaProximoDado <= '0';

send <= '0';

elsif(clock'event and clock='1') then

case estadoTx is

when esperaDados =>

prontoParaProximoDado <= '0';

if transmitirDado = '1' then

send <= '1';

regDataOut <= dadoDaMaq;

estadoTx <= esperaAck;

end if;

when esperaAck =>

if ack = '1' then

send <= '0';

estadoTx <= esperaFimAck;

end if;

when esperaFimAck =>

if ack = '0' then

prontoParaProximoDado

...

Baixar como (para membros premium)  txt (6.4 Kb)   pdf (51.4 Kb)   docx (15.3 Kb)  
Continuar por mais 2 páginas »
Disponível apenas no TrabalhosGratuitos.com