Hash Addressing

Versal Adaptive SoC Technical Reference Manual (AM011)

Document ID
AM011
Release Date
2023-10-05
Revision
1.6 English

The RX hash matching is enabled separately for unicast and multicast frames:

  • Enable unicast hash matching. Write a 1 to the Network_Config [unicast_hash_enable] register bit.
  • Enable multicast hash matching. Write a 1 to the Network_Config [multicast_hash_enable] register bit.

The destination address is reduced to a 6-bit index using the following hash function. The hash function is an XOR of every sixth bit of the destination address. If the hash_index points to a bit set in the 64-bit hash address (defined by the hash_top and hash_bottom registers), a match is detected.

Data bit 00 presents the least significant bit of the first byte (this is the multicast/unicast indicator). Data bit 47 represents the most significant bit of the last byte.

Table 1. Ethernet Hash Indexes
Hash Index Data Bits Received, da[nn]
0 00 06 12 18 24 30 36 42
1 01 07 13 19 25 31 37 43
2 02 08 14 20 26 32 38 44
3 03 09 15 21 27 33 39 45
4 04 10 16 22 28 34 40 46
5 05 11 17 23 29 35 41 47

If the hash index points to a bit that is set in the hash register, the frame is matched according to whether the frame is multicast or unicast.

A multicast match is signaled if:

  • [multicast_hash_enable] = 1
  • da[00] = 1
  • Hash index points to a bit set in the hash register, hash_top and hash_bottom

A unicast match is signaled if:

  • [unicast_hash_enable] = 1
  • da[00] = 0
  • Hash index points to a bit set in the hash register, hash_top and hash_bottom

To receive all multicast frames:

  • Write 1's to the hash register
  • Write 1 to [multicast_hash_enable]