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