Implementação em VHDL do protocolo de comunicações GPIB

download Implementação em VHDL do protocolo de comunicações GPIB

of 4

Transcript of Implementação em VHDL do protocolo de comunicações GPIB

  • 8/18/2019 Implementação em VHDL do protocolo de comunicações GPIB

    1/4

    --Sistemas de Aquisição de Dados, TPC nº10 --Implementação em VHDL do protocolo de comunicações GPIB --11/06/2007

    --André Bastos da Cunha --nº53757 --LEFT

    library IEEE;use IEEE.STD_LOGIC_1164. ALL;use IEEE.STD_LOGIC_ARITH. ALL;use IEEE.STD_LOGIC_UNSIGNED. ALL;

    entity GPIB_VHDL isPort ( ATN : out STD_LOGIC;

    DIO : out STD_LOGIC_VECTOR ( 7 downto 0);out_DAV : out STD_LOGIC;

    out_NRFD : out STD_LOGIC;

    out_NDAC : out STD_LOGIC;in_DAV : in STD_LOGIC;in_NRFD : in STD_LOGIC;in_NDAC : in STD_LOGIC;

    in_DIO : in STD_LOGIC_VECTOR ( 7 downto 0));end GPIB_VHDL;

    architecture Behavioral of GPIB_VHDL is

    type STATE_TYPE is (S0, S1, S2, S3, S4, S5);

    attribute ENUM_ENCODING: STRING;

    attribute ENUM_ENCODING of STATE_TYPE: type is "000 001 010 011 100 101" ;

    signal state, nextstate: STATE_TYPE;

    --nota: a sequência de estados é definida no test bench "teste.tbw" através dos--sinais de controlo in_DAV, in_NRFD, in_NDAC e in_DIO.

    begin

    process (in_DAV, in_NRFD, in_NDAC, in_DIO, state)begin

    state

    out_DAV

  • 8/18/2019 Implementação em VHDL do protocolo de comunicações GPIB

    2/4

  • 8/18/2019 Implementação em VHDL do protocolo de comunicações GPIB

    3/4

    when S1 =>

    --verifica se o NFRD está a 1 (FALSE), ouy seja, se os LISTENERSestão

    --preparados para receber os dados e em caso positivo, inicia atransferência

    --de dados através das linhas DIO.

    --uma vez que nenhum comando está a ser emitido, ATN vai a 0.

    if in_NRFD = '1' thenDIO

  • 8/18/2019 Implementação em VHDL do protocolo de comunicações GPIB

    4/4

    --uma vez que nenhum comando está a ser emitido, ATN vai a 0.

    --assim que a transferência esteja completa, assuma-se 5us depoisde ter sido

    --iniciada, o valor de NDAC vai a 1 (FALSE) uma vez que odispositivo acabou

    --de aceitar dados.

    if in_DAV = '0' thenout_NRFD