IC:

支持的芯片

IC

RTL8721Dx

RTL8720E

RTL8726E

RTL8730E

支持状态

Y

Y

Y

Y

概述

真随机数生成器(TRNG)可生成全熵32位随机数据供应用程序使用。其核心组件包括动态熵源和内部调理模块。

该模块已通过NIST随机性测试,满足密码学应用的安全性要求。

特性

  • TRNG生成由熵源产生的32位真随机数

  • TRNG内部嵌入了一个健康测试单元和一个错误管理单元。

  • TRNG包含两个独立的FIFO:FIFO_NS和FIFO_S(更高优先级)

  • TRNG的吞吐量约为2Mbps

框图

TRNG的框图如下所示:

../../_images/trng_block_diagram.svg

TRNG包含以下子模块:

  • Clock

    • TRNG bus clock is 40MHz.

  • Noise Source

    • The noise source is digital OSC, as a random number source, it is internally composed of ring oscillator.

  • TRNG control

    • A bit is added to control whether the control register can be accessed from non-secure world.

    • Ensure that the default setting for OSC can work. ROM will use it only without configuring ROSC.

    • This area is the real control register, and the Control_S is the access window in the secure world, Control_NS is the access window in the non-secure world.

  • Debias and LFSR and Extractor

    • A serial post-processing circuit

  • RCT and APT

    • Two health tests of NIST specification

  • Control_S

    • This area is the access window in the secure world; the real address is “Control”.

  • Status_S

    • Indicates the available data in FIFO_S.

    • Indicates whether an error has happened.

  • FIFO_S

    • FIFO size is 256 bits.

    • Only have one window register instead of all the registers.

    • Read and return all zero when FIFO is empty.

    • When the available data is less than 128 bits, hardware will fill the FIFO_S to full in a high priority.

  • Control_NS

    • This area is the access window in the non-secure world; the real address is “Control”.

    • Only can be accessed when S bit in Control is 0.

  • Status_NS

    • Indicates the available data in FIFO_NS

    • Indicates whether an error has happened.

  • FIFO_NS

    • FIFO size is 128 bits.

    • Only have one window register instead of all the registers.

    • Read and returns all zero when FIFO is empty.

    • This FIFO has a lower priority than FIFO_S. If available data is less than 128 bits in FIFO_S, hardware will not feed any data to this FIFO.

使用说明

  • 若系统需启用安全属性,建议将TRNG设置为安全模式,确保其控制寄存器仅允许安全域(Secure World)访问,防止非安全域(Non-Secure World)非法操作。

  • 当安全域与非安全域同时请求大量随机数据时:

    • 来自安全域的请求会优先得到响应(更高优先级)。

    • 安全域请求处理完毕后,才会响应来自非安全域的请求。

  • 推荐调用 _rand() 函数获取32位随机数,。