吴忠躺衫网络科技有限公司

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

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

3天內不再提示

FPGA的偽隨機數發生器學習介紹

電子發燒友論壇 ? 來源:電子發燒友論壇 ? 2023-09-12 09:13 ? 次閱讀

今天是畫師本人第一次和各位大俠見面,執筆繪畫FPGA江湖,本人寫了篇關于FPGA的偽隨機數發生器學習筆記,這里分享給大家,僅供參考。

基于FPGA的偽隨機數發生器

(附代碼)

1、概念

隨機數是專門的隨機試驗的結果,產生隨機數有多種不同的方法。這些方法被稱為隨機數生成器。隨機數最重要的特性是它在產生時后面的那個數與前面的那個數毫無關系。隨機數分為三類,分別是偽隨機數、密碼學安全的偽隨機數以及真隨機數。

本次設計為基于FPGA生成的偽隨機數發生器,什么是偽隨機數呢?統計學偽隨機性指的是在給定的隨機比特流樣本中,1的數量大致等于0的數量,同理,“10”“01”“00”“11”四者數量大致相等。類似的標準被稱為統計學隨機性。滿足這類要求的數字在人類“一眼看上去”是隨機的。

在實際應用中往往使用偽隨機數就足夠了。這些數列是“似乎”隨機的數,實際上它們是通過一個固定的、可以重復的計算方法產生的。計算機或計算器產生的隨機數有很長的周期性。它們不真正地隨機,因為它們實際上是可以計算出來的,但是它們具有類似于隨機數的統計特征。這樣的發生器叫做偽隨機數發生器。

2、設計原理

本次設計采用線性反饋移位寄存器Linear Feedback Shift Register, LFSR)來實現偽隨機數發生器。線性反饋移位寄存器是指,給定前一狀態的輸出,將該輸出的線性函數再用作輸入的移位寄存器。異或運算是最常見的單比特線性函數:對寄存器的某些位進行異或操作后作為輸入,再對寄存器中的各比特進行整體移位。

線性反饋移位寄存器通常由動態或靜態主從型觸發器構成。反饋回路由異或門構成。其特性通常由一個特征多項式表征。LFSR結構如下圖所示:

f1783070-50ff-11ee-a25d-92fbcf53809c.png

圖1 LFSR結構示意圖

對應的特征多項式為:

f187ebb4-50ff-11ee-a25d-92fbcf53809c.png

Gm為多項式的系數,而多項式系數只能為1或0。

利用LFSR生成偽隨機數,需要給它一個隨機種子(seed),由于它是由N個觸發器和異或門組成,所以種子不能給全0,如果給的全0,將會陷入0的死循環一直出不來,就得不到我們想要的偽隨機數,在設計時,我們可以給一個任意不為0的數。

基于以上原理,我們使用本原多項式x^32+x^7+x^5+x^3+x^2+x+1來構造最大周期的LFSR。

3、架構設計

設計架構如下圖:

f1945aa2-50ff-11ee-a25d-92fbcf53809c.png

將輸入時鐘命名為clk,復位信號命名為rst_n,輸入有效信號命名為ivalid,輸入的隨機種子命名為seed[31:0],生成的隨機數命名為data[31:0]。

4、Verilog代碼實現

代碼中data <= seed部分也可以不需要,不用輸入有效信號以及隨機種子,直接初始化為非零值也可。如直接初始化為非零值,則仿真代碼只需進行復位即可。

設計實現代碼如下:

f1a15ab8-50ff-11ee-a25d-92fbcf53809c.png

5、仿真測試結果

仿真代碼如下:

f1aff654-50ff-11ee-a25d-92fbcf53809c.png

本次仿真采用100M時鐘進行,輸入種子為非零隨機數。

f1c47ff2-50ff-11ee-a25d-92fbcf53809c.png

f1dd5612-50ff-11ee-a25d-92fbcf53809c.png

6、總結

以上是經過學習,集合了各家所長得到的結果。由于想做一個32位的偽隨機數發生器,在網上找了各種資料,并沒有找到有規定的標準多項式,于是隨意定了一個。在實際運用當中,如果有標準的多項式系數,可能得到了一個偽隨機數,就可以根據已知的特征式得出后面的結果,安全性也就大大降低了。

審核編輯:彭菁

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

    關注

    1630

    文章

    21796

    瀏覽量

    605999
  • 計算機
    +關注

    關注

    19

    文章

    7536

    瀏覽量

    88639
  • 發生器
    +關注

    關注

    4

    文章

    1368

    瀏覽量

    61858
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62971

原文標題:【學習教程】基于FPGA的偽隨機數發生器(附代碼)

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發燒友論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA產生中隨機數發生器分析

    性,但是從實用的角度而言,其隨機程度已足夠了。這里的的含義是,由于該隨機數是按照一定算法模擬產生的,其結果是確定的,是可見的,因此并不是真正的隨機數。
    的頭像 發表于 11-21 11:49 ?3594次閱讀
    <b class='flag-5'>FPGA</b>產生中<b class='flag-5'>偽</b><b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>分析

    【assingle分享】labview隨機數發生器

    ,提供了多種不同的函數,下面大概總結一下。一、隨機數發生器在LABVIEW數值函數選板中,提供了一個隨機數發生器函數,返回一個0-1之間的
    發表于 04-07 10:27

    【總結】LabVIEW隨機數發生器

    ,提供了多種不同的函數,下面大概總結一下。一、隨機數發生器在LABVIEW數值函數選板中,提供了一個隨機數發生器函數,返回一個0-1之間的
    發表于 01-30 14:51

    怎么設計基于USB和FPGA隨機數發生器驗證平臺?

    一種必然。為此,基于純數字電路實現的隨機數發生器已成為研究的熱點,而FPGA可編程邏輯芯片為此類隨機數發生器的研究提供了良好的開發環境。
    發表于 08-27 06:05

    隨機數發生器的相關資料分享

    00. 目錄文章目錄00. 目錄01. 隨機數發生器簡介02. 隨機數發生器主要特性03. 隨機數發生器
    發表于 02-14 07:35

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

    今天是畫師本人第一次和各位大俠見面,執筆繪畫FPGA江湖,本人寫了篇關于FPGA隨機數發生器學習
    發表于 04-21 19:42

    隨機數發生器FPGA實現與研究

    摘要:在很多實際應用中,直接利用FPGA 產生隨機序列的方法可以為系統設計或測試帶來極大的便利。本文給出了基于線性反饋移位寄存電路,并結合FPG
    發表于 07-22 15:12 ?0次下載

    基于FPGA的真隨機數發生器設計

    設計并實現了一種基于 FPGA 的真 隨機數發生器 ,利用一對振蕩環路之間的相位漂移和抖動以及亞穩態作為隨機源,使用線性反饋移位寄存的輸出
    發表于 05-30 17:04 ?72次下載
    基于<b class='flag-5'>FPGA</b>的真<b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>設計

    利用FPGA的自身特性實現隨機數發生器

    本文主要介紹利用FPGA的自身的特性實現隨機數發生器,在Virtex-II Pro開發板上用ChipScope觀察隨機數序列,以及在PCIe
    發表于 02-11 16:26 ?1.3w次閱讀
    利用<b class='flag-5'>FPGA</b>的自身特性實現<b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>

    補充: FPGA產生基于LFSR的隨機數

    大家好,又到了每日學習的時間了,上一篇《薦讀:基于FPGA 的CRC校驗碼生成器》文中,提到了要實現這一過程,仍然需要LFSR電路,參看《FPGA產生基于LFSR的
    的頭像 發表于 06-13 11:21 ?7691次閱讀
    補充: <b class='flag-5'>FPGA</b>產生基于LFSR的<b class='flag-5'>偽</b><b class='flag-5'>隨機數</b>

    如何使用FPGA實現隨機數發生器

    在很多實際應用中,直接利用FPGA產生隨機序列的方法可以為系統設計或測試帶來極大的便利。本文給出了基于線性反饋移位寄存電路,并結合FPGA
    發表于 02-05 15:22 ?24次下載
    如何使用<b class='flag-5'>FPGA</b>實現<b class='flag-5'>偽</b><b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>

    FPGA產生基于LFSR的隨機數概念

    大家好,又到了每日學習的時間了,上一篇《薦讀:基于FPGA 的CRC校驗碼生成器》文中,提到了“要實現這一過程,仍然需要LFSR電路,參看《FPGA產生基于LFSR的
    的頭像 發表于 04-02 16:33 ?2449次閱讀
    <b class='flag-5'>FPGA</b>產生基于LFSR的<b class='flag-5'>偽</b><b class='flag-5'>隨機數</b>概念

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

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

    【STM32】隨機數發生器詳解

    00. 目錄文章目錄00. 目錄01. 隨機數發生器簡介02. 隨機數發生器主要特性03. 隨機數發生器
    發表于 12-08 18:36 ?11次下載
    【STM32】<b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>詳解

    如何在FPGA中實現隨機數發生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中實現4位隨機數發生器(PRNGs)。
    的頭像 發表于 08-06 11:20 ?769次閱讀
    如何在<b class='flag-5'>FPGA</b>中實現<b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>
    圣淘沙百家乐的玩法技巧和规则| 澳门百家乐真人版| 百家乐第三张规则| 百家乐官网特殊计| 百家乐官网视频地主| sz新全讯网网址112| 百家乐咋个玩的| 百家乐官网网络赌博网址| 抚顺棋牌网| 鑫鼎百家乐娱乐城| 康莱德百家乐官网的玩法技巧和规则 | 百家乐官网闲和庄| 优博娱乐网| 百家乐空调维修| 百家乐官网论坛| 百家乐官网麻关于博彩投注| 君豪棋牌怎么样| 百家乐欧洲赔率| 加多宝百家乐官网的玩法技巧和规则 | 大发888 无法进入网页| 百家乐金海岸软件| 百威百家乐官网的玩法技巧和规则| 百家乐官网美女荷官| 大发888游戏是真的么| 御金百家乐娱乐城| 娱乐百家乐官网可以代理吗| 百家乐官网玩法秘决| 大发888登陆网页游戏| 百家乐赌博技巧论坛| 博狗百家乐官网的玩法技巧和规则| 豪杰百家乐官网现金网| 在线棋牌游戏平台| 百家乐真人游戏娱乐| 易胜博百家乐输| 真人百家乐官网来博| 大发888娱乐场c17| 新葡京百家乐的玩法技巧和规则 | 大发888真钱账户注册| 百家乐套路| 百家乐开户送18元| 大三元百家乐官网的玩法技巧和规则 |