当前位置:首页 > 单片机 > 单片机
[导读]RNG主要特性RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的 随机数。RNG的主要特性● 提供由模拟量发生器产生的 32 位随机数● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号

RNG主要特性
RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的 随机数。

RNG的主要特性
● 提供由模拟量发生器产生的 32 位随机数
● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期
● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列)
● 可被禁止以降低功耗

RNG功能描述

随机数发生器采用模拟电路实现。此电路产生馈入线性反馈移位寄存器 (RNG_LFSR) 的种子, 用于生成 32 位随机数。
该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算以产生种子。RNG_LFSR 由 专用时钟 (PLL48CLK) 按恒定频率提供时钟信息,因此随机数质量与 HCLK 频率无关。当将 大量种子引入 RNG_LFSR 后,RNG_LFSR 的内容会传入数据寄存器 (RNG_DR)。
同时,系统会监视模拟种子和专用时钟 PLL48CLK。状态位(RNG_SR 寄存器中)指示何时 在种子上出现异常序列,或指示何时 PLL48CLK 时钟频率过低。检测到错误时生成中断。

操作
要运行 RNG,请按以下步骤操作:
1.如果需要,使能中断(为此,将 RNG_CR 寄存器中的 IE 位置 1)。准备好随机数时或 出现错误时生成中断。
2. 通过将 RNG_CR 寄存器中的 RNGEN 位置 1 使能随机数产生。这会激活模拟部分、RNG_LFSR 和错误检测器。
3. 每次中断时,检查确认未出现错误(RNG_SR 寄存器中的 SEIS 和 CEIS 位应为 0), 并且随机数已准备就绪(RNG_SR 寄存器中的 DRDY 位为 1)。然后即可读取 RNG_DR 寄存器中的内容。
按照 FIPS PUB(联邦信息处理标准出版物)140-2 的要求,将 RNGEN 位置 1 后产生的第 一个随机数不应使用,但应保存起来,与产生的下一个随机数进行比较。随后产生的每个随机数都需要与产生的上一个随机数进行比较。如果任何一对进行比较的数字相等,则测试失败(连续随机数发生器测试)

错误管理
如果 CEIS 位的值为 1(时钟错误)
出现时钟错误时,RNG 无法再产生随机数,因为 PLL48CLK 时钟不正确。检查时钟控制器是 否正确配置,是否可提供 RNG 时钟,然后将 CEIS 位清零。当 CECS 位为 0 时,RNG 可正 常工作。时钟错误对产生的上一个随机数没有影响,因此 RNG_DR 寄存器内容可以使用。
如果 SEIS 位的值为 1(种子错误)
出现种子错误时,只要 SECS 位为 1,就会中断随机数产生。如果 RNG_DR 寄存器中有可 用随机数,不能使用该随机数,因为它可能没有足够的熵。
应执行以下操作:将 SEIS 位清零,然后将 RNGEN 位清零并置 1,以便重新初始化和重新 启动 RNG。

STM32F4的RNG库
如何使用RNG驱动
1.通过函数RCC_AHB2PeriphClockCmd(RCC_AHB2Perph_RNG,ENABLE)使能RNG控制器时钟。
2.通过函数RNG_Cmd()使能RNG。
3.等待直到随机数发生器产生有效的随机数(中断或查询模式)。
4.通过函数RNG_GetRandomNumber()得到随机数。
从上面第三步开始继续得到后面的随机数。

初始化和配置函数
这部分函数主要提供以下功能
· 初始化RNG外设
· 使能或禁止RNG外设。
void RNG_DeInit()功能:从新初始化RNG外设寄存器数据到复位值。
void RNG_Cmd(FunctionanState NewState)功能:使能或禁止RNG

得到32位随机数函数
uint32_t RNG_GetRandomNumber(void)
函数功能:返回32位随机数
调用此函数之前需要等待直到DRDY标志置位,调用函数RNG_GetFlagStatus(RNG_FLAG_DRDY)进行等待标志位。每次在的调用RNG_GetrandomNumber(void)后RNG_FLAG_DRDY标志自动清除。
在seed错误的情况下只要SECS位是1,随机数产生将被中断。如果RNG_DR寄存器中有数据可用,但是请不要使用,应为没有足够的entopy。这种情况下推荐用户通过函数RNG_ClearFlag(RNG_FLAG_SECS)清除SEIS标志,然后禁止并重新使能RNG外设(通过函数RNG_Cmd())来从新初始化和启动RNG。
在时钟错误的情况下,应为PLL48CLK时钟的不准确,RNG将无法产生随机数。检查是否正确配置时钟控制器RNG时钟,同时清除CEIS(通过函数RNG——ClearFlag(RNG_FLAG_CECS))位。当CECS位是0的时候RNG次啊能正常工作。时钟错误对先前残生的随机数没有影响,RNG_DR寄存器中的数据仍然可以使用。

中断标志管理
· 标志
RNG_FLAG_DRDY:RNG_DR寄存器有有效随机数时,通过读此寄存器来清除标志(可通过函数RNG_GetRandomNumber()实现)。
RNG_FLAG_CECS:seed检测错误
RNG_FLAG_SECS:时钟检测错误
· 中断
如果是能了RNG中断,下面三种情况僵尸的RNG中断会被挂起。
RNG_DR寄存器含有有效的随机数,只有通过读RNG_DR寄存器才能清除中断源,也就是清除中断挂起标志。
发生seed错误,检测到下面的错误序列之一:
64个以上的的连续位都是0或者1
32个以上出现连续的01.
通过函数RNG_ClearITPendingBit(RNG_IT_SEI)清除此中断源。
发生时钟错误,PLL48CLK不能被正确的检测到


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭