Line 1... |
Line 1... |
-- eppwbn.vhd
|
--|-----------------------------------------------------------------------------
|
|
--| UNSL - Modular Oscilloscope
|
|
--|
|
|
--| File: eppwbn_wbn_side.vhd
|
|
--| Version: 0.10
|
|
--| Targeted device: Actel A3PE1500
|
|
--|-----------------------------------------------------------------------------
|
|
--| Description:
|
|
--| EPP - Wishbone bridge.
|
|
--| This instantiate all the other modules. The TOP
|
|
--------------------------------------------------------------------------------
|
|
--| File history:
|
|
--| 0.01 | dic-2008 | First testing release
|
|
--------------------------------------------------------------------------------
|
|
--| Copyright Facundo Aguilera 2008
|
|
--| GPL
|
|
|
|
|
-- Bloque completo
|
-- Bloque completo
|
|
|
|
library IEEE;
|
|
use IEEE.STD_LOGIC_1164.all;
|
|
use work.eppwbn_pgk.all;
|
|
|
entity eppwbn is
|
entity eppwbn is
|
port(
|
port(
|
-- Externo
|
-- Externo
|
nStrobe: in std_logic; -- Nomenclatura IEEE Std. 1284 ECP/EPP (Compatibiliy)
|
nStrobe: in std_logic; -- Nomenclatura IEEE Std. 1284
|
-- HostClk/nWrite
|
-- HostClk/nWrite
|
Data: inout std_logic_vector (7 downto 0); --AD8..1 (Data1..Data8)
|
Data: inout std_logic_vector (7 downto 0); --AD8..1 (Data1..Data8)
|
nAck: out std_logic; -- PtrClk/PeriphClk/Intr
|
nAck: out std_logic; -- PtrClk/PeriphClk/Intr
|
busy: out std_logic; -- PtrBusy/PeriphAck/nWait
|
busy: out std_logic; -- PtrBusy/PeriphAck/nWait
|
PError: out std_logic; -- AckData/nAckReverse
|
PError: out std_logic; -- AckData/nAckReverse
|
Line 14... |
Line 35... |
nAutoFd: in std_logic; -- HostBusy/HostAck/nDStrb
|
nAutoFd: in std_logic; -- HostBusy/HostAck/nDStrb
|
PeriphLogicH: out std_logic; -- (Periph Logic High)
|
PeriphLogicH: out std_logic; -- (Periph Logic High)
|
nInit: in std_logic; -- nReverseRequest
|
nInit: in std_logic; -- nReverseRequest
|
nFault: out std_logic; -- nDataAvail/nPeriphRequest
|
nFault: out std_logic; -- nDataAvail/nPeriphRequest
|
nSelectIn: in std_logic; -- 1284 Active/nAStrb
|
nSelectIn: in std_logic; -- 1284 Active/nAStrb
|
HostLogicH: in std_logic; -- (Host Logic High)
|
|
|
|
-- Interno
|
-- Interno
|
RST_I: in std_logic;
|
RST_I: in std_logic;
|
CLK_I: in std_logic;
|
CLK_I: in std_logic;
|
DAT_I: in std_logic_vector (15 downto 0);
|
DAT_I: in std_logic_vector (7 downto 0);
|
ADR_I: in std_logic_vector (15 downto 0);
|
DAT_O: out std_logic_vector (7 downto 0);
|
DAT_O: out std_logic_vector (15 downto 0);
|
ADR_O: out std_logic_vector (7 downto 0);
|
ADR_O: out std_logic_vector (15 downto 0);
|
CYC_O: out std_logic;
|
CYC_I: in std_logic;
|
STB_O: out std_logic;
|
ACK_O: out std_logic;
|
ACK_I: in std_logic ;
|
WE_I: in std_logic;
|
WE_O: out std_logic
|
);
|
);
|
end eppwbn;
|
end eppwbn;
|
|
|
|
|
architecture wbn16epp8 of eppwbn
|
architecture structural of eppwbn is
|
|
------------------------------------------------------------------------------
|
entity eppwbn_ctrl is
|
-- Señales
|
port(
|
signal s_epp_mode: std_logic_vector (1 downto 0);
|
nStrobe: in std_logic; -- Nomenclatura IEEE Std. 1284-2000,
|
signal s_rst_pp: std_logic;
|
Data: in std_logic_vector (7 downto 0); -- AD8..1/AD8..1 (Data1..Data8)
|
|
nAck: out std_logic; -- PtrClk/PeriphClk/Intr
|
signal s_wb_Busy: std_logic;
|
PError: out std_logic; -- AckData/nAckReverse
|
signal s_wb_nAutoFd: std_logic;
|
Sel: out std_logic; -- XFlag (Select). Select no puede usarse
|
signal s_wb_nSelectIn: std_logic;
|
nAutoFd: in std_logic; -- HostBusy/HostAck/nDStrb
|
signal s_wb_nStrobe: std_logic;
|
PeriphLogicH: out std_logic; -- (Periph Logic High)
|
|
nInit: in std_logic; -- nReverseRequest
|
signal s_ctr_nAck: std_logic;
|
nFault: out std_logic; -- nDataAvail/nPeriphRequest
|
signal s_ctr_PError: std_logic;
|
nSelectIn: in std_logic; -- 1284 Active/nAStrb
|
signal s_ctr_Sel: std_logic;
|
|
signal s_ctr_nFault: std_logic;
|
RST_I: in std_logic;
|
|
CLK_I: in std_logic;
|
signal s_ctr_nAutoFd: std_logic;
|
|
signal s_ctr_nSelectIn: std_logic;
|
|
signal s_ctr_nStrobe: std_logic;
|
|
|
rst_pp: out std_logic; -- generador de reset desde la interfaz del puerto paralelo
|
|
epp_mode: out std_logic_vector (1 downto 0) -- indicador de modo de comunicaci?n epp
|
|
);
|
|
end entity eppwbn_ctrl;
|
|
|
|
entity eppwbn_epp_side is
|
|
port(
|
|
epp_mode: in std_logic_vector (1 downto 0);-- indicador de modo de comunicaci?n epp
|
|
|
|
ctr_nAck: in std_logic; -- PtrClk/PeriphClk/Intr
|
|
ctr_PError: in std_logic; -- AckData/nAckReverse
|
|
ctr_Sel: in std_logic; -- XFlag (Select). Select no puede usarse
|
|
ctr_nFault: in std_logic; -- nDataAvail/nPeriphRequest
|
|
|
|
ctr_nAutoFd: out std_logic; -- HostBusy/HostAck/nDStrb
|
|
ctr_nSelectIn: out std_logic; -- 1284 Active/nAStrb
|
|
ctr_nStrobe: out std_logic; -- HostClk/nWrite
|
|
|
|
wb_Busy: in std_logic; -- PtrBusy/PeriphAck/nWait
|
|
wb_nAutoFd: out std_logic; -- HostBusy/HostAck/nDStrb
|
|
wb_nSelectIn: out std_logic; -- 1284 Active/nAStrb
|
|
wb_nStrobe: out std_logic; -- HostClk/nWrite
|
|
|
|
nAck: out std_logic; -- PtrClk/PeriphClk/Intr
|
|
PError: out std_logic; -- AckData/nAckReverse
|
|
Sel: out std_logic; -- XFlag (Select). Select no puede usarse
|
|
nFault: out std_logic; -- nDataAvail/nPeriphRequest
|
|
|
|
Busy: out std_logic; -- PtrBusy/PeriphAck/nWait
|
begin
|
nAutoFd: in std_logic; -- HostBusy/HostAck/nDStrb
|
|
nSelectIn: in std_logic; -- 1284 Active/nAStrb
|
|
nStrobe: in std_logic -- HostClk/nWrite
|
|
);
|
|
end entity eppwbn_epp_side;
|
|
|
|
entity eppwbn_wbn_side is
|
-- Conexión del módulo de control
|
port(
|
U1: eppwbn_ctrl
|
inStrobe: in std_logic; -- HostClk/nWrite
|
port map (
|
iData: inout std_logic_vector (7 downto 0); -- AD8..1/AD8..1 (Data1..Data8)
|
nStrobe => s_ctr_nStrobe,
|
iBusy: out std_logic; -- PtrBusy/PeriphAck/nWait
|
Data => Data,
|
inAutoFd: in std_logic; -- HostBusy/HostAck/nDStrb
|
nAck => s_ctr_nAck,
|
inSelectIn: in std_logic; -- 1284 Active/nAStrb
|
PError => s_ctr_PError,
|
|
Sel => s_ctr_Sel,
|
|
nAutoFd => s_ctr_nAutoFd,
|
|
PeriphLogicH => PeriphLogicH,
|
|
nInit => nInit,
|
|
nFault => s_ctr_nFault,
|
|
nSelectIn => s_ctr_nSelectIn,
|
|
|
RST_I: in std_logic;
|
RST_I => RST_I,
|
CLK_I: in std_logic;
|
CLK_I => CLK_I,
|
DAT_I: in std_logic_vector (7 downto 0);
|
|
DAT_O: out std_logic_vector (7 downto 0);
|
|
ADR_O: out std_logic_vector (7 downto 0);
|
|
CYC_O: out std_logic;
|
|
STB_O: out std_logic;
|
|
ACK_I: in std_logic ;
|
|
WE_O: out std_logic;
|
|
|
|
rst_pp: in std_logic -- reset desde la interfaz del puerto paralelo
|
rst_pp => s_rst_pp,
|
|
epp_mode => s_epp_mode
|
);
|
);
|
|
|
|
-- Conexión de módulo multiplexor
|
|
U2: eppwbn_epp_side
|
|
port map (
|
|
epp_mode => s_epp_mode,
|
|
|
|
ctr_nAck => s_ctr_nAck,
|
|
ctr_PError => s_ctr_PError,
|
|
ctr_Sel => s_ctr_Sel,
|
|
ctr_nFault => s_ctr_nFault,
|
|
|
|
ctr_nAutoFd => s_ctr_nAutoFd,
|
|
ctr_nSelectIn => s_ctr_nSelectIn,
|
|
ctr_nStrobe=> s_ctr_nStrobe,
|
|
|
|
wb_Busy => s_wb_Busy,
|
|
wb_nAutoFd => s_wb_nAutoFd,
|
|
wb_nSelectIn => s_wb_nSelectIn,
|
|
wb_nStrobe => s_wb_nStrobe,
|
|
|
|
nAck => nAck,
|
|
PError => PError,
|
|
Sel => Sel,
|
|
nFault => nFault,
|
|
|
|
Busy => Busy,
|
|
nAutoFd => nAutoFd,
|
|
nSelectIn => nSelectIn,
|
|
nStrobe => nStrobe
|
|
);
|
|
|
begin
|
-- Conexión del módulo de comunicación con interfaz wishbone
|
|
U3: eppwbn_wbn_side
|
|
port map(
|
|
inStrobe => s_wb_nStrobe,
|
|
iData => Data,
|
|
iBusy => s_wb_Busy,
|
|
inAutoFd => s_wb_nAutoFd,
|
|
inSelectIn => s_wb_nSelectIn,
|
|
|
|
RST_I => RST_I,
|
|
CLK_I => CLK_I,
|
|
DAT_I => DAT_I,
|
|
DAT_O => DAT_O,
|
|
ADR_O => ADR_O,
|
|
CYC_O => CYC_O,
|
|
STB_O => STB_O,
|
|
ACK_I => ACK_I,
|
|
WE_O => WE_O,
|
|
|
No newline at end of file
|
No newline at end of file
|
|
rst_pp => s_rst_pp
|
|
);
|
|
end architecture;
|
No newline at end of file
|
No newline at end of file
|