H3 Class Hash

ENTITY H3_HASH IS

Component for computing any hash function from universal H3 class. Universal hash functions have some interesting properties, for reference, check out this paper: https://www.cs.princeton.edu/courses/archive/fall09/cos521/Handouts/universalclasses.pdf. This component has default latency of 0 clock cycles, for larger inputs and outputs one can enable one pipeline stage and output register.

Generics

Generic

Type

Default

Description

DATA_WIDTH

natural

256

Width of data, which will be hashed, currently supporting DATA_WIDTH <= 256

HASH_WIDTH

natural

64

Resulting hash width, currently supporting HASH_WIDTH <= 64

H3_TYPE

string

“AUTO”

Type of hash core, which will be used. Those are precomputed and stored in h3_pack.vhd. Names are defined like this: H3C_(input_width)x(output_width). Available values are:

  • “H3C_64x16”

  • “H3C_64x22”

  • “H3C_22x11”

  • “H3C_256x64”

  • “AUTO” - hash core will be selected automatically

PIPELINE

boolean

true

One pipeline stage will be inserted into H3 hash function, adding latency of 1 clock cycle.

OUT_REG

boolean

true

Add output register.

Ports

Port

Type

Mode

Description

CLK

std_logic

in

RESET

std_logic

in

DATA_IN

std_logic_vector(DATA_WIDTH - 1 downto 0)

in

Input data

DATA_IN_VLD

std_logic

in

DATA_IN_RDY

std_logic

out

DATA_OUT

std_logic_vector(HASH_WIDTH - 1 downto 0)

out

Output hash

DATA_OUT_VLD

std_logic

out

DATA_OUT_RDY

std_logic

in