新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 802.11b協議的直接序列擴頻的DSP實現

        802.11b協議的直接序列擴頻的DSP實現

        作者: 時間:2006-03-08 來源:網絡 收藏
        摘要:闡述的特點及其在不同傳輸速率下的原理。針對在上如何功能、如何針對的架構優化程序,減少硬件開銷,提出改進的方法。

        關鍵詞:; 擴頻:

        1 引言

        近年來,計算機無線網絡的逐漸成熟和飛速發展使之迅速地滲透和普及到社會的各個領域.并在許多方面改變了人們原有的生活方式和生活觀念。IEEE早在1999年就推出標準,目前主流的無線網卡均能夠支持802.11b標準。

        IEEE802.11b[11(Higher―Speed Physical Layer Extension in the 2.4 GHz Band)是對802.11的修改和補充,其物理層部分在原來的1Mb/s和2Mb/s傳輸速率之外,增加了5.5Mb/s和11Mb/s的高速率DSSS的方案。研究表明,DSSS系統比FHSS系統具有更好的誤碼性能和傳輸距離.但因QPSK不具有恒包絡特性,需要用線性功率放大器。故適用于高性能系統。

        2 802.1lb協議中的擴頻

        80211b的DSSS系統在1Mb/s和2Mb/s時采用長度為11的Barker碼擴頻,1Mb/s采用DBPSK調制,2Mb/s采用DQPSK調制。5.5Mb/s和11Mb/s則采用了CCK調制,CCK調制即C0mplelTIentary Code Keying(補碼鍵控)調制。

        對于一對由二個元素組成的等長度序列,如果它們對于任何給定的分割,一個序列中相同的元素對和另外一個序列中不同的元素對的數量相等,那么這二個序列就是補碼序列。補碼序列有很強的位置對稱性,自相關性強,互相關性很弱,非常適于作為擴頻通信中的偽隨機序列碼。如果補碼序列的元素具有相位參數的復數,那么構成的補碼序列就是多相補碼序列。IEEE802.11b中的CCK調制采用的就是多相補碼序列,其定義的碼組就是一個包含4種相位0、π/2、π、-π/2的復數碼組。也就是說它的元素是{1,-1,j,-j}其中之一。

        IEEE802.11b所采用的CCK碼字最早是由Richard van Nee[2]定義的。以一個互補對作為核(kernel),其他互補序列都是由這個核推演出來的。長度為N的二個不同的互補碼之間的最小距離為N/2(N=8)個符號。如果N/2個符號最小相位旋轉是2π/M,其中M是可能的相位的數量。那么最小歐式距離為

        CCK碼字在多徑信道下的距離也是比較大的,這說明它是一種適合用于多徑信道的分組碼[3]。

        下面列出的公式是802.11b協議所規定的CCK調制中所使用的補碼序列的產生公式:

        根據這個公式得到的一個長度為8的序列就是用來調制載波進行擴頻的補碼序列。

        圖1是對這4種調制方式的總結和比較[4]。

        3 基于DSP的擴頻功能的及優化

        3.1測試環境的搭建

        筆者采用上海正諾電子的專用指令集DSP來基帶的處理,其運算速度可以達到160MI/s,能進行矢量的乘累加。調試開發的環境便是基于這種DSP的實驗板,采用DSP+單片機的結構。單片機是Atmel公司的。megal28型機,用來管理系統級事務,包括DSP代碼加載、參數傳遞、上位PC的RS232通信、鍵盤和顯示界面的管理。DSP專司基帶信號的處理。此外,通過泰克公司的TLA721型邏輯分析儀(加載了TLA7PG2碼型發生器模塊)來直接向DSP提供信號和接收處理完的信號。

        3.2具體過程的實現

        按照802.11b協議中對Long PLCP PPDU格式幀結構的定義,preamble中包含128bit的同步碼,preamble和header都以1Mb/s的速率發送。Payload數據的發送速率由signal決定。

        通過邏輯分析儀向DSP發送MPDU數據包,經過I)SP處理后變成PPDU發送.發送的PPDU由邏輯分析儀接收并傳給DSP。最后,DSP能夠正確完成接收功能,將一開始發送的數據準確地還原出來。

        發送和接收的具體程序流程如圖2所示。

        3.3Barker序列針對該DSP的改進

        如果直接按照協議來做,對于lMb/s,2Mb/s速率時的擴頻,是直接乘以一組11個chip的barker序列,即+1,一1,+1,+1,一1,+1,+l,+1,一1,一l,一1,那么,就應該把.barkei序列直接存放在DSP的Flash中,然后將要發送的數據經過DBPSK或者DOPSK編碼之后再和barker序列相乘,來完成信號的擴頻。

        在實現802.11b協議功能的時候,筆者針對這種DSP在程序上作了改進。因為它是一塊fractional類型的定點DSP,小數點在符號位的后面,所以在存儲barker序列的時候,將+1改為+0.5即0x00004000(高16位代表虛部,低16位代表實部,下同),將-1改為-0.5,即Ox0000C000進行存儲。這樣,仍然保留了barker-序列的擴頻特性,又不用不斷地進行移位定標和截尾操作以防止溢出。

        圖2

        3.4 CCK調制表的壓縮

        對于5.5Mb/s和11Mb/s采用的CCK調制,不是直接通過和barker序列相乘來實現擴頻,而是在CCK調制的過程中完成擴頻。5.5Mb/s時,1個symbol發送4個bit,前2位bit(d0,d1)是DQPSK調制,后2位bit(d2,d3)是CCK調制,那么2位bit對應的CCK調制結果就有4組碼字:11Mb/s時,1個symbol發送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組數依次存在Flash中,尋址方式采用相對尋址,那么地址偏移量只需要2個bit:00,01,10,1l。以1lMbps的CCK調制為例,{d2,d3,d4,d5,d6,d7}對應64個數,比如要發送{0,l,1,0,1,0},對應的CCK調制結果為{j,1,-j,1,-j,-l,-j,1},共8個數據,每個數據需要2個bit來進行相對尋址。這一組共需要16個bit,只需要Flash的一個單元的實部就可以存下。{0,1,1,0,1,0}即為十進制的22,那么,可以先設定一個地址基準,然后把對應的16個bit存放在偏移量為22的那個Flash單元中,在調制時,只需把需要發送的數作為相對尋址的偏移量.找到對應的Flash單元里的16個bit,然后再解壓縮出對應的那組CCK碼字,就可以完成CCK的調制了。這樣,就用64個Flash單元而不是512個Flash單元完成了CCK調制表的存儲。

        采用了這些簡化、優化措施及編程技巧,占用了更少的Flash空間,實現了更高的精度和穩定性。當然,本設計僅僅完成了802.11b最基本的發送和接收功能,可以再加入信道均衡和信道編碼等功能,通信質量就可進一步提高。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 谢通门县| 宁波市| 开化县| 铁岭县| 山西省| 张家川| 石家庄市| 黎平县| 阿鲁科尔沁旗| 屯门区| 阜宁县| 虞城县| 垣曲县| 韶山市| 桂平市| 涟源市| 韶关市| 明光市| 遂川县| 闽侯县| 土默特左旗| 鄂托克前旗| 涡阳县| 建湖县| 读书| 田阳县| 阿鲁科尔沁旗| 天气| 上林县| 正定县| 浦县| 洛南县| 五台县| 石门县| 麻栗坡县| 双鸭山市| 青州市| 永顺县| 封开县| 蓬莱市| 东安县|