《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > FPGA設(shè)計中,產(chǎn)生LFSR偽隨機數(shù)

FPGA設(shè)計中,產(chǎn)生LFSR偽隨機數(shù)

2021-04-22
來源:EETOP

  今天給大俠帶來在FPGA設(shè)計中,產(chǎn)生LFSR偽隨機數(shù),話不多說,上貨。

  一、概述

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

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

  二、由LFSR引出的產(chǎn)生方法

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

  4.png

  其中,gn為反饋系數(shù),取值只能為0或1,取為0時表明不存在該反饋之路,取為1時表明存在該反饋之路,n個D觸發(fā)器最多可以提供2^n-1個狀態(tài)(不包括全0的狀態(tài))。為了保證這些狀態(tài)沒有重復,gn的選擇必須滿足一定的條件。

  下面以n=3,g0=1,g1=1,g2=0,g3=1為例,說明LFSR的特性,具有該參數(shù)的LFSR結(jié)構(gòu)如下圖:

  5.png

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

  D2=D1_OUT=1;

  D1=D0_OUT^D2_OUT=0;

  D0=D2_OUT=1;

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

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

  6.png

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

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

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

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

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

  三、verilog實現(xiàn)

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

  8.png

  verilog源代碼如下:

  9.png

  仿真波形:

  10.png

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

  本篇就說到這里,各位大俠,有緣再見。




本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。