URL
https://opencores.org/ocsvn/neorv32/neorv32/trunk
[/] [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
|
© copyright 1999-2025
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.