OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [lib/] [source/] [neorv32_trng.c] - Diff between revs 64 and 68

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 64 Rev 68
Line 97... Line 97...
 * @param[in,out] data uint8_t pointer for storing random data byte.
 * @param[in,out] data uint8_t pointer for storing random data byte.
 * @return Data is valid when 0 and invalid otherwise.
 * @return Data is valid when 0 and invalid otherwise.
 **************************************************************************/
 **************************************************************************/
int neorv32_trng_get(uint8_t *data) {
int neorv32_trng_get(uint8_t *data) {
 
 
  const int retries = 3;
 
  int i;
 
  uint32_t ct_reg;
  uint32_t ct_reg;
 
 
  for (i=0; i<retries; i++) {
 
    ct_reg = NEORV32_TRNG.CTRL;
    ct_reg = NEORV32_TRNG.CTRL;
 
 
    if ((ct_reg & (1<<TRNG_CTRL_VALID)) == 0) { // output data valid?
  if (ct_reg & (1<<TRNG_CTRL_VALID)) { // output data valid?
      continue;
 
    }
 
 
 
    *data = (uint8_t)(ct_reg >> TRNG_CTRL_DATA_LSB);
    *data = (uint8_t)(ct_reg >> TRNG_CTRL_DATA_LSB);
    return 0; // valid data
    return 0; // valid data
  }
  }
 
  else {
  return -1; // no valid data available
    return -1;
 
  }
}
}
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.