Triple-Speed Ethernet Intel® FPGA IP User Guide: Agilex™ 5 FPGAs and SoCs

ID 813669
Date 10/07/2024
Public
Document Table of Contents

4.1.4.3.2. Multicast Address Resolution

You can use either a software program running on the host processor or a hardware multicast address resolution engine to resolve multicast addresses. Address resolution using a software program can affect the system performance, especially in gigabit mode.

The MAC function uses a 64-entry hash table in the register space, multicast hash table, to implement the hardware multicast address resolution engine as shown in figure below. The host processor must build the hash table according to the specified algorithm. A 6-bit code is generated from each multicast address by XORing the address bits as shown in table below. This code represents the address of an entry in the hash table. Write one to the most significant bit in the table entry. All multicast addresses that hash to the address of this entry are valid and accepted.

You can choose to generate the 6-bit code from all 48 bits of the destination address by setting the MHASH_SEL bit in the command_config register to 0, or from the lower 24 bits by setting the MHASH_SEL bit to 1. The latter option is provided if you want to omit the manufacturer's code, which typically resides in the upper 24 bits of the destination address, when generating the 6-bit code.

Figure 15. Hardware Multicast Address Resolution Engine


Table 14.  Hash Code Generation—Full Destination AddressAlgorithm for generating the 6-bit code from the entire destination address.
Hash Code Bit Value
0 xor multicast MAC address bits 7:0
1 xor multicast MAC address bits 15:8
2 xor multicast MAC address bits 23:16
3 xor multicast MAC address bits 31:24
4 xor multicast MAC address bits 39:32
5 xor multicast MAC address bits 47:40
Table 15.  Hash Code Generation—Lower 24 Bits of Destination AddressAlgorithm for generating the 6-bit code from the lower 24 bits of the destination address.
Hash Code Bit Value
0 xor multicast MAC address bits 3:0
1 xor multicast MAC address bits 7:4
2 xor multicast MAC address bits 11:8
3 xor multicast MAC address bits 15:12
4 xor multicast MAC address bits 19:16
5 xor multicast MAC address bits 23:20

The MAC function checks each multicast address received against the hash table, which serves as a fast matching engine, and a match is returned within one clock cycle. If there is no match, the MAC function discards the frame.

All multicast frames are accepted if all entries in the hash table are one.
Note:
  1. All entries in the hash table must be filled.
  2. RX_ENA needs to be set to '0' prior to filling the hash table.
Failure to follow notes (1) and (2) can result in error during multicast packet detection.