在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用DS2790生成隨機(jī)數(shù)

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-06-26 09:14 ? 次閱讀

本應(yīng)用筆記介紹如何利用DS4溫度寄存器的最低2790位產(chǎn)生16位隨機(jī)值。本說明還提供了用于生成 16 位隨機(jī)值的示例 C 代碼。

介紹

隨機(jī)數(shù)用于許多加密和身份驗(yàn)證方案。隨機(jī)數(shù)的生成涉及查找隨機(jī)行為并使用此行為生成隨機(jī)值。因此,使用微控制器生成隨機(jī)數(shù)可能是一項(xiàng)艱巨的任務(wù),因?yàn)槲⒖刂破鹘?jīng)常表現(xiàn)出重復(fù)行為。

幸運(yùn)的是,DS2790允許設(shè)計(jì)人員使用溫度寄存器的最低4位來產(chǎn)生16位隨機(jī)值。雖然數(shù)據(jù)手冊(cè)中只有溫度寄存器的最高11位被定義為溫度信息,但所有16位都被報(bào)告。此功能,加上寄存器的最低4位是高度隨機(jī)的,使其成為生成16位隨機(jī)值的理想選擇。

擴(kuò)展溫度數(shù)據(jù)是隨機(jī)的嗎?

表1是將DS2790浸入受控溫度浴中得出的。將器件放置在如此嚴(yán)格控制的溫度環(huán)境中會(huì)迅速暴露非隨機(jī)溫度值。下面的數(shù)據(jù)顯示了內(nèi)存中存儲(chǔ)溫度的地址的最低 4 位。

表 1.DS2790的擴(kuò)展溫度數(shù)據(jù)

價(jià)值 計(jì)數(shù) 增量計(jì)數(shù) 三角洲平均
0 23657 -453.625 -1.8814%
1 23822 -288.625 -1.1971%
2 24422 311.375 1.2914%
3 24091 -19.625 -0.0814%
4 24222 111.375 0.4619%
5 23994 -116.625 -0.4837%
6 24218 107.375 0.4453%
7 24258 147.375 0.6112%
8 24612 501.375 2.0795%
9 23984 -126.625 -0.5252%
一個(gè) 23974 -136.625 -0.5667%
B 24005 -105.625 -0.4381%
C 24178 67.375 0.2794%
D 24066 -44.625 -0.1851%
E 23954 -156.625 -0.6496%
F 24313 202.375 0.8394%
共計(jì)數(shù): 385770
總數(shù)的 1/16: 24110.625

值列以十六進(jìn)制顯示溫度寄存器最低 4 位的值。“計(jì)數(shù)”列顯示每個(gè)值在大約 24 小時(shí)內(nèi)出現(xiàn)的次數(shù)。在完全隨機(jī)的系統(tǒng)中,給定無限的時(shí)間來監(jiān)測(cè)DS2790的行為,我們會(huì)看到每個(gè)值在1/16的時(shí)間內(nèi)出現(xiàn)。增量計(jì)數(shù)列顯示與理想 1/16 值相比,每個(gè)值出現(xiàn)的次數(shù)的絕對(duì)誤差。Delta-Avg 列顯示的誤差與理想 1/16 值的百分比相同,即理想隨機(jī)行為與 1/16 時(shí)間發(fā)生的值之間的百分比差異。非常低的百分比值表明溫度寄存器的最低4位是高度隨機(jī)的。

生成 16 位隨機(jī)數(shù)

為了確保在需要時(shí)隨機(jī)數(shù)可用,該示例會(huì)在每次完成溫度轉(zhuǎn)換結(jié)果時(shí)更新隨機(jī)值。若要生成 16 位隨機(jī)數(shù),請(qǐng)使用以下步驟。

將DS2790配置為在溫度轉(zhuǎn)換完成時(shí)產(chǎn)生中斷。

注意溫度中斷發(fā)生的時(shí)間。

發(fā)生中斷時(shí),將溫度寄存器的最低4位移入變量。

這些步驟導(dǎo)致DS2790每220ms (標(biāo)稱值)產(chǎn)生一個(gè)溫度轉(zhuǎn)換中斷。由于每次溫度轉(zhuǎn)換提供 4 位,并且我們正在生成一個(gè) 16 位數(shù)字,因此每 880ms(標(biāo)稱值)提供一個(gè)全新的隨機(jī)數(shù)。

示例 C 代碼

下面的示例 C 代碼生成一個(gè) 16 位隨機(jī)值,該值可用作全局變量rand_num。請(qǐng)注意,必須初始化該器件,以便在溫度中斷完成時(shí)啟用中斷。溫度中斷在代碼中定義為EINT_ti

unsigned short rand_num;                /* Global random number */

/* This is the main Interrupt Service Routine*/
void FuelGaugeISR(void) __interrupt
{
char temp_low4bits;                     /* Store the low 4 bits of temperature here */

        /* Stay in the loop if there is an interrupt. */
        while (IIR & IMR_IM0 || IIR & IMR_IM1)
        {
                /* The IIR signifies if a Module 0 or Module 1 interrupt has occured.*/
                /* Module 0 will be treated with priority. */
                
                if (IIR & IMR_IM0) /* Module 0 Interrupt */
                {
                        /* Detect and Service Higher Priority Module 0 Interrupts here. */

                        if (EINT & EINT_ti) /* A temperature conversion completion int occurs every 220ms. */
                        {
                                EINT &= ~EINT_ti; /* Reset the temperature interrupt bit. */
                                
                                /* This code builds a new 16 bit random number every 4 temperature interrupts */
                                /* The global variable rand_num is fully updated every 880ms */
                                /* Next statement clears all but low 4 bits of the temperature register */
                                temp_low4bits = (char)((pADC->TEMPERATURE) & 0x000F);
                                
                                /* Next statement shifts the old random number left by 4 bits. */
                                rand_num = rand_num << 4;
                                
                                /* Next statement "shifts" the new bits in by adding them. */
                                rand_num = rand_num + temp_low4bits;            
                        }
                }
                else /* This is a module 1 interrupt. */
                {
                        /* Handle module 1 interrupts here. */
                }
        }
}

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7911

    瀏覽量

    153731
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5423

    瀏覽量

    123415
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4888

    瀏覽量

    70272
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是隨機(jī)數(shù)

    做開發(fā)的工程師們應(yīng)該或多或少都接觸過隨機(jī)數(shù),可能認(rèn)為它就是一個(gè)隨機(jī)生成的數(shù)字嘛,使用時(shí)也很簡單,只要調(diào)用開發(fā)語言提供的函數(shù)即可。但實(shí)際上隨機(jī)數(shù)后面還是有著比較復(fù)雜但也有趣的知識(shí)點(diǎn)的。根
    發(fā)表于 07-22 09:42

    DS2790可編程、1 節(jié)鋰離子電池電量計(jì)與保護(hù)器

    DS2790可編程、1 節(jié)鋰離子電池電量計(jì)與保護(hù)器 DS2790為單節(jié)鋰離子電池提供完整的電池電量計(jì)和保護(hù)器解決方案。DS2790具有低功耗16位MAXQ20微控制器、大容量程序和數(shù)據(jù)存儲(chǔ)
    發(fā)表于 04-12 16:01 ?52次下載

    像計(jì)算機(jī)這類完全按邏輯運(yùn)行的機(jī)器是如何生成隨機(jī)數(shù)的?

    像計(jì)算機(jī)這類完全按邏輯運(yùn)行的機(jī)器是如何生成隨機(jī)數(shù)的? 計(jì)算機(jī)有兩種方式可以生成隨機(jī)數(shù): 您可以制造某種設(shè)備,用其監(jiān)視完全隨機(jī)的自然
    發(fā)表于 07-31 12:25 ?1545次閱讀

    神經(jīng)網(wǎng)絡(luò)的偽隨機(jī)數(shù)生成方法

    為了克服有限精度效應(yīng)對(duì)混沌系統(tǒng)的退化影響,改善所生成隨機(jī)序列的統(tǒng)計(jì)性能,設(shè)計(jì)了一種新的基于六維CNN(細(xì)胞神經(jīng)網(wǎng)絡(luò))的64 bit偽隨機(jī)數(shù)生成方法。在該方法中,通過控制六維CNN在每次
    發(fā)表于 02-02 15:49 ?0次下載

    C語言中隨機(jī)數(shù)生成代碼

    C語言中隨機(jī)數(shù)生成完整代碼:
    的頭像 發(fā)表于 02-20 09:21 ?1.1w次閱讀

    如何在C語言中使用隨機(jī)數(shù)

    通常情況下,使用最多的方法的就是使用rand函數(shù)隨機(jī)生成隨機(jī)數(shù)來完成隨機(jī)數(shù)生成工作。注意這里的偽隨機(jī)
    的頭像 發(fā)表于 11-09 16:46 ?5368次閱讀

    如何使用隨機(jī)數(shù)生成器來生成私鑰

    ,尤其重要。 說到隨機(jī),有兩個(gè)必須要搞清楚的概念:“真隨機(jī)數(shù)生成器”(TRNG)和偽隨機(jī)數(shù)生成器(PRNG)
    發(fā)表于 03-18 10:40 ?5311次閱讀
    如何使用<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器來<b class='flag-5'>生成</b>私鑰

    如何利用SystemVerilog仿真生成隨機(jī)數(shù)

    采用SystemVerilog進(jìn)行仿真則更容易生成隨機(jī)數(shù),而且對(duì)隨機(jī)數(shù)具有更強(qiáng)的可控性。對(duì)于隨機(jī)變量,在SystemVerilog中可通過rand或randc加數(shù)據(jù)類型的方式定義。ra
    的頭像 發(fā)表于 10-30 10:33 ?1.2w次閱讀
    如何利用SystemVerilog仿真<b class='flag-5'>生成</b><b class='flag-5'>隨機(jī)數(shù)</b>

    YIE002開發(fā)探索10-隨機(jī)數(shù)生成

    生成器1 隨機(jī)數(shù)生成器構(gòu)建2 YIE002-STM32的隨機(jī)數(shù)生成器編程2.1 隨機(jī)數(shù)
    發(fā)表于 01-17 13:06 ?2次下載
    YIE002開發(fā)探索10-<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器

    用于生成隨機(jī)數(shù)的電子骰子

    電子發(fā)燒友網(wǎng)站提供《用于生成隨機(jī)數(shù)的電子骰子.zip》資料免費(fèi)下載
    發(fā)表于 07-06 10:58 ?4次下載
    用于<b class='flag-5'>生成</b><b class='flag-5'>隨機(jī)數(shù)</b>的電子骰子

    Arduino Lotto隨機(jī)數(shù)生成

    電子發(fā)燒友網(wǎng)站提供《Arduino Lotto隨機(jī)數(shù)生成器.zip》資料免費(fèi)下載
    發(fā)表于 11-02 10:59 ?0次下載
    Arduino Lotto<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器

    隨機(jī)數(shù)生成器開源分享

    電子發(fā)燒友網(wǎng)站提供《隨機(jī)數(shù)生成器開源分享.zip》資料免費(fèi)下載
    發(fā)表于 11-11 11:57 ?0次下載
    <b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>器開源分享

    如何在200 smart中生成隨機(jī)數(shù)

    上文寫了博途中生成隨機(jī)數(shù)的幾種辦法,現(xiàn)在試著使用其中簡單的線性同余法實(shí)現(xiàn)在200 smart中完成類似功能。
    的頭像 發(fā)表于 03-23 13:51 ?7810次閱讀
    如何在200 smart中<b class='flag-5'>生成</b>偽<b class='flag-5'>隨機(jī)數(shù)</b>

    技術(shù)分享 | 隨機(jī)數(shù)生成過慢導(dǎo)致系統(tǒng)阻塞怎么辦?

    /dev/random和/dev/urandom是linux上的隨機(jī)數(shù)生成器,是個(gè)字符設(shè)備,為系統(tǒng)提供隨機(jī)數(shù)隨機(jī)數(shù)主要應(yīng)用在加密方面,沒有加密的操作都是可預(yù)測(cè)且不安全的。linux上
    的頭像 發(fā)表于 08-15 09:20 ?2967次閱讀
    技術(shù)分享 | <b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>過慢導(dǎo)致系統(tǒng)阻塞怎么辦?

    如何使用雪花算法生成真正的隨機(jī)數(shù)

    以前用rand和srand生成過偽隨機(jī)數(shù),偽隨機(jī)數(shù)的序列是固定的,今天學(xué)習(xí)生成真正的隨機(jī)數(shù)生成
    的頭像 發(fā)表于 10-09 10:05 ?1633次閱讀
    主站蜘蛛池模板: 欧美一区二区三区不卡免费观看 | 五月婷婷亚洲综合 | 国产精品久久久久影视不卡 | 97夜夜澡人人爽人人喊一欧美 | 天天天狠天天透天天制色 | 国产乱码1卡一卡二卡 | 免费播放黄色 | 国产激爽大片在线播放 | 欧美图片小说视频 | 人人做人人爽 | 国产精品理论片在线观看 | 8050午夜一级二级全黄 | 一级特黄aa大片免费播放视频 | 国产激烈床戏无遮挡在线观看 | 天天性视频 | 大乳妇女bd视频在线观看 | 欧美综合国产精品日韩一 | 亚洲日本视频 | 亚洲一区在线视频观看 | 国产在线视频欧美亚综合 | 男人日女人视频免费看 | bt种子在线www天堂官网 | bt 电影天堂 | 狠狠狠色丁香婷婷综合久久88 | 午夜高清视频 | 亚洲毛片网站 | 18性夜影院午夜寂寞影院免费 | 欲色综合 | 天天做天天爱夜夜爽 | 亚洲www色 | 亚洲国产毛片aaaaa无费看 | bt天堂资源 | 色在线播放 | 456主播喷水在线观看 | 免费看大美女大黄大色 | 福利片在线播放 | 午夜两性网 | 四虎影视永久在线 yin56xyz | 成人一级毛片 | 久久国产精品夜色 | 五月婷婷丁香在线观看 |