Network Wizard for VHDL Test Benches
nw_hamming_pkg Package Body Reference
Package >> nw_hamming_pkg

Functions

integer   f_calc_num_bits ( data: in t_slv_arr )
integer   f_calc_num_bits_dec ( data_len: in integer )
std_logic_vector   f_calc_hamming_bits (
data: in std_logic_vector
parity_bits: in integer
extra_parity: in boolean false
)
std_logic   f_calc_parity ( data: in std_logic_vector , even_parity: in boolean true )
 Calculate parity.
t_slv_arr   f_calc_parity ( data: in t_slv_arr , even_parity: in boolean true )
 Calculate parity.
t_slv_arr_ptr   f_hamming_enc ( data: in t_slv_arr , extra_parity: in boolean false[ impure ]
 Encode data array.
t_slv_arr   f_hamming_enc ( data: in t_slv_arr , extra_parity: in boolean false[ impure ]
 Encode data array.
natural   f_hamming_enc_width ( data: in t_slv_arr , extra_parity: in boolean false )
 Get encoded data width.
t_slv_arr_ptr   f_hamming_dec ( data: in t_slv_arr , extra_parity: in boolean false[ impure ]
 Decode data array.
t_slv_arr   f_hamming_dec ( data: in t_slv_arr , extra_parity: in boolean false[ impure ]
 Decode data array.
natural   f_hamming_dec_width ( data: in t_slv_arr , extra_parity: in boolean false )
 Get decoded data width.

Member Function Documentation

◆ f_calc_parity() [1/2]

std_logic f_calc_parity (   data in std_logic_vector ,
  even_parity in boolean true  
)
Function

Calculate parity.

Parameters
dataData vector
even_parityTrue = Use even parity (default), false = use odd parity
Returns
Parity bit

Calculate parity (even or odd) of a logic vector.

Example use

parity := f_calc_parity("0010101111101");

◆ f_calc_parity() [2/2]

t_slv_arr f_calc_parity (   data in t_slv_arr ,
  even_parity in boolean true  
)
Function

Calculate parity.

Parameters
dataData array
even_parityTrue = Use even parity (default), false = use odd parity
Returns
Parity bit array

Calculate parity (even or odd) of a logic vector array. Returns a one-bit array of parity.

Example use

parity_array := f_calc_parity(data_array);

◆ f_hamming_enc() [1/2]

t_slv_arr_ptr f_hamming_enc (   data in t_slv_arr ,
  extra_parity in boolean false  
) impure
Function

Encode data array.

Parameters
dataData array
extra_parityAdd extra parity bit (default=false)
Returns
Encoded data array pointer

Encode data with a Hamming encoder. The returned pointer should be deallocated after use to avoid memory leaks. The encoded data is non-systematic (data and parity bits mixed).

Example use

encoded_data_ptr := f_hamming_enc(data);

◆ f_hamming_enc() [2/2]

t_slv_arr f_hamming_enc (   data in t_slv_arr ,
  extra_parity in boolean false  
) impure
Function

Encode data array.

Parameters
dataData array
extra_parityAdd extra parity bit (default=false)
Returns
Encoded data array

Encode data with a Hamming encoder. Same as above, but returns a data array instead of pointer.

Example use

encoded_data := f_hamming_enc(data, true);

◆ f_hamming_enc_width()

natural f_hamming_enc_width (   data in t_slv_arr ,
  extra_parity in boolean false  
)
Function

Get encoded data width.

Parameters
dataData array
extra_parityAdd extra parity bit (default=false)
Returns
Encoded data array width

Get encoded data width. The encoded data width is the sum of data bits in input data and the number of parity bits required.

Example use

edata_width := f_hamming_enc_width(data);

◆ f_hamming_dec() [1/2]

t_slv_arr_ptr f_hamming_dec (   data in t_slv_arr ,
  extra_parity in boolean false  
) impure
Function

Decode data array.

Parameters
dataEncoded data array
extra_parityHas extra parity bit (default=false)
Returns
Pointer to decoded data array with status

Decode data with a Hamming decoder. The returned pointer should be deallocated after use to avoid memory leaks. If input data does not have extra parity bit, single errors will be corrected, and one extra status bit is added to decoded data to indicate positions where correction has been made. If input data have extra parity bit, two errors can be detected and one error corrected. This is indicated with two status bits, the first indicates single error correction, and the last double error detection.

Example use

decoded_data_ptr := f_hamming_dec(data, true);
decoded_data := decoded_data_ptr.all;
v_statpos := decoded_data(0)'high;
for i in decoded_data'range loop
if decoded_data(i)(v_statpos) = '1' then -- double error detected
...
elsif decoded_data(i)(v_statpos - 1) = '1' then -- sigle error corrected
...
end if;
end loop;
-- deallocate the array when finished
deallocate(decoded_data_ptr);

◆ f_hamming_dec() [2/2]

t_slv_arr f_hamming_dec (   data in t_slv_arr ,
  extra_parity in boolean false  
) impure
Function

Decode data array.

Parameters
dataEncoded data array
extra_parityHas extra parity bit (default=false)
Returns
Decoded data array with status

Decode data with a Hamming decoder. Same as above, but returns a data array instead of pointer.

Example use

decoded_data := f_hamming_dec(data, true);

◆ f_hamming_dec_width()

natural f_hamming_dec_width (   data in t_slv_arr ,
  extra_parity in boolean false  
)
Function

Get decoded data width.

Parameters
dataEncoded data array
extra_parityUse extra parity bit (default=false)
Returns
Width of decoded data including status bits

Get decoded data width, which is the original data width plus one or two status bits.

Example use

data_width := f_hamming_dec_width(data, true);

The documentation for this class was generated from the following file: