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

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

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

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

電子發(fā)燒友論壇 ? 來(lái)源:電子發(fā)燒友論壇 ? 2023-09-12 09:13 ? 次閱讀

今天是畫師本人第一次和各位大俠見(jiàn)面,執(zhí)筆繪畫FPGA江湖,本人寫了篇關(guān)于FPGA的偽隨機(jī)數(shù)發(fā)生器學(xué)習(xí)筆記,這里分享給大家,僅供參考。

基于FPGA的偽隨機(jī)數(shù)發(fā)生器

(附代碼)

1、概念

隨機(jī)數(shù)是專門的隨機(jī)試驗(yàn)的結(jié)果,產(chǎn)生隨機(jī)數(shù)有多種不同的方法。這些方法被稱為隨機(jī)數(shù)生成器。隨機(jī)數(shù)最重要的特性是它在產(chǎn)生時(shí)后面的那個(gè)數(shù)與前面的那個(gè)數(shù)毫無(wú)關(guān)系。隨機(jī)數(shù)分為三類,分別是偽隨機(jī)數(shù)、密碼學(xué)安全的偽隨機(jī)數(shù)以及真隨機(jī)數(shù)。

本次設(shè)計(jì)為基于FPGA生成的偽隨機(jī)數(shù)發(fā)生器,什么是偽隨機(jī)數(shù)呢?統(tǒng)計(jì)學(xué)偽隨機(jī)性指的是在給定的隨機(jī)比特流樣本中,1的數(shù)量大致等于0的數(shù)量,同理,“10”“01”“00”“11”四者數(shù)量大致相等。類似的標(biāo)準(zhǔn)被稱為統(tǒng)計(jì)學(xué)隨機(jī)性。滿足這類要求的數(shù)字在人類“一眼看上去”是隨機(jī)的。

在實(shí)際應(yīng)用中往往使用偽隨機(jī)數(shù)就足夠了。這些數(shù)列是“似乎”隨機(jī)的數(shù),實(shí)際上它們是通過(guò)一個(gè)固定的、可以重復(fù)的計(jì)算方法產(chǎn)生的。計(jì)算機(jī)或計(jì)算器產(chǎn)生的隨機(jī)數(shù)有很長(zhǎng)的周期性。它們不真正地隨機(jī),因?yàn)樗鼈儗?shí)際上是可以計(jì)算出來(lái)的,但是它們具有類似于隨機(jī)數(shù)的統(tǒng)計(jì)特征。這樣的發(fā)生器叫做偽隨機(jī)數(shù)發(fā)生器。

2、設(shè)計(jì)原理

本次設(shè)計(jì)采用線性反饋移位寄存器Linear Feedback Shift Register, LFSR)來(lái)實(shí)現(xiàn)偽隨機(jī)數(shù)發(fā)生器。線性反饋移位寄存器是指,給定前一狀態(tài)的輸出,將該輸出的線性函數(shù)再用作輸入的移位寄存器。異或運(yùn)算是最常見(jiàn)的單比特線性函數(shù):對(duì)寄存器的某些位進(jìn)行異或操作后作為輸入,再對(duì)寄存器中的各比特進(jìn)行整體移位。

線性反饋移位寄存器通常由動(dòng)態(tài)或靜態(tài)主從型觸發(fā)器構(gòu)成。反饋回路由異或門構(gòu)成。其特性通常由一個(gè)特征多項(xiàng)式表征。LFSR結(jié)構(gòu)如下圖所示:

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

圖1 LFSR結(jié)構(gòu)示意圖

對(duì)應(yīng)的特征多項(xiàng)式為:

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

Gm為多項(xiàng)式的系數(shù),而多項(xiàng)式系數(shù)只能為1或0。

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

基于以上原理,我們使用本原多項(xiàng)式x^32+x^7+x^5+x^3+x^2+x+1來(lái)構(gòu)造最大周期的LFSR。

3、架構(gòu)設(shè)計(jì)

設(shè)計(jì)架構(gòu)如下圖:

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

將輸入時(shí)鐘命名為clk,復(fù)位信號(hào)命名為rst_n,輸入有效信號(hào)命名為ivalid,輸入的隨機(jī)種子命名為seed[31:0],生成的隨機(jī)數(shù)命名為data[31:0]。

4、Verilog代碼實(shí)現(xiàn)

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

設(shè)計(jì)實(shí)現(xiàn)代碼如下:

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

5、仿真測(cè)試結(jié)果

仿真代碼如下:

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

本次仿真采用100M時(shí)鐘進(jìn)行,輸入種子為非零隨機(jī)數(shù)。

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

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

6、總結(jié)

以上是經(jīng)過(guò)學(xué)習(xí),集合了各家所長(zhǎng)得到的結(jié)果。由于想做一個(gè)32位的偽隨機(jī)數(shù)發(fā)生器,在網(wǎng)上找了各種資料,并沒(méi)有找到有規(guī)定的標(biāo)準(zhǔn)多項(xiàng)式,于是隨意定了一個(gè)。在實(shí)際運(yùn)用當(dāng)中,如果有標(biāo)準(zhǔn)的多項(xiàng)式系數(shù),可能得到了一個(gè)偽隨機(jī)數(shù),就可以根據(jù)已知的特征式得出后面的結(jié)果,安全性也就大大降低了。

審核編輯:彭菁

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

    關(guān)注

    1636

    文章

    21841

    瀏覽量

    608506
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7575

    瀏覽量

    89127
  • 發(fā)生器
    +關(guān)注

    關(guān)注

    4

    文章

    1372

    瀏覽量

    62061
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4355

    瀏覽量

    63319

原文標(biāo)題:【學(xué)習(xí)教程】基于FPGA的偽隨機(jī)數(shù)發(fā)生器(附代碼)

文章出處:【微信號(hào):gh_9b9470648b3c,微信公眾號(hào):電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    【assingle分享】labview隨機(jī)數(shù)發(fā)生器

    ,提供了多種不同的函數(shù),下面大概總結(jié)一下。一、隨機(jī)數(shù)發(fā)生器在LABVIEW數(shù)值函數(shù)選板中,提供了一個(gè)隨機(jī)數(shù)發(fā)生器函數(shù),返回一個(gè)0-1之間的
    發(fā)表于 04-07 10:27

    【總結(jié)】LabVIEW隨機(jī)數(shù)發(fā)生器

    ,提供了多種不同的函數(shù),下面大概總結(jié)一下。一、隨機(jī)數(shù)發(fā)生器在LABVIEW數(shù)值函數(shù)選板中,提供了一個(gè)隨機(jī)數(shù)發(fā)生器函數(shù),返回一個(gè)0-1之間的
    發(fā)表于 01-30 14:51

    怎么設(shè)計(jì)基于USB和FPGA隨機(jī)數(shù)發(fā)生器驗(yàn)證平臺(tái)?

    一種必然。為此,基于純數(shù)字電路實(shí)現(xiàn)的隨機(jī)數(shù)發(fā)生器已成為研究的熱點(diǎn),而FPGA可編程邏輯芯片為此類隨機(jī)數(shù)發(fā)生器的研究提供了良好的開發(fā)環(huán)境。
    發(fā)表于 08-27 06:05

    隨機(jī)數(shù)發(fā)生器的相關(guān)資料分享

    00. 目錄文章目錄00. 目錄01. 隨機(jī)數(shù)發(fā)生器簡(jiǎn)介02. 隨機(jī)數(shù)發(fā)生器主要特性03. 隨機(jī)數(shù)發(fā)生器
    發(fā)表于 02-14 07:35

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

    今天是畫師本人第一次和各位大俠見(jiàn)面,執(zhí)筆繪畫FPGA江湖,本人寫了篇關(guān)于FPGA隨機(jī)數(shù)發(fā)生器學(xué)習(xí)
    發(fā)表于 04-21 19:42

    隨機(jī)數(shù)發(fā)生器FPGA實(shí)現(xiàn)與研究

    摘要:在很多實(shí)際應(yīng)用中,直接利用FPGA 產(chǎn)生隨機(jī)序列的方法可以為系統(tǒng)設(shè)計(jì)或測(cè)試帶來(lái)極大的便利。本文給出了基于線性反饋移位寄存電路,并結(jié)合FPG
    發(fā)表于 07-22 15:12 ?0次下載

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

    設(shè)計(jì)并實(shí)現(xiàn)了一種基于 FPGA 的真 隨機(jī)數(shù)發(fā)生器 ,利用一對(duì)振蕩環(huán)路之間的相位漂移和抖動(dòng)以及亞穩(wěn)態(tài)作為隨機(jī)源,使用線性反饋移位寄存的輸出
    發(fā)表于 05-30 17:04 ?72次下載
    基于<b class='flag-5'>FPGA</b>的真<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>發(fā)生器</b>設(shè)計(jì)

    利用FPGA的自身特性實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生器

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

    補(bǔ)充: FPGA產(chǎn)生基于LFSR的隨機(jī)數(shù)

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,上一篇《薦讀:基于FPGA 的CRC校驗(yàn)碼生成器》文中,提到了要實(shí)現(xiàn)這一過(guò)程,仍然需要LFSR電路,參看《FPGA產(chǎn)生基于LFSR的
    的頭像 發(fā)表于 06-13 11:21 ?7735次閱讀
    補(bǔ)充: <b class='flag-5'>FPGA</b>產(chǎn)生基于LFSR的<b class='flag-5'>偽</b><b class='flag-5'>隨機(jī)數(shù)</b>

    如何使用FPGA實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生器

    在很多實(shí)際應(yīng)用中,直接利用FPGA產(chǎn)生隨機(jī)序列的方法可以為系統(tǒng)設(shè)計(jì)或測(cè)試帶來(lái)極大的便利。本文給出了基于線性反饋移位寄存電路,并結(jié)合FPGA
    發(fā)表于 02-05 15:22 ?24次下載
    如何使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)<b class='flag-5'>偽</b><b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>發(fā)生器</b>

    FPGA產(chǎn)生基于LFSR的隨機(jī)數(shù)概念

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,上一篇《薦讀:基于FPGA 的CRC校驗(yàn)碼生成器》文中,提到了“要實(shí)現(xiàn)這一過(guò)程,仍然需要LFSR電路,參看《FPGA產(chǎn)生基于LFSR的
    的頭像 發(fā)表于 04-02 16:33 ?2495次閱讀
    <b class='flag-5'>FPGA</b>產(chǎn)生基于LFSR的<b class='flag-5'>偽</b><b class='flag-5'>隨機(jī)數(shù)</b>概念

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

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

    【STM32】隨機(jī)數(shù)發(fā)生器詳解

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

    如何在FPGA中實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中實(shí)現(xiàn)4位隨機(jī)數(shù)發(fā)生器(PRNGs)。
    的頭像 發(fā)表于 08-06 11:20 ?867次閱讀
    如何在<b class='flag-5'>FPGA</b>中實(shí)現(xiàn)<b class='flag-5'>隨機(jī)數(shù)</b><b class='flag-5'>發(fā)生器</b>