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