胡慶鋒, 鐘 良
抗誤碼性能是通信設(shè)備一個非常重要的指標。信道中除了多徑衰落外還存在電離層閃爍引起的衰落,即信道中隨機誤碼與突發(fā)誤碼并存,且突發(fā)誤碼產(chǎn)生的時刻及持續(xù)的時間是隨機的。通信設(shè)備一般通過接收端的去交織器將衰落造成的集中誤碼轉(zhuǎn)換為離散誤碼,再由譯碼器糾正誤碼,保證信息可靠傳輸。
為了能夠?qū)νㄐ旁O(shè)備抗突發(fā)誤碼性能進行測試,需要模擬信道中的突發(fā)誤碼。產(chǎn)生突發(fā)誤碼的方式有多種,較為簡單普遍的方式可以通過所設(shè)置的突發(fā)長度手動單次產(chǎn)生,這種方式產(chǎn)生的突發(fā)誤碼不具備隨機性,且不能確定誤碼量級。文中將研究一種產(chǎn)生突發(fā)誤碼的新方法。
文中介紹了一種偽隨機數(shù)發(fā)生器,該發(fā)生器產(chǎn)生的偽隨機數(shù)用來確定突發(fā)誤碼產(chǎn)生時的隨機時刻或位置。在技術(shù)實現(xiàn)上,采用高性能DSP[1]技術(shù)模擬產(chǎn)生任意持續(xù)時間(或突發(fā)長度)的突發(fā)誤碼。確保產(chǎn)生突發(fā)誤碼的時刻是隨機的,且對整個模擬過程來說,誤碼量級可以在M×10-N(M和N為1~9的正整數(shù))內(nèi)任意設(shè)置。該方法所需硬件資源少,產(chǎn)生誤碼精確,能模擬實際信道中突發(fā)誤碼的相關(guān)隨機性。
產(chǎn)生偽隨機數(shù)的方法有多種,線性同余法[2-4](以下簡稱同余法)作為最為廣泛的偽隨機數(shù)產(chǎn)生方法,具有產(chǎn)生速度較快、節(jié)省內(nèi)存、輸出序列周期長、統(tǒng)計特性較好、產(chǎn)生方法簡單等優(yōu)點。常用的同余法包括加同余法、除同余法、乘同余法、混合同余法,其中乘同余法和混合同余法的性能更好,更常用。
混合同余法是Lehmer在1951年推算出的,其遞推公式為[4]:
式(1)和式(2)中,mod表示求余函數(shù),A、B、C均為正整數(shù)。其中A是乘數(shù),B是模數(shù),C是增量,X0是種子(初始值)。如果這些參數(shù)和種子都確定,隨機序列就確定了。序列{Xi}是在區(qū)間(0,B)上均勻分布U(0,B)的隨機數(shù),序列{Yi}為區(qū)間(0,1)上均勻分布U(0,1)的隨機數(shù)。
式(1)中,當C=0時,稱此算法為乘同余法。當C取不為零的適當數(shù)值時,有一些優(yōu)點,但優(yōu)點并不突出,故常取C=0的乘同余法產(chǎn)生隨機數(shù)。
文中選用乘同余法。由上可見乘同余法產(chǎn)生的隨機數(shù)也是均勻分布的。為了證明其隨機性,文中采用MATLAB仿真[5]。編程如下(程序運行結(jié)果如圖1所示):
A=8; C=0; x0=1;
B=511; i=100;
for g=1:i
x1=A*x0;
x2=mod (x1,B);
d1=x2/512;
d(:,g)=d1;
x0=x2;
d0=d1;
end
d2=d
g1=g;
g=1:g1;
plot(g,d,g,d,'r');
xlabel('g'), ylabel('d');
title(‘(0,1)上均勻分布的隨機數(shù)’)
實際應(yīng)用中,式(1)和式(2)中的 X0、A、B的取值并不是隨意的(C=0),還必須考慮如下幾點:
1)為了產(chǎn)生的隨機數(shù)更“隨機”,初始值X0要能任意取值。
2)序列周期要盡量大。常見B為素數(shù),此時取A為B的原根,則隨機數(shù)序列周期T=B-1,為使隨機數(shù)序列的周期(不可能大于B)盡可能大,B應(yīng)盡可能大,普遍原則是選B接近等于計算機能表示的最大整數(shù),如接近或等于231。
3)序列具有較好的統(tǒng)計品質(zhì)。
滿足以上三個條件的乘同余法遞推公式可以如下
式(3)是一個十分著名的偽隨機數(shù)發(fā)生器,其中A=16 807,B=231-1,16 807是231-1的一個原根,B為素數(shù);X0可以在(0,B)內(nèi)任意取值;且經(jīng)過驗證式(3)和式(4)產(chǎn)生的序列有較好的統(tǒng)計品質(zhì),即式(3)和式(4)的序列為均勻分布的隨機數(shù)。
圖1 乘同余法產(chǎn)生的均勻分布的隨機數(shù)仿真
文中采用式(3)的隨機數(shù)產(chǎn)生器完成隨機數(shù)的產(chǎn)生,由上可見,產(chǎn)生的隨機數(shù)滿足區(qū)間(0,231-1)上的均勻分布。用產(chǎn)生的初始隨機數(shù)通過相應(yīng)變換后得到的新的隨機數(shù),新隨機數(shù)再用來確定突發(fā)誤碼產(chǎn)生時的隨機時刻或位置,初始隨機數(shù)的變換對其隨機分布特性影響不大。
假設(shè)需在速率為V kb/s的數(shù)據(jù)流中產(chǎn)生持續(xù)時間為t ms的突發(fā)誤碼[6-7],每次突發(fā)的時刻是隨機的,且在整個數(shù)據(jù)流中誤碼量級為M×10-N(M和N均為1~9的正整數(shù)),則突發(fā)誤碼長度 L=V×t(bit)。為了在數(shù)據(jù)流中精確的產(chǎn)生此量級的突發(fā)誤碼,可在L×10N位數(shù)據(jù)流中,隨機產(chǎn)生M次突發(fā)誤碼,每次產(chǎn)生的突發(fā)誤碼長度為L,這樣算出的誤碼率也滿足M×10-N。因此,需在L×10N位數(shù)據(jù)中,產(chǎn)生M個隨機數(shù)。
在軟件編程實現(xiàn)時,利用隨機數(shù)產(chǎn)生子程序每次產(chǎn)生M個初始隨機數(shù),首先對M個初始隨機數(shù)進行取模 L×10N運算,再對取模后的隨機數(shù)剔除相等數(shù),若存在相等的數(shù),則需重新運行隨機數(shù)產(chǎn)生子程序,再取模,直到產(chǎn)生M個互異數(shù)為止,最后將取模后新的M個互異隨機數(shù)按從小到大順序排列。取 L×10N的模運算是為了得到定位于 L×10N區(qū)間內(nèi)的隨機數(shù),剔除相等數(shù)是因為在相同的起始位置上制造兩次突發(fā)誤碼是不可能的,順序排列則是為了求得誤碼插入的位置之差,其中第一個位置差值為第一個隨機數(shù)加上L×10N減去上一次產(chǎn)生的M個互異隨機數(shù)中排序最大者。其中差值:
Mend為最后一個隨機數(shù)到邊的距離,Mend=L×10N- MM。
同時為了精確實現(xiàn)突發(fā)誤碼的插入,必須滿足Ci(i=1,2,…,m)> L,否則需重新產(chǎn)生隨機數(shù)。隨機數(shù)產(chǎn)生及處理子程序軟件流程如圖2所示。
圖2 隨機數(shù)產(chǎn)生及處理流程
突發(fā)誤碼在實際線路數(shù)據(jù)中的插入是隨機的。圖3直觀的說明了突發(fā)誤碼插入示意圖。b0為開始模擬產(chǎn)生突發(fā)誤碼時的數(shù)據(jù)流位置,第二個邊界開始時數(shù)據(jù)流位置記為b1,誤碼率為M×10-N(M和N均為1~9的正整數(shù)),突發(fā)長度為L(bit),第一個邊界內(nèi)隨機數(shù)為M1、M2…Mm,第二個邊界內(nèi)隨機數(shù)為M1'、M2'…Mm’, 第一個邊界內(nèi)位置差值為C1、C2、…Cm,第二個邊界內(nèi)位置差值為C1'、C2'…Cm’,Mend為最后一個隨機數(shù)到邊界的距離,Mend’為第二個邊界內(nèi)最后一個隨機數(shù)到邊界的距離,M1、M2…Mm(或M1'、M2'…Mm’)同時表示在一個邊界內(nèi)每次需插入突發(fā)誤碼處的起始位置。
為了實現(xiàn)突發(fā)誤碼的插入過程,文中采用TMS320C6000系列DSP芯片[8-9],該芯片是以32位雙字為基本單位來處理誤碼插入的。對于一個32位雙字來說,突發(fā)誤碼插入的位置有4種情況:①雙字的前面部分位取反;②雙字的后面部分位取反;③整個雙字32位全部取反;④雙字的中間部分位取反。其中第四種情況只有在突發(fā)長度L小于32 bit時才存在。圖4為突發(fā)誤碼插入位置圖。b0和b0'為開始模擬時數(shù)據(jù)流位置,L和L'為突發(fā)長度,dw1、dw2、dw3、dw4代表一個32位雙字。
圖3 突發(fā)誤碼插入示意
圖4 突發(fā)誤碼插入的位置
突發(fā)誤碼插入的具體過程為:在調(diào)用隨機數(shù)產(chǎn)生子程序后,得到M個位置差值,先取出第1個位置差值賦值給區(qū)間位置計數(shù)器,該計數(shù)器按照線路數(shù)據(jù)速率進行減法計數(shù),當計數(shù)器減到小于等于0時,將線路數(shù)據(jù)的后面L位連續(xù)數(shù)據(jù)位全部取反(產(chǎn)生誤碼),當L位連續(xù)位全部取反完成后,將下一個位置差值取出來減去L后賦值給計數(shù)器,當M個位置差值取出用完之后,需重新調(diào)用隨機數(shù)產(chǎn)生子程序產(chǎn)生新一輪的位置差值。其軟件編程實現(xiàn)流程如圖5所示。
圖5 突發(fā)誤碼插入軟件流程
文中的突發(fā)誤碼產(chǎn)生技術(shù)在工程上已經(jīng)實現(xiàn),產(chǎn)生的突發(fā)誤碼經(jīng)過誤碼測試儀測試為預期結(jié)果。在硬件方面文中選用TI公司的DSP芯片(TMS320C6713),該芯片運行速度快,指令周期5ns,運算能力高達200MIPS。
在模擬仿真時,文中采用輸入數(shù)據(jù)流為全1的形態(tài)(如圖6所示),設(shè)定輸入速率為16 kb/s,產(chǎn)生持續(xù)時間為0.5 ms的突發(fā)誤碼,產(chǎn)生的誤碼量級為3×10-2,則每次產(chǎn)生的突發(fā)長度為8 bit。經(jīng)過加誤碼后的其中一次的輸出數(shù)據(jù)如圖7所示。
圖6 輸入初始數(shù)據(jù)流
圖7 某一次的輸出數(shù)據(jù)流
由圖6和圖7可見,在800 bit的數(shù)據(jù)流中,共產(chǎn)生了3次突發(fā)誤碼,每次連續(xù)產(chǎn)生8 bit的誤碼。由于產(chǎn)生突發(fā)誤碼的起始時刻是隨機的,所以輸出數(shù)據(jù)流也是隨機的。
通信設(shè)備測試的一個重要指標是其抗誤碼性能,通信設(shè)備也有同步概率、同步碼的抗誤碼性能以及誤碼擴散性等重要指標的測試,這就需要構(gòu)建一個適當?shù)恼`碼測試環(huán)境。采用基于高性能處理平臺(如高速DSP處理技術(shù)、嵌入式處理技術(shù)或PC機平臺等)的軟件編程實現(xiàn)方案則能夠很好地解決任意量級突發(fā)誤碼的實現(xiàn)。如果采用標準C語言實現(xiàn),還具有很強的平臺移植性。任意量級突發(fā)誤碼技術(shù)的實現(xiàn)為通信產(chǎn)品的抗誤碼性能測試提供了新的測試環(huán)境,具有很好的實用性。由于是基于軟件編程的實現(xiàn)方案,其數(shù)據(jù)流處理速度受限于所采用的處理器的性能。
[1] 趙加祥.DSP系統(tǒng)設(shè)計和BIOS編程及應(yīng)用實例[M].北京:機械工業(yè)出版社,2008.
[2] 劉芬,馬興兵,曹繼華.一種二重線性同余算法的研究[J].信息安全與通信保密,2006(04):89-90,93.
[3] 吳飛.產(chǎn)生隨機數(shù)的幾種方法及其應(yīng)用[J].數(shù)值計算與計算機應(yīng)用,2006(01):48-51.
[4] 郭鳳鳴.一種生成大周期偽隨機數(shù)的新算法——改進的混合同余法[J].地球科學,1992(06):733-738.
[5] 曾璐,謝曉堯.基于 MATLAB擴頻通信系統(tǒng)誤碼率的研究[J].通信技術(shù),2011,44(11):25-26,29.
[6] 成曉雄,余松煜.數(shù)字通信系統(tǒng)中實時誤碼發(fā)生器的一種設(shè)計方法[J].通信技術(shù),1997(03):58-63.
[7] 李庭勝,李康輝,劉義銘.一種改進的任意指標隨機誤碼產(chǎn)生方法[J].信息安全與通信保密,2009(01):89-90.
[8] 劉偉.DSP原理與應(yīng)用[M].北京:電子工業(yè)出版社,2012.
[9] 李方慧,王飛,何佩琨.TMS320C6000系列DSPs原理與應(yīng)用 [M].北京:電子工業(yè)出版社,2003.