国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于FPGA的LFSR16位偽隨機(jī)數(shù)產(chǎn)生算法實(shí)現(xiàn),可以配置不同的隨機(jī)數(shù)種子和改生成多項(xiàng)式,包含testbench

這篇具有很好參考價(jià)值的文章主要介紹了基于FPGA的LFSR16位偽隨機(jī)數(shù)產(chǎn)生算法實(shí)現(xiàn),可以配置不同的隨機(jī)數(shù)種子和改生成多項(xiàng)式,包含testbench。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1.算法仿真效果

2.算法涉及理論知識(shí)概要

3.Verilog核心程序

4.完整算法代碼文件


1.算法仿真效果

vivado2019.2仿真結(jié)果如下:

fpga產(chǎn)生隨機(jī)數(shù),FPGA通信和信號(hào)處理,fpga開發(fā),matlab,LFSR,偽隨機(jī)數(shù)

fpga產(chǎn)生隨機(jī)數(shù),FPGA通信和信號(hào)處理,fpga開發(fā),matlab,LFSR,偽隨機(jī)數(shù)

2.算法涉及理論知識(shí)概要

? ? ? ? ? LFSR(線性反饋移位寄存器)提供了一種在微控制器上快速生成非序列數(shù)字列表的簡單方法。生成偽隨機(jī)數(shù)只需要右移操作和 XOR 操作。LFSR 完全由其多項(xiàng)式指定。例如,6千-次多項(xiàng)式與每個(gè)項(xiàng)存在用方程 x 表示6+ x5+ x4+ x3+ x2+ x + 1。有 2 個(gè)(6 - 1)= 32 個(gè)這種大小的不同可能多項(xiàng)式。與數(shù)字一樣,一些多項(xiàng)式是素?cái)?shù)或原始數(shù)。我們對原始多項(xiàng)式感興趣,因?yàn)樗鼈儠?huì)在移位時(shí)為我們提供最大長度周期。n 次的最大長度多項(xiàng)式將有 2n- 1個(gè)不同的州。每個(gè)班次后都會(huì)轉(zhuǎn)換到新狀態(tài)。因此,6千-次多項(xiàng)式將有 31 種不同的狀態(tài)。1 到 31 之間的每個(gè)數(shù)字在重復(fù)之前都會(huì)出現(xiàn)在移位寄存器中。在基元 6 的情況下千-次多項(xiàng)式,只有六個(gè)。表 1 列出了所有基元 6千-次多項(xiàng)式及其各自的多項(xiàng)式掩碼。多項(xiàng)式掩碼是通過采用多項(xiàng)式的二進(jìn)制表示并截?cái)嘧钣覀?cè)的位來創(chuàng)建的。掩碼用于實(shí)現(xiàn)多項(xiàng)式的代碼中。實(shí)現(xiàn) n 的多項(xiàng)式掩碼需要 n 位千-次多項(xiàng)式。

? ? ? ? 每個(gè)基元多項(xiàng)式都有奇數(shù)項(xiàng),這意味著基元多項(xiàng)式的每個(gè)掩碼都有一個(gè)偶數(shù) 1 位。每個(gè)原始多項(xiàng)式還定義了第二個(gè)原始多項(xiàng)式,即它的對偶??梢酝ㄟ^從每項(xiàng)的多項(xiàng)式次數(shù)中減去指數(shù)來找到對偶。例如,給定 6千-次多項(xiàng)式,x6+ x + 1,它的對偶是 x6-6+ x6-1+ x6-0,等于 x6+ x5+ 1.在表 1 中,多項(xiàng)式 1 和 2、3 和 4、5 和 6 是彼此的對偶。表 2 列出了每個(gè)不同大小多項(xiàng)式的周期以及每個(gè)大小存在的基元多項(xiàng)式的數(shù)量。表 3 列出了每個(gè)不同大小的多項(xiàng)式的一個(gè)多項(xiàng)式掩碼。它還顯示了當(dāng) LFSR 初始化為 1 時(shí),LFSR 在連續(xù)班次后將保持的前四個(gè)值。此表應(yīng)有助于確保實(shí)現(xiàn)正確。

? ? ? ?LFSR 的值永遠(yuǎn)不會(huì)為零,因?yàn)闅w零的 LFSR 的每個(gè)偏移都會(huì)將其保留為零。LFSR 必須初始化,即種子,為非零值。當(dāng) LFSR 保持 1 并移動(dòng)一次時(shí),其值將始終為多項(xiàng)式掩碼的值。當(dāng)寄存器除最高有效位外全部為零時(shí),接下來的幾個(gè)偏移將顯示高位偏移到零填充的低位。例如,任何具有基元多項(xiàng)式的 8 位移位寄存器最終將生成序列 0x80、0x40、0x20、0x10、8、4、2、1,然后生成多項(xiàng)式掩碼。

? ? ? ? 一般來說,基本的LFSR不會(huì)產(chǎn)生非常好的隨機(jī)數(shù)。通過選擇較大的LFSR并使用較低的位作為隨機(jī)數(shù),可以改進(jìn)更好的數(shù)字序列。例如,如果您有一個(gè) 10 位 LFSR 并且想要一個(gè) 8 位數(shù)字,則可以將寄存器底部的 8 位作為您的號(hào)碼。使用此方法,您將看到每個(gè) 8 位數(shù)字四次和零,三次,然后 LFSR 完成一個(gè)周期并重復(fù)。這解決了得到零的問題,但數(shù)字仍然沒有表現(xiàn)出非常好的統(tǒng)計(jì)特性。相反,您可以將 LFSR 的子集用于隨機(jī)數(shù),以增加數(shù)字的排列并改善 LFSR 輸出的隨機(jī)屬性。

? ? ? ?在獲得隨機(jī)數(shù)之前多次移動(dòng)LFSR也可以改善其統(tǒng)計(jì)特性。將LFSR移動(dòng)其周期的一個(gè)因子將使總周期長度減少該因子。表2列出了各期間的因素。

? ? ? ?LFSR 相對較短的周期可以通過將兩個(gè)或多個(gè)不同大小的 LFSR 的值異或相處來解決。這些異或LFSR的新周期將是周期的LCM(最小公倍數(shù))。例如,基元 4 位和基元 6 位 LFSR 的 LCM 是 LCM(15, 63),即 315。以這種方式加入 LFSR 時(shí),請確保僅使用最小位數(shù)的 LFSR;使用少于此量是更好的做法。對于 4 位和 6 位 LFSR,不應(yīng)使用超過底部的 4 位。在圖 2 中,底部的 16 位用于 32 位和 31 位 LFSR。 請注意,對兩個(gè)相同大小的 LFSR 進(jìn)行異或運(yùn)算不會(huì)增加周期。

? ? ? ?LFSR的不可預(yù)測性可以通過用反饋項(xiàng)對一點(diǎn)“熵”進(jìn)行異或來增加。這樣做時(shí)應(yīng)該小心——加上熵位,LFSR 到所有零的可能性很小。如果定期添加熵,LFSR 的歸零將自行校正。這種與反饋項(xiàng)進(jìn)行異或的方法就是CRC(循環(huán)冗余校驗(yàn))的計(jì)算方式。

? ? ? ?多項(xiàng)式不是生而相等的。有些多項(xiàng)式肯定會(huì)比其他多項(xiàng)式更好。表 2 列出了可用于最大 31 位大小的基元多項(xiàng)式的數(shù)量。嘗試不同的多項(xiàng)式,直到找到滿足您需求的多項(xiàng)式。表3中給出的掩模是隨機(jī)選擇的。

? ? ? ?可以使用NIST的統(tǒng)計(jì)測試套件進(jìn)行更廣泛的測試。NIST還有幾本出版物描述了隨機(jī)數(shù)測試和對其他測試軟件的引用。

? ? ? ?通過一定的算法對事先選定的隨機(jī)種子(seed)做一定的運(yùn)算可以得到一組人工生成的周期序列,在這組序列中以相同的概率選取其中一個(gè)數(shù)字,該數(shù)字稱作偽隨機(jī)數(shù),由于所選數(shù)字并不具有完全的隨機(jī)性,但是從實(shí)用的角度而言,其隨機(jī)程度已足夠了。

? ? ? ?這里的“偽”的含義是,由于該隨機(jī)數(shù)是按照一定算法模擬產(chǎn)生的,其結(jié)果是確定的,是可見的,因此并不是真正的隨機(jī)數(shù)。偽隨機(jī)數(shù)的選擇是從隨機(jī)種子開始的,所以為了保證每次得到的偽隨機(jī)數(shù)都足夠地“隨機(jī)”,隨機(jī)種子的選擇就顯得非常重要,如果隨機(jī)種子一樣,那么同一個(gè)隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)也會(huì)一樣。

fpga產(chǎn)生隨機(jī)數(shù),FPGA通信和信號(hào)處理,fpga開發(fā),matlab,LFSR,偽隨機(jī)數(shù)

? ? ? ?產(chǎn)生偽隨機(jī)數(shù)的方法最常見的是利用一種線性反饋移位寄存器(LFSR)。它是由n個(gè)D觸發(fā)器和若干個(gè)異或門組成的,如圖:?

fpga產(chǎn)生隨機(jī)數(shù),FPGA通信和信號(hào)處理,fpga開發(fā),matlab,LFSR,偽隨機(jī)數(shù)

? ? ? ?其中,gn為反饋系數(shù),取值只能為0或1,取為0時(shí)表明不存在該反饋之路,取為1時(shí)表明存在該反饋之路;n個(gè)D觸發(fā)器最多可以提供2^n-1個(gè)狀態(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)如下圖:fpga產(chǎn)生隨機(jī)數(shù),FPGA通信和信號(hào)處理,fpga開發(fā),matlab,LFSR,偽隨機(jī)數(shù)

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 

// Create Date: 2023/03/24 15:39:40
// Design Name: 
// Module Name: TEST
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module TEST();
 
reg          i_clk;  	
reg          i_rst;    	 
reg          i_load;  		 
reg  [15:0]	 i_seed;   	//隨機(jī)種子
wire [15:0]	 o_rand;  	//16位隨機(jī)數(shù)



tops uut(
			   	    .i_clk  (i_clk),  	
					.i_rst  (i_rst),    	 
					.i_load (i_load),  		 
					.i_seed (i_seed),     	//隨機(jī)種子
					.o_rand (o_rand)  	    //16位隨機(jī)數(shù)
);


initial
begin
i_clk=1'b1;
i_rst=1'b1;
i_load=1'b1;
i_seed=16'd12315;
#1000
i_rst=1'b0;
#100
i_load=1'b0;
#500;
i_load=1'b1;
i_seed=16'd5285;
#500;
i_load=1'b0;
#800;
i_load=1'b1;
end

always #5 i_clk=~i_clk;


endmodule

4.完整算法代碼文件

V文章來源地址http://www.zghlxwxcb.cn/news/detail-667317.html

到了這里,關(guān)于基于FPGA的LFSR16位偽隨機(jī)數(shù)產(chǎn)生算法實(shí)現(xiàn),可以配置不同的隨機(jī)數(shù)種子和改生成多項(xiàng)式,包含testbench的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在MATLAB產(chǎn)生正態(tài)(Gauss)分布隨機(jī)數(shù)

    在MATLAB產(chǎn)生正態(tài)(Gauss)分布隨機(jī)數(shù)

    在 MATLAB 中內(nèi)置了有產(chǎn)生標(biāo)準(zhǔn)正態(tài)(Gauss)分布的隨機(jī)數(shù)函數(shù),使用方法如下: 其中 m、n 為產(chǎn)生矩陣的行數(shù)和列數(shù), p 為產(chǎn)生矩陣的個(gè)數(shù),產(chǎn)生的矩陣中的每個(gè)元素均為服從 N ( 0 , 1 ) N(0, 1) N ( 0 , 1 ) 的標(biāo)準(zhǔn)正態(tài)分布的元素。 使用如下命令產(chǎn)生一個(gè) 100x1 的服從 標(biāo)準(zhǔn)正態(tài)(Gauss)分布

    2024年02月02日
    瀏覽(19)
  • C語言隨機(jī)數(shù)的產(chǎn)生(rand、srand、time函數(shù)細(xì)節(jié)講解)

    C語言隨機(jī)數(shù)的產(chǎn)生(rand、srand、time函數(shù)細(xì)節(jié)講解)

    先上代碼,再詳細(xì)解釋: 我們先來查詢下rand函數(shù) 網(wǎng)站舊版我放在這兒,可以查詢庫函數(shù)等https://legacy.cplusplus.com/reference/cstring/strcat/ rand函數(shù)的頭文件是stdlib.h。 rand函數(shù)無需傳參數(shù),返回類型是一個(gè)偽隨機(jī)的整數(shù)范圍是0到RAND_MAX。那這個(gè)RAND_MAX所對應(yīng)的值是多少呢?我們同樣

    2024年02月08日
    瀏覽(20)
  • Google Earth Engine(GEE)——土地分類精度分析randomColumn產(chǎn)生偽隨機(jī)數(shù)然后進(jìn)行混淆矩陣計(jì)算

    Google Earth Engine(GEE)——土地分類精度分析randomColumn產(chǎn)生偽隨機(jī)數(shù)然后進(jìn)行混淆矩陣計(jì)算

    我們在進(jìn)行土地分類時(shí),需要進(jìn)行精度驗(yàn)證,但是之前我們要進(jìn)行樣本點(diǎn)的隨機(jī)分類,也就是分出一部分作為訓(xùn)練樣本另外一部分作為,這是我們要想產(chǎn)生隨機(jī)種子賦值給我們所選定的訓(xùn)練樣本,這樣我們就可以隨機(jī)將樣本進(jìn)行分成訓(xùn)練樣本和驗(yàn)證樣本,而我們使用的函數(shù)

    2024年02月09日
    瀏覽(17)
  • Unity 中的隨機(jī)數(shù)的基礎(chǔ)常用的隨機(jī)數(shù)生成方法

    在 Unity 中,可以使用 Random 類來生成隨機(jī)數(shù)。以下是一些常用的隨機(jī)數(shù)生成方法: Random.Range(min, max):生成一個(gè)在[min, max)范圍內(nèi)的隨機(jī)整數(shù)。 Random.value:生成一個(gè)在[0, 1)范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。 Random.insideUnitCircle:生成一個(gè)在單位圓內(nèi)的隨機(jī)二維向量。 Random.insideUnitSphere:生成

    2024年02月20日
    瀏覽(43)
  • JS - 生成隨機(jī)數(shù)的方法匯總(不同范圍、類型的隨機(jī)數(shù))

    (1)使用 random() 方法可以返回一個(gè)介于 0 ~ 1 之間的偽隨機(jī)數(shù)(包括 0,不包括 1)。 (2)下面是一個(gè)測試樣例 (1)這種最簡單,因?yàn)楹?random 的特點(diǎn)保持一致。只需使用如下公式即可: (2)比如下面生成 [10,15) 范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。 因?yàn)?random 的特點(diǎn),要取得這幾個(gè)區(qū)間

    2023年04月08日
    瀏覽(28)
  • Hutool 生成隨機(jī)數(shù)和隨機(jī)字符串

    官方文檔: https://www.hutool.cn/docs/#/core/工具類/隨機(jī)工具-RandomUtil 整理完畢,完結(jié)撒花~

    2024年02月16日
    瀏覽(37)
  • MySQL、Oracle 生成隨機(jī)ID、隨機(jī)數(shù)、隨機(jī)字符串

    MySQL、Oracle 生成隨機(jī)ID、隨機(jī)數(shù)、隨機(jī)字符串

    UUID():是由128位的數(shù)字組成的全局唯一標(biāo)識(shí)符。每次都生成一個(gè)新的隨機(jī)數(shù)。 它通常以32個(gè)十六進(jìn)制數(shù)的形式表示,分為5個(gè)部分,以連字符分隔。 UUID的長度是36個(gè)字符,包括32個(gè)十六進(jìn)制數(shù)字和4個(gè)連字符。 UUID的標(biāo)準(zhǔn)格式是由 8-4-4-4-12 個(gè)十六進(jìn)制數(shù)字組成的,其中每個(gè)部分的

    2024年01月16日
    瀏覽(29)
  • 一文詳解安全隨機(jī)數(shù)

    本文分享自華為云社區(qū)《【安全攻防】深入淺出實(shí)戰(zhàn)系列專題-安全隨機(jī)數(shù)》,作者: MDKing 。 使用隨機(jī)數(shù)可分類安全場景跟非安全場景。非安全場景需要生成的越快越好。安全場景使用的隨機(jī)數(shù)必須足夠安全,保證不能被預(yù)測到。 常見的非安全場景: 數(shù)據(jù)的索引號(hào)、標(biāo)識(shí);

    2024年02月05日
    瀏覽(21)
  • 生成隨機(jī)數(shù)

    用于產(chǎn)生隨機(jī)數(shù) boolean nextBoolean() : 返回下一個(gè)偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的均勻分布的 boolean 值。 void nextBytes(byte[] bytes) : 生成隨機(jī)字節(jié)并將其置于用戶提供的 byte 數(shù)組中。 double nextDouble() : 返回下一個(gè)偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、在 0.0 和 1.0 之

    2024年02月03日
    瀏覽(30)
  • Flutter 生成隨機(jī)數(shù)

    如何讓隨機(jī)數(shù)變化? 我們嘗試過的都知道,當(dāng)你創(chuàng)建出來一個(gè)隨機(jī)數(shù)后,調(diào)用他他的值是隨機(jī)的,但是,這時(shí)候他的值就會(huì)固定住,不管怎么樣都是隨機(jī)出來的那個(gè)數(shù),如果想要他每次都不一樣的話,我們就想要使用刷新來讓他變化了。 我們可以使用這樣的方法來使他每次不一

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包