1、RJM8L303芯片简介
RJM8L303
是武汉瑞纳捷电子技术有限公司推出的一款采用增强型
80C51
内核,拥有
8KB SRAM
和
128KB Flash
存储容量的低功耗安全
MCU
芯片。它具有快速中断响应,休眠和深度休眠模式。
芯片支持UART
、
SPI
、
I2C
、
GPIO
、
ISO7816
、
JTAG
等数字通信接口;还支持
13.56MHz
无线接口,符合
IOS14443 typeA
标准,能实现无线数据传输。芯片内置
DES
、
3DES
、国密
SM4
等三种加密算法,以及频率安全探测器,用以保证芯片在非正常工作条件下的操作安全和数据安全。
另外,为了满足某些应用中安全交易流程的需要,芯片还内嵌了一个8
位随机数发生器。该随机数发生器是采用数字振荡环方式设计的真随机数发生器,符合国家密码安全管理局《随机性检测规范》的相关要求,通过了随机数测试国际标准
FIPS 140-2
和
NIST SP800-22
标准测试。
2、真随机数发生器的设计原理
我们知道,
数字电路中的时钟信号总会存在抖动现象,它是指在芯片的某一个给定点上时钟周期发生的暂时变化,即时钟周期在每个不同的周期上可以缩短或加长。抖动可以用许多方法来衡量和表征,它是一个平均值为零的随机变量。除了时钟抖动以外,两个独立时钟之间的相位漂移也具有随机的特性。因而抖动信号和相位漂移适合于在数字电路中作为真随机数发生器的噪声源。
图
1.
时钟抖动的定义
图1
中用实线描绘的是严格的周期性信号的波形,每个沿的起始点在时间轴上间隔相等;虚线代表的就是实际的近似周期性信号,其周期有微小的变化。我们可以看到相应沿的起始点偏离了理想位置。此时称后者的波形有抖动。不同的有效瞬间(时间轴上有间隔的不同位置),抖动的幅度是不同的。
图
2.
基于振荡器
采样
的真随机数
发
生器原理
图2
中
带有抖动的
低频
振荡器通过D
触发器采样一个
高频
振荡器,输出序列X
。由于
低频
振荡器的抖动是不确定的,并且其抖动范围远远大于
高频
振荡器的周期,因此输出0
和
1
的概率基本相等,从而输出的序列
X
是
随机
的
。
高频振荡
器采用数字振荡环方式设计,其电路结构
如
下
图3
所示
。
在数字逻辑内部,当2N+1
个反相器组成一个闭合的环路时,可以得到一个高频的振荡时钟
。
由于反相器的时间延迟是皮秒量级,因此反相器振荡环的振荡频率高于GHz
。该振荡
时钟
的周期与门延时以及反相器的个数有关,而与外部信号无关。该方法利用了振荡器的频率不稳定性,使得其电路相对简单,占芯片面积小,功耗也小,鲁棒性好,对外界或是内部的干扰不敏感。
图3.
三个反相器构成的高频振荡电路
如果将相同长度的两组振荡环的输出相异或就可以得到一组由随机信号构成的新波形
,
该波形包含了两条振荡环之间的时钟抖动以及相位偏移。若将多组振荡环信号相异或时,可以从输出获取更多的随机信息。
低频振荡器采用RC
振荡电路
设计。RC
振荡电路是指用电阻
R
、电容
C
组成选频网络的振荡电路
,一般用来产生低频振荡信号
。
输出序列X
的随机性能取决于
低频
振荡器抖动的范围及其分布。
3、本芯片随机数发生器的使用方法
(1
)配置控制寄存器
DTRNGCON0
*
设置
model_sel
信号为
0
或
1
,选择
RNG
工作于
mode0
或
mode1
模式;
*
设置
trng_start
信号为
1
,启动
RNG
模块工作;
(2
)查询状态寄存器
DTRNGSTS0
*
等待
trng_sts
信号为
1
;
(3
)读取数据寄存器
DTRNGDAT0~ DTRNGDAT3
,读出
32
位随机数;
(4
)循环步骤(
2
)和(
3
),可多次获
|