1 ------------------------------------------------------------------------------- 2 -- File : SaltUltraScale.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2015-06-15 5 -- Last update: 2017-02-10 6 ------------------------------------------------------------------------------- 7 -- Description: SLAC Asynchronous Logic Transceiver (SALT) UltraScale Core 8 ------------------------------------------------------------------------------- 9 -- This file is part of 'SLAC Firmware Standard Library'. 10 -- It is subject to the license terms in the LICENSE.txt file found in the 11 -- top-level directory of this distribution and at: 12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 13 -- No part of 'SLAC Firmware Standard Library', including this file, 14 -- may be copied, modified, propagated, or distributed except according to 15 -- the terms contained in the LICENSE.txt file. 16 ------------------------------------------------------------------------------- 19 use ieee.std_logic_1164.
all;
26 use unisim.vcomponents.
all;
29 --! @ingroup protocols_salt_xilinxUltraScale 70 component SaltUltraScaleCore
72 ----------------------------- 73 -- LVDS transceiver Interface 74 ----------------------------- 75 txp :
out ;
-- Differential +ve of serial transmission from PMA to PMD. 76 txn :
out ;
-- Differential -ve of serial transmission from PMA to PMD. 77 rxp :
in ;
-- Differential +ve for serial reception from PMD to PMA. 78 rxn :
in ;
-- Differential -ve for serial reception from PMD to PMA. 81 sgmii_clk_r :
out ;
-- Clock for client MAC (125Mhz, 12.5MHz or 1.25MHz). 82 sgmii_clk_f :
out ;
-- Clock for client MAC (125Mhz, 12.5MHz or 1.25MHz). 83 sgmii_clk_en :
out ;
-- Clock enable for client MAC 87 speed_is_10_100 :
in ;
-- Core should operate at either 10Mbps or 100Mbps speeds 88 speed_is_100 :
in ;
-- Core should operate at 100Mbps speed 95 gmii_txd :
in (
7 downto 0);
-- Transmit data from client MAC. 96 gmii_tx_en :
in ;
-- Transmit control signal from client MAC. 97 gmii_tx_er :
in ;
-- Transmit control signal from client MAC. 98 gmii_rxd :
out (
7 downto 0);
-- Received Data to client MAC. 99 gmii_rx_dv :
out ;
-- Received control signal to client MAC. 100 gmii_rx_er :
out ;
-- Received control signal to client MAC. 101 gmii_isolate :
out ;
-- Tristate control to electrically isolate GMII. 105 configuration_vector :
in (
4 downto 0);
-- Alternative to MDIO interface. 106 status_vector :
out (
15 downto 0);
-- Core status. 107 reset :
in ;
-- Asynchronous reset for entire core. 108 signal_detect :
in );
-- Input from PMD to indicate presence of optical input. 111 component SaltUltraScaleRxOnly
113 ----------------------------- 114 -- LVDS transceiver Interface 115 ----------------------------- 116 rxp :
in ;
-- Differential +ve for serial reception from PMD to PMA. 117 rxn :
in ;
-- Differential -ve for serial reception from PMD to PMA. 120 sgmii_clk_r :
out ;
-- Clock for client MAC (125Mhz, 12.5MHz or 1.25MHz). 121 sgmii_clk_f :
out ;
-- Clock for client MAC (125Mhz, 12.5MHz or 1.25MHz). 122 sgmii_clk_en :
out ;
-- Clock enable for client MAC 126 speed_is_10_100 :
in ;
-- Core should operate at either 10Mbps or 100Mbps speeds 127 speed_is_100 :
in ;
-- Core should operate at 100Mbps speed 134 gmii_txd :
in (
7 downto 0);
-- Transmit data from client MAC. 135 gmii_tx_en :
in ;
-- Transmit control signal from client MAC. 136 gmii_tx_er :
in ;
-- Transmit control signal from client MAC. 137 gmii_rxd :
out (
7 downto 0);
-- Received Data to client MAC. 138 gmii_rx_dv :
out ;
-- Received control signal to client MAC. 139 gmii_rx_er :
out ;
-- Received control signal to client MAC. 140 gmii_isolate :
out ;
-- Tristate control to electrically isolate GMII. 144 configuration_vector :
in (
4 downto 0);
-- Alternative to MDIO interface. 145 status_vector :
out (
15 downto 0);
-- Core status. 146 reset :
in ;
-- Asynchronous reset for entire core. 147 signal_detect :
in );
-- Input from PMD to indicate presence of optical input. 150 component SaltUltraScaleTxOnly
152 ----------------------------- 153 -- LVDS transceiver Interface 154 ----------------------------- 155 txp :
out ;
-- Differential +ve of serial transmission from PMA to PMD. 156 txn :
out ;
-- Differential -ve of serial transmission from PMA to PMD. 159 sgmii_clk_r :
out ;
-- Clock for client MAC (125Mhz, 12.5MHz or 1.25MHz). 160 sgmii_clk_f :
out ;
-- Clock for client MAC (125Mhz, 12.5MHz or 1.25MHz). 161 sgmii_clk_en :
out ;
-- Clock enable for client MAC 165 speed_is_10_100 :
in ;
-- Core should operate at either 10Mbps or 100Mbps speeds 166 speed_is_100 :
in ;
-- Core should operate at 100Mbps speed 172 gmii_txd :
in (
7 downto 0);
-- Transmit data from client MAC. 173 gmii_tx_en :
in ;
-- Transmit control signal from client MAC. 174 gmii_tx_er :
in ;
-- Transmit control signal from client MAC. 175 gmii_rxd :
out (
7 downto 0);
-- Received Data to client MAC. 176 gmii_rx_dv :
out ;
-- Received control signal to client MAC. 177 gmii_rx_er :
out ;
-- Received control signal to client MAC. 178 gmii_isolate :
out ;
-- Tristate control to electrically isolate GMII. 182 configuration_vector :
in (
4 downto 0);
-- Alternative to MDIO interface. 183 status_vector :
out (
15 downto 0);
-- Core status. 184 reset :
in ;
-- Asynchronous reset for entire core. 185 signal_detect :
in );
-- Input from PMD to indicate presence of optical input. 203 config(
0) <= '1'; -- Unidirectional Enabled
204 config(
1) <= loopback; -- loopback
205 config(
2) <= powerDown; -- powerDown
206 config(
3) <= '0'; -- Isolate Disabled
207 config(
4) <= '0'; -- Auto-Negotiation Disabled
210 U_SaltUltraScaleCore : SaltUltraScaleCore
212 ----------------------------- 213 -- LVDS transceiver Interface 214 ----------------------------- 223 sgmii_clk_en =>
open,
227 speed_is_10_100 => '0',
241 gmii_isolate =>
open,
245 configuration_vector =>
config,
248 signal_detect => '1'
);
254 U_SaltUltraScaleCore : SaltUltraScaleRxOnly
256 ----------------------------- 257 -- LVDS transceiver Interface 258 ----------------------------- 265 sgmii_clk_en =>
open,
269 speed_is_10_100 => '0',
283 gmii_isolate =>
open,
287 configuration_vector =>
config,
290 signal_detect => '1'
);
294 U_SaltUltraScaleCore : SaltUltraScaleTxOnly
296 ----------------------------- 297 -- LVDS transceiver Interface 298 ----------------------------- 305 sgmii_clk_en =>
open,
309 speed_is_10_100 => '0',
322 gmii_isolate =>
open,
326 configuration_vector =>
config,
329 signal_detect => '1'
);
333 SaltTx_Inst :
entity work.
SaltTx 360 SaltRx_Inst :
entity work.
SaltRx
in mAxisSlaveAxiStreamSlaveType
out mAxisMasterAxiStreamMasterType
MASTER_AXI_CONFIG_GAxiStreamConfigType := ssiAxiStreamConfig( 4)
COMMON_TX_CLK_Gboolean := false
AxiStreamMasterType :=(tValid => '0',tData =>( others => '0'),tStrb =>( others => '1'),tKeep =>( others => '1'),tLast => '0',tDest =>( others => '0'),tId =>( others => '0'),tUser =>( others => '0')) AXI_STREAM_MASTER_INIT_C
SLAVE_AXI_CONFIG_GAxiStreamConfigType := ssiAxiStreamConfig( 4)
in sAxisMasterAxiStreamMasterType
in sAxisMasterAxiStreamMasterType
MASTER_AXI_CONFIG_GAxiStreamConfigType := ssiAxiStreamConfig( 4)
out sAxisSlaveAxiStreamSlaveType
SLAVE_AXI_CONFIG_GAxiStreamConfigType := ssiAxiStreamConfig( 4)
in rxDataslv( 7 downto 0)
out sAxisSlaveAxiStreamSlaveType
TX_ENABLE_Gboolean := true
in mAxisSlaveAxiStreamSlaveType
COMMON_TX_CLK_Gboolean := false
RX_ENABLE_Gboolean := true
COMMON_RX_CLK_Gboolean := false
AxiStreamSlaveType :=(tReady => '1') AXI_STREAM_SLAVE_FORCE_C
out txDataslv( 7 downto 0)
out mAxisMasterAxiStreamMasterType
COMMON_RX_CLK_Gboolean := false