/**************************************************************************//** | |
* @file trng_reg.h | |
* @version V1.00 | |
* @brief TRNG register definition header file | |
* | |
* @copyright (C) 2017 Nuvoton Technology Corp. All rights reserved. | |
*****************************************************************************/ | |
#ifndef __TRNG_REG_H__ | |
#define __TRNG_REG_H__ | |
/** @addtogroup REGISTER Control Register | |
@{ | |
*/ | |
/*---------------------- True Random Number Generator -------------------------*/ | |
/** | |
@addtogroup TRNG True Random Number Generator(TRNG) | |
Memory Mapped Structure for TRNG Controller | |
@{ */ | |
typedef struct | |
{ | |
/** | |
* @var TRNG_T::CTL | |
* Offset: 0x00 TRNG Control Register and Status | |
* --------------------------------------------------------------------------------------------------- | |
* |Bits |Field |Descriptions | |
* | :----: | :----: | :---- | | |
* |[0] |TRNGEN |Random Number Generator Enable Bit | |
* | | |This bit can be set to 1 only after ACT (TRNG_ACT[7]) bit was set to 1 and READY (TRNG_CTL[7]) bit became 1. | |
* | | |0 = TRNG disabled. | |
* | | |1 = TRNG enabled. | |
* | | |Note: TRNGEN is an enable bit of digital part | |
* | | |When TRNG is not required to generate random number, TRNGEN bit and ACT (TRNG_ACT[7]) bit should be set to 0 to reduce power consumption. | |
* |[1] |DVIF |Data Valid (Read Only) | |
* | | |0 = Data is not valid. Reading from RNGD returns 0x00000000. | |
* | | |1 = Data is valid. A valid random number can be read form RNGD. | |
* | | |This bit is cleared to u20180u2019 by read TRNG_DATA. | |
* |[5:2] |CLKP |Clock Prescaler | |
* | | |The CLKP is the peripheral clock frequency range for the selected value , the CLKP must higher than or equal to the actual peripheral clock frequency (for correct random bit generation) | |
* | | |To change the CLKP contents, first set TRNGEN bit to 0 and then change CLKP; finally, set TRNGEN bit to 1 to re-enable the TRNG module. | |
* | | |0000 = 80 ~ 100 MHz. | |
* | | |0001 = 60 ~ 80 MHz. | |
* | | |0010 = 50 ~60 MHz. | |
* | | |0011 = 40 ~50 MHz. | |
* | | |0100 = 30 ~40 MHz. | |
* | | |0101 = 25 ~30 MHz. | |
* | | |0110 = 20 ~25 MHz. | |
* | | |0111 = 15 ~20 MHz. | |
* | | |1000 = 12 ~15 MHz. | |
* | | |1001 = 9 ~12 MHz. | |
* | | |1010 = 7 ~9 MHz. | |
* | | |1011 = 6 ~7 MHz. | |
* | | |1100 = 5 ~6 MHz. | |
* | | |1101 = 4 ~5 MHz. | |
* | | |1111 = Reserved. | |
* |[6] |DVIEN |Data Valid Interrupt Enable Bit | |
* | | |0 = Interrupt disabled.. | |
* | | |1 = Interrupt enabled. | |
* |[7] |READY |Random Number Generator Ready (Read Only) | |
* | | |After ACT (TRNG_ACT[7]) bit is set, the READY bit become to 1 after a delay of 90us~120us. | |
* | | |0 = RNG is not ready or was not activated. | |
* | | |1 = RNG is ready to be enabled.. | |
* |[31:8] |Reversed |Reversed | |
* @var TRNG_T::DATA | |
* Offset: 0x04 TRNG Data Register | |
* --------------------------------------------------------------------------------------------------- | |
* |Bits |Field |Descriptions | |
* | :----: | :----: | :---- | | |
* |[7:0] |DATA |Random Number Generator Data (Read Only) | |
* | | |The DATA store the random number generated by TRNG and can be read only once. | |
* @var TRNG_T::ACT | |
* Offset: 0x0C TRNG Activation Register | |
* --------------------------------------------------------------------------------------------------- | |
* |Bits |Field |Descriptions | |
* | :----: | :----: | :---- | | |
* |[6:0] |VER |TRNG Version | |
* | | |TRNG version number is dependent on TRNG module. | |
* | | |0x02:(Current Version Number) | |
* |[7] |ACT |Random Number Generator Activation | |
* | | |After enable the ACT bit, it will active the TRNG module and wait the READY (TRNG_CTL[7]) bit to become 1. | |
* | | |0 = TRNG inactive. | |
* | | |1 = TRNG active. | |
* | | |Note: ACT is an enable bit of analog part | |
* | | |When TRNG is not required to generate random number, TRNGEN (TRNG_CTL[0]) bit and ACT bit should be set to 0 to reduce power consumption. | |
*/ | |
__IO uint32_t CTL; /*!< [0x0000] TRNG Control Register and Status */ | |
__I uint32_t DATA; /*!< [0x0004] TRNG Data Register */ | |
__I uint32_t RESERVE0[1]; | |
__IO uint32_t ACT; /*!< [0x000c] TRNG Activation Register */ | |
} TRNG_T; | |
/** | |
@addtogroup TRNG_CONST TRNG Bit Field Definition | |
Constant Definitions for TRNG Controller | |
@{ */ | |
#define TRNG_CTL_TRNGEN_Pos (0) /*!< TRNG_T::CTL: TRNGEN Position */ | |
#define TRNG_CTL_TRNGEN_Msk (0x1ul << TRNG_CTL_TRNGEN_Pos) /*!< TRNG_T::CTL: TRNGEN Mask */ | |
#define TRNG_CTL_DVIF_Pos (1) /*!< TRNG_T::CTL: DVIF Position */ | |
#define TRNG_CTL_DVIF_Msk (0x1ul << TRNG_CTL_DVIF_Pos) /*!< TRNG_T::CTL: DVIF Mask */ | |
#define TRNG_CTL_CLKP_Pos (2) /*!< TRNG_T::CTL: CLKP Position */ | |
#define TRNG_CTL_CLKP_Msk (0xful << TRNG_CTL_CLKP_Pos) /*!< TRNG_T::CTL: CLKP Mask */ | |
#define TRNG_CTL_DVIEN_Pos (6) /*!< TRNG_T::CTL: DVIEN Position */ | |
#define TRNG_CTL_DVIEN_Msk (0x1ul << TRNG_CTL_DVIEN_Pos) /*!< TRNG_T::CTL: DVIEN Mask */ | |
#define TRNG_CTL_READY_Pos (7) /*!< TRNG_T::CTL: READY Position */ | |
#define TRNG_CTL_READY_Msk (0x1ul << TRNG_CTL_READY_Pos) /*!< TRNG_T::CTL: READY Mask */ | |
#define TRNG_CTL_Reversed_Pos (8) /*!< TRNG_T::CTL: Reversed Position */ | |
#define TRNG_CTL_Reversed_Msk (0xfffffful << TRNG_CTL_Reversed_Pos) /*!< TRNG_T::CTL: Reversed Mask */ | |
#define TRNG_DATA_DATA_Pos (0) /*!< TRNG_T::DATA: DATA Position */ | |
#define TRNG_DATA_DATA_Msk (0xfful << TRNG_DATA_DATA_Pos) /*!< TRNG_T::DATA: DATA Mask */ | |
#define TRNG_ACT_VER_Pos (0) /*!< TRNG_T::ACT: VER Position */ | |
#define TRNG_ACT_VER_Msk (0x7ful << TRNG_ACT_VER_Pos) /*!< TRNG_T::ACT: VER Mask */ | |
#define TRNG_ACT_ACT_Pos (7) /*!< TRNG_T::ACT: ACT Position */ | |
#define TRNG_ACT_ACT_Msk (0x1ul << TRNG_ACT_ACT_Pos) /*!< TRNG_T::ACT: ACT Mask */ | |
/**@}*/ /* TRNG_CONST */ | |
/**@}*/ /* end of TRNG register group */ | |
/**@}*/ /* end of REGISTER group */ | |
#endif /* __TRNG_REG_H__ */ |