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

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

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

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

FPGA學(xué)習(xí)交流 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-06-13 11:21 ? 次閱讀

大家好,又到了每日學(xué)習(xí)的時間了,上一篇《薦讀:基于FPGA 的CRC校驗碼生成器》文中,提到了“要實現(xiàn)這一過程,仍然需要LFSR電路,參看《FPGA產(chǎn)生基于LFSR的偽隨機數(shù)》中關(guān)于該電路特性的介紹”,在這補一篇《FPGA產(chǎn)生基于LFSR的偽隨機數(shù)》,歡迎大家交流學(xué)習(xí)。

1.概念
通過一定的算法對事先選定的隨機種子(seed)做一定的運算可以得到一組人工生成的周期序列,在這組序列中以相同的概率選取其中一個數(shù)字,該數(shù)字稱作偽隨機數(shù),由于所選數(shù)字并不具有完全的隨機性,但是從實用的角度而言,其隨機程度已足夠了。這里的“偽”的含義是,由于該隨機數(shù)是按照一定算法模擬產(chǎn)生的,其結(jié)果是確定的,是可見的,因此并不是真正的隨機數(shù)。偽隨機數(shù)的選擇是從隨機種子開始的,所以為了保證每次得到的偽隨機數(shù)都足夠地“隨機”,隨機種子的選擇就顯得非常重要,如果隨機種子一樣,那么同一個隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)也會一樣。

2.由LFSR引出的產(chǎn)生方法
產(chǎn)生偽隨機數(shù)的方法最常見的是利用一種線性反饋移位寄存器(LFSR),它是由n個D觸發(fā)器和若干個異或門組成的,如下圖:
172436rpfddydydqfssy4b.png


其中,gn為反饋系數(shù),取值只能為0或1,取為0時表明不存在該反饋之路,取為1時表明存在該反饋之路;n個D觸發(fā)器最多可以提供2^n-1個狀態(tài)(不包括全0的狀態(tài)),為了保證這些狀態(tài)沒有重復(fù),gn的選擇必須滿足一定的條件。下面以n=3,g0=1,g1=1,g2=0,g3=1為例,說明LFSR的特性,具有該參數(shù)的LFSR結(jié)構(gòu)如下圖:
172437h4v9c2u4l24mfcwl.png

假設(shè)在開始時,D2D1D0=111(seed),那么,當(dāng)時鐘到來時,有:

D2=D1_OUT=1;

D1=D0_OUT^D2_OUT=0;

D0=D2_OUT=1;

即D2D1D0=101;同理,又一個時鐘到來時,可得D2D1D0=001. ………………

畫出狀態(tài)轉(zhuǎn)移圖如下:
172437n8pz2rre8a2aepg9.png


從圖可以看出,正好有2^3-1=7個狀態(tài),不包括全0;

如果你理解了上圖,至少可以得到三條結(jié)論:

1)初始狀態(tài)是由SEED提供的;

2)當(dāng)反饋系數(shù)不同時,得到的狀態(tài)轉(zhuǎn)移圖也不同;必須保證gn===1,否則哪來的反饋?

3)D觸發(fā)器的個數(shù)越多,產(chǎn)生的狀態(tài)就越多,也就越“隨機”;


3.verilog實現(xiàn)

基于以上原理,下面用verilog產(chǎn)生一個n=8,反饋系數(shù)為g0g1g2g3g4g5g6g7g8=101110001的偽隨機數(shù)發(fā)生器,它共有2^8=255個狀態(tài),該LFSR的結(jié)構(gòu)如下:
172437z10f8ahd4db2hkkt.png

verilog源代碼如下:
172438bsww78bz0ozi81iw.png


仿真波形:
172438hzqlfvald91af2r8.png

以1111 1111為種子,load信號置位后,開始在255個狀態(tài)中循環(huán),可將輸出值255、143、111……作為偽隨機數(shù)。

這篇補充就說到這里,各位,加油。

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

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600467
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

    產(chǎn)生隨機數(shù)

    一個自己寫的產(chǎn)生隨機數(shù)的工程
    發(fā)表于 12-01 15:45 ?13次下載

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

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

    隨機數(shù)生成算法

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

    單片機C語言如何產(chǎn)生隨機數(shù)

    C語言中有三個通用的隨機數(shù)發(fā)生器,分別為 rand函數(shù)、random函數(shù)、randomize 函數(shù),但是rand函數(shù)產(chǎn)生的并不是真意正義上的隨機數(shù),是一個
    的頭像 發(fā)表于 11-26 14:25 ?7498次閱讀

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

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

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

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

    基于LFSR隨機數(shù)FPGA產(chǎn)生

    通過一定的算法對事先選定的隨機種子(seed)做一定的運算可以得到一組人工生成的周期序列,在這組序列中以相同的概率選取其中一個數(shù)字,該數(shù)字稱作偽隨機數(shù),由于所選數(shù)字并不具有完全的隨機性,但是從實用的角度而言,其
    發(fā)表于 11-17 09:54 ?701次閱讀

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

    擴頻通信、安全、加密和調(diào)制解調(diào)器等應(yīng)用需要生成隨機數(shù)。實現(xiàn)隨機數(shù)發(fā)生器的最常見方法是線性反饋移位寄存器(LFSR)。LFSR生成的代碼實際上是“
    的頭像 發(fā)表于 03-01 15:28 ?591次閱讀
    MAX765x微處理器的<b class='flag-5'>偽</b><b class='flag-5'>隨機數(shù)</b>生成例程

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

    隨機試驗的結(jié)果,產(chǎn)生隨機數(shù)有多種不同的方法。這些方法被稱為隨機數(shù)生成器。隨機數(shù)最重要的特性是它在產(chǎn)生
    的頭像 發(fā)表于 09-12 09:13 ?1448次閱讀

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

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