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