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

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

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

3天內不再提示

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

電子工程師 ? 來源:博客園 ? 作者:super_star123 ? 2021-04-02 16:33 ? 次閱讀

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

1.概念

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

2.由LFSR引出的產生方法

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

853083a2-9385-11eb-8b86-12bb97331649.png

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

853d2120-9385-11eb-8b86-12bb97331649.png

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

D2=D1_OUT=1;

D1=D0_OUT^D2_OUT=0;

D0=D2_OUT=1;

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

畫出狀態轉移圖如下:

85613786-9385-11eb-8b86-12bb97331649.png

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

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

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

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

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

3.verilog實現

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

85882148-9385-11eb-8b86-12bb97331649.png

verilog源代碼如下:

85b4d166-9385-11eb-8b86-12bb97331649.png

仿真波形:

85f23b00-9385-11eb-8b86-12bb97331649.png

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

原文標題:薦讀: FPGA產生基于LFSR的偽隨機數

文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

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

    關注

    1630

    文章

    21796

    瀏覽量

    606011
  • LFSR
    +關注

    關注

    0

    文章

    16

    瀏覽量

    12771

原文標題:薦讀: FPGA產生基于LFSR的偽隨機數

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32配合可編程加密芯片SMEC88ST的防抄板加密方案設計

    算法。 ④SMEC88ST隨機數發生器產生隨機數是真隨機數,這樣可以保證關鍵數據在通訊時每次都是隨機數參與的,每次通訊的數據密文都是不一樣
    發表于 12-27 13:03

    《DNESP32S3使用指南-IDF版_V1.6》第三十一章 RNG實驗

    ADC工作時,就會產生比特流,并通過異或(XOR)邏輯運算作為隨機數種子進入隨機數生成器。當為數字內核使能RC_FAST_CLK時鐘時,隨機數發生器也會對RC_FAST_CLK(20M
    發表于 12-26 09:31

    淺談加密芯片的一種破解方法和對應加密方案改進設計

    為了增加加密方案可靠度,設計成讓主MCU的芯片序列號ID1、產生隨機數R1和加密芯片的芯片序列號ID2、產生隨機數R2參與計算臨時過程秘鑰,加密芯片使用秘鑰Key對(ID1⊕RAN
    發表于 12-20 15:31

    淺談加密芯片的一種破解方法和加密方案改進設計

    為了增加加密方案可靠度,設計成讓主MCU的芯片序列號ID1、產生隨機數R1和加密芯片的芯片序列號ID2、產生隨機數R2參與計算臨時過程秘鑰,加密芯片使用秘鑰Key對(ID1⊕RAN
    發表于 12-20 15:10

    “安徽造”量子隨機數芯片通過國家密碼管理局檢測

    近日,國家密碼管理局商用密碼檢測中心出具報告,由安徽問天量子科技公司自主研發的WT-QRNG300量子隨機數芯片通過檢測。這是國內首家官方商密報告認定、且已實現商用量產及產業化的“量子隨機數芯片
    的頭像 發表于 12-19 19:06 ?428次閱讀

    問天量子和方寸微電子聯合發布量子隨機數芯片

    近日,國家密碼管理局商用密碼檢測中心出具報告,問天量子和方寸微電子聯合自主研發的WT-QRNG300量子隨機數芯片通過檢測,這是國內首家官方商密報告認定、且已實現商用量產及產業化的“量子隨機數芯片”產品。
    的頭像 發表于 12-19 16:18 ?402次閱讀

    LuatOS開發之4G模組隨機數(random)|實戰指南

    本次學習的實戰是關于4G模組LuatOS開發的隨機數示例指南,希望大家有所收獲。
    的頭像 發表于 11-30 09:51 ?298次閱讀
    LuatOS開發之4G模組<b class='flag-5'>隨機數</b>(random)|實戰指南

    解析Air780E模組LuatOS開發的隨機數(random) 示例篇

    本文主要解析的是低功耗4G模組Air780E的LuatOS開發隨機數(random)實例,我以整理成文分享給大家。
    的頭像 發表于 11-29 20:23 ?209次閱讀
    解析Air780E模組LuatOS開發的<b class='flag-5'>隨機數</b>(random) 示例篇

    FPGA的計算方法

    我們在比較FPGA的芯片參數時經常說某一款FPGA是多少萬門的,也有的說其有多少個LE,那么二者之間有何關系呢? FPGA等效門的計算方法有兩種,一是把
    的頭像 發表于 11-11 09:45 ?419次閱讀
    <b class='flag-5'>FPGA</b>門<b class='flag-5'>數</b>的計算方法

    藍牙AES+RNG如何保障物聯網信息安全

    芯片,可以通過軟件實現AES加密。然而,這種方式可能會增加芯片的功耗和成本,并且加密性能可能不如硬件加密。除了AES外,一些藍牙模塊具有隨機數產生器(Random Number Generator)。該
    發表于 11-08 15:38

    雅特力AT32 MCU的隨機數生成

    概述產品和生態系統安全性的需求比以往任何時候都更加重要。真隨機數是所有安全系統的核心,其質量會影響設計的安全性。因此在沒有內置硬件TRNG的AT32的微控制器系列中,如何提高隨機數的有效,來符合
    的頭像 發表于 08-30 12:26 ?708次閱讀
    雅特力AT32 MCU的<b class='flag-5'>隨機數</b>生成

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

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

    如何使用Python生成四位隨機數

    為了實現這些目標,Python 為我們提供了random() 模塊。random() 是一個內置的 Python 模塊,用于生成隨機數
    的頭像 發表于 04-15 12:47 ?774次閱讀

    TC389芯片上HSM的TRNG真隨機數功能,如何判斷其隨機能力呢?

    想咨詢一下,TC389芯片上HSM的TRNG真隨機數功能,如何判斷其隨機能力呢?有什么資料或者測試內容嗎?
    發表于 03-05 07:20

    請問rt-thread studio如何使用硬件隨機數生成器?

    指導一下。 經過查詢得知可以使用rt_hw_random_get()函數來獲取硬件隨機數,請文需要做什么配置才能使用rt_hw_random_get()函數。
    發表于 02-23 08:03
    盈丰国际博彩网| 昆明百家乐官网装修装潢有限公司| 网络百家乐官网真人游戏| 百家乐游戏真人游戏| 百家乐赌现金| 德州扑克怎么发牌| 武义县| 百家乐官网如何制| 环球百家乐娱乐城| 娱乐城注册送彩金100| 网页百家乐官网官网| 贝博百家乐的玩法技巧和规则| 织金县| 百家乐官网投注网出租| sz全讯网新2xb112| 百家乐官网路纸表格| 美高梅百家乐娱乐城| 皇冠网怎么注册| 百家乐算号软件| 大发888登陆网页游戏| 百家乐官网注册开户送彩金| 网上百家乐官网内| 大发888体育注册| 网上百家乐官网内幕| 法拉利百家乐的玩法技巧和规则 | 百家乐官网开户代理| 皇冠百家乐皇冠网| 东方明珠线上娱乐| 百家乐官网多少钱| 百家乐棋牌交| 在线棋牌游戏| 百家乐的方法和公式| 永吉县| 澳门百家乐如何算牌| 德州扑克 梭哈| 作弊百家乐官网赌具价格| 大发888娱乐城开户| 扑克百家乐官网赌器| 大发888娱乐城破解软件| 百家乐官网二代理解| 德州扑克 视频|