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

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

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

3天內不再提示

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

454398 ? 來源:BitArt的博客 ? 作者:BitArt的博客 ? 2020-11-21 11:49 ? 次閱讀

1. 概念

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

2. 由LFSR引出的產生方法

產生偽隨機數的方法最常見的是利用一種線性反饋移位寄存器(LFSR),它是由n個D觸發器和若干個異或門組成的,如下圖:


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


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

D2=D1_OUT=1;

D1=D0_OUT^D2_OUT=0;

D0=D2_OUT=1;

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

畫出狀態轉移圖如下:


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

如果您理解了上圖,至少可以得到三條結論:

1)初始狀態是由SEED提供的;

2)當反饋系數不同時,得到的狀態轉移圖也不同;必須保證gn===1,否則哪來的反饋?

3)D觸發器的個數越多,產生的狀態就越多,也就越“隨機”;

3. verilog實現

基于以上原理,下面用verilog產生一個n=8,反饋系數為g0g1g2g3g4g5g6g7g8=101110001的偽隨機數發生器,它共有2^8=255個狀態,該LFSR的結構如下:


verilog源代碼如下:

module RanGen(
    input               rst_n,    /*rst_n is necessary to prevet locking up*/
    input               clk,      /*clock signal*/
    input               load,     /*load seed to rand_num,active high */
    input      [7:0]    seed,     
    output reg [7:0]    rand_num  /*random number output*/
);


always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        rand_num    <=8'b0;
    else if(load)
        rand_num <=seed;    /*load the initial value when load is active*/
    else
        begin
            rand_num[0] <= rand_num[7];
            rand_num[1] <= rand_num[0];
            rand_num[2] <= rand_num[1];
            rand_num[3] <= rand_num[2];
            rand_num[4] <= rand_num[3]^rand_num[7];
            rand_num[5] <= rand_num[4]^rand_num[7];
            rand_num[6] <= rand_num[5]^rand_num[7];
            rand_num[7] <= rand_num[6];
        end
            
end
endmodule

仿真波形:


以1111 1111為種子,load信號置位后,開始在255個狀態中循環,可將輸出值255、143、111……作為偽隨機數。

編輯:hfy


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

    關注

    1626

    文章

    21678

    瀏覽量

    602037
  • 移位寄存器
    +關注

    關注

    2

    文章

    258

    瀏覽量

    22238
  • LFSR
    +關注

    關注

    0

    文章

    16

    瀏覽量

    12732
收藏 人收藏

    評論

    相關推薦

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

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

    【總結】LabVIEW隨機數發生器

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

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

    隨機數發生器是信息安全領域不可或缺的重要組成部分,廣泛應用于金融、軍事等信息安全保密通信的電子設備。目前,隨著對RNG體積、功耗、接口方式等要求的提高,設計集成化芯片或IP核形式的隨機數
    發表于 08-27 06:05

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

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

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

    摘要:在很多實際應用,直接利用FPGA 產生隨機序列的方法可以為系統設計或測試帶來極大的便利。本文給出了基于線性反饋移位寄存
    發表于 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>設計

    隨機數發生器的容差分析

    基于混沌、均勻分布的真隨機數發生器的工作電路和精度要求較高的電壓參考電路的溫度漂移進行分析,給出了仿真得到的溫度曲線;分析了工藝可能存在的
    發表于 06-10 15:53 ?26次下載
    真<b class='flag-5'>隨機數</b><b class='flag-5'>發生器</b>的容差<b class='flag-5'>分析</b>

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

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

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

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

    如何使用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 ?2391次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>產生</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隨機數發生器學習介紹

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

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

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