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