精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MAX765x微處理器的偽隨機數生成例程

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

本應用筆記給出了使用MAX7651/52微控制器和12位模數轉換器ADC)生成隨機數的功能。

擴頻通信、安全、加密和調制解調器等應用需要生成隨機數。實現隨機數發生器的最常見方法是線性反饋移位寄存器(LFSR)。LFSR生成的代碼實際上是“偽”隨機的,因為一段時間后數字重復。訣竅是使用足夠長度的移位寄存器,以便模式在極長時間后重復。

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

poYBAGP-_rOAWarmAAAViuADkfo522.gif


圖1.5級線性反饋移位寄存器。

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

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

位數 循環長度 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]

* 長度為素數的序列

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

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

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

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

呈現的例程使用 25 位序列,該序列在 叫了33萬次。即使你不能生產一個獨特的種子 時間,長度使得在大多數應用程序中,“隨機性”是 綽綽有余。

MAX765x列表如下所示。例程使用四個 8 位內存 標記為 RN1-RN4 的位置。較低的 3 字節 RN1-RN3 用于 24 位, RN4 的 MSB 是第 25 位。該算法使用 XOR 反饋(使用 處理器的 XRL 指令)來自“階段”25(進位 位)和階段 7(RN1 的 MSB)。因為所有的抵抗者都只是 RAM 位置,您可以形成最多 32 位寬的隨機數。為此 例如,在例程結束時,將 8 位數字 RANNUM 存儲在 RAM 中。

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

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

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5322

    瀏覽量

    120022
  • adc
    adc
    +關注

    關注

    98

    文章

    6438

    瀏覽量

    544120
  • 調制解調器
    +關注

    關注

    3

    文章

    850

    瀏覽量

    38783
收藏 人收藏

    評論

    相關推薦

    FPGA產生中隨機數發生分析

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

    什么是隨機數

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

    學習筆記 | 基于FPGA的隨機數發生(附代碼)

    以及真隨機數。本次設計為基于FPGA生成隨機數發生,什么是
    發表于 04-21 19:42

    C語言中隨機數的產生及性能檢驗

    系統仿真或加密算法中常需要產生滿足一定分布函數的 隨機數 ,高級程序設計語言中的庫函數采用線性同余法產生一個在[0,32767] 服從均勻分布的隨機數,但每次程序運行的結果都
    發表于 07-07 16:35 ?70次下載

    C語言random函數隨機數產生

    由C語言的stalib.h庫里面的random函數可以得到一個0-0x7FFFh的隨機數,當然,調用隨機數函數之前,是要進行種子的篩選的,以當前的時間參數作為種子,可以使得
    發表于 08-25 17:56 ?1.3w次閱讀

    C#教程之隨機數加密

    C#教程之隨機數加密,很好的C#資料,快來學習吧。
    發表于 04-21 09:52 ?5次下載

    max765x微處理器隨機數生成程序

    擴頻通信、安全、加密和調制解調等應用需要隨機數的產生。實現一個隨機數發生的最常用的方法是一個線性反饋移位登記(LFSR)。由一個LFSR生成
    發表于 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'>隨機數</b><b class='flag-5'>生成</b>程序

    神經網絡的隨機數生成方法

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

    隨機數生成算法

    在計算機上用數學的方法產生隨機數列是目前通用的方法,它的特點是占用的內存少,速度快.用數學方法產生的隨機數列是根據確定的算法推算出來的,嚴格說來并不是隨機的,因此一般稱用數學方法產生的隨機數
    發表于 04-03 10:25 ?6次下載

    如何在C語言中使用隨機數

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

    基于FPGA的隨機數發生設計方案

    基于FPGA的隨機數發生設計方案
    發表于 06-28 14:36 ?4次下載

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

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

    如何在200 smart中生成隨機數

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

    FPGA的隨機數發生學習介紹

    今天是畫師本人第一次和各位大俠見面,執筆繪畫FPGA江湖,本人寫了篇關于FPGA的隨機數發生學習筆記,這里分享給大家,僅供參考。 基于FPGA的
    的頭像 發表于 09-12 09:13 ?1503次閱讀

    如何使用雪花算法生成真正的隨機數

    以前用rand和srand生成隨機數,隨機數的序列是固定的,今天學習生成真正的
    的頭像 發表于 10-09 10:05 ?1288次閱讀