Network Wizard for VHDL Test Benches
ARP

Address Resolution Protocol

The ethernet library provides functions for creating and checking ethernet packets.

Functionality

  • Create ARP packets
  • Extract ARP headers


More details in nw_arp_pkg

Example use

Include the libraries:

library nw_util;
context nw_util.nw_util_context;
library nw_ethernet;
context nw_ethernet.nw_ethernet_context;

Define a few variables:

variable v_header : t_arp_header; -- header record
variable v_arp_pkt : t_slv_arr(0 to 27)(7 downto 0); -- byte array
variable v_len : natural;

First setup the header, then calculate the total ethernet packet length before creating the packet.

v_header := C_DEFAULT_ARP_HEADER; -- copy default header
v_header.sender_hw_addr := f_eth_mac_2_slv_arr("08:00:27:27:1a:d5"); -- change sender MAC
v_len := f_arp_create_pkt_len(v_header); -- calculate total packet length (28)
v_arp_pkt(0 to v_len - 1) := f_arp_create_pkt(v_header); -- create the ARP packet

Next step is to can be to put the ARP packet into an Ethernet frame:

v_eth_header := C_DEFAULT_ETH_HEADER;
v_len := f_eth_create_pkt_len(v_eth_header, v_arp_pkt); -- calculate total packet length
v_eth_pkt(0 to v_len - 1) := f_eth_create_pkt(v_eth_header, v_arp_pkt); -- create the packet

See further examples in the test bench nw_ethernet_tb.vhd.