數據傳輸采用最小高斯頻移鍵控(GMSK)調制方式,GMSK 是一種典型的連續相位調制方式。其信號具有優良的功率譜特性(功率譜旁瓣快衰減特性),在對信號頻帶嚴格限制的各種數字通信領域中得到廣泛的應用,又由于其包絡恒定,在具有限幅特性的 C類放大器構成的非線性信道中體現出比 QPSK 相位調制更多的優勢,因而在無線通信領域得到了廣泛應用,如 GMS 系統、GPRS 系統、無線局域網、航空數據鏈、衛星通信等。目前,GMSK 信號已經成為地面蜂窩移動通信系統的一種標準[27]。
MSK 信號是 FSK信號的一種特殊調制方式,其調制指數 mf =0.5, 二進制 MSK 信號表達式為:
5.3 傳輸方法 MAC 層
這一層并不需要因為物理層重構而改變。本文采用 CSMA 載波監聽方式避免沖突。載波偵聽多路訪問(Carrier SenseMultipleAccess,CSMA)其工作在 OSI 參考模型的數據鏈路層的介質訪問控制子層。是一種搶占型的半雙工介質訪問控制協議,采用分布式控制方法[29]。
載波偵聽是指任何連接到介質的設備在欲發送幀前,必須對介質進行偵聽,當確認其空閑時,才可以發送。多路訪問是指多個設備可以同時訪問介質,一個設備發送的幀也可以被多個設備接收。
根據不同的偵聽/發送策略可將 CSMA 分為非持續 CSMA(non-persistent CSMA)、1-持續 CSMA(1-persistent CSMA)和 p-持續 CSMA(p-persistent CSMA) 。
非持續 CSMA(non-persistent CSMA)是指當要發送幀的設備偵聽到線路忙或發生沖突時,會隨機等待一段時間再進行偵聽;若發現不忙則立即發送;此策略可以減少沖突,但會導致信道利用率降低,以及較長的延遲。
1-持續 CSMA(1-persistent CSMA)是指當要發送幀的設備偵聽到線路忙或發生沖突時,會持續偵聽;若發現不忙則立即發送。當傳播延遲較長或多個設備同時發送幀的可能性較大時,此策略會導 致較多的沖突,導致性能降低。
p-持續 CSMA(p-persistent CSMA) 是指當要發送幀的設備偵聽到線路忙或發生沖突時,會持續偵聽;若發現不忙,則根據一個事先指定的概率 p 來決定是發送幀還是繼續偵聽(以 p 的概率發 送,1-p 的概率繼續偵聽);此種策略可以達到一定的平衡,但對于參數 p 的配置會涉及比較復雜的考量。
因為我們的本意是減少沖突,而非搶占實時性,所以本文采取非持續 CSMA 方式。CSMA 采用先監聽再發送的方式可以有效避免對授權用戶的干擾。假設在 sensing 階段沒有檢測到授權用戶使用而在傳輸階段授權用戶又激活了,這時信道能量會增加,這時認知無線電的非授權用戶都會監聽到信道被占用,所以都會選擇靜默,而不會影響到授權用戶的正常使用。
5.4 tuntap
tan與 tap 是操作系統核心中的虛擬網絡設備。不同于普通靠硬件網絡卡實現的設備,這些虛擬的網絡設備全部用軟件實現,并向運行與操作系統上的軟件提供與硬件的網絡設備完全相同的功能。
tap等同于一個傳輸層設備,它操作第二層數據包如以太網數據幀。tun 仿真了網絡層設備,操作第三層數據包比如 IP 數據封包。
tun可以看成是一個虛擬點對點的網絡裝置,它就像是低階操作系統核心中的 IP 信道,我們寫的應用程序可以透過以下兩個接口來和 tun 溝通:
-/dev/tunX - character device;
-tunX - virtual Point-to-Point interface.
我們寫的程序可以寫入 frame 到 /dev/tunX ,而操作系統核心會從 tunX 讀取到我們寫入的 frame,反之操作系統如果有將 frame 寫入到 tunX,我們寫的應用程序也可以從/dev/tunX 讀取到。
由于有了tuntap 虛擬網卡,我們就可以把 USRP 當成一臺網絡設備即一個網卡,在這里我們使用 tun 虛擬,即從網絡層開始虛擬,我們僅僅需要把網絡層以下的數據分別對 tun 的文件進行讀寫即可,tun 設備會自動生成封包或者解封。當上層程序需要發送數據時,我們編寫的物理層或者邏輯鏈路層的程序對 tun 文件進行讀操作;當下層硬件收到數據時,我們對 tun 文件進行寫操作,上層程序即可收到相應的 ip 和端口發來的數據。如圖 5-9:
5.5 網絡編程
正是有了 tuntap,我們的應用層軟件可以方便的屏蔽掉下層,直接把 GNU Radio 和USRP 的認知無線電平臺當成一個網絡設備,而不需要管物理層或者 MAC 層或者網絡層的形式,直接進行網絡編程即可在多機之間進行網絡訪問與連接。
要驗證傳輸性能,最直觀的方法即是播放流媒體,因為流媒體需要較大的傳輸速率,而且對傳輸延時要求要很小,只要能流暢的播放流媒體,說明感知和動態接入的認知無線電平臺具有一定的可行性。
方案如下:
網絡層使用 TCP 協議傳輸。因為由于這是實驗平臺,底層糾錯部分并未達到差錯率小于 5‰的要求,使用 TCP 能彌補數據鏈路層糾錯的能力,使差錯率達到要求。
應用層使用 VLC 媒體播放器。VLC 媒體播放器是成熟的播放器,其應用功能豐富,而且提供編程接口,非常適合調用,能快速開發實現驗證。
整個編程使用 Python 語言。因為 GNU Radio 就是使用 Python 進行編程開發,的具有延續性,而且 Python 進行網絡編程非常快捷。
由 TCP 協議的差錯重傳機制決定,如果差錯率為 Pe 則最終的實際傳輸速率為R`` = (1-Pe)R`,實際測試得到的差錯率為 0.004,所以最終實際傳輸速率為R`` = (1-0.004)*0.83*R=0.996*0.83*R= 0.826R
5.6 本章小結
本章詳細描述了動態接入和傳輸的基本原理和實現過程。設計了物理層、MAC 層、網絡層及應用層的實現方法。