cloudFPGA (cF) API
1.0
The documentation of the source code of cloudFPGA (cF)
|
: A class to access an ETHernet data chunk transmitted over an AXI4-Stream interface. More...
Go to the source code of this file.
Classes | |
class | AxisEth |
Typedefs | |
typedef ap_uint< 48 > | LE_EthSrcAddr |
typedef ap_uint< 48 > | LE_EthDstAddr |
typedef ap_uint< 48 > | LE_EthAddress |
typedef ap_uint< 48 > | LE_EthAddr |
typedef ap_uint< 16 > | LE_EthTypeLen |
typedef ap_uint< 16 > | LE_EtherType |
typedef ap_uint< 16 > | LE_EtherLen |
typedef ap_uint< 48 > | EthSrcAddr |
typedef ap_uint< 48 > | EthDstAddr |
typedef ap_uint< 48 > | EthAddress |
typedef ap_uint< 48 > | EthAddr |
typedef ap_uint< 16 > | EthTypeLen |
typedef ap_uint< 16 > | EtherType |
typedef ap_uint< 16 > | EtherLen |
typedef ap_uint< 16 > | LE_Ip4DstAddrHi |
typedef ap_uint< 16 > | LE_Ip4DstAddrLo |
typedef ap_uint< 16 > | Ip4DstAddrHi |
typedef ap_uint< 16 > | Ip4DstAddrLo |
: A class to access an ETHernet data chunk transmitted over an AXI4-Stream interface.
System: : cloudFPGA Component : Shell, Network Transport Stack (NTS) Language : Vivado HLS
: The ETHernet (ETH) fields defined in this class refer to the format generated by the 10GbE MAC of Xilinx which organizes its two 64-bit Rx and Tx interfaces into 8 lanes (see PG157). The result of this division into lanes, is that the ETH fields end up being stored in LITTLE-ENDIAN order instead of the initial big-endian order used to transmit bytes over the physical media. As an example, consider the 16-bit field "EtherType" of the ETH frame which value is '0x0800' when the Ethernet frame contains an IPv4 packet. This field will be transmitted on the media in big-endian order .i.e, a '0x08' followed by a '0x00'. However, this field will end up being ordered in little-endian mode (.i.e, 0x0080) by the AXI4-Stream interface of the 10GbE MAC.
Therefore, the mapping of an ETH frame onto the 64-bits of an AXI4-Stream interface encoded in LITTLE-ENDIAN is as follows:
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SA[1] | SA[0] | DA[5] | DA[4] | DA[3] | DA[2] | DA[1] | DA[0] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | Data | Length/Type | SA[5] | SA[4] | SA[3] | SA[2] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | Data | Data | Data | Data | Data | Data | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
And the format of an ARP packet over an ETHERNET frame is as follow: 6 5 4 3 2 1 0 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SA[1] | SA[0] | DA[5] | DA[4] | DA[3] | DA[2] | DA[1] | DA[0] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HTYPE=0x0001 | Length/Type | SA[5] | SA[4] | SA[3] | SA[2] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SHA[1] | SHA[0] | OPER=0x0001 (or 0x0002) | PLEN=0x04 | HLEN=0x06 | PTYPE=0x0800 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SPA[3] | SPA[2] | SPA[1] | SPA[0] | SHA[5] | SHA[4] | SHA[3] | SHA[2] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TPA[1] | TPA[0] | THA[5] | THA[4] | THA[3] | THA[2] | THA[1] | THA[0] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | | TPA[3] | TPA[2] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
And the format of an IPv4 packet over an ETHERNET frame is as follows:
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SA[1] | SA[0] | DA[5] | DA[4] | DA[3] | DA[2] | DA[1] | DA[0] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type of Service|Version| IHL | Length/Type | SA[5] | SA[4] | SA[3] | SA[2] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Protocol | Time to Live | Frag. Offset |Flags| | Identification | Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address (Hi-Word) | Source Address | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | Options (if IHL>5) or Data | Destination Address (Lo-Word) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Definition in file AxisEth.hpp.