Design an ARP (Address Resolution Protocol) response generator.

ARP is used to map IP addresses to MAC addresses on a local network. In
low-latency trading systems, fast ARP response is critical for maintaining
network connectivity. This module generates ARP replies in response to
incoming ARP requests that match our IP address.

Module name: arp_resp
Ports:
  - input         clk
  - input         rst_n
  - input  [31:0] our_ip          // Our IP address (configured)
  - input  [47:0] our_mac         // Our MAC address (configured)
  - input  [31:0] req_sender_ip   // Sender IP from ARP request
  - input  [47:0] req_sender_mac  // Sender MAC from ARP request
  - input  [31:0] req_target_ip   // Target IP from ARP request
  - input         req_valid       // ARP request is valid
  - output [47:0] resp_dst_mac    // Destination MAC in ARP reply
  - output [31:0] resp_dst_ip     // Destination IP (target) in ARP reply
  - output [31:0] resp_src_ip     // Source IP in ARP reply
  - output [47:0] resp_src_mac    // Source MAC in ARP reply
  - output [15:0] resp_opcode     // ARP opcode (2 = reply)
  - output        resp_valid      // ARP reply is valid

Functional specification:
  - When req_valid is asserted and req_target_ip matches our_ip:
    - Generate an ARP reply (one cycle latency, registered outputs)
    - resp_opcode = 16'd2 (ARP Reply)
    - resp_src_mac = our_mac
    - resp_src_ip  = our_ip
    - resp_dst_mac = req_sender_mac (reply to who asked)
    - resp_dst_ip  = req_sender_ip
    - resp_valid = 1 (asserted for one cycle)
  - When req_valid is asserted but req_target_ip != our_ip:
    - Do not respond: resp_valid stays 0
  - When req_valid is not asserted:
    - resp_valid = 0
  - Single cycle latency: response appears one clock after request
  - All output fields are registered

Example:
  - our_ip=192.168.1.100, our_mac=AA:BB:CC:DD:EE:FF
  - Request: sender_ip=192.168.1.1, sender_mac=11:22:33:44:55:66, target_ip=192.168.1.100
  - Reply: src_mac=AA:BB:CC:DD:EE:FF, src_ip=192.168.1.100,
           dst_mac=11:22:33:44:55:66, dst_ip=192.168.1.1, opcode=2
