Line 34... |
Line 34... |
use UNISIM.VComponents.all;
|
use UNISIM.VComponents.all;
|
|
|
entity Regs_Group is
|
entity Regs_Group is
|
port (
|
port (
|
|
|
-- DCB protocol interface
|
-- -- DCB protocol interface
|
protocol_link_act : IN std_logic_vector(2-1 downto 0);
|
-- protocol_link_act : IN std_logic_vector(2-1 downto 0);
|
protocol_rst : OUT std_logic;
|
-- protocol_rst : OUT std_logic;
|
|
--
|
-- Fabric side: CTL Rx
|
-- -- Fabric side: CTL Rx
|
ctl_rv : OUT std_logic;
|
-- ctl_rv : OUT std_logic;
|
ctl_rd : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
-- ctl_rd : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
|
--
|
-- Fabric side: CTL Tx
|
-- -- Fabric side: CTL Tx
|
ctl_ttake : OUT std_logic;
|
-- ctl_ttake : OUT std_logic;
|
ctl_tv : IN std_logic;
|
-- ctl_tv : IN std_logic;
|
ctl_td : IN std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
-- ctl_td : IN std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
ctl_tstop : OUT std_logic;
|
-- ctl_tstop : OUT std_logic;
|
|
--
|
ctl_reset : OUT std_logic;
|
-- ctl_reset : OUT std_logic;
|
ctl_status : IN std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
-- ctl_status : IN std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
|
--
|
-- Fabric side: DLM Rx
|
-- -- Fabric side: DLM Rx
|
dlm_tv : OUT std_logic;
|
-- dlm_tv : OUT std_logic;
|
dlm_td : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
-- dlm_td : OUT std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
|
--
|
-- Fabric side: DLM Tx
|
-- -- Fabric side: DLM Tx
|
dlm_rv : IN std_logic;
|
-- dlm_rv : IN std_logic;
|
dlm_rd : IN std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
-- dlm_rd : IN std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
|
|
-- Event Buffer status + reset
|
-- Event Buffer status + reset
|
eb_FIFO_Status : IN std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
eb_FIFO_Status : IN std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
eb_FIFO_Rst : OUT std_logic;
|
eb_FIFO_Rst : OUT std_logic;
|
eb_FIFO_ow : IN std_logic;
|
eb_FIFO_ow : IN std_logic;
|
Line 153... |
Line 153... |
-- Tx module reset
|
-- Tx module reset
|
Tx_Reset : OUT std_logic;
|
Tx_Reset : OUT std_logic;
|
|
|
-- to Interrupts Module
|
-- to Interrupts Module
|
Sys_IRQ : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
Sys_IRQ : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
DAQ_irq : IN std_logic;
|
-- DAQ_irq : IN std_logic;
|
CTL_irq : IN std_logic;
|
-- CTL_irq : IN std_logic;
|
DLM_irq : IN std_logic;
|
-- DLM_irq : IN std_logic;
|
|
|
-- System error and info
|
-- System error and info
|
Tx_TimeOut : IN std_logic;
|
Tx_TimeOut : IN std_logic;
|
Tx_eb_TimeOut : IN std_logic;
|
Tx_eb_TimeOut : IN std_logic;
|
Msg_Routing : OUT std_logic_vector(C_GCR_MSG_ROUT_BIT_TOP-C_GCR_MSG_ROUT_BIT_BOT downto 0);
|
Msg_Routing : OUT std_logic_vector(C_GCR_MSG_ROUT_BIT_TOP-C_GCR_MSG_ROUT_BIT_BOT downto 0);
|
Line 172... |
Line 172... |
IG_Latency : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
IG_Latency : OUT std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
IG_Num_Assert : IN std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
IG_Num_Assert : IN std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
IG_Num_Deassert : IN std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
IG_Num_Deassert : IN std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
IG_Asserting : IN std_logic;
|
IG_Asserting : IN std_logic;
|
|
|
-- Data generator control
|
-- -- Data generator control
|
DG_is_Running : IN std_logic;
|
-- DG_is_Running : IN std_logic;
|
DG_Reset : OUT std_logic;
|
-- DG_Reset : OUT std_logic;
|
DG_Mask : OUT std_logic;
|
-- DG_Mask : OUT std_logic;
|
|
|
-- Clock and reset
|
-- Clock and reset
|
trn_clk : IN std_logic;
|
trn_clk : IN std_logic;
|
trn_lnk_up_n : IN std_logic;
|
trn_lnk_up_n : IN std_logic;
|
trn_reset_n : IN std_logic
|
trn_reset_n : IN std_logic
|
Line 188... |
Line 188... |
end Regs_Group;
|
end Regs_Group;
|
|
|
|
|
architecture Behavioral of Regs_Group is
|
architecture Behavioral of Regs_Group is
|
|
|
type icapStates is ( icapST_Reset
|
|
, icapST_Idle
|
|
, icapST_Access
|
|
, icapST_Abort
|
|
);
|
|
|
|
-- State variables of ICAP
|
|
signal FSM_icap : icapStates;
|
|
|
|
|
|
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
signal Regs_WrDin_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Regs_WrDin_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Regs_WrAddr_i : std_logic_vector(C_EP_AWIDTH-1 downto 0);
|
signal Regs_WrAddr_i : std_logic_vector(C_EP_AWIDTH-1 downto 0);
|
signal Regs_WrMask_i : std_logic_vector(2-1 downto 0);
|
signal Regs_WrMask_i : std_logic_vector(2-1 downto 0);
|
Line 246... |
Line 236... |
|
|
-- Register read mux signals
|
-- Register read mux signals
|
signal Reg_RdMuxer_Hi : std_logic_vector(C_NUM_OF_ADDRESSES-1 downto 0);
|
signal Reg_RdMuxer_Hi : std_logic_vector(C_NUM_OF_ADDRESSES-1 downto 0);
|
signal Reg_RdMuxer_Lo : std_logic_vector(C_NUM_OF_ADDRESSES-1 downto 0);
|
signal Reg_RdMuxer_Lo : std_logic_vector(C_NUM_OF_ADDRESSES-1 downto 0);
|
|
|
-- Optical Link status
|
-- -- Optical Link status
|
signal Opto_Link_Status_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- signal Opto_Link_Status_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Opto_Link_Status_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- signal Opto_Link_Status_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Opto_Link_Status_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- signal Opto_Link_Status_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- Event Buffer
|
-- Event Buffer
|
signal eb_FIFO_Status_r1 : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal eb_FIFO_Status_r1 : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal eb_FIFO_Status_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal eb_FIFO_Status_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal eb_FIFO_Status_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal eb_FIFO_Status_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal eb_FIFO_Rst_i : std_logic;
|
signal eb_FIFO_Rst_i : std_logic;
|
Line 304... |
Line 294... |
signal Sys_Int_Enable_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Int_Enable_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Int_Enable_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Int_Enable_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Int_Enable_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Int_Enable_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
|
|
|
|
-- Data generator control
|
-- -- Data generator control
|
signal DG_Reset_i : std_logic;
|
-- signal DG_Reset_i : std_logic;
|
signal DG_Mask_i : std_logic;
|
-- signal DG_Mask_i : std_logic;
|
signal DG_is_Available : std_logic;
|
-- signal DG_is_Available : std_logic;
|
signal DG_Rst_Counter : std_logic_vector(8-1 downto 0);
|
-- signal DG_Rst_Counter : std_logic_vector(8-1 downto 0);
|
signal DG_Status_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- signal DG_Status_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal DG_Status_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- signal DG_Status_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal DG_Status_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
-- signal DG_Status_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
|
|
-- General Control and Status
|
-- General Control and Status
|
signal Sys_Error_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Error_i : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Error_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Error_o_Hi : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Error_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
signal Sys_Error_o_Lo : std_logic_vector(C_DBUS_WIDTH-1 downto 0);
|
Line 470... |
Line 460... |
signal dlm_rd_r : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
signal dlm_rd_r : std_logic_vector(C_DBUS_WIDTH/2-1 downto 0);
|
|
|
begin
|
begin
|
|
|
|
|
DG_is_Available <= '0';
|
-- DG_is_Available <= '0';
|
|
|
-- protocol interface reset
|
-- -- protocol interface reset
|
protocol_rst <= protocol_rst_i;
|
-- protocol_rst <= protocol_rst_i;
|
|
--
|
ctl_rv <= ctl_rv_i;
|
-- ctl_rv <= ctl_rv_i;
|
ctl_rd <= ctl_rd_i;
|
-- ctl_rd <= ctl_rd_i;
|
|
--
|
ctl_ttake <= ctl_ttake_i;
|
-- ctl_ttake <= ctl_ttake_i;
|
ctl_tstop <= ctl_tstop_i;
|
-- ctl_tstop <= ctl_tstop_i;
|
ctl_reset <= ctl_reset_i;
|
-- ctl_reset <= ctl_reset_i;
|
|
--
|
ctl_tstop_i <= '0'; -- ???
|
-- ctl_tstop_i <= '0'; -- ???
|
|
--
|
dlm_tv <= dlm_tv_i;
|
-- dlm_tv <= dlm_tv_i;
|
dlm_td <= dlm_td_i;
|
-- dlm_td <= dlm_td_i;
|
|
|
-- Data generator control
|
-- -- Data generator control
|
DG_Reset <= DG_Reset_i;
|
-- DG_Reset <= DG_Reset_i;
|
DG_Mask <= DG_Mask_i;
|
-- DG_Mask <= DG_Mask_i;
|
|
|
-- Event buffer reset
|
-- Event buffer reset
|
eb_FIFO_Rst <= eb_FIFO_Rst_i;
|
eb_FIFO_Rst <= eb_FIFO_Rst_i;
|
|
|
-- MRd channel reset
|
-- MRd channel reset
|
Line 702... |
Line 692... |
Regs_WrEnB_r2 <= Regs_WrEnB_r1;
|
Regs_WrEnB_r2 <= Regs_WrEnB_r1;
|
|
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
-- ----------------------------------------------
|
---- ----------------------------------------------
|
-- Synchronous Delay : Opto_Link_Status
|
---- Synchronous Delay : Opto_Link_Status
|
--
|
----
|
Synch_Delay_Opto_Link_Status:
|
-- Synch_Delay_Opto_Link_Status:
|
process ( trn_clk )
|
-- process ( trn_clk )
|
begin
|
-- begin
|
if trn_clk'event and trn_clk = '1' then
|
-- if trn_clk'event and trn_clk = '1' then
|
Opto_Link_Status_i(C_DBUS_WIDTH-1 downto 2) <= (OTHERS=>'0');
|
-- Opto_Link_Status_i(C_DBUS_WIDTH-1 downto 2) <= (OTHERS=>'0');
|
Opto_Link_Status_i(2-1 downto 0) <= protocol_link_act;
|
-- Opto_Link_Status_i(2-1 downto 0) <= protocol_link_act;
|
end if;
|
-- end if;
|
end process;
|
-- end process;
|
|
|
-- ----------------------------------------------
|
-- ----------------------------------------------
|
-- Synchronous Delay : eb_FIFO_Status
|
-- Synchronous Delay : eb_FIFO_Status
|
--
|
--
|
Synch_Delay_eb_FIFO_Status:
|
Synch_Delay_eb_FIFO_Status:
|
Line 1010... |
Line 1000... |
end if;
|
end if;
|
|
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
-- -----------------------------------------------
|
---- -----------------------------------------------
|
-- Synchronous Registered: DG_Reset_i
|
---- Synchronous Registered: DG_Reset_i
|
SysReg_DGen_Reset:
|
-- SysReg_DGen_Reset:
|
process ( trn_clk, trn_lnk_up_n)
|
-- process ( trn_clk, trn_lnk_up_n)
|
begin
|
-- begin
|
if trn_lnk_up_n = '1' then
|
-- if trn_lnk_up_n = '1' then
|
DG_Reset_i <= '1';
|
-- DG_Reset_i <= '1';
|
DG_Rst_Counter <= (OTHERS=>'0');
|
-- DG_Rst_Counter <= (OTHERS=>'0');
|
|
|
elsif trn_clk'event and trn_clk = '1' then
|
|
|
|
if DG_Rst_Counter=X"FF" then
|
|
DG_Rst_Counter <= DG_Rst_Counter;
|
|
else
|
|
DG_Rst_Counter <= DG_Rst_Counter + '1';
|
|
end if;
|
|
|
|
if DG_Rst_Counter(7)='0' then
|
|
DG_Reset_i <= '1';
|
|
elsif Regs_WrEn_r2='1'
|
|
and Reg_WrMuxer_Hi(CINT_ADDR_DG_CTRL)='1'
|
|
then
|
|
DG_Reset_i <= Command_is_Reset_Hi;
|
|
elsif Regs_WrEn_r2='1'
|
|
and Reg_WrMuxer_Lo(CINT_ADDR_DG_CTRL)='1'
|
|
then
|
|
DG_Reset_i <= Command_is_Reset_Lo;
|
|
else
|
|
DG_Reset_i <= '0';
|
|
end if;
|
|
|
|
end if;
|
|
end process;
|
|
|
|
-- -----------------------------------------------
|
|
-- Synchronous Registered: DG_Mask_i
|
|
SysReg_DGen_Mask:
|
|
process ( trn_clk, trn_lnk_up_n)
|
|
begin
|
|
if trn_lnk_up_n = '1' then
|
|
DG_Mask_i <= '0';
|
|
elsif trn_clk'event and trn_clk = '1' then
|
|
|
|
if Regs_WrEn_r2='1'
|
|
and Reg_WrMuxer_Hi(CINT_ADDR_DG_CTRL)='1'
|
|
then
|
|
DG_Mask_i <= Regs_WrDin_r2(32+CINT_BIT_DG_MASK);
|
|
elsif Regs_WrEn_r2='1'
|
|
and Reg_WrMuxer_Lo(CINT_ADDR_DG_CTRL)='1'
|
|
then
|
|
DG_Mask_i <= Regs_WrDin_r2(CINT_BIT_DG_MASK);
|
|
else
|
|
DG_Mask_i <= DG_Mask_i;
|
|
end if;
|
|
|
|
end if;
|
|
end process;
|
|
|
|
--------------------------------------------------------------------------
|
|
-- Data generator status
|
|
--
|
--
|
Synch_DG_Status_i:
|
-- elsif trn_clk'event and trn_clk = '1' then
|
process ( trn_clk, DG_Reset_i )
|
--
|
begin
|
-- if DG_Rst_Counter=X"FF" then
|
if DG_Reset_i = '1' then
|
-- DG_Rst_Counter <= DG_Rst_Counter;
|
DG_Status_i <= (OTHERS=>'0');
|
-- else
|
elsif trn_clk'event and trn_clk = '1' then
|
-- DG_Rst_Counter <= DG_Rst_Counter + '1';
|
DG_Status_i(CINT_BIT_DG_MASK) <= DG_Mask_i;
|
-- end if;
|
DG_Status_i(CINT_BIT_DG_BUSY) <= DG_is_Running;
|
--
|
end if;
|
-- if DG_Rst_Counter(7)='0' then
|
end process;
|
-- DG_Reset_i <= '1';
|
|
-- elsif Regs_WrEn_r2='1'
|
|
-- and Reg_WrMuxer_Hi(CINT_ADDR_DG_CTRL)='1'
|
|
-- then
|
|
-- DG_Reset_i <= Command_is_Reset_Hi;
|
|
-- elsif Regs_WrEn_r2='1'
|
|
-- and Reg_WrMuxer_Lo(CINT_ADDR_DG_CTRL)='1'
|
|
-- then
|
|
-- DG_Reset_i <= Command_is_Reset_Lo;
|
|
-- else
|
|
-- DG_Reset_i <= '0';
|
|
-- end if;
|
|
--
|
|
-- end if;
|
|
-- end process;
|
|
--
|
|
---- -----------------------------------------------
|
|
---- Synchronous Registered: DG_Mask_i
|
|
-- SysReg_DGen_Mask:
|
|
-- process ( trn_clk, trn_lnk_up_n)
|
|
-- begin
|
|
-- if trn_lnk_up_n = '1' then
|
|
-- DG_Mask_i <= '0';
|
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
|
-- if Regs_WrEn_r2='1'
|
|
-- and Reg_WrMuxer_Hi(CINT_ADDR_DG_CTRL)='1'
|
|
-- then
|
|
-- DG_Mask_i <= Regs_WrDin_r2(32+CINT_BIT_DG_MASK);
|
|
-- elsif Regs_WrEn_r2='1'
|
|
-- and Reg_WrMuxer_Lo(CINT_ADDR_DG_CTRL)='1'
|
|
-- then
|
|
-- DG_Mask_i <= Regs_WrDin_r2(CINT_BIT_DG_MASK);
|
|
-- else
|
|
-- DG_Mask_i <= DG_Mask_i;
|
|
-- end if;
|
|
--
|
|
-- end if;
|
|
-- end process;
|
|
--
|
|
----------------------------------------------------------------------------
|
|
---- Data generator status
|
|
----
|
|
-- Synch_DG_Status_i:
|
|
-- process ( trn_clk, DG_Reset_i )
|
|
-- begin
|
|
-- if DG_Reset_i = '1' then
|
|
-- DG_Status_i <= (OTHERS=>'0');
|
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
-- DG_Status_i(CINT_BIT_DG_MASK) <= DG_Mask_i;
|
|
-- DG_Status_i(CINT_BIT_DG_BUSY) <= DG_is_Running;
|
|
-- end if;
|
|
-- end process;
|
|
|
-- -----------------------------------------------
|
-- -----------------------------------------------
|
-- Synchronous Registered: IG_Control_i
|
-- Synchronous Registered: IG_Control_i
|
SysReg_IntGen_Control:
|
SysReg_IntGen_Control:
|
process ( trn_clk, trn_lnk_up_n)
|
process ( trn_clk, trn_lnk_up_n)
|
Line 1146... |
Line 1136... |
end process;
|
end process;
|
|
|
|
|
|
|
|
|
-- ------------------------------------------------------
|
---- ------------------------------------------------------
|
-- Protocol CTL interface
|
---- Protocol CTL interface
|
-- ------------------------------------------------------
|
---- ------------------------------------------------------
|
|
--
|
-- -------------------------------------------------------
|
---- -------------------------------------------------------
|
-- Synchronous Registered: ctl_rd
|
---- Synchronous Registered: ctl_rd
|
Syn_CTL_rd:
|
-- Syn_CTL_rd:
|
process ( trn_clk, trn_lnk_up_n)
|
-- process ( trn_clk, trn_lnk_up_n)
|
begin
|
-- begin
|
if trn_lnk_up_n = '1' then
|
-- if trn_lnk_up_n = '1' then
|
ctl_rd_i <= (OTHERS => '0');
|
-- ctl_rd_i <= (OTHERS => '0');
|
ctl_rv_i <= '0';
|
-- ctl_rv_i <= '0';
|
elsif trn_clk'event and trn_clk = '1' then
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
if Regs_WrEn_r2='1' and Reg_WrMuxer_Hi(CINT_ADDR_CTL_CLASS)='1' then
|
-- if Regs_WrEn_r2='1' and Reg_WrMuxer_Hi(CINT_ADDR_CTL_CLASS)='1' then
|
ctl_rd_i <= Regs_WrDin_r2(C_DBUS_WIDTH-1 downto 32);
|
-- ctl_rd_i <= Regs_WrDin_r2(C_DBUS_WIDTH-1 downto 32);
|
ctl_rv_i <= '1';
|
-- ctl_rv_i <= '1';
|
elsif Regs_WrEn_r2='1' and Reg_WrMuxer_Lo(CINT_ADDR_CTL_CLASS)='1' then
|
-- elsif Regs_WrEn_r2='1' and Reg_WrMuxer_Lo(CINT_ADDR_CTL_CLASS)='1' then
|
ctl_rd_i <= Regs_WrDin_r2(32-1 downto 0);
|
-- ctl_rd_i <= Regs_WrDin_r2(32-1 downto 0);
|
ctl_rv_i <= '1';
|
-- ctl_rv_i <= '1';
|
else
|
-- else
|
ctl_rd_i <= ctl_rd_i;
|
-- ctl_rd_i <= ctl_rd_i;
|
ctl_rv_i <= '0';
|
-- ctl_rv_i <= '0';
|
end if;
|
-- end if;
|
|
--
|
end if;
|
-- end if;
|
end process;
|
-- end process;
|
|
--
|
|
--
|
-- -----------------------------------------------
|
---- -----------------------------------------------
|
-- Synchronous Registered: ctl_reset
|
---- Synchronous Registered: ctl_reset
|
SysReg_ctl_reset:
|
-- SysReg_ctl_reset:
|
process ( trn_clk, trn_lnk_up_n)
|
-- process ( trn_clk, trn_lnk_up_n)
|
begin
|
-- begin
|
if trn_lnk_up_n = '1' then
|
-- if trn_lnk_up_n = '1' then
|
ctl_reset_i <= '1';
|
-- ctl_reset_i <= '1';
|
|
--
|
elsif trn_clk'event and trn_clk = '1' then
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
if Regs_WrEn_r2='1'
|
-- if Regs_WrEn_r2='1'
|
and Reg_WrMuxer_Hi(CINT_ADDR_TC_STATUS)='1'
|
-- and Reg_WrMuxer_Hi(CINT_ADDR_TC_STATUS)='1'
|
then
|
-- then
|
ctl_reset_i <= Command_is_Reset_Hi;
|
-- ctl_reset_i <= Command_is_Reset_Hi;
|
elsif Regs_WrEn_r2='1'
|
-- elsif Regs_WrEn_r2='1'
|
and Reg_WrMuxer_Lo(CINT_ADDR_TC_STATUS)='1'
|
-- and Reg_WrMuxer_Lo(CINT_ADDR_TC_STATUS)='1'
|
then
|
-- then
|
ctl_reset_i <= Command_is_Reset_Lo;
|
-- ctl_reset_i <= Command_is_Reset_Lo;
|
else
|
-- else
|
ctl_reset_i <= '0';
|
-- ctl_reset_i <= '0';
|
end if;
|
-- end if;
|
|
--
|
end if;
|
-- end if;
|
end process;
|
-- end process;
|
|
--
|
|
--
|
|
--
|
-- -------------------------------------------------------
|
---- -------------------------------------------------------
|
-- Synchronous Registered: ctl_td
|
---- Synchronous Registered: ctl_td
|
-- ++++++++++++ INT triggering ++++++++++++++++++
|
---- ++++++++++++ INT triggering ++++++++++++++++++
|
Syn_CTL_td:
|
-- Syn_CTL_td:
|
process ( trn_clk, trn_lnk_up_n)
|
-- process ( trn_clk, trn_lnk_up_n)
|
begin
|
-- begin
|
if trn_lnk_up_n = '1' then
|
-- if trn_lnk_up_n = '1' then
|
ctl_td_r <= (OTHERS => '0');
|
-- ctl_td_r <= (OTHERS => '0');
|
elsif trn_clk'event and trn_clk = '1' then
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
if ctl_tv='1' then
|
-- if ctl_tv='1' then
|
ctl_td_r <= ctl_td;
|
-- ctl_td_r <= ctl_td;
|
else
|
-- else
|
ctl_td_r <= ctl_td_r;
|
-- ctl_td_r <= ctl_td_r;
|
end if;
|
-- end if;
|
|
--
|
end if;
|
-- end if;
|
end process;
|
-- end process;
|
|
--
|
|
--
|
|
--
|
-- ------------------------------------------------------
|
---- ------------------------------------------------------
|
-- Protocol DLM interface
|
---- Protocol DLM interface
|
-- ------------------------------------------------------
|
---- ------------------------------------------------------
|
|
--
|
-- -------------------------------------------------------
|
---- -------------------------------------------------------
|
-- Synchronous Registered: dlm_td
|
---- Synchronous Registered: dlm_td
|
Syn_DLM_td:
|
-- Syn_DLM_td:
|
process ( trn_clk, trn_lnk_up_n)
|
-- process ( trn_clk, trn_lnk_up_n)
|
begin
|
-- begin
|
if trn_lnk_up_n = '1' then
|
-- if trn_lnk_up_n = '1' then
|
dlm_td_i <= (OTHERS => '0');
|
-- dlm_td_i <= (OTHERS => '0');
|
dlm_tv_i <= '0';
|
-- dlm_tv_i <= '0';
|
elsif trn_clk'event and trn_clk = '1' then
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
if Regs_WrEn_r2='1' and Reg_WrMuxer_Hi(CINT_ADDR_DLM_CLASS)='1' then
|
-- if Regs_WrEn_r2='1' and Reg_WrMuxer_Hi(CINT_ADDR_DLM_CLASS)='1' then
|
dlm_td_i <= Regs_WrDin_r2(C_DBUS_WIDTH-1 downto 32);
|
-- dlm_td_i <= Regs_WrDin_r2(C_DBUS_WIDTH-1 downto 32);
|
dlm_tv_i <= '1';
|
-- dlm_tv_i <= '1';
|
elsif Regs_WrEn_r2='1' and Reg_WrMuxer_Lo(CINT_ADDR_DLM_CLASS)='1' then
|
-- elsif Regs_WrEn_r2='1' and Reg_WrMuxer_Lo(CINT_ADDR_DLM_CLASS)='1' then
|
dlm_td_i <= Regs_WrDin_r2(32-1 downto 0);
|
-- dlm_td_i <= Regs_WrDin_r2(32-1 downto 0);
|
dlm_tv_i <= '1';
|
-- dlm_tv_i <= '1';
|
else
|
-- else
|
dlm_td_i <= dlm_td_i;
|
-- dlm_td_i <= dlm_td_i;
|
dlm_tv_i <= '0';
|
-- dlm_tv_i <= '0';
|
end if;
|
-- end if;
|
|
--
|
end if;
|
-- end if;
|
end process;
|
-- end process;
|
|
--
|
|
--
|
-- -------------------------------------------------------
|
---- -------------------------------------------------------
|
-- Synchronous Registered: dlm_rd
|
---- Synchronous Registered: dlm_rd
|
-- ++++++++++++ INT triggering ++++++++++++++++++
|
---- ++++++++++++ INT triggering ++++++++++++++++++
|
Syn_DLM_rd:
|
-- Syn_DLM_rd:
|
process ( trn_clk, trn_lnk_up_n)
|
-- process ( trn_clk, trn_lnk_up_n)
|
begin
|
-- begin
|
if trn_lnk_up_n = '1' then
|
-- if trn_lnk_up_n = '1' then
|
dlm_rd_r <= (OTHERS => '0');
|
-- dlm_rd_r <= (OTHERS => '0');
|
elsif trn_clk'event and trn_clk = '1' then
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
if dlm_rv='1' then
|
-- if dlm_rv='1' then
|
dlm_rd_r <= dlm_rd;
|
-- dlm_rd_r <= dlm_rd;
|
else
|
-- else
|
dlm_rd_r <= dlm_rd_r;
|
-- dlm_rd_r <= dlm_rd_r;
|
end if;
|
-- end if;
|
|
--
|
end if;
|
-- end if;
|
end process;
|
-- end process;
|
|
|
|
|
-- ------------------------------------------------------
|
-- ------------------------------------------------------
|
-- DMA Upstream Registers
|
-- DMA Upstream Registers
|
-- ------------------------------------------------------
|
-- ------------------------------------------------------
|
Line 2300... |
Line 2290... |
DMA_ds_Transf_Bytes_i <= DMA_ds_Transf_Bytes_i;
|
DMA_ds_Transf_Bytes_i <= DMA_ds_Transf_Bytes_i;
|
end if;
|
end if;
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
---- -------------------------------------------------------
|
|
---- Synchronous Registers: icap_Write_i
|
|
-- RxTrn_icap_Write:
|
|
-- process ( trn_clk, trn_lnk_up_n)
|
|
-- begin
|
|
-- if trn_lnk_up_n = '1' then
|
|
-- icap_CLK <= '0';
|
|
-- icap_I <= (OTHERS => '0');
|
|
-- icap_Write <= '1';
|
|
-- icap_CE <= '1';
|
|
-- FSM_icap <= icapST_Reset;
|
|
--
|
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
--
|
|
-- case FSM_icap is
|
|
--
|
|
-- when icapST_Reset =>
|
|
-- icap_CLK <= '0';
|
|
-- icap_I <= (OTHERS => '0');
|
|
-- icap_Write <= '1';
|
|
-- icap_CE <= '1';
|
|
-- FSM_icap <= icapST_Idle;
|
|
--
|
|
-- when icapST_Idle =>
|
|
--
|
|
-- if Regs_WrEn_r2='1' and Reg_WrMuxer(CINT_ADDR_ICAP)='1' then
|
|
-- icap_CLK <= '1';
|
|
-- icap_I <= Regs_WrDin_r2;
|
|
-- icap_Write <= '0';
|
|
-- icap_CE <= '0';
|
|
-- FSM_icap <= icapST_Access;
|
|
-- elsif Reg_RdMuxer(CINT_ADDR_ICAP)='1' then
|
|
-- icap_CLK <= '1';
|
|
-- icap_I <= icap_I;
|
|
-- icap_Write <= '1';
|
|
-- icap_CE <= '0';
|
|
-- FSM_icap <= icapST_Access;
|
|
-- else
|
|
-- icap_CLK <= icap_CLK;
|
|
-- icap_I <= icap_I;
|
|
-- icap_Write <= icap_Write;
|
|
-- icap_CE <= icap_CE;
|
|
-- FSM_icap <= icapST_Idle;
|
|
-- end if;
|
|
--
|
|
--
|
|
-- when icapST_Access =>
|
|
-- icap_CLK <= '1';
|
|
-- icap_I <= icap_I;
|
|
-- icap_Write <= icap_Write;
|
|
-- icap_CE <= icap_CE;
|
|
-- FSM_icap <= icapST_Abort;
|
|
--
|
|
-- when icapST_Abort =>
|
|
-- icap_CLK <= '0';
|
|
-- icap_I <= icap_I;
|
|
-- icap_Write <= icap_Write;
|
|
-- icap_CE <= icap_CE;
|
|
-- FSM_icap <= icapST_Idle;
|
|
--
|
|
-- when Others =>
|
|
-- icap_CLK <= '0';
|
|
-- icap_I <= (OTHERS => '0');
|
|
-- icap_Write <= '1';
|
|
-- icap_CE <= '1';
|
|
-- FSM_icap <= icapST_Idle;
|
|
--
|
|
-- end case;
|
|
--
|
|
-- end if;
|
|
-- end process;
|
|
--
|
|
|
|
|
|
----------------------------------------------------------
|
----------------------------------------------------------
|
--------------- Tx reading registers -------------------
|
--------------- Tx reading registers -------------------
|
----------------------------------------------------------
|
----------------------------------------------------------
|
Line 2424... |
Line 2342... |
|
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
|
|
----------------------------------------------------------
|
------------------------------------------------------------
|
-- Synch Register: CTL_TTake
|
---- Synch Register: CTL_TTake
|
|
----
|
|
-- Syn_CTL_ttake:
|
|
-- process ( trn_clk, trn_lnk_up_n)
|
|
-- begin
|
|
-- if trn_lnk_up_n = '1' then
|
|
-- ctl_ttake_i <= '0';
|
|
-- ctl_t_read_Hi_r1 <= '0';
|
|
-- ctl_t_read_Lo_r1 <= '0';
|
|
-- CTL_read_counter <= (OTHERS=>'0');
|
--
|
--
|
Syn_CTL_ttake:
|
-- elsif trn_clk'event and trn_clk = '1' then
|
process ( trn_clk, trn_lnk_up_n)
|
-- ctl_t_read_Hi_r1 <= Reg_RdMuxer_Hi(CINT_ADDR_CTL_CLASS);
|
begin
|
-- ctl_t_read_Lo_r1 <= Reg_RdMuxer_Lo(CINT_ADDR_CTL_CLASS);
|
if trn_lnk_up_n = '1' then
|
-- ctl_ttake_i <= (Reg_RdMuxer_Hi(CINT_ADDR_CTL_CLASS) and not ctl_t_read_Hi_r1)
|
ctl_ttake_i <= '0';
|
-- or (Reg_RdMuxer_Lo(CINT_ADDR_CTL_CLASS) and not ctl_t_read_Lo_r1)
|
ctl_t_read_Hi_r1 <= '0';
|
-- ;
|
ctl_t_read_Lo_r1 <= '0';
|
-- if ctl_reset_i='1' then
|
CTL_read_counter <= (OTHERS=>'0');
|
-- CTL_read_counter <= (OTHERS=>'0');
|
|
-- else
|
elsif trn_clk'event and trn_clk = '1' then
|
-- CTL_read_counter <= CTL_read_counter + ctl_ttake_i;
|
ctl_t_read_Hi_r1 <= Reg_RdMuxer_Hi(CINT_ADDR_CTL_CLASS);
|
-- end if;
|
ctl_t_read_Lo_r1 <= Reg_RdMuxer_Lo(CINT_ADDR_CTL_CLASS);
|
|
ctl_ttake_i <= (Reg_RdMuxer_Hi(CINT_ADDR_CTL_CLASS) and not ctl_t_read_Hi_r1)
|
|
or (Reg_RdMuxer_Lo(CINT_ADDR_CTL_CLASS) and not ctl_t_read_Lo_r1)
|
|
;
|
|
if ctl_reset_i='1' then
|
|
CTL_read_counter <= (OTHERS=>'0');
|
|
else
|
|
CTL_read_counter <= CTL_read_counter + ctl_ttake_i;
|
|
end if;
|
|
|
|
end if;
|
|
end process;
|
|
|
|
----------------------------------------------------------
|
|
-- Synch Register: class_CTL_Status
|
|
--
|
--
|
Syn_class_CTL_Status:
|
-- end if;
|
process ( trn_clk, trn_lnk_up_n)
|
-- end process;
|
begin
|
--
|
if trn_lnk_up_n = '1' then
|
------------------------------------------------------------
|
class_CTL_Status_i <= (OTHERS=>'0');
|
---- Synch Register: class_CTL_Status
|
|
----
|
elsif trn_clk'event and trn_clk = '1' then
|
-- Syn_class_CTL_Status:
|
class_CTL_Status_i(C_DBUS_WIDTH/2-1 downto 0) <= ctl_status;
|
-- process ( trn_clk, trn_lnk_up_n)
|
|
-- begin
|
end if;
|
-- if trn_lnk_up_n = '1' then
|
end process;
|
-- class_CTL_Status_i <= (OTHERS=>'0');
|
|
--
|
|
-- elsif trn_clk'event and trn_clk = '1' then
|
|
-- class_CTL_Status_i(C_DBUS_WIDTH/2-1 downto 0) <= ctl_status;
|
|
--
|
|
-- end if;
|
|
-- end process;
|
|
|
|
|
-- -------------------------------------------------------
|
-- -------------------------------------------------------
|
--
|
--
|
Sys_Int_Status_i <= (
|
Sys_Int_Status_i <= (
|
CINT_BIT_DLM_IN_ISR => DLM_irq ,
|
-- CINT_BIT_DLM_IN_ISR => DLM_irq ,
|
CINT_BIT_CTL_IN_ISR => CTL_irq ,
|
-- CINT_BIT_CTL_IN_ISR => CTL_irq ,
|
CINT_BIT_DAQ_IN_ISR => DAQ_irq ,
|
-- CINT_BIT_DAQ_IN_ISR => DAQ_irq ,
|
|
|
CINT_BIT_DSTOUT_IN_ISR => DMA_ds_Tout ,
|
CINT_BIT_DSTOUT_IN_ISR => DMA_ds_Tout ,
|
CINT_BIT_USTOUT_IN_ISR => DMA_us_Tout ,
|
CINT_BIT_USTOUT_IN_ISR => DMA_us_Tout ,
|
|
|
CINT_BIT_INTGEN_IN_ISR => IG_Asserting,
|
CINT_BIT_INTGEN_IN_ISR => IG_Asserting,
|
Line 2810... |
Line 2728... |
<= cfg_dcommand;
|
<= cfg_dcommand;
|
General_Status_i(CINT_BIT_LWIDTH_IN_GSR_TOP downto CINT_BIT_LWIDTH_IN_GSR_BOT)
|
General_Status_i(CINT_BIT_LWIDTH_IN_GSR_TOP downto CINT_BIT_LWIDTH_IN_GSR_BOT)
|
<= pcie_link_width;
|
<= pcie_link_width;
|
General_Status_i(CINT_BIT_ICAP_BUSY_IN_GSR)
|
General_Status_i(CINT_BIT_ICAP_BUSY_IN_GSR)
|
<= icap_Busy;
|
<= icap_Busy;
|
General_Status_i(CINT_BIT_DG_AVAIL_IN_GSR)
|
-- General_Status_i(CINT_BIT_DG_AVAIL_IN_GSR)
|
<= DG_is_Available;
|
-- <= DG_is_Available;
|
General_Status_i(CINT_BIT_LINK_ACT_IN_GSR+1 downto CINT_BIT_LINK_ACT_IN_GSR)
|
-- General_Status_i(CINT_BIT_LINK_ACT_IN_GSR+1 downto CINT_BIT_LINK_ACT_IN_GSR)
|
<= protocol_link_act;
|
-- <= protocol_link_act;
|
|
|
-- General_Status_i(8) <= CTL_read_counter(6-1); ---- DEBUG !!!
|
-- General_Status_i(8) <= CTL_read_counter(6-1); ---- DEBUG !!!
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
Line 2868... |
Line 2786... |
|
|
eb_FIFO_Status_o_Lo(32-1 downto 0)
|
eb_FIFO_Status_o_Lo(32-1 downto 0)
|
<= eb_FIFO_Status_r1(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_EB_STACON)='1'
|
<= eb_FIFO_Status_r1(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_EB_STACON)='1'
|
else (Others=>'0');
|
else (Others=>'0');
|
|
|
--------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------
|
-- Optical Link Status
|
-- -- Optical Link Status
|
--------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------
|
Opto_Link_Status_o_Hi(32-1 downto 0)
|
-- Opto_Link_Status_o_Hi(32-1 downto 0)
|
<= Opto_Link_Status_i(32-1 downto 0) when Reg_RdMuxer_Hi(CINT_ADDR_PROTOCOL_STACON)='1'
|
-- <= Opto_Link_Status_i(32-1 downto 0) when Reg_RdMuxer_Hi(CINT_ADDR_PROTOCOL_STACON)='1'
|
else (Others=>'0');
|
-- else (Others=>'0');
|
|
--
|
Opto_link_Status_o_Lo(32-1 downto 0)
|
-- Opto_link_Status_o_Lo(32-1 downto 0)
|
<= Opto_Link_Status_i(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_PROTOCOL_STACON)='1'
|
-- <= Opto_Link_Status_i(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_PROTOCOL_STACON)='1'
|
else (Others=>'0');
|
-- else (Others=>'0');
|
|
--
|
--------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------
|
-- Class CTL status
|
-- -- Class CTL status
|
--------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------
|
class_CTL_Status_o_Hi(32-1 downto 0)
|
-- class_CTL_Status_o_Hi(32-1 downto 0)
|
<= class_CTL_Status_i(32-1 downto 0) when Reg_RdMuxer_Hi(CINT_ADDR_TC_STATUS)='1'
|
-- <= class_CTL_Status_i(32-1 downto 0) when Reg_RdMuxer_Hi(CINT_ADDR_TC_STATUS)='1'
|
else (Others=>'0');
|
-- else (Others=>'0');
|
|
--
|
class_CTL_Status_o_Lo(32-1 downto 0)
|
-- class_CTL_Status_o_Lo(32-1 downto 0)
|
<= class_CTL_Status_i(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_TC_STATUS)='1'
|
-- <= class_CTL_Status_i(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_TC_STATUS)='1'
|
else (Others=>'0');
|
-- else (Others=>'0');
|
|
--
|
--------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------
|
-- Data generator Status
|
-- -- Data generator Status
|
--------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------
|
DG_Status_o_Hi(32-1 downto 0)
|
-- DG_Status_o_Hi(32-1 downto 0)
|
<= DG_Status_i(32-1 downto 0) when Reg_RdMuxer_Hi(CINT_ADDR_DG_CTRL)='1'
|
-- <= DG_Status_i(32-1 downto 0) when Reg_RdMuxer_Hi(CINT_ADDR_DG_CTRL)='1'
|
else (Others=>'0');
|
-- else (Others=>'0');
|
|
--
|
DG_Status_o_Lo(32-1 downto 0)
|
-- DG_Status_o_Lo(32-1 downto 0)
|
<= DG_Status_i(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_DG_CTRL)='1'
|
-- <= DG_Status_i(32-1 downto 0) when Reg_RdMuxer_Lo(CINT_ADDR_DG_CTRL)='1'
|
else (Others=>'0');
|
-- else (Others=>'0');
|
|
|
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
-- Hardware version
|
-- Hardware version
|
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
HW_Version_o_Hi(32-1 downto 0)
|
HW_Version_o_Hi(32-1 downto 0)
|
Line 2959... |
Line 2877... |
|
|
or IG_Latency_o_Hi (32-1 downto 0)
|
or IG_Latency_o_Hi (32-1 downto 0)
|
or IG_Num_Assert_o_Hi (32-1 downto 0)
|
or IG_Num_Assert_o_Hi (32-1 downto 0)
|
or IG_Num_Deassert_o_Hi(32-1 downto 0)
|
or IG_Num_Deassert_o_Hi(32-1 downto 0)
|
|
|
or DG_Status_o_Hi (32-1 downto 0)
|
-- or DG_Status_o_Hi (32-1 downto 0)
|
or class_CTL_Status_o_Hi (32-1 downto 0)
|
-- or class_CTL_Status_o_Hi (32-1 downto 0)
|
|
|
-- or icap_O_o_Hi (32-1 downto 0)
|
-- or icap_O_o_Hi (32-1 downto 0)
|
or Opto_Link_Status_o_Hi (32-1 downto 0)
|
-- or Opto_Link_Status_o_Hi (32-1 downto 0)
|
or eb_FIFO_Status_o_Hi (32-1 downto 0)
|
or eb_FIFO_Status_o_Hi (32-1 downto 0)
|
or dlm_rd_o_Hi
|
-- or dlm_rd_o_Hi
|
or ctl_td_o_Hi
|
-- or ctl_td_o_Hi
|
;
|
;
|
|
|
|
|
Regs_RdQout_i(32-1 downto 0) <=
|
Regs_RdQout_i(32-1 downto 0) <=
|
HW_Version_o_Lo (32-1 downto 0)
|
HW_Version_o_Lo (32-1 downto 0)
|
Line 3006... |
Line 2924... |
|
|
or IG_Latency_o_Lo (32-1 downto 0)
|
or IG_Latency_o_Lo (32-1 downto 0)
|
or IG_Num_Assert_o_Lo (32-1 downto 0)
|
or IG_Num_Assert_o_Lo (32-1 downto 0)
|
or IG_Num_Deassert_o_Lo(32-1 downto 0)
|
or IG_Num_Deassert_o_Lo(32-1 downto 0)
|
|
|
or DG_Status_o_Lo (32-1 downto 0)
|
-- or DG_Status_o_Lo (32-1 downto 0)
|
or class_CTL_Status_o_Lo (32-1 downto 0)
|
-- or class_CTL_Status_o_Lo (32-1 downto 0)
|
|
|
-- or icap_O_o_Lo(32-1 downto 0)
|
-- or icap_O_o_Lo(32-1 downto 0)
|
or Opto_Link_Status_o_Lo (32-1 downto 0)
|
-- or Opto_Link_Status_o_Lo (32-1 downto 0)
|
or eb_FIFO_Status_o_Lo (32-1 downto 0)
|
or eb_FIFO_Status_o_Lo (32-1 downto 0)
|
or dlm_rd_o_Lo
|
-- or dlm_rd_o_Lo
|
or ctl_td_o_Lo
|
-- or ctl_td_o_Lo
|
;
|
;
|
|
|
end if;
|
end if;
|
end process;
|
end process;
|
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- -- Implementation codes
|
|
-- -----------------------------------------------------------------------------
|
|
-- Gen_ICAP_width_8:
|
|
-- if C_ICAP_WIDTH=8 generate
|
|
--
|
|
-- ICAP_VIRTEX4_pcie :
|
|
-- ICAP_VIRTEX4
|
|
-- generic map (
|
|
-- ICAP_WIDTH => "X8" -- "X8" or "X32"
|
|
-- )
|
|
-- port map (
|
|
-- BUSY => icap_BUSY , -- Busy output
|
|
-- O => icap_O , -- 8-bit data output
|
|
-- CE => icap_CE , -- Clock enable input
|
|
-- CLK => icap_CLK , -- Clock input
|
|
-- I => icap_I , -- 8-bit data input
|
|
-- WRITE => icap_WRITE -- Write input
|
|
-- );
|
|
--
|
|
-- end generate;
|
|
--
|
|
-- Gen_ICAP_width_32:
|
|
-- if C_ICAP_WIDTH=32 generate
|
|
--
|
|
-- ICAP_VIRTEX4_pcie :
|
|
-- ICAP_VIRTEX4
|
|
-- generic map (
|
|
-- ICAP_WIDTH => "X32" -- "X8" or "X32"
|
|
-- )
|
|
-- port map (
|
|
-- BUSY => icap_BUSY , -- Busy output
|
|
-- O => icap_O , -- 32-bit data output
|
|
-- CE => icap_CE , -- Clock enable input
|
|
-- CLK => icap_CLK , -- Clock input
|
|
-- I => icap_I , -- 32-bit data input
|
|
-- WRITE => icap_WRITE -- Write input
|
|
-- );
|
|
--
|
|
-- end generate;
|
|
--
|
|
|
|
end Behavioral;
|
end Behavioral;
|
|
|
No newline at end of file
|
No newline at end of file
|