基于DSP平臺(tái)的多音平行體制調(diào)制端的實(shí)現(xiàn)
摘要 以32音并行體制為例,利用DSP平臺(tái)實(shí)現(xiàn)了多音并行體制的調(diào)制端,給出了其主要模塊的具體實(shí)現(xiàn)方法。由于并行體制技術(shù)成熟、成本低、高性?xún)r(jià)比對(duì)提高數(shù)據(jù)傳輸速率、消除多徑衰落有益。
關(guān)鍵詞 多音并行體制;調(diào)制;傅里葉變換;DSP
短波通信中常采用多音并行和單音串行兩種體制來(lái)進(jìn)行高速數(shù)據(jù)的傳輸。單音串行體制僅采用一個(gè)載波,串行發(fā)送數(shù)據(jù)信號(hào)。由于每個(gè)碼元占據(jù)了整個(gè)頻譜,碼元寬度窄,當(dāng)傳輸高速數(shù)據(jù)時(shí),實(shí)現(xiàn)復(fù)雜,且碼間串?dāng)_嚴(yán)重。而多音并行體制的主要思想就是把高速串行信道分裂成許多低速的并行信道,以適應(yīng)短波信道低速傳輸?shù)奶匦?,在每個(gè)子信道上傳送一個(gè)副載波,采用頻分正交調(diào)制,用多個(gè)副載波并行傳輸?shù)姆椒ㄌ岣咚俾?。并行體制的傳輸,是采用加寬碼元寬度,使其遠(yuǎn)大于多徑時(shí)延,消除多徑衰落的影響。并行體制技術(shù)成熟、成本低,具有較高的性?xún)r(jià)比。本文以32音體制為例說(shuō)明短波并行體制調(diào)制端的DSP具體實(shí)現(xiàn)方法。
1 32音并行體制調(diào)制端的設(shè)計(jì)
本并行體制在音頻頻帶內(nèi)采用32個(gè)正交副載波音,對(duì)比特同步數(shù)據(jù)傳送采用正交差分相移鍵控(QDPSK)調(diào)制。
具體設(shè)計(jì)要求:
(1)在數(shù)據(jù)輸入端口接收不同速率的串行二進(jìn)制數(shù)據(jù):300 b·s-1,600 b·s-1,1 200 b·s-1;
(2)對(duì)接收到的二進(jìn)制數(shù)據(jù)完成前向糾錯(cuò)(FEC)編碼和交織;
(3)每個(gè)單音上采用QDPSK調(diào)制;
(4)采用32個(gè)正交載波音,每個(gè)音相隔56.25 Hz;
(5)采用某種分集方式。
圖1為多音并行體制下發(fā)射端功能框圖。
2 軟硬件平臺(tái)介紹
本文實(shí)現(xiàn)多音并行調(diào)制端的硬件平臺(tái)如圖2所示,主要由計(jì)算機(jī)PC、DSP-TMS320C6416、A/D芯片TLV320AIC20組成。DSP通過(guò)多通道緩沖串口1(McBSP1)與計(jì)算機(jī)相互通信,同時(shí)通過(guò)多通道緩沖串口0(McBSPO)與TLV320AIC20相互通信。
本平臺(tái)采用的TMS320C64xx系列是2000年3月TI正式發(fā)布的定點(diǎn)系列,主頻1.1 GHz,處理速度接近9 000 MI·s-1總體性能比C62xx提高了10~15倍。
TLV320AIC20是TI公司生產(chǎn)的一款低功耗高性能的雙通道A/D芯片,可含有兩個(gè)16位A/D通道和兩個(gè)16位D/A通道,完成模擬與數(shù)字話音的轉(zhuǎn)換工作,軟件可編程寄存器內(nèi)含有6種可編程的控制寄存器,配置方便。
軟件平臺(tái)采用CCS(Code Composer Studio)系統(tǒng),其包含一整套用于開(kāi)發(fā)和調(diào)試嵌入式應(yīng)用的工具。它包含適用于每個(gè)TI器件系列的編譯器、源碼編輯器、項(xiàng)目構(gòu)建環(huán)境、調(diào)試器、描述器、仿真器以及多種其它功能。
3 并行體制關(guān)鍵模塊的具體實(shí)現(xiàn)
3.1 核心模塊-FFT
由于發(fā)送信號(hào)是一組余弦函數(shù)的疊加。假設(shè)信號(hào)是由一組N個(gè)頻率為f1,f2,f3,…,fN,初始相位為θ1,θ2,θ3,…,θN,幅度為A的余弦信號(hào),故其疊加后的信號(hào)為
其中,RES[]是取函數(shù)的實(shí)部。
從式(1)中可以看出,利用反傅里葉變換(IFFFT)可以方便地產(chǎn)生前導(dǎo)序列和生成調(diào)制信號(hào)方便。同時(shí)反傅里葉變換在DSP中運(yùn)算量不大,并可以直接調(diào)用傅里葉變換,將輸入信號(hào)的格式稍加處理即可得到反傅里葉變換的結(jié)果。[!--empirenews.page--]
本文設(shè)計(jì)的并行體制要求32個(gè)數(shù)據(jù)音中,相鄰兩個(gè)音之間相隔56.25 Hz并且正交,這32個(gè)數(shù)據(jù)音分別為450 Hz,506.25 Hz,…,219 3.75 Hz。同時(shí)采用128點(diǎn)的快速傅里葉變換實(shí)現(xiàn)前導(dǎo)序列和數(shù)據(jù)信息的調(diào)制。由于32個(gè)數(shù)據(jù)音中最大頻率是2 193.75 Hz,根據(jù)Nyquist采樣定理,采樣速率fs應(yīng)大于信號(hào)最大頻率的2倍,本文使用fs=7 200 Hz的采樣速率。
由于設(shè)計(jì)的調(diào)制后碼元周期是22.5 ms,在7 200 Hz采樣率的條件下,需要162個(gè)樣點(diǎn)構(gòu)成一個(gè)碼元,而IFFT的點(diǎn)數(shù)是128<162,所以對(duì)于IFFT的輸出需要補(bǔ)充34點(diǎn)才能構(gòu)成162點(diǎn)滿(mǎn)足一個(gè)碼元要求。補(bǔ)充樣點(diǎn)的方法是:直接從IFFT輸出數(shù)據(jù)的最前面截取34點(diǎn)補(bǔ)充到128點(diǎn)以后,這樣做的同時(shí)也能保證一個(gè)碼元內(nèi)信號(hào)相位的連續(xù)性。
由于采用128點(diǎn)的IFFT和7 200的采樣率,故IFFT中每個(gè)頻點(diǎn)之間的頻率間隔為
可以看出56.25 Hz的頻率分辨度正好是32個(gè)數(shù)據(jù)音之間的頻率間隔,且32個(gè)數(shù)據(jù)音都是56.25Hz的整數(shù)倍,這樣便于實(shí)現(xiàn)數(shù)據(jù)音的調(diào)制。
在DSP中利用FFT模塊,將輸入的復(fù)信息實(shí)部虛部的順序改為先虛部再實(shí)部。根據(jù)32個(gè)音的頻率f與頻率分辨度△f的比值得到頻點(diǎn)位置n= fi/△f,然后在對(duì)應(yīng)的頻點(diǎn)處填寫(xiě)復(fù)信息。這樣就能通過(guò)IFFT得到需要的調(diào)制信息。各數(shù)據(jù)音對(duì)應(yīng)的頻點(diǎn)位置和編號(hào),如圖3所示。
3.2 前導(dǎo)同步數(shù)據(jù)構(gòu)成
在數(shù)據(jù)傳送之前應(yīng)發(fā)送同步先導(dǎo)信號(hào),同步先導(dǎo)信號(hào)包含兩段。第一段持續(xù)10個(gè)碼元(碼元寬度225 ms),并包括675 Hz、900 Hz、1125 Hz、1 518.75 Hz、1 743.75 Hz和1 968.75 Hz共6個(gè)等幅未經(jīng)調(diào)制的數(shù)據(jù)音,幅度為3。第二段應(yīng)持續(xù)一個(gè)信號(hào)碼元,包括32個(gè)數(shù)據(jù)音且幅度為1。最后一段前導(dǎo)序列產(chǎn)生了后續(xù)信號(hào)需用的啟動(dòng)相位基準(zhǔn)。
發(fā)送端一次發(fā)送的數(shù)據(jù)構(gòu)成,如圖4所示。前導(dǎo)序列的發(fā)送包含了11個(gè)碼元,在進(jìn)行前導(dǎo)序列的發(fā)送時(shí),要保證每一部分都滿(mǎn)足規(guī)定的碼元持續(xù)時(shí)間。如果前導(dǎo)序列的構(gòu)成不準(zhǔn)確或持續(xù)碼元不足,都直接影響到接收端對(duì)信號(hào)的捕獲。
圖5所示為兩段前導(dǎo)同步信號(hào)在DSP中的生成圖。在每段前導(dǎo)序列生成圖中前兩個(gè)是IFFT時(shí)在各個(gè)頻點(diǎn)填充的復(fù)數(shù)值,第3個(gè)是經(jīng)過(guò)IFFT后前導(dǎo)序列波形圖。
[!--empirenews.page--]
3.3 數(shù)據(jù)調(diào)制信號(hào)的實(shí)現(xiàn)
數(shù)據(jù)段發(fā)送32個(gè)已調(diào)制的數(shù)據(jù)音信號(hào)。各信號(hào)音的初始碼元相位已經(jīng)確定,而后用數(shù)據(jù)比特流對(duì)32個(gè)數(shù)據(jù)音進(jìn)行調(diào)制。各數(shù)據(jù)音采用的調(diào)制方式是QDPSK調(diào)制。QDPSK是正交差分相移鍵控調(diào)制,是一種相對(duì)移相的調(diào)制方式,它利用前一個(gè)碼元相位為參考,根據(jù)已知序列比特流進(jìn)行調(diào)相,如表1所示。
假設(shè)某個(gè)數(shù)據(jù)音調(diào)制的初始相位為θ0,理論上,首先根據(jù)第一個(gè)碼字查表1得到其△01,計(jì)算IFFT要填充的復(fù)數(shù)為,而后進(jìn)行第一個(gè)碼元的IFFT。再根據(jù)第2個(gè)碼字查表得△θ2,計(jì)算IFFT要填充的復(fù)數(shù)為,而后進(jìn)行第2個(gè)碼元的IFFT。以此類(lèi)推,完成所有碼元的調(diào)制。在實(shí)際實(shí)現(xiàn)時(shí),在DSP計(jì)算時(shí),會(huì)出現(xiàn)隨著碼元數(shù)的增加,cos()*cos()的值越來(lái)越小,最后計(jì)算出的誤差較大。為避免這種情況,應(yīng)減少?gòu)?fù)數(shù)相乘的次數(shù)。
具體的做法是:
(1)根據(jù)QDPSK的星座圖對(duì)待調(diào)制的碼字進(jìn)行編碼:00→3,01→1,10→5,11→7。
(2)將前后碼字所對(duì)應(yīng)編碼后的碼進(jìn)行模8加,即得到當(dāng)前碼字所對(duì)應(yīng)的相位信息碼。相位信息碼只有8種可能{0,1,2,…,7},對(duì)應(yīng)的△θ分別是{0,π/4,π/2,…,7π/4},這樣查表即可得到△θ。
(3)計(jì)算,這樣只需計(jì)算一次復(fù)數(shù)乘就可以得到做IFFT所需的信息。
(4)記錄本碼字所對(duì)應(yīng)的相位信息碼,以用于下一個(gè)碼字的相位信息碼的計(jì)算。
3.4 前向糾錯(cuò)(FEC)編碼
所有未知輸入數(shù)據(jù)應(yīng)具有附加的冗余位,用以糾正由傳輸媒介引起的錯(cuò)誤。校驗(yàn)位由一個(gè)縮短的Reed—Solmon碼(15,11)來(lái)計(jì)算,其生成多項(xiàng)式為
其中,a是伽羅瓦域的一個(gè)非零元素,GF(24)為GF(2)模形成的多項(xiàng)式域。所采用的是縮短為(7,3)的RS編碼。
RS(7,3)編碼采用3位16進(jìn)制碼生成4位16進(jìn)制的校驗(yàn)監(jiān)督位,即12 bit信息編碼生成16 bit校驗(yàn)監(jiān)督位,也就是RS(28,12,16)編碼。為了減小DSP的開(kāi)銷(xiāo),采用的編碼思想是預(yù)先建立校驗(yàn)表而后逐位判決逐位編碼的方式。具體步驟如下:
(1)建立校驗(yàn)表。編寫(xiě)信息位是0800H,0400H,0200H,…,0008H,0004H,0002H,0001H所對(duì)應(yīng)的校驗(yàn)位分別是:03959H,08DBDH,04FCFH,02E6EH,…,0156FH,0983EH,0DC87H。這樣可以建立校驗(yàn)表:
.int 03959H,08DBDH,04FCFH,02E6EH
.int 037EEH,08A77H,045AAH,02855H
.int 02ACDH,0156FH,0983EH,0DC87H
(2)根據(jù)校驗(yàn)表逐位編碼。假設(shè)需要編碼的信息是A81H共3位16進(jìn)制信息,將其轉(zhuǎn)換二進(jìn)制數(shù)為101010000001B。第1位是1,則取A1=02C7 AH,第2位是0,則取A2=0,第3位是1,則取A3=0935BH,第4位是0,則取A4=0,…以此類(lèi)推得到A1,A2,…,A12,將這12個(gè)校驗(yàn)碼進(jìn)行異或得到這3位信息的4位校驗(yàn)碼。
3.5 交織
交織是一種差錯(cuò)控制技術(shù)。它的目的是使誤碼離散化,將突發(fā)差錯(cuò)信道變?yōu)殡x散差錯(cuò)信道,再通過(guò)糾正隨機(jī)差錯(cuò)來(lái)改善數(shù)據(jù)傳輸質(zhì)量。原理把信息碼流在時(shí)間順序上按一定規(guī)則打亂,即相互穿插交織后再發(fā)送到信道中去。若交織后的碼流出現(xiàn)突發(fā)差錯(cuò),再經(jīng)過(guò)解交織還原成原來(lái)的碼流順序,則將突發(fā)連片差錯(cuò)分散成隨機(jī)差錯(cuò),更加容易進(jìn)行糾錯(cuò)。由于接收機(jī)在收到了整個(gè)交織塊并進(jìn)行解交織后才能解碼,所以交織帶來(lái)一個(gè)固有延時(shí)。
選取每種速率3種交織度來(lái)實(shí)現(xiàn)。分別是無(wú)交織(交織度為1)、短交織(交織度為4)、長(zhǎng)交織(交織度為36)。
這里所說(shuō)的交織度(1、4、36)指的是交織塊中一行所包含的4 bit碼字?jǐn)?shù)。以短交織為例,說(shuō)明一個(gè)交織塊的構(gòu)成。
源數(shù)據(jù)以8 bit作為1個(gè)單元,按列向交織區(qū)填充,如圖6所示。RS編碼時(shí)取4 bit×3行數(shù)據(jù)作為1個(gè)碼字進(jìn)行編碼,形成4 bit×4行的校驗(yàn)位。圖6中對(duì)信息位(D0,D1,D2,D3,D8,D9,D10,D11,D16,D17,D18,D19)進(jìn)行RS(7,3)編碼后生成校驗(yàn)位為(P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15),并且依照?qǐng)D中的格式存放在交織塊的對(duì)應(yīng)位置。當(dāng)一個(gè)交織塊填充滿(mǎn)后,就可以按行進(jìn)行一個(gè)交織塊數(shù)據(jù)bit的輸出,(D0,D1,D2,D3,D4,D5,…,P47,P60,P61,P62,P63)。
3.6 分集方式
分集技術(shù)是通過(guò)多個(gè)信道接收到承載相同信息的多個(gè)副本,由于多個(gè)信道的傳輸特性不同,信號(hào)多個(gè)副本的衰落就不會(huì)相同。接收機(jī)使用多個(gè)副本包含的信息能比較正確的恢復(fù)出原發(fā)送信號(hào)。本系統(tǒng)采用的是包含時(shí)間和頻率分集的方法。[!--empirenews.page--]
在不同的數(shù)據(jù)速率下,1個(gè)碼元所用到的數(shù)據(jù)字大小不同,可以將300~1 200 bit·s-1各種速率情況總結(jié)如下:1 200 bit·s-1速率時(shí)不做分集,一個(gè)數(shù)據(jù)字需要64 bit信息;600 bit·s-1速率時(shí),一個(gè)數(shù)據(jù)字需要32 bit信息;300 bit·s-1對(duì)應(yīng)的是16 bit的數(shù)據(jù)字。換句話說(shuō),就是在300 bit·s-1數(shù)據(jù)速率下,只要有16 bit新信息,就可以進(jìn)行一個(gè)碼元的調(diào)制。數(shù)據(jù)速率為600 bit·s-1的情況,如表2所示。
在600 bit·s-1數(shù)據(jù)速率情況下,要求在1~8及17~24號(hào)數(shù)據(jù)音傳送當(dāng)前數(shù)據(jù)字,9~16及25~32號(hào)數(shù)據(jù)音傳送的是之前第8個(gè)碼元傳送的數(shù)據(jù)字。在DSP內(nèi)存中開(kāi)辟一個(gè)空間存儲(chǔ)過(guò)去8個(gè)碼元用到的數(shù)據(jù)字。
每次只要從i-8時(shí)刻提取數(shù)據(jù)字填充到9~16及25~32號(hào)數(shù)據(jù)音,而后進(jìn)行32音調(diào)制即可實(shí)現(xiàn)帶內(nèi)時(shí)間頻率分集。
4 結(jié)束語(yǔ)
發(fā)送端在DSP中實(shí)現(xiàn)的具體流程,如圖7所示。
具體實(shí)現(xiàn)時(shí)遇到的問(wèn)題和難點(diǎn):
(1)交織度、RS編碼方式、帶內(nèi)時(shí)間/頻率分集方式都隨數(shù)據(jù)的不同而不同,所以要考慮到相對(duì)應(yīng)程序的通用性,設(shè)定入口參數(shù)和參數(shù)下載的過(guò)程,這樣減小程序代碼段的開(kāi)銷(xiāo),但是增加了編程的復(fù)雜度。
(2)從源數(shù)據(jù)區(qū)向交織區(qū)填充數(shù)據(jù)時(shí),要注意剩余bit的保存。從交織區(qū)向待調(diào)制區(qū)填數(shù)據(jù)時(shí),要注意剩余bit的保存。
(3)在超級(jí)塊和超級(jí)塊的銜接處,存在剩余bit調(diào)制發(fā)送的問(wèn)題。要把當(dāng)前超級(jí)塊所剩下的bit全部調(diào)制發(fā)送完,才能進(jìn)行下一個(gè)超級(jí)塊的構(gòu)成和發(fā)送。