基于FPGA 的偽隨機(jī)序列的生成方法及應(yīng)用
摘要:通過分析各種偽隨機(jī)序列生成方法,提出了一種基于M 序列的連續(xù)抽樣方法,可以生 成滿足自適應(yīng)光學(xué)系統(tǒng)SPGD 控制算法要求的多路、相互獨(dú)立以及服從伯努利分布的偽隨機(jī)序 列。該方法適合于用FPGA 等超大規(guī)模集成電路實現(xiàn),且具有占用硬件資源較少,實現(xiàn)方便等 優(yōu)點(diǎn)。用FPGA 實現(xiàn)了用于61 單元自適應(yīng)光學(xué)系統(tǒng)SPGD 控制算法的偽隨機(jī)序列,并將此方 法應(yīng)用于基于SPGD 控制算法的自適應(yīng)光學(xué)系統(tǒng)實驗中,實驗表明,該方法能夠滿足自適應(yīng)光 學(xué)系統(tǒng)SPGD 算法的需求,系統(tǒng)實現(xiàn)成功閉環(huán)。
本文引用地址:http://www.ex-cimer.com/article/189964.htm1 引 言
隨機(jī)序列是一組滿足特定統(tǒng)計學(xué)規(guī)律的數(shù)據(jù),在信號理論分析中應(yīng)用非常普遍。由于 精確的隨機(jī)序列生成方法較為復(fù)雜,產(chǎn)生的隨機(jī)序列不具有可重復(fù)性等特點(diǎn),在很多應(yīng)用 場合使用偽隨機(jī)序列。偽隨機(jī)序列在擴(kuò)頻通信、信息加密和系統(tǒng)測試等諸多領(lǐng)域中都有著 廣泛的應(yīng)用。在自適應(yīng)光學(xué)SPGD 算法中,偽隨機(jī)序列亦有相當(dāng)重要的作用。
Vorontsov 等人在1997 年將SPGD 算法引入到自適應(yīng)光學(xué)領(lǐng)域[2]。國內(nèi)在近幾年開始了對 SPGD 算法在自適應(yīng)光學(xué)系統(tǒng)應(yīng)用的研究,并且在計算機(jī)上用軟件編程實現(xiàn)了算法,進(jìn)行 了自適應(yīng)光學(xué)的系統(tǒng)實驗[3]。自適應(yīng)光學(xué)SPGD 控制算法的研究趨勢是使用專用的信號處 理硬件電路作為算法的實現(xiàn)平臺,以獲得更高的迭代速度和更好的收斂效果。Cauwenberghs等人設(shè)計了專用的模擬超大規(guī)模集成電路實現(xiàn)SPGD 控制算法,并且在一些應(yīng)用領(lǐng)域進(jìn)行 了實驗[5]。目前自適應(yīng)光學(xué)系統(tǒng)的規(guī)模普遍達(dá)到幾十上百單元。針對多單元自適應(yīng)光學(xué)系 統(tǒng)SPGD 控制算法的特殊要求,本文提出了一種適合于用FPGA 硬件電路產(chǎn)生滿足算法要 求的多路偽隨機(jī)序列的生成方法,完成了FPGA 電路的硬件實現(xiàn),并將其用于實現(xiàn)61 單 元自適應(yīng)光學(xué)SPGD 控制算法,同時進(jìn)行自適應(yīng)光學(xué)的閉環(huán)實驗。
2 自適應(yīng)光學(xué) SPGD 控制算法對偽隨機(jī)序列的要求
SPGD(the Stochastic Parallel Gradient Descent algorithm)算法通過對多路的控制參數(shù)加 入隨機(jī)并行的擾動,使用性能指標(biāo)測量值的變化量與控制參數(shù)的變化量進(jìn)行控制參數(shù)的梯 度估計,以迭代方式在梯度下降方向上進(jìn)行控制參數(shù)的搜索。在自適應(yīng)光學(xué)SPGD 算法中, 控制參數(shù)為變形鏡的控制電壓,隨機(jī)并行的擾動通過多路偽隨機(jī)序列模擬。SPGD 算法中 隨機(jī)并行擾動的特性,對偽隨機(jī)序列也提出了相應(yīng)的要求[5]:
(1) 路數(shù)多。路數(shù)等于變形鏡單元數(shù)(即變形鏡上驅(qū)動單元的數(shù)目)。例如在一個61 單 元的自適應(yīng)光學(xué)系統(tǒng)中,就需要產(chǎn)生61 路的偽隨機(jī)序列。
(2) 偽隨機(jī)序列兩兩相互獨(dú)立。相互獨(dú)立可避免變形鏡各驅(qū)動單元間的相互耦合。
(3) 偽隨機(jī)序列符合伯努利分布,兩個樣本值出現(xiàn)的概率各為0.5。
3 硬件電路實現(xiàn)偽隨機(jī)序列的傳統(tǒng)方法
傳統(tǒng)的生成偽隨機(jī)序列的方法較多,如線性反饋移位寄存器法(LFSR,可產(chǎn)生M 序列), 乘同余法,線性同余法,Gold 序列等[6],[7]。M 序列是一種常用的隨機(jī)序列,符合SPGD 算 法中單路隨機(jī)序列伯努利分布的要求。但使用M 序列作為SPGD 算法中多路隨機(jī)序列在實 現(xiàn)上存在難點(diǎn):算法要求多路偽隨機(jī)序列,用多個不同的LFSR 結(jié)構(gòu)去生成多路的偽隨機(jī) 序列,需要耗費(fèi)大量的硬件資源,并且構(gòu)造多路不同的LFSR 結(jié)構(gòu)需耗費(fèi)巨大的工作量。
Gold 序列優(yōu)點(diǎn)在于只由兩個M 序列構(gòu)造,能夠節(jié)省資源;并且改變兩個M 序列模二 和的相對位置即可構(gòu)成多個Gold 序列,從而滿足SPGD 算法中多路偽隨機(jī)序列的要求。 但在實際工程中如何方便改變兩個M 序列的相對位置以產(chǎn)生多路的Gold 序列亦有難度。 同時,Gold 序列亦存在非平衡性問題,不完符合伯努利分布。
國外最早使用模擬超大規(guī)模集成電路(Analog VLSI)做出SPGD 控制算法的Vorontsov 等人設(shè)計的隨機(jī)數(shù)發(fā)生器,其本質(zhì)也是LFSR 結(jié)構(gòu),使用了抽頭的方法從而可以用一個 LFSR 結(jié)構(gòu)同時產(chǎn)生19 路的偽隨機(jī)序列[8],[1]。這種方法的缺陷是如果偽隨機(jī)序列的路數(shù)序 列超過19 路后,則用這個電路結(jié)構(gòu)產(chǎn)生的各路偽隨機(jī)數(shù)之間不是完全相互獨(dú)立的。
4 連續(xù)抽樣生成多路偽隨機(jī)序列的方法
通過以上對M 序列,Gold 序列的分析,結(jié)合M 序列易于硬件實現(xiàn),Gold 序列可生成 多路序列的優(yōu)點(diǎn),以及基于時間抽樣的思想,設(shè)計了如圖1 所示硬件結(jié)構(gòu)的68 路偽隨機(jī) Gold 序列發(fā)生器。
fpga相關(guān)文章:fpga是什么
評論