1、RJM8L303芯片簡介
RJM8L303是武漢瑞納捷電子技術(shù)有限公司推出的一款采用增強(qiáng)型80C51內(nèi)核,擁有8KB SRAM和128KB Flash存儲容量的低功耗安全MCU芯片。它具有快速中斷響應(yīng),休眠和深度休眠模式。
芯片支持UART、SPI、I2C、GPIO、ISO7816、JTAG等數(shù)字通信接口;還支持13.56MHz無線接口,符合IOS14443 typeA標(biāo)準(zhǔn),能實(shí)現(xiàn)無線數(shù)據(jù)傳輸。芯片內(nèi)置DES、3DES、國密SM4等三種加密算法,以及頻率安全探測器,用以保證芯片在非正常工作條件下的操作安全和數(shù)據(jù)安全。
另外,為了滿足某些應(yīng)用中安全交易流程的需要,芯片還內(nèi)嵌了一個8位隨機(jī)數(shù)發(fā)生器。該隨機(jī)數(shù)發(fā)生器是采用數(shù)字振蕩環(huán)方式設(shè)計(jì)的真隨機(jī)數(shù)發(fā)生器,符合國家密碼安全管理局《隨機(jī)性檢測規(guī)范》的相關(guān)要求,通過了隨機(jī)數(shù)測試國際標(biāo)準(zhǔn) FIPS 140-2和NIST SP800-22標(biāo)準(zhǔn)測試。
2、真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)原理
我們知道,數(shù)字電路中的時(shí)鐘信號總會存在抖動現(xiàn)象,它是指在芯片的某一個給定點(diǎn)上時(shí)鐘周期發(fā)生的暫時(shí)變化,即時(shí)鐘周期在每個不同的周期上可以縮短或加長。抖動可以用許多方法來衡量和表征,它是一個平均值為零的隨機(jī)變量。除了時(shí)鐘抖動以外,兩個獨(dú)立時(shí)鐘之間的相位漂移也具有隨機(jī)的特性。因而抖動信號和相位漂移適合于在數(shù)字電路中作為真隨機(jī)數(shù)發(fā)生器的噪聲源。
圖1中用實(shí)線描繪的是嚴(yán)格的周期性信號的波形,每個沿的起始點(diǎn)在時(shí)間軸上間隔相等;虛線代表的就是實(shí)際的近似周期性信號,其周期有微小的變化。我們可以看到相應(yīng)沿的起始點(diǎn)偏離了理想位置。此時(shí)稱后者的波形有抖動。不同的有效瞬間(時(shí)間軸上有間隔的不同位置),抖動的幅度是不同的。
圖2中帶有抖動的低頻振蕩器通過D觸發(fā)器采樣一個高頻振蕩器,輸出序列X。由于低頻振蕩器的抖動是不確定的,并且其抖動范圍遠(yuǎn)遠(yuǎn)大于高頻振蕩器的周期,因此輸出0和1的概率基本相等,從而輸出的序列X是隨機(jī)的。
高頻振蕩器采用數(shù)字振蕩環(huán)方式設(shè)計(jì),其電路結(jié)構(gòu)如下圖3所示。在數(shù)字邏輯內(nèi)部,當(dāng)2N+1個反相器組成一個閉合的環(huán)路時(shí),可以得到一個高頻的振蕩時(shí)鐘。由于反相器的時(shí)間延遲是皮秒量級,因此反相器振蕩環(huán)的振蕩頻率高于GHz。該振蕩時(shí)鐘的周期與門延時(shí)以及反相器的個數(shù)有關(guān),而與外部信號無關(guān)。該方法利用了振蕩器的頻率不穩(wěn)定性,使得其電路相對簡單,占芯片面積小,功耗也小,魯棒性好,對外界或是內(nèi)部的干擾不敏感。
如果將相同長度的兩組振蕩環(huán)的輸出相異或就可以得到一組由隨機(jī)信號構(gòu)成的新波形,該波形包含了兩條振蕩環(huán)之間的時(shí)鐘抖動以及相位偏移。若將多組振蕩環(huán)信號相異或時(shí),可以從輸出獲取更多的隨機(jī)信息。
低頻振蕩器采用RC振蕩電路設(shè)計(jì)。RC振蕩電路是指用電阻R、電容C組成選頻網(wǎng)絡(luò)的振蕩電路,一般用來產(chǎn)生低頻振蕩信號。輸出序列X的隨機(jī)性能取決于低頻振蕩器抖動的范圍及其分布。
3、本芯片隨機(jī)數(shù)發(fā)生器的使用方法
(1)配置控制寄存器DTRNGCON0
*設(shè)置model_sel信號為0或1,選擇RNG工作于mode0或mode1模式;
*設(shè)置trng_start信號為1,啟動RNG模塊工作;
(2)查詢狀態(tài)寄存器DTRNGSTS0
*等待trng_sts信號為1;
(3)讀取數(shù)據(jù)寄存器DTRNGDAT0~ DTRNGDAT3,讀出32位隨機(jī)數(shù);
(4)循環(huán)步驟(2)和(3),可多次獲取隨機(jī)數(shù)。