1 ------------------------------------------------------------------------------- 2 -- File : IpV4Engine.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2015-08-12 5 -- Last update: 2016-09-16 6 ------------------------------------------------------------------------------- 7 -- Description: IPv4 Top-level Module for IPv4/ARP/ICMP 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 --! @ingroup ethernet_IpV4Engine 29 TPD_G : := 1 ns;
-- Simulation parameter only 32 CLIENT_SIZE_G : positive := 1;
-- Sets the number of attached client engines 35 VLAN_G : := false);
-- true = VLAN support 37 -- Local Configurations 38 localMac :
in slv(
47 downto 0); -- big-Endian
configuration 39 localIp :
in slv(
31 downto 0); -- big-Endian
configuration 40 -- Interface to Ethernet Media Access Controller (MAC) 45 -- Interface to Protocol Engine(s) 50 -- Interface to Client Engine(s) 99 -- Local Configurations 137 -- Local Configurations 140 -- Interface to Client Engine(s) 145 -- Interface to Ethernet Frame MUX/DEMUX 161 -- Interface to Ethernet Frame MUX/DEMUX 166 -- Interface to Protocol Engine 181 -- Local Configurations 183 -- Interface to Ethernet Frame MUX/DEMUX 188 -- Interface to Protocol Engine 199 -- Local Configurations 201 -- Interface to ICMP Engine 216 end generate GEN_VEC;
array(natural range <> ) of AxiStreamSlaveType AxiStreamSlaveArray
TTL_Gslv( 7 downto 0) := x"20"
AxiStreamMasterArray( PROTOCOL_SIZE_G downto 0) obMasters
PROTOCOL_SIZE_Gpositive := 1
out ibIpv4SlaveAxiStreamSlaveType
Slv8Array( PROTOCOL_SIZE_G downto 0) := GenIPv4List(PROTOCOL_G ) PROTOCOL_C
PROTOCOL_GSlv8Array :=( 0=> UDP_C)
AxiStreamMasterType obArpMaster
in localIpslv( 31 downto 0)
out obIcmpMasterAxiStreamMasterType
in obIcmpSlaveAxiStreamSlaveType
in ibIpv4MasterAxiStreamMasterType
CLIENT_SIZE_Gpositive := 1
out ibProtocolMastersAxiStreamMasterArray( PROTOCOL_SIZE_G- 1 downto 0)
out ibMacMasterAxiStreamMasterType
in obMacMasterAxiStreamMasterType
in localMacslv( 47 downto 0)
CLK_FREQ_Greal := 156.25E+06
in obProtocolMastersAxiStreamMasterArray( PROTOCOL_SIZE_G- 1 downto 0)
out ibArpMasterAxiStreamMasterType
out ibIpv4MasterAxiStreamMasterType
out ibArpSlaveAxiStreamSlaveType
AxiStreamMasterType obIpv4Master
in localMacslv( 47 downto 0)
in obProtocolMastersAxiStreamMasterArray( PROTOCOL_SIZE_G- 1 downto 0)
in localIpslv( 31 downto 0)
out obMacSlaveAxiStreamSlaveType
out arpAckMastersAxiStreamMasterArray( CLIENT_SIZE_G- 1 downto 0)
AxiStreamSlaveType localhostSlave
out localhostMasterAxiStreamMasterType
in localhostSlaveAxiStreamSlaveType
out mAxisMasterAxiStreamMasterType
NUM_SLAVES_Ginteger range 1 to 32:= 4
out obMacSlaveAxiStreamSlaveType
AxiStreamMasterType ibIpv4Master
out arpReqSlavesAxiStreamSlaveArray( CLIENT_SIZE_G- 1 downto 0)
AxiStreamSlaveType obArpSlave
out ibIcmpSlaveAxiStreamSlaveType
out obProtocolSlavesAxiStreamSlaveArray( PROTOCOL_SIZE_G- 1 downto 0)
out obArpMasterAxiStreamMasterType
in ibArpMasterAxiStreamMasterType
in arpReqMastersAxiStreamMasterArray( CLIENT_SIZE_G- 1 downto 0)
in arpAckSlavesAxiStreamSlaveArray( CLIENT_SIZE_G- 1 downto 0)
AxiStreamSlaveArray( PROTOCOL_SIZE_G downto 0) ibSlaves
out arpAckMastersAxiStreamMasterArray( CLIENT_SIZE_G- 1 downto 0)
array(natural range <> ) of AxiStreamMasterType AxiStreamMasterArray
out arpReqSlavesAxiStreamSlaveArray( CLIENT_SIZE_G- 1 downto 0)
AxiStreamSlaveType ibArpSlave
out localhostSlaveAxiStreamSlaveType
Slv8Array GenIPv4Listfoo,
out ibProtocolMastersAxiStreamMasterArray( PROTOCOL_SIZE_G- 1 downto 0)
AxiStreamSlaveType ibIpv4Slave
in localIpslv( 31 downto 0)
in obMacMasterAxiStreamMasterType
in ibIcmpMasterAxiStreamMasterType
out obIpv4MasterAxiStreamMasterType
AxiStreamMasterType ibArpMaster
CLK_FREQ_Greal := 156.25E+06
CLIENT_SIZE_Gpositive := 1
in localMacslv( 47 downto 0)
in arpReqMastersAxiStreamMasterArray( CLIENT_SIZE_G- 1 downto 0)
TTL_Gslv( 7 downto 0) := x"20"
out obProtocolSlavesAxiStreamSlaveArray( PROTOCOL_SIZE_G- 1 downto 0)
slv( 7 downto 0) := x"11" UDP_C
in localMacslv( 47 downto 0)
PROTOCOL_SIZE_Gpositive := 1
in ibMacSlaveAxiStreamSlaveType
PROTOCOL_GSlv8Array :=( 0=> UDP_C)
AxiStreamMasterArray( PROTOCOL_SIZE_G downto 0) ibMasters
in obArpSlaveAxiStreamSlaveType
array(natural range <> ) of slv( 7 downto 0) Slv8Array
in localhostMasterAxiStreamMasterType
AxiStreamSlaveArray( PROTOCOL_SIZE_G downto 0) obSlaves
in ibArpSlaveAxiStreamSlaveType
in arpAckSlavesAxiStreamSlaveArray( CLIENT_SIZE_G- 1 downto 0)
AxiStreamMasterType localhostMaster
PROTOCOL_SIZE_Gpositive := 1
in mAxisSlaveAxiStreamSlaveType
in ibProtocolSlavesAxiStreamSlaveArray( PROTOCOL_SIZE_G- 1 downto 0)
in ibIpv4SlaveAxiStreamSlaveType
in obIpv4SlaveAxiStreamSlaveType
in ibProtocolSlavesAxiStreamSlaveArray( PROTOCOL_SIZE_G- 1 downto 0)
PROTOCOL_GSlv8Array :=( 0=> UDP_C)
AxiStreamSlaveType obIpv4Slave
slv( 7 downto 0) := x"01" ICMP_C