用DSP產(chǎn)生任意長(zhǎng)度偽隨機(jī)序列探討
出處:電子科技 發(fā)布于:2011-06-06 21:39:12
DSP(digital signal processor)是一種獨(dú)特的微處理器,是以數(shù)字信號(hào)來處理大量信息的器件。其工作原理是接收模擬信號(hào),轉(zhuǎn)換為0或1的數(shù)字信號(hào)。再對(duì)數(shù)字信號(hào)進(jìn)行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實(shí)時(shí)運(yùn)行速度可達(dá)每秒數(shù)以千萬條復(fù)雜指令程序,遠(yuǎn)遠(yuǎn)超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強(qiáng)大數(shù)據(jù)處理能力和高運(yùn)行速度,是值得稱道的兩大特色。
在實(shí)際應(yīng)用中,直接利用DSP產(chǎn)生任意長(zhǎng)度偽隨機(jī)序列的方法, 可以為系統(tǒng)設(shè)計(jì)和測(cè)試帶來便利。 傳統(tǒng)的方法是利用DSP的反饋位移寄存器只能產(chǎn)生2n (1≤n≤32)長(zhǎng)度偽隨機(jī)序列 ,文中結(jié)合DSP芯片TigerSHARC20XS的運(yùn)算結(jié)構(gòu), 設(shè)計(jì)出一種利用尋址遞減長(zhǎng)度序列, 從而產(chǎn)生具有遍歷性的任意長(zhǎng)度偽隨機(jī)序列的方法,成功的解決了傳統(tǒng)方法中出現(xiàn)的問題。
在統(tǒng)計(jì)學(xué)的不同技術(shù)中需要使用隨機(jī)數(shù),比如在從統(tǒng)計(jì)總體中抽取有代 隨機(jī)數(shù)表性的樣本的時(shí)候,或者在將實(shí)驗(yàn)動(dòng)物分配到不同的試驗(yàn)組的過程中。產(chǎn)生隨機(jī)數(shù)有多種不同的方法。隨機(jī)數(shù)重要的特性是:它所產(chǎn)生的后面的那個(gè)數(shù)與前面的那個(gè)數(shù)毫無關(guān)系。真正的隨機(jī)數(shù)是使用物理現(xiàn)象產(chǎn)生的:比如擲錢幣、骰子、轉(zhuǎn)輪、使用電子元件的噪音、核裂變等等。它們的缺點(diǎn)是技術(shù)要求比較高,在實(shí)際應(yīng)用中往往使用偽隨機(jī)數(shù)就足夠了。偽隨機(jī)數(shù)既有隨機(jī)數(shù)所具有的優(yōu)良相關(guān)性, 又有隨機(jī)數(shù)所不具備的規(guī)律性。因此其再各方面領(lǐng)域中又著廣泛的應(yīng)用。
在許多文獻(xiàn)中, 涉及的偽隨機(jī)序列產(chǎn)生方法多是基于語言的, 較少涉及硬件具體實(shí)現(xiàn)問題。已有的一些硬件實(shí)現(xiàn)方法, 在FPGA芯片和DSP芯片上都有過應(yīng)用 。其中在用DSP芯片實(shí)現(xiàn)時(shí), 如果要求產(chǎn)生任意長(zhǎng)度M (M > 0)的一個(gè)偽隨機(jī)序列并保證在無重復(fù)數(shù)的前提下該序列包含0~M - 1的每一個(gè)數(shù),傳統(tǒng)做法無法完成; 只有將生成的序列長(zhǎng)度M 限制為2n (1≤n ≤32)時(shí), 才能滿足要求。文中介紹的基于DSP的偽隨機(jī)序列產(chǎn)生方法解決了這樣的問題, 可以產(chǎn)生任意長(zhǎng)度的偽隨機(jī)序列, 對(duì)工程應(yīng)用有一定的現(xiàn)實(shí)意義。
1 線性同余算法的基本原理
線性同余算法[ 6 ]的公式是Xn + 1 = ( aXn + b) modM, n = 0, 1, ?, M - 1。其中, a ( 0≤a≤M )是 乘數(shù), b ( 0 ≤ b ≤M ) 是加數(shù), M (M > 0 ) 是模數(shù), X0 (0≤X0 ≤M )是初值即種子。模數(shù)M 也等于生成的 偽隨機(jī)序列的長(zhǎng)度, 所有參數(shù)均為整數(shù)。 線性同余算法產(chǎn)生的偽隨機(jī)序列在不更換種子的 前提下以M (M = 2n )為周期出現(xiàn)循環(huán), 如果M 不等于 2n , 序列將以0 = 7時(shí), 生成序列為{ 6, 9, 0, 7, 6, 9, …} , 周期為4; 當(dāng)M = 8, a =5, b = 1, X0 = 1 時(shí), 生成序列為{ 6, 7, 4, 5, 2,3, 0, 1, 6, 7, …} , 周期為8; 當(dāng)M = 16, a = 5,b = 3, X0 = 7 時(shí), 生成序列為{ 6, 18, 11, 10, 5,12, 15, 14, 9, 0, 3, 2, 13, 4, 7, 6, 1, …} ,周期為16。
由上面的例子可以看出, 直接運(yùn)用線性同余算法用硬件產(chǎn)生偽隨機(jī)序列在實(shí)際工程應(yīng)用中并不靈活。比如在雷達(dá)信號(hào)處理中, 為了減小外界對(duì)雷達(dá)信號(hào)接收的干擾, 會(huì)要求發(fā)射機(jī)和接收機(jī)以一定的時(shí)間間隔隨機(jī)地在一定數(shù)目的頻點(diǎn)上跳頻, 在跳頻過程中不跳完所有規(guī)定的頻點(diǎn)不允許重復(fù)。如果一個(gè)頻點(diǎn)用一個(gè)偽隨機(jī)數(shù)來對(duì)應(yīng), 這就可以等價(jià)為一個(gè)偽隨機(jī)序列問題。顯然, 不能因?yàn)閭鹘y(tǒng)方法生成的偽隨機(jī)序列長(zhǎng)度必須為2n ( 1≤n ≤32) , 而要求發(fā)射機(jī)和接收機(jī)的跳頻點(diǎn)個(gè)數(shù)也設(shè)計(jì)為2n (1≤n≤32) 。
2 任意長(zhǎng)度偽隨機(jī)序列產(chǎn)生方法及DSP實(shí)現(xiàn)
由上面的舉例可以看出, 在序列長(zhǎng)度M ≠2n 的時(shí)候, 生成序列中的數(shù)都<M 并且會(huì)以<M 的周期出現(xiàn)循環(huán)。如果就用這個(gè)序列作為輸出肯定是不符合要求的, 因?yàn)樵?~M - 1之間有很多數(shù)都沒有在結(jié)果中出現(xiàn), 換種說法就是輸出的序列沒有對(duì)0~M - 1這M 個(gè)數(shù)進(jìn)行遍歷。但是換種思路, 如果把這個(gè)序列不直接用作輸出, 而當(dāng)作一個(gè)偏移地址, 就有可能間接地以訪問某個(gè)地址的方式輸出一串符合偽隨機(jī)序列要求的數(shù)。這就是文中介紹的生成任意長(zhǎng)度偽隨序列方法的。
下面結(jié)合DSP的硬件實(shí)現(xiàn)具體闡述各個(gè)步驟。首先, 用DSP程序生成一組特定長(zhǎng)度為M 的數(shù)然后放入內(nèi)存中, 這里的M 可以等于2n 也可以是任意值。也可以事先在外部文件中寫好需要輸出的一組數(shù)然后導(dǎo)入DSP的內(nèi)存中。根據(jù)不同的應(yīng)用場(chǎng)合,放入內(nèi)存的這組數(shù)可以是0~M - 1, 也可以是沒有任何規(guī)律排列的任意M 個(gè)數(shù)。
其次, 根據(jù)要求給種子、乘數(shù)、加數(shù)和模數(shù)賦值, 調(diào)用求余子程序根據(jù)線性同余算法公式進(jìn)行運(yùn)算, 得到一個(gè)余數(shù)。用得到的余數(shù)作為偏移地址, 加上已放入內(nèi)存中序列的首地址也就是基地值, 就得到了一個(gè)訪問地址。因?yàn)閯偛诺那笥嗖僮魇菍?duì)M 進(jìn)行,得到的余數(shù)即偏移地址一定<M, 所以按照得到的訪問地址進(jìn)行尋址, 得到的數(shù)一定是內(nèi)存中長(zhǎng)度為M的已存序列中的某個(gè)數(shù), 將這個(gè)數(shù)輸出。
再次, 把上一步已輸出數(shù)后面的每個(gè)數(shù)都向前存放一個(gè)地址, 這樣內(nèi)存中的序列首地址不變, 序列長(zhǎng)度減1。把模數(shù)M 也減1, 以對(duì)應(yīng)新的序列長(zhǎng)度。再調(diào)用求余子程序, 根據(jù)線性同余算法公式進(jìn)行運(yùn)算,得到又一個(gè)余數(shù)。然后同樣會(huì)得到一個(gè)新訪問地址,同樣能輸出內(nèi)存中長(zhǎng)度為M - 1的序列中的某個(gè)數(shù),將其輸出。
隨后, 把上一步已輸出數(shù)后面的每個(gè)數(shù)再都向前存放一個(gè)地址, 這樣內(nèi)存中的序列首地址還不變, 序列長(zhǎng)度再減1, 把模數(shù)M 也再減1。按照剛才闡述的操作步驟重復(fù)進(jìn)行, 直至模數(shù)被減為1, 就會(huì)輸出一個(gè)符合要求的長(zhǎng)度為的偽隨機(jī)序列。此時(shí)的序列就是任意長(zhǎng)度的偽隨機(jī)序列。
, 如果內(nèi)存中的數(shù)都被輸出完, 重新導(dǎo)入長(zhǎng)度為M 的序列, 并更換種子 , 乘數(shù)和加數(shù)可以更換也可以不更換。然后進(jìn)入新一輪的偽隨機(jī)數(shù)生成,新生成序列中的M 個(gè)數(shù)和已生成序列中的M 個(gè)數(shù)相比較順序已經(jīng)被完全打亂。這樣一直重復(fù)操作下去,每輸出M 個(gè)數(shù)更換種子, 就可以生成含有M 個(gè)元素的長(zhǎng)度為n ×M ( n為正整數(shù))的偽隨機(jī)序列。
操作流程, 如圖1所示。

DSP主要匯編程序 。程序中以j19寄存器中所放值為基地值、長(zhǎng)度為M (M 為任意值)的一組數(shù)就是得到的長(zhǎng)度為M (M 為任意值)的偽隨機(jī)序列, 想要得到含有M 個(gè)元素的長(zhǎng)度為n ×M ( n為正整數(shù))的偽隨機(jī)序列, 只要每隔M 個(gè)數(shù)更換種子重新運(yùn)行程序就可以得到。
當(dāng)外部文件中存有1~M 依次排列的M 個(gè)數(shù)時(shí),仿真結(jié)果舉例如下:
當(dāng)M = 8, a = b = X0 = 7時(shí), 生成序列為{ 1, 2,5, 4, 3, 8, 6, 7, 12, …} , 周期為8; 當(dāng)M = 10,a = b = X0 = 7 時(shí), 生成序列為( 7, 3, 1, 2, 6, 5,4, 10, 8, 9, 7, 3, …) , 周期為10; 當(dāng)M = 11,a = 5, b = 3, X0 = 4 時(shí), 生成序列為{ 2, 5, 8, 11,4, 10, 7, 9, 6, 3, 1, 2, 5, …} , 周期為11; 當(dāng)M = 12, a = 5, b = 3, X0 = 4時(shí), 生成序列為{ 12, 2,5, 8, 11, 4, 10, 7, 9, 6, 3, 1, 12, 2, …} , 周期為12。
由仿真結(jié)果可以看出, 文中介紹的方法能靈活產(chǎn)生任意長(zhǎng)度的偽隨機(jī)序列。
3 結(jié)束語
偽隨機(jī)序列有著廣泛的應(yīng)用前景, 在通信傳輸和雷達(dá)抗干擾方面尤為重要, 序列長(zhǎng)度是影響其應(yīng)用的關(guān)鍵因素。文中討論了偽隨機(jī)序列長(zhǎng)度和遍歷性的矛盾, 提出了基于DSP芯片具有遍歷性的任意長(zhǎng)度偽隨機(jī)序列的工程實(shí)現(xiàn)方法。給出了對(duì)該實(shí)現(xiàn)方法具體步驟的分析, DSP程序的仿真結(jié)果顯示了該實(shí)現(xiàn)方法的正確性和有效性。在應(yīng)用中可方便地修改程序中各參數(shù), 以滿足各種場(chǎng)合不同的需求。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 掌握 DSP:原理剖析與應(yīng)用實(shí)踐2025/5/8 14:03:24
- 模糊邏輯在 DSP 上實(shí)時(shí)執(zhí)行2023/7/25 17:13:30
- 多速率DSP及其在數(shù)模轉(zhuǎn)換中的應(yīng)用2023/6/12 15:28:52
- 使用 DSP 加速 CORDIC 算法2023/3/29 15:46:30
- 高速DSP系統(tǒng)的信號(hào)完整性2022/9/26 16:45:38









