Site icon High-Level Synthesis & Embedded Systems

Random Number Generator in HLS Using LFSR

Digital System Design with High-Level Synthesis for FPGA: Combinational Circuits

Udemy Course

 

Linear Feedback Shift Register (LFSR) is a shift register that can be used to generate random numbers in hardware.

The following code represents an LFSR with equation 

unsigned int pseudo_random(unsigned int seed, int load) {
  static ap_uint<32> lfsr;
  if (load ==1 )
    lfsr = seed;
  bool b_32 = lfsr.get_bit(32-32);
  bool b_22 = lfsr.get_bit(32-22);
  bool b_2 = lfsr.get_bit(32-2);
  bool b_1 = lfsr.get_bit(32-1);
  bool new_bit = b_32 ^ b_22 ^ b_2 ^ b_1;
  lfsr = lfsr >> 1;
  lfsr.set_bit(31, new_bit);

  return lfsr.to_uint();

}

Digital System Design with High-Level Synthesis for FPGA: Combinational Circuits

Udemy Course

Exit mobile version