Network Wizard for VHDL Test Benches
Loading...
Searching...
No Matches
nw_ethernet_pkg Package Body Reference
Package Body >> nw_ethernet_pkg

Functions

t_slv_arr   f_eth_create_pkt ( header: in t_ethernet_header , payload: in t_slv_arr )
 Create ethernet packet.
natural   f_eth_create_pkt_len ( header: in t_ethernet_header , payload: in t_slv_arr )
 Return length of ethernet packet.
t_ethernet_header   f_eth_get_header ( eth_pkt: in t_slv_arr )
 Get ethernet header.
t_slv_arr   f_eth_get_payload ( eth_pkt: in t_slv_arr )
 Get ethernet payload.
natural   f_eth_get_payload_len ( eth_pkt: in t_slv_arr )
 Get ethernet payload length.
boolean   f_eth_crc_ok ( eth_pkt: in t_slv_arr )
 Check CRC.
t_slv_arr   f_eth_mac_2_slv_arr ( mac: in string( 1 to 17) )
 Convert MAC string to slv_array.

Member Function/Procedure/Process Documentation

◆ f_eth_create_pkt()

t_slv_arr f_eth_create_pkt (   header in t_ethernet_header ,
  payload in t_slv_arr  
)
Function

Create ethernet packet.

Parameters
headerEthernet header
payloadEthernet payload
Returns
Ethernet packet (8bit array)

Create ethernet packet. Payload must be 8bit data array. Padding is added to achieve minimum frame size of 64 bytes. 4-byte FCS is added to the end of the packet. For VLAN tagging: Set header.vlan_tag.tpid = C_ET_VLAN.

Example use

v_eth_header := C_DEFAULT_ETH_HEADER;
v_packet_8bit := f_eth_create_pkt(v_eth_header, payload);
v_pkt_256bit := f_repack(f_concat(C_ETH_PREAMBLE, v_packet_8bit), 256); -- add preamble and repack to 256bit word size

◆ f_eth_create_pkt_len()

natural f_eth_create_pkt_len (   header in t_ethernet_header ,
  payload in t_slv_arr  
)
Function

Return length of ethernet packet.

Parameters
headerEthernet header
payloadEthernet payload
Returns
Length of ethernet packet

Return the length of the created ethernet packet.

Example use

v_len := f_eth_create_pkt_len(v_eth_header, payload);
v_pkt_8bit(0 to v_len - 1) := f_eth_create_pkt(v_eth_header, payload);

◆ f_eth_get_header()

t_ethernet_header f_eth_get_header (   eth_pkt in t_slv_arr  
)
Function

Get ethernet header.

Parameters
eth_pktEthernet packet (8bit)
Returns
Ethernet header

Extract ethernet header from ethernet packet. Assumes that first byte in packet is first byte after start frame delimiter.

Example use

v_eth_header := f_eth_get_header(data_array_8bit);

◆ f_eth_get_payload()

t_slv_arr f_eth_get_payload (   eth_pkt in t_slv_arr  
)
Function

Get ethernet payload.

Parameters
eth_pktEthernet packet (8bit)
Returns
Ethernet payload

Extract ethernet payload from ethernet packet. Assumes that first byte in packet is first byte after start frame delimiter.

Example use

v_len := f_eth_get_payload_len(data_array_8bit); -- determine size of payload
v_payload(0 to v_len - 1) := f_eth_get_payload(data_array_8bit);

◆ f_eth_get_payload_len()

natural f_eth_get_payload_len (   eth_pkt in t_slv_arr  
)
Function

Get ethernet payload length.

Parameters
eth_pktEthernet packet (8bit)
Returns
Ethernet payload length

Get ethernet payload length from ethernet packet. Assumes that first byte in packet is first byte after start frame delimiter.

Example use

v_len := f_eth_get_payload_len(data_array_8bit); -- determine size of payload

◆ f_eth_crc_ok()

boolean f_eth_crc_ok (   eth_pkt in t_slv_arr  
)
Function

Check CRC.

Parameters
eth_pktEthernet packet (8bit)
Returns
CRC is OK (True), or not (False)

Check CRC of ethernet packet. Assumes that first byte in packet is first byte after start frame delimiter and the FCS are the last four bytes.

Example use

v_check := f_eth_crc_ok(data_array_8bit);

◆ f_eth_mac_2_slv_arr()

t_slv_arr f_eth_mac_2_slv_arr (   mac in string( 1 to 17 )  
)
Function

Convert MAC string to slv_array.

Parameters
macMAC address in string format
Returns
MAC address as byte array

Convert MAC address in string format to byte array. The character separating the numbers is not checked, and can be any valid character.

Example use

v_mac := f_eth_mac_2_slv_arr("a2:34:56:f1:30:00"); -- v_mac is now (x"a2", x"34", x"56", x"f1", x"30", x"00")
v_mac := f_eth_mac_2_slv_arr("a2-34-56-f1-30-00"); -- v_mac is now (x"a2", x"34", x"56", x"f1", x"30", x"00")

The documentation for this design unit was generated from the following file: