一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

MAX765x微處理器的偽隨機(jī)數(shù)生成例程

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-03-01 15:28 ? 次閱讀

本應(yīng)用筆記給出了使用MAX7651/52微控制器和12位模數(shù)轉(zhuǎn)換器ADC)生成隨機(jī)數(shù)的功能。

擴(kuò)頻通信、安全、加密和調(diào)制解調(diào)器等應(yīng)用需要生成隨機(jī)數(shù)。實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生器的最常見方法是線性反饋移位寄存器(LFSR)。LFSR生成的代碼實(shí)際上是“偽”隨機(jī)的,因?yàn)橐欢螘r(shí)間后數(shù)字重復(fù)。訣竅是使用足夠長度的移位寄存器,以便模式在極長時(shí)間后重復(fù)。

長度為 1 的基本 LFSR 如圖 <> 所示。移位寄存器是一組串聯(lián)的觸發(fā)器,具有異或反饋。異或門用于對(duì)輸入位進(jìn)行加擾。

poYBAGP-_rOAWarmAAAViuADkfo522.gif


圖1.5級(jí)線性反饋移位寄存器。

有些表格提供了正確的反饋抽頭位置,用于生成需要最大時(shí)鐘數(shù)重復(fù)的序列。下表如下所示:

表 1.用于最大長度 2 至 32 位 LFSR 的抽頭

位數(shù) 循環(huán)長度 Taps
2 3* [0,1]
3 7* [0,2]
4 15 [0,3]
5 31* [1,4]
6 63 [0,5]
7 127* [0,6]
8 255 [1,2,3,7]
9 511 [3,8]
10 1023 [2,9]
11 2047 [1,10]
12 4095 [0,3,5,11]
13 8191* [0,2,3,12]
14 16,383 [0,2,4,13]
15 32,767 [0,14]
16 65,535 [1,2,4,15]
17 131,071* [2,16]
18 262,143 [6,17]
19 524,287* [0,1,4,18]
20 1,048,575 [2,19]
21 2,097,151 [1,20]
22 4,194,303 [0,21]
23 8,388,607 [4,22]
24 16,777,215 [0,2,3,23]
25 33,554,431 [7,24]
26 67,108,863 [0,1,5,25]
27 134,217,727 [0,1,4,26]
28 268,435,455 [2,27]
29 536,870,911 [1,28]
30 1,073,741,823 [0,3,5,29]
31 2,147,483,647* [2,30]
32 4,294,967,295 [1,5,6,31]

* 長度為素?cái)?shù)的序列

請(qǐng)注意,有多種解決方案可以生成抽頭位置 最大長度序列。

使用 LFSR 存在一個(gè)主要問題:如果所有階段都恰好是 “0”,移位寄存器被“卡住”。這是因?yàn)?所有“0”的異或仍然是“0”。異或反饋確實(shí) 不生成“1”來重新開始序列。為了防止 在這種情況下,例程必須首先加載非零 種子價(jià)值。此值可以是任何數(shù)字,只要它不是 零。LFSR 生成的數(shù)字基于種子值。你 將一遍又一遍地獲得相同的數(shù)字序列,除非在某個(gè)時(shí)候 LSFR 重新加載了不同的種子。

這個(gè)種子價(jià)值從何而來?這將取決于可用的內(nèi)容 在您的特定應(yīng)用程序中。例如,如果您的系統(tǒng)可以訪問 到RTC(實(shí)時(shí)時(shí)鐘),那么一個(gè)好的種子是基于時(shí)間的。你 可以讀取當(dāng)前時(shí)間和/或日期,屏蔽部分并使用它 作為種子。另一個(gè)例子是溫度。如果您的系統(tǒng)可以讀取溫度 (假設(shè)它不是恒定的)那么這可以成為一顆好種子。的 ADC MAX765x可設(shè)置為讀取各種內(nèi)容: 刻度交流電源線 電壓、某些傳感器位置甚至放大齊納的約翰遜噪聲 二極管(密碼學(xué)中的常見做法)。

但是,在某些情況下,您只需要使用 01H 或其他數(shù)字, 并接受序列最終將重復(fù)的事實(shí),并且 預(yù)定模式。

呈現(xiàn)的例程使用 25 位序列,該序列在 叫了33萬次。即使你不能生產(chǎn)一個(gè)獨(dú)特的種子 時(shí)間,長度使得在大多數(shù)應(yīng)用程序中,“隨機(jī)性”是 綽綽有余。

MAX765x列表如下所示。例程使用四個(gè) 8 位內(nèi)存 標(biāo)記為 RN1-RN4 的位置。較低的 3 字節(jié) RN1-RN3 用于 24 位, RN4 的 MSB 是第 25 位。該算法使用 XOR 反饋(使用 處理器的 XRL 指令)來自“階段”25(進(jìn)位 位)和階段 7(RN1 的 MSB)。因?yàn)樗械牡挚拐叨贾皇?RAM 位置,您可以形成最多 32 位寬的隨機(jī)數(shù)。為此 例如,在例程結(jié)束時(shí),將 8 位數(shù)字 RANNUM 存儲(chǔ)在 RAM 中。

要獲得隨機(jī)數(shù)的真實(shí)高斯分布函數(shù),您需要 可以做進(jìn)一步的處理。添加任意數(shù)量的連續(xù) 樣本和取平均值(例如 4)將創(chuàng)建高斯分布。

算法中使用的一個(gè)編程“技巧”是“字節(jié)交換” 模擬“移位 8 個(gè)時(shí)鐘”。這是為了節(jié)省 CPU 時(shí)鐘周期。 例如,如果原始字節(jié)順序是 ABCD,則在字節(jié)交換之后 順序是BCDA。這樣可以防止代碼必須進(jìn)行“內(nèi)務(wù)管理” 將一個(gè)字節(jié)的 MSB 移動(dòng)到下一個(gè)字節(jié)的 LSB。這不重要 如果每時(shí)鐘或每 8 個(gè)時(shí)鐘計(jì)算隨機(jī)數(shù):它們 仍然是隨機(jī)的。由于LFSR的總長度是3的乘積 質(zhì)數(shù)(31、601 和 1801) 序列仍然是 33,554,431 子程序 調(diào)用,直到序列重復(fù)!當(dāng)然,由于我們正在查看 8 在我們的示例中,值限制為 00H 到 0FFH, 因此,相同的值將被多次返回。

審核編輯:郭婷

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

    關(guān)注

    31

    文章

    5401

    瀏覽量

    122808
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6611

    瀏覽量

    547784
  • 調(diào)制解調(diào)器

    關(guān)注

    3

    文章

    871

    瀏覽量

    39366
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA產(chǎn)生中隨機(jī)數(shù)發(fā)生分析

    1. 概念 通過一定的算法對(duì)事先選定的隨機(jī)種子(seed)做一定的運(yùn)算可以得到一組人工生成的周期序列,在這組序列中以相同的概率選取其中一個(gè)數(shù)字,該數(shù)字稱作偽隨機(jī)數(shù),由于所選數(shù)字并不具有完全的
    的頭像 發(fā)表于 11-21 11:49 ?3730次閱讀
    FPGA產(chǎn)生中<b class='flag-5'>偽</b><b class='flag-5'>隨機(jī)數(shù)</b>發(fā)生<b class='flag-5'>器</b>分析

    什么是隨機(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

    學(xué)習(xí)筆記 | 基于FPGA的隨機(jī)數(shù)發(fā)生(附代碼)

    以及真隨機(jī)數(shù)。本次設(shè)計(jì)為基于FPGA生成隨機(jī)數(shù)發(fā)生,什么是
    發(fā)表于 04-21 19:42

    C語言中隨機(jī)數(shù)的產(chǎn)生及性能檢驗(yàn)

    系統(tǒng)仿真或加密算法中常需要產(chǎn)生滿足一定分布函數(shù)的 隨機(jī)數(shù) ,高級(jí)程序設(shè)計(jì)語言中的庫函數(shù)采用線性同余法產(chǎn)生一個(gè)在[0,32767] 服從均勻分布的隨機(jī)數(shù),但每次程序運(yùn)行的結(jié)果都
    發(fā)表于 07-07 16:35 ?70次下載

    C語言random函數(shù)隨機(jī)數(shù)產(chǎn)生

    由C語言的stalib.h庫里面的random函數(shù)可以得到一個(gè)0-0x7FFFh的隨機(jī)數(shù),當(dāng)然,調(diào)用隨機(jī)數(shù)函數(shù)之前,是要進(jìn)行種子的篩選的,以當(dāng)前的時(shí)間參數(shù)作為種子,可以使得
    發(fā)表于 08-25 17:56 ?1.3w次閱讀

    C#教程之隨機(jī)數(shù)加密

    C#教程之隨機(jī)數(shù)加密,很好的C#資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-21 09:52 ?5次下載

    max765x微處理器隨機(jī)數(shù)生成程序

    擴(kuò)頻通信、安全、加密和調(diào)制解調(diào)等應(yīng)用需要隨機(jī)數(shù)的產(chǎn)生。實(shí)現(xiàn)一個(gè)隨機(jī)數(shù)發(fā)生的最常用的方法是一個(gè)線性反饋移位登記(LFSR)。由一個(gè)LFSR生成
    發(fā)表于 04-12 09:50 ?1次下載
    為<b class='flag-5'>max765x</b><b class='flag-5'>微處理器</b>的<b class='flag-5'>偽</b><b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>程序

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

    的輸入輸出,改善了混沌退化對(duì)隨機(jī)數(shù)的性能影響,同時(shí),通過與Logistic映射所生成隨機(jī)序列和可變參數(shù)進(jìn)行異或處理,有效避免了生成序列的重
    發(fā)表于 02-02 15:49 ?0次下載

    隨機(jī)數(shù)生成算法

    在計(jì)算機(jī)上用數(shù)學(xué)的方法產(chǎn)生隨機(jī)數(shù)列是目前通用的方法,它的特點(diǎn)是占用的內(nèi)存少,速度快.用數(shù)學(xué)方法產(chǎn)生的隨機(jī)數(shù)列是根據(jù)確定的算法推算出來的,嚴(yán)格說來并不是隨機(jī)的,因此一般稱用數(shù)學(xué)方法產(chǎn)生的隨機(jī)數(shù)
    發(fā)表于 04-03 10:25 ?6次下載

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

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

    基于FPGA的隨機(jī)數(shù)發(fā)生設(shè)計(jì)方案

    基于FPGA的隨機(jī)數(shù)發(fā)生設(shè)計(jì)方案
    發(fā)表于 06-28 14:36 ?4次下載

    單片機(jī)STM32F1隨機(jī)數(shù)生成探索與實(shí)踐(基于CUBEMX和KEIL5)

    原理產(chǎn)生模擬噪聲信號(hào)并采集,使用該硬件可以產(chǎn)生真隨機(jī)數(shù)。但是低端單片機(jī),如STM32F1,8051等沒有隨機(jī)數(shù)發(fā)生,只能利用軟件生成
    發(fā)表于 12-31 19:12 ?12次下載
    單片機(jī)STM32F1<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>生成</b>探索與實(shí)踐(基于CUBEMX和KEIL5)

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

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

    FPGA的隨機(jī)數(shù)發(fā)生學(xué)習(xí)介紹

    今天是畫師本人第一次和各位大俠見面,執(zhí)筆繪畫FPGA江湖,本人寫了篇關(guān)于FPGA的隨機(jī)數(shù)發(fā)生學(xué)習(xí)筆記,這里分享給大家,僅供參考。 基于FPGA的
    的頭像 發(fā)表于 09-12 09:13 ?1903次閱讀

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

    以前用rand和srand生成隨機(jī)數(shù),隨機(jī)數(shù)的序列是固定的,今天學(xué)習(xí)生成真正的
    的頭像 發(fā)表于 10-09 10:05 ?1563次閱讀