顧天一,郭 英,張 波,蔡 斌
(空軍工程大學(xué)電訊工程學(xué)院,陜西 西安 710077)
自組網(wǎng)無(wú)線擴(kuò)頻系統(tǒng)在信道傳輸過(guò)程中存在突發(fā)錯(cuò)誤和隨機(jī)錯(cuò)誤,影響了系統(tǒng)的抗干擾性能,降低了系統(tǒng)信息傳輸?shù)目煽啃浴_@就需要在自組網(wǎng)無(wú)線擴(kuò)頻系統(tǒng)中加入糾錯(cuò)編碼,以提高系統(tǒng)傳輸信道的性能和抗干擾能力。在無(wú)線通信中,糾錯(cuò)編碼技術(shù)被用來(lái)檢查和糾正非理想無(wú)線信道帶來(lái)的信息差錯(cuò),它是提高信息傳輸可靠性的一種重要手段,其中RS碼是一種前向糾錯(cuò)的信道編碼,既能糾正隨機(jī)錯(cuò)誤,又能糾正突發(fā)錯(cuò)誤,在同樣的編碼效率下,RS碼具有最強(qiáng)的糾錯(cuò)能力。RS碼是現(xiàn)代數(shù)據(jù)通信和媒體中應(yīng)用極其廣泛的信道糾錯(cuò)編碼。自其研發(fā)至今的幾十年內(nèi),在IBM硬盤的編碼中,在阿波羅登月計(jì)劃中,在光盤的編碼和高清晰度電視信道編碼中都使用了RS編碼[1]。在RS編譯碼的過(guò)程中,BM迭代譯碼算法是決定RS譯碼過(guò)程中譯碼器的復(fù)雜度和譯碼速度的關(guān)鍵。1966年Berlekamp提出了由S求σ(x)的迭代譯碼算法,極大地加快了求σ(x)的速度,實(shí)現(xiàn)也比較簡(jiǎn)單,且易于用計(jì)算機(jī)完成譯碼,因而從工程上解決了RS的譯碼問題。1969年Massey指出了迭代譯碼算法與序列的最短移位寄存器綜合之間的關(guān)系,并進(jìn)行了簡(jiǎn)化,自此稱這種譯碼算法為Berlekamp-Massey算法。
本文以自組網(wǎng)擴(kuò)頻定位通信系統(tǒng)為設(shè)計(jì)應(yīng)用背景,分析了系統(tǒng)中各個(gè)模塊的設(shè)計(jì)方式,并對(duì)RS碼譯碼中的BM迭代譯碼算法進(jìn)行了優(yōu)化,最后對(duì)系統(tǒng)加載不同長(zhǎng)度的RS碼進(jìn)行仿真,驗(yàn)證其降低系統(tǒng)誤碼率的效能。
無(wú)線擴(kuò)頻通信系統(tǒng)原理圖如圖1所示。其中,信源采用二進(jìn)制隨機(jī)數(shù);信道編碼可采用RS編碼、卷積碼或更復(fù)雜的編碼組合;擴(kuò)頻采用m序列、walsh碼、gold碼等,或者采用多進(jìn)制的正交碼或軟擴(kuò)頻方式;組幀設(shè)計(jì)合理的幀結(jié)構(gòu),包括幀頭、導(dǎo)頻碼、循環(huán)前綴的設(shè)計(jì)以及數(shù)據(jù)幀長(zhǎng)度、目的地址等;成型濾波采用升余弦滾降濾波器;調(diào)制可采用DPSK,MSK,OFDM等;信道為AWGN信道、多徑信道等;下變頻DDS包括濾波器的設(shè)計(jì);信號(hào)檢測(cè)用來(lái)檢測(cè)信號(hào)幀頭(判斷信號(hào)有無(wú));信道估計(jì)用來(lái)估計(jì)信噪比、信道特性等參數(shù);頻偏估計(jì)使用開環(huán)方法或costas環(huán)等閉環(huán)方法;頻偏校正與信道補(bǔ)償,頻偏校正采用開環(huán)方法或costas環(huán)等閉環(huán)方法,信道補(bǔ)償采用均衡方法,其中補(bǔ)償是因?yàn)樾诺赖碾S機(jī)性帶來(lái)的信號(hào)畸變;解擴(kuò)用于擴(kuò)頻信號(hào)捕獲、跟蹤階段;解調(diào)一般采用非相干解調(diào)方法;信道譯碼以糾正誤碼。
本文系統(tǒng)設(shè)計(jì)框圖如圖2所示。信號(hào)發(fā)射過(guò)程中,為適應(yīng)無(wú)線信道的傳輸需求,對(duì)系統(tǒng)輸入二進(jìn)制的隨機(jī)數(shù)據(jù),先進(jìn)行打包組幀,然后對(duì)每幀數(shù)據(jù)進(jìn)行編碼以消除信道傳輸所帶來(lái)的譯碼錯(cuò)誤;在此基礎(chǔ)上,對(duì)編碼后的信息數(shù)據(jù)擴(kuò)頻,增加信號(hào)的抗噪聲性能;最后對(duì)擴(kuò)頻后的數(shù)據(jù)進(jìn)行成型濾波并調(diào)制于一定的頻帶上,發(fā)射出去。
圖1 擴(kuò)頻通信系統(tǒng)原理圖
圖2 擴(kuò)頻通信系統(tǒng)流程圖
接收過(guò)程中,將經(jīng)過(guò)信道后帶有噪聲和衰減的信號(hào)解擴(kuò)以提高信噪比,然后解調(diào)出數(shù)據(jù),再對(duì)解調(diào)后的數(shù)據(jù)進(jìn)行解碼,消除信道傳輸帶來(lái)的少量誤碼,得到一組一組的數(shù)據(jù),再將這些數(shù)據(jù)去除組幀時(shí)所帶來(lái)的冗余,得到接收端的比特?cái)?shù)據(jù),并與原始數(shù)據(jù)對(duì)比,統(tǒng)計(jì)誤碼率。
如圖3所示,對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行分段,在每段數(shù)據(jù)前加前導(dǎo)碼和標(biāo)志位同步碼,以完成組幀。其中前導(dǎo)碼用來(lái)實(shí)現(xiàn)接收端對(duì)突發(fā)信號(hào)的檢測(cè),并完成頻偏估計(jì)以使正交解調(diào)前完成載波同步;標(biāo)志位同步碼的作用是標(biāo)示數(shù)據(jù)段開始的準(zhǔn)確位置,以實(shí)現(xiàn)粗略的位同步,為數(shù)據(jù)段的解調(diào)做準(zhǔn)備。為了保證能在低信噪比下檢測(cè)到數(shù)據(jù)幀的出現(xiàn),前導(dǎo)碼也采用擴(kuò)頻方式,使用偽隨機(jī)性最好的m序列。標(biāo)志位同步碼可以使用gold碼或其他可以區(qū)分不同用戶的偽隨機(jī)序列。在前導(dǎo)碼中,還必須完成載波同步。通常載波同步可分為兩種,開環(huán)載波同步和閉環(huán)載波同步。常用的開環(huán)載波同步方法有3種,即數(shù)據(jù)輔助(DA)、判決數(shù)據(jù)輔助(DDA)和非數(shù)據(jù)輔助(NDA)[2]。閉環(huán)方法有鎖相環(huán)和較為經(jīng)典的costas環(huán)等。閉環(huán)算法通過(guò)信息的反饋不斷地調(diào)整環(huán)路,跟蹤輸入的變化,具有精度高,且能夠無(wú)誤差地捕獲頻偏和跟蹤頻偏變化的優(yōu)點(diǎn)。但閉環(huán)算法的載波恢復(fù)時(shí)間較長(zhǎng),存在“懸擱”現(xiàn)象,不適合需要快速載波恢復(fù)的場(chǎng)合。開環(huán)前饋算法在結(jié)構(gòu)上沒有反饋環(huán),處理速度快,適合需要快速載波恢復(fù)的場(chǎng)合,如TDMA、調(diào)頻等突發(fā)載波調(diào)制信號(hào)中。
圖3 信號(hào)幀格式
本系統(tǒng)采用直接序列擴(kuò)頻(DSSS)方式,直接序列擴(kuò)頻是直接利用具有高碼率的擴(kuò)頻碼序列采用各種調(diào)制方式在發(fā)送端擴(kuò)展信號(hào)的頻譜,而在接收端用相同的擴(kuò)頻碼序去進(jìn)行解碼,把擴(kuò)展寬的擴(kuò)頻信號(hào)還原成原始的信息[3]。直擴(kuò)通信速率可達(dá) 2 Mbit/s,8 Mbit/s,11 Mbit/s,無(wú)須申請(qǐng)頻率資源,建網(wǎng)簡(jiǎn)單,網(wǎng)絡(luò)性能好。
針對(duì)直擴(kuò)序列的信號(hào)處理,常采用PSK的調(diào)制方式,BPSK調(diào)制簡(jiǎn)單易于實(shí)現(xiàn),但BPSK信號(hào)的相位變化是以未調(diào)載波的相位作為參考基準(zhǔn),利用載波相位的絕對(duì)值來(lái)傳送數(shù)字信息,所以解調(diào)結(jié)果是否正確完全依賴于解調(diào)器中提取的相干載波的初始相位,因此進(jìn)行載波提取時(shí)不能保證所提取的相干載波具有唯一的初始相位,結(jié)果出現(xiàn)了相位模糊。而DBPSK的調(diào)制方式利用相鄰碼元相位變化傳送信息,使得解調(diào)結(jié)果與相干載波相位初始值無(wú)關(guān),從而消除相位模糊。因此本文的設(shè)計(jì)采用DBPSK的調(diào)制方式。
DBPSK調(diào)制時(shí)用前后相鄰碼元的相位變化來(lái)表示數(shù)字信息,相對(duì)相位是本碼元的初相與前一碼元的末相的相位差,即
如圖4所示,在實(shí)現(xiàn)時(shí),先求出二進(jìn)制數(shù)字基帶信號(hào)的差分碼,再按差分碼的規(guī)律進(jìn)行BPSK調(diào)制即得DBPSK信號(hào)。
圖4 DBPSK調(diào)制
偽碼捕獲主要實(shí)現(xiàn)方法有2種:滑動(dòng)相關(guān)法和匹配濾波法。
滑動(dòng)相關(guān)法工作流程圖如圖5所示?;瑒?dòng)相關(guān)的作用就是讓本地參考擴(kuò)頻碼產(chǎn)生器的時(shí)鐘頻率與接收擴(kuò)頻碼時(shí)鐘頻率存在一定偏差,并且通過(guò)改變本地參考擴(kuò)頻碼產(chǎn)生器的時(shí)鐘頻率來(lái)改變碼序列的相位。這樣兩個(gè)碼序列從相位上看,好像在相對(duì)滑動(dòng)。當(dāng)滑動(dòng)到兩個(gè)碼序列的相位一致時(shí)停止滑動(dòng)。
圖5 滑動(dòng)相關(guān)器框圖
滑動(dòng)相關(guān)法捕獲簡(jiǎn)單,使用很少硬件資源就可實(shí)現(xiàn),但同步捕獲平均需要的時(shí)間,耗時(shí)較長(zhǎng)。
數(shù)字匹配濾波器的基本結(jié)構(gòu)如圖6所示。主要由3部分組成:移位寄存器、乘法器和多輸入加法器,這是一個(gè)類似于FIR數(shù)字濾波器的結(jié)構(gòu)。
圖6 數(shù)字匹配濾波器實(shí)現(xiàn)框圖
按照信號(hào)幀的結(jié)構(gòu),在標(biāo)志位碼字完成捕獲后對(duì)通信數(shù)據(jù)解調(diào)。采用匹配濾波峰值搜索與定時(shí)判斷相結(jié)合的方法。信號(hào)通過(guò)匹配濾波器,對(duì)攜帶信息的偽碼進(jìn)行檢測(cè),對(duì)濾波器的輸出搜索最大峰值,即可搜索到最大峰值。然后根據(jù)DPSK的解調(diào)方式,將相鄰的兩個(gè)峰值作共軛相乘運(yùn)算,取實(shí)部判斷其正負(fù)值即可判決解出數(shù)據(jù)。數(shù)據(jù)解調(diào)框圖如圖7所示,完成頻偏校正的零中頻信號(hào)首先通過(guò)匹配濾波器對(duì)攜帶信息的偽碼序列進(jìn)行解擴(kuò),根據(jù)匹配濾波器長(zhǎng)度,搜索匹配濾波器的輸出在一個(gè)周期內(nèi)的最大峰值(包括正峰值與負(fù)峰值),由于在解調(diào)數(shù)據(jù)前已完成標(biāo)志位碼同步,因此這里搜索最大峰值無(wú)須比較匹配相關(guān)后在一個(gè)周期相關(guān)值中找最大值,只需找出粗同步位置中的最值,即可搜索到最大峰值,然后將相鄰的兩個(gè)峰值作共軛相乘運(yùn)算,取實(shí)部判斷正負(fù)值即可完成數(shù)據(jù)的解調(diào)。
圖7 數(shù)據(jù)解調(diào)框圖
在通信系統(tǒng)中的編碼過(guò)程包括兩種可能:為了加密和信道編碼。通過(guò)加入冗余編碼信息,利用冗余編碼與信息比特的特定運(yùn)算規(guī)律糾正信道傳輸帶來(lái)的錯(cuò)誤信息比特。本系統(tǒng)設(shè)計(jì)中考慮采用信道編碼完成對(duì)圖2幀格式信息的糾錯(cuò)。
RS碼[4]是一種特殊的循環(huán)碼,無(wú)論是隨機(jī)錯(cuò)誤還是突發(fā)錯(cuò)誤,RS碼都具有很強(qiáng)的糾突發(fā)錯(cuò)誤能力,并且構(gòu)造方便、易實(shí)現(xiàn),因此本系統(tǒng)設(shè)計(jì)考慮使用RS編碼方式。RS碼的編碼和普通的二進(jìn)制循環(huán)碼編碼并沒有太多不同,只是移位寄存器中的系數(shù)和運(yùn)算在有限域上進(jìn)行。系統(tǒng)進(jìn)行編碼時(shí),要得到系統(tǒng)碼先將信息多項(xiàng)式d(x)乘以xn-k,變成 xn-kd(x),則
信息多項(xiàng)式和校驗(yàn)多項(xiàng)式中的ci全為GF(2m)的域元素,且2t=n-k。則經(jīng)過(guò)編碼后的碼字多項(xiàng)式(編碼輸出)為
因?yàn)镽S碼也是一種循環(huán)碼,因此它的每個(gè)碼字c(x)必須是生成多項(xiàng)式g(x)的倍式。一個(gè)能糾正t個(gè)符號(hào)錯(cuò)誤的RS編碼的生成多項(xiàng)式[4]為
用g(x)除xn-kd(x)得到重要的余數(shù)多項(xiàng)式r(x),再將其系數(shù)取負(fù)號(hào)即可得到相應(yīng)的校驗(yàn)多項(xiàng)式l(x)。
則RS編碼的碼字多項(xiàng)式為
由以上分析可知,RS編碼就是利用生成多項(xiàng)式g(x)除以xn-kd(x)所得到的余式r(x)確定校驗(yàn)元,再加上信息組就組成了輸出碼字。
RS碼的譯碼算法有時(shí)域譯碼和頻域譯碼兩種。其中時(shí)域譯碼是把碼字看成時(shí)間軸上的信號(hào)序列,利用碼的代數(shù)結(jié)構(gòu)進(jìn)行譯碼。時(shí)域中的迭代譯碼方法是現(xiàn)在使用最為廣泛的RS碼譯碼算法。本文采用了時(shí)域譯碼方法中經(jīng)典的BM[5-7]迭代譯碼算法,并進(jìn)行了優(yōu)化,以提高譯碼速度。如圖8所示,RS碼的伴隨式譯碼算法設(shè)計(jì)主要包括4個(gè)步驟:伴隨式計(jì)算模塊、關(guān)鍵方程求解、求錯(cuò)誤位置和錯(cuò)誤值。
圖8 RS碼伴隨式譯碼器框圖
通過(guò)對(duì)接收碼字多項(xiàng)式進(jìn)行求余運(yùn)算實(shí)現(xiàn)碼字查錯(cuò):若余數(shù)為0,則接收碼字與發(fā)送碼字一致;若余數(shù)不為0,則接收碼字中有錯(cuò)需進(jìn)行求譯碼糾錯(cuò)。首先用Homer[5]算法計(jì)算伴隨式 Sj(j=1,2,…,2t),把 a,a2,…,a2t依次代入余式即可求得;再用BM迭代法求得錯(cuò)誤位置多項(xiàng)式 σ(x);最后由 Chien 搜索法[8]把 a,a2,…,an依次代入錯(cuò)誤位置多項(xiàng)式σ(x)求得它的根,并且用Forney算法[9]求得各錯(cuò)誤位置上對(duì)應(yīng)的錯(cuò)誤值。
在RS碼的譯碼過(guò)程中計(jì)算量最大最復(fù)雜的就是用BM迭代算法求錯(cuò)誤位置多項(xiàng)式σ(x)。其迭代的步驟如下:
1)求初值
并計(jì)算dj+1,再進(jìn)行下一次迭代。
如果dj≠0,則找出j之前的某一行i,它在所有j行之前各行中的i-D*(i)最大,而且di≠0,則有
3)計(jì)算dj+1,重復(fù)步驟2)計(jì)算下一次迭代。這樣2t次迭代后得到的σ(2t)(x)和ω(2t)(x)即為所求的σ(x)和ω(x)。
通過(guò)上述過(guò)程可知,當(dāng)dj≠0時(shí),迭代算法要找出j之前的某一行i,它在所有j行之前各行中的i-D*(i)最大,且di≠0;再分別計(jì)算σ(j+1)(x)和ω(j+1)(x),此即為第j+1的解。在未化簡(jiǎn)的迭代算法中,當(dāng)dj≠0時(shí)要找到此符合條件的某一行i,每次都要對(duì) j行之前的所有行的i-D*(i)和di進(jìn)行計(jì)算,并將各行的i-D*(i)進(jìn)行比較,得到i-D*(i)最大且di≠0得第i行。此過(guò)程的計(jì)算量很大,而且存在很多重復(fù)運(yùn)算,因此本文提出dj≠0的優(yōu)化算法。優(yōu)化算法提出兩個(gè)變量di和σ(i)(x)。當(dāng)dj≠0時(shí),第i行滿足在所有j行之前的各行中的i-D*(i)最大,且di≠0,因此不必再進(jìn)行大量的重復(fù)運(yùn)算和比較,直接讀取di及其所對(duì)應(yīng)的錯(cuò)誤位置多項(xiàng)式σ(i)(x)即可。在計(jì)算出σ(i+1)(x)和ω(i+1)(x)后,將當(dāng)前第i行的i-D*(i)與第j行的j-D*(j)進(jìn)行比較:若i-D*(i)>j-D*(j),則di和σ(i)(x)保持不變;若i-D*(i)<j-D*(j),則更新di和σ(i)(x),令di=dj且σ(i)(x)=σ(j)(x)。這一簡(jiǎn)化有效地避免了dj≠0時(shí)原迭代算法中的大量重復(fù)運(yùn)算,提高了迭代算法的效率和譯碼器的譯碼速度。
參數(shù)設(shè)置:調(diào)制方式為DPSK;采樣頻率為25 MHz;載波頻率為70 MHz;碼元速率為1 Mbit/s;成型濾波參數(shù)α=0.75;數(shù)據(jù)位采用64 bit的walsh碼擴(kuò)頻。仿真次數(shù):每次測(cè)試數(shù)據(jù)長(zhǎng)度為80 bit,測(cè)試50000次,相當(dāng)于做50000×80=4×106次仿真。
仿真分析:在上述參數(shù)設(shè)置下,如圖9所示,系統(tǒng)在無(wú)糾錯(cuò)碼時(shí),大概在-12 dB時(shí),誤碼率可達(dá)到系統(tǒng)設(shè)計(jì)要求,約為4×10-6,而添加RS編碼后取N=31的編碼效果明顯優(yōu)于N=15的RS碼,誤碼率在10-6~10-5之間時(shí),N=31的RS碼較N=15的RS碼性能提高了大約3 dB。
圖9 誤碼率曲線圖
通過(guò)仿真分析可以看出,RS編碼技術(shù)有效地改善了自組網(wǎng)擴(kuò)頻系統(tǒng)的傳輸質(zhì)量,降低了誤碼率。由于RS編碼實(shí)現(xiàn)的復(fù)雜度低于其他相同長(zhǎng)度的編碼,并且其誤碼率更低,數(shù)據(jù)傳輸?shù)目煽啃院桶踩杂行岣?,因此其在通信領(lǐng)域中得到了廣泛的應(yīng)用。
[1]張杭,張邦寧,郭道省,等.數(shù)字通信技術(shù)[M].北京:人民郵電出版社,2008:142-206.
[2]吳湛擊.現(xiàn)代糾錯(cuò)編碼與調(diào)制理論及應(yīng)用[M].北京:人民郵電出版社,2008.
[3]LIN Shu,DANIEL J C.差錯(cuò)控制編碼[M].晏堅(jiān),何元智,潘亞漢,等,譯.2版.北京:機(jī)械工業(yè)出版社,1986.
[4]聶宜違.自編碼擴(kuò)頻通信同步技術(shù)的研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2006.
[5]SARWATE D V,SHANBHAG N R.High-speed architecture for reedsolomon decoders[J].IEEE Trans.VLSI Systems,2001,9(5):641-655.
[6]REED I S,SHIH M T.VLSI design of inverse-free Berlekamp-Massey algorithm[J].IEEE Proceedings on Computers and Digital Techniques,1991,138(5):295-298.
[7]張建文,王宏遠(yuǎn).Reed-Solomon碼的原理和軟硬件實(shí)現(xiàn)[J].電視技術(shù),2001,25(7):13-15.
[8]CHIEN R T.Cyclic decoding procedures for Bose-Chaudhuri-Hocquenghem codes[J].IEEE Trans.Information Theory,1964,10(4):357-367.
[9]FORNEY G D J.On decoding BCH codes[J].IEEE Trans.Information Theory,1965,11(4):549-557.