Implementação em VHDL do protocolo de comunicações GPIB
-
Upload
andre-b-cunha -
Category
Documents
-
view
216 -
download
0
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