802.11b協(xié)議的直接序列擴(kuò)頻的DSP實(shí)現(xiàn)
關(guān)鍵詞:802.11b; 直接序列擴(kuò)頻:DSP
1 引言
近年來,計(jì)算機(jī)無線網(wǎng)絡(luò)的逐漸成熟和飛速發(fā)展使之迅速地滲透和普及到社會(huì)的各個(gè)領(lǐng)域.并在許多方面改變了人們?cè)械纳罘绞胶蜕钣^念。IEEE早在1999年就推出802.11b標(biāo)準(zhǔn),目前主流的無線網(wǎng)卡均能夠支持802.11b標(biāo)準(zhǔn)。
IEEE802.11b協(xié)議[11(Higher―Speed Physical Layer Extension in the 2.4 GHz Band)是對(duì)802.11協(xié)議的修改和補(bǔ)充,其物理層部分在原來的1Mb/s和2Mb/s傳輸速率之外,增加了5.5Mb/s和11Mb/s的高速率DSSS的方案。研究表明,DSSS系統(tǒng)比FHSS系統(tǒng)具有更好的誤碼性能和傳輸距離.但因QPSK不具有恒包絡(luò)特性,需要用線性功率放大器。故適用于高性能系統(tǒng)。
2 802.1lb協(xié)議中的直接序列擴(kuò)頻
80211b的DSSS系統(tǒng)在1Mb/s和2Mb/s時(shí)采用長(zhǎng)度為11的Barker碼擴(kuò)頻,1Mb/s采用DBPSK調(diào)制,2Mb/s采用DQPSK調(diào)制。5.5Mb/s和11Mb/s則采用了CCK調(diào)制,CCK調(diào)制即C0mplelTIentary Code Keying(補(bǔ)碼鍵控)調(diào)制。
對(duì)于一對(duì)由二個(gè)元素組成的等長(zhǎng)度序列,如果它們對(duì)于任何給定的分割,一個(gè)序列中相同的元素對(duì)和另外一個(gè)序列中不同的元素對(duì)的數(shù)量相等,那么這二個(gè)序列就是補(bǔ)碼序列。補(bǔ)碼序列有很強(qiáng)的位置對(duì)稱性,自相關(guān)性強(qiáng),互相關(guān)性很弱,非常適于作為擴(kuò)頻通信中的偽隨機(jī)序列碼。如果補(bǔ)碼序列的元素具有相位參數(shù)的復(fù)數(shù),那么構(gòu)成的補(bǔ)碼序列就是多相補(bǔ)碼序列。IEEE802.11b中的CCK調(diào)制采用的就是多相補(bǔ)碼序列,其定義的碼組就是一個(gè)包含4種相位0、π/2、π、-π/2的復(fù)數(shù)碼組。也就是說它的元素是{1,-1,j,-j}其中之一。
IEEE802.11b所采用的CCK碼字最早是由Richard van Nee[2]定義的。以一個(gè)互補(bǔ)對(duì)作為核(kernel),其他互補(bǔ)序列都是由這個(gè)核推演出來的。長(zhǎng)度為N的二個(gè)不同的互補(bǔ)碼之間的最小距離為N/2(N=8)個(gè)符號(hào)。如果N/2個(gè)符號(hào)最小相位旋轉(zhuǎn)是2π/M,其中M是可能的相位的數(shù)量。那么最小歐式距離為
CCK碼字在多徑信道下的距離也是比較大的,這說明它是一種適合用于多徑信道的分組碼[3]。
下面列出的公式是802.11b協(xié)議所規(guī)定的CCK調(diào)制中所使用的補(bǔ)碼序列的產(chǎn)生公式:
根據(jù)這個(gè)公式得到的一個(gè)長(zhǎng)度為8的序列就是用來調(diào)制載波進(jìn)行擴(kuò)頻的補(bǔ)碼序列。
圖1是對(duì)這4種調(diào)制方式的總結(jié)和比較[4]。
3 基于DSP的擴(kuò)頻功能的實(shí)現(xiàn)及優(yōu)化
3.1測(cè)試環(huán)境的搭建
筆者采用上海正諾電子的專用指令集DSP來實(shí)現(xiàn)基帶的處理,其運(yùn)算速度可以達(dá)到160MI/s,能進(jìn)行矢量的乘累加。調(diào)試開發(fā)的環(huán)境便是基于這種DSP的實(shí)驗(yàn)板,采用DSP+單片機(jī)的結(jié)構(gòu)。單片機(jī)是Atmel公司的。megal28型機(jī),用來管理系統(tǒng)級(jí)事務(wù),包括DSP代碼加載、參數(shù)傳遞、上位PC的RS232通信、鍵盤和顯示界面的管理。DSP專司基帶信號(hào)的處理。此外,通過泰克公司的TLA721型邏輯分析儀(加載了TLA7PG2碼型發(fā)生器模塊)來直接向DSP提供信號(hào)和接收處理完的信號(hào)。
3.2具體過程的實(shí)現(xiàn)
按照802.11b協(xié)議中對(duì)Long PLCP PPDU格式幀結(jié)構(gòu)的定義,preamble中包含128bit的同步碼,preamble和header都以1Mb/s的速率發(fā)送。Payload數(shù)據(jù)的發(fā)送速率由signal決定。
通過邏輯分析儀向DSP發(fā)送MPDU數(shù)據(jù)包,經(jīng)過I)SP處理后變成PPDU發(fā)送.發(fā)送的PPDU由邏輯分析儀接收并傳給DSP。最后,DSP能夠正確完成接收功能,將一開始發(fā)送的數(shù)據(jù)準(zhǔn)確地還原出來。
發(fā)送和接收的具體程序流程如圖2所示。
3.3Barker序列針對(duì)該DSP的改進(jìn)
如果直接按照協(xié)議來做,對(duì)于lMb/s,2Mb/s速率時(shí)的擴(kuò)頻,是直接乘以一組11個(gè)chip的barker序列,即+1,一1,+1,+1,一1,+1,+l,+1,一1,一l,一1,那么,就應(yīng)該把.barkei序列直接存放在DSP的Flash中,然后將要發(fā)送的數(shù)據(jù)經(jīng)過DBPSK或者DOPSK編碼之后再和barker序列相乘,來完成信號(hào)的擴(kuò)頻。
在實(shí)現(xiàn)802.11b協(xié)議功能的時(shí)候,筆者針對(duì)這種DSP在程序上作了改進(jìn)。因?yàn)樗且粔Kfractional類型的定點(diǎn)DSP,小數(shù)點(diǎn)在符號(hào)位的后面,所以在存儲(chǔ)barker序列的時(shí)候,將+1改為+0.5即0x00004000(高16位代表虛部,低16位代表實(shí)部,下同),將-1改為-0.5,即Ox0000C000進(jìn)行存儲(chǔ)。這樣,仍然保留了barker-序列的擴(kuò)頻特性,又不用不斷地進(jìn)行移位定標(biāo)和截尾操作以防止溢出。
圖2
3.4 CCK調(diào)制表的壓縮
對(duì)于5.5Mb/s和11Mb/s采用的CCK調(diào)制,不是直接通過和barker序列相乘來實(shí)現(xiàn)擴(kuò)頻,而是在CCK調(diào)制的過程中完成擴(kuò)頻。5.5Mb/s時(shí),1個(gè)symbol發(fā)送4個(gè)bit,前2位bit(d0,d1)是DQPSK調(diào)制,后2位bit(d2,d3)是CCK調(diào)制,那么2位bit對(duì)應(yīng)的CCK調(diào)制結(jié)果就有4組碼字:11Mb/s時(shí),1個(gè)symbol發(fā)送8個(gè)bit,前2位bit(d0,d1)是DCQPSK調(diào)制,后6位bit(d2,d3,d4,d5,d6,d7)是CCK調(diào)制,那么6位bit對(duì)應(yīng)的CCK調(diào)制結(jié)果就有64種碼字。每一組碼字有8個(gè)chip,而每個(gè)chip占用一個(gè)單元的:Flash空間.那么5.5Mb/s和11Mb/s時(shí)CCK調(diào)制表就將占用(64+4)8=544個(gè)單元的:Flash空間,對(duì)于緊張的DSP片內(nèi)Flash來說無疑顯得很大。
本設(shè)計(jì)采用了一種比較巧妙的辦法來解決空間問題:最后CCK調(diào)制表中的每組chip無非都是由+1,-1,+j,-j組成的,對(duì)應(yīng)Flash中的存儲(chǔ)形式為Ox00004000,Ox0000C000,Ox40000000.OxC0000000。先將這4組數(shù)依次存在Flash中,尋址方式采用相對(duì)尋址,那么地址偏移量只需要2個(gè)bit:00,01,10,1l。以1lMbps的CCK調(diào)制為例,{d2,d3,d4,d5,d6,d7}對(duì)應(yīng)64個(gè)數(shù),比如要發(fā)送{0,l,1,0,1,0},對(duì)應(yīng)的CCK調(diào)制結(jié)果為{j,1,-j,1,-j,-l,-j,1},共8個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)需要2個(gè)bit來進(jìn)行相對(duì)尋址。這一組共需要16個(gè)bit,只需要Flash的一個(gè)單元的實(shí)部就可以存下。{0,1,1,0,1,0}即為十進(jìn)制的22,那么,可以先設(shè)定一個(gè)地址基準(zhǔn),然后把對(duì)應(yīng)的16個(gè)bit存放在偏移量為22的那個(gè)Flash單元中,在調(diào)制時(shí),只需把需要發(fā)送的數(shù)作為相對(duì)尋址的偏移量.找到對(duì)應(yīng)的Flash單元里的16個(gè)bit,然后再解壓縮出對(duì)應(yīng)的那組CCK碼字,就可以完成CCK的調(diào)制了。這樣,就用64個(gè)Flash單元而不是512個(gè)Flash單元完成了CCK調(diào)制表的存儲(chǔ)。
采用了這些簡(jiǎn)化、優(yōu)化措施及編程技巧,占用了更少的Flash空間,實(shí)現(xiàn)了更高的精度和穩(wěn)定性。當(dāng)然,本設(shè)計(jì)僅僅完成了802.11b最基本的發(fā)送和接收功能,可以再加入信道均衡和信道編碼等功能,通信質(zhì)量就可進(jìn)一步提高。
評(píng)論