目錄:
目錄:
一、緒論
1.1 設計背景
1.2?設計目的
二、系統總體方案
2.1?專題調研題目
2.2?調研背景
2.3?設計任務解讀
2.4 設計原理
2.4.1?原理框圖
2.4.2?功能驗證
三、軟件設計
3.1 程序解讀
3.2?程序設計
3.3 仿真結果:
四、程序代碼分析
4.1 QPSK符號映射函數“txMod.m”
4.2 添加CRC函數“txCRCattach.m”
五、所需資源
5.1 硬件資源
5.2?軟件資源
六、系統調試
6.1?設計階段
6.2?調試階段
6.3?調優和優化
七、總結
一、緒論
1.1 設計背景
????????軟件無線電(Software Defined Radio, SDR)是一種無線通信系統,它通過軟件來定義和實現無線電的功能,而不是依賴于傳統的硬件電路。SDR平臺的核心思想是將傳統無線電系統中的大部分硬件功能,如調制解調、信號處理、頻率選擇等,通過軟件來實現。這種設計理念使得SDR具有高度的靈活性和可重配置性,能夠適應不同的通信標準和頻段,快速適應新的通信技術。
????????QPSK(Quadrature Phase Shift Keying)是一種常用的數字調制技術,它通過改變載波的相位來傳輸信息。QPSK調制技術具有較高的頻譜效率和較強的抗干擾能力,廣泛應用于無線通信系統中,如衛星通信、移動通信、無線局域網等。
????????隨著通信技術的快速發展,對通信系統的靈活性和可擴展性提出了更高的要求。SDR平臺能夠通過軟件升級來適應新的通信標準,而不需要更換硬件,這符合通信技術快速迭代的需求。無線通信頻譜資源日益緊張,需要更高效的頻譜利用技術。QPSK作為一種高效的調制技術,能夠在有限的頻譜資源下傳輸更多的信息,無線通信環境復雜多變,存在多種干擾源。QPSK調制技術具有較好的抗干擾能力,能夠在復雜的無線環境中保持通信的穩定性,SDR平臺通過軟件實現大部分功能,可以降低硬件成本和維護成本。同時,QPSK調制技術相對簡單,實現成本較低,適合大規模部署。
1.2?設計目的
????????通過SDR平臺,可以快速適應不同的通信標準和頻段,實現通信系統的靈活配置和快速部署,以滿足多樣化的通信需求,采用QPSK調制技術,可以在有限的頻譜資源下傳輸更多的信息,提高頻譜利用率,應對頻譜資源緊張的問題,QPSK調制技術具有較好的抗干擾性能,能夠在復雜的無線環境中保持通信的穩定性,提高通信系統的魯棒性,SDR平臺通過軟件實現大部分功能,可以減少硬件成本和維護成本。同時,QPSK調制技術的實現相對簡單,有助于降低整個通信系統的成本,SDR平臺為通信技術的研究和教育提供了便利,研究人員和學生可以通過SDR平臺進行通信系統的實驗和研究,推動通信技術的發展。
二、系統總體方案
2.1?專題調研題目
????????基于軟件無線電平臺的QPSK頻帶通信 系統設計
2.2?調研背景
????????隨著無線通信技術的快速發展,對通信系統的靈活性、可擴展性和頻譜效率提出了更高的要求。SDR技術因其軟件定義的特性,能夠適應不斷變化的通信標準和需求,成為現代通信系統設計的重要方向,隨著無線設備的激增,頻譜資源變得越來越緊張。QPSK作為一種高效的調制技術,能夠在有限的頻譜資源下傳輸更多的信息,提高頻譜利用率,因此被廣泛應用于各種通信系統中。在復雜的無線環境中,通信系統需要具備良好的抗干擾能力。QPSK調制技術具有較好的抗干擾性能,能夠在多徑衰落、噪聲干擾等不利條件下保持通信的穩定性。
????????在通信系統設計中,成本是一個重要的考慮因素。SDR平臺通過軟件實現大部分功能,可以減少硬件成本和維護成本。同時,QPSK調制技術的實現相對簡單,有助于降低整個通信系統的成本。現代通信系統需要支持多種通信模式,包括不同的調制方式、編碼方案和協議。SDR平臺可以支持多種通信模式,使得通信系統能夠適應不同的應用場景和用戶需求。
2.3?設計任務解讀
圖2.1?QPSK頻帶通信系統示意圖?
1、在MATLAB下編寫程序實現本地WAV文件數據讀取并對讀取的數據進行PCM編碼, 然后數據分幀、加CRC、信道編碼、調制映射(QPSK)、添加同步信號、過采樣、過采樣 后得到IQ信號。生成的IQ信號數據通過以太網發送到XSRP軟件無線電平臺,在軟件無 線電平臺中完成IQ數據DA轉換、上變頻載波調制、射頻在指定頻點將信號通過天線發 射出去。無線信號經過空中無線信道,再通過射頻的接收天線在對應的頻點將數據接收、 下變頻、低通濾波、AD轉換得到IQ信號。接收的IQ信號通過以太網發送到電腦。在電 腦上對IQ信號進行處理,包括幀同步、抽樣、相位糾正、解調制映射、信道解碼、CRC 校驗、數據組幀、信源解碼,將還原后的音頻數據寫入WAV文件。
2、需要掌握Matlab基本編程方法,根據算法要求實現特征參數提取,通過XSRP軟件無 線電平臺將調制信號自發自收,對接收信號進行自動識別。
3、本課程設計共有三級難度,可以根據自己的實際情況選擇?
表 2.1:?
序號 | 難度級數 | 任務內容 | 說明 |
---|---|---|---|
1 | 三級 | 效果驗證 | 提供了案例程序,可以打開該程序并運行,提前了解項目要求實現的效果。 |
核心代碼編寫 | 案例中實現的核心代碼(QPSK調制解調)已加密,是看不見程序代碼的,需要自己去編寫。 | ||
仿真與聯調 | 程序完成后進行軟件仿真,確保代碼無誤后再進行軟硬件聯調,要求還原音頻達到指定要求。 | ||
2 | 二級 | 效果驗證 | 提供了案例程序,可以打開該程序并運行,提前了解項目要求實現的效果。 |
核心代碼編寫 | 案例中實現的核心代碼(QPSK調制解調及添加CRC)已加密,是看不見程序代碼的,需要自己去編寫。 | ||
仿真與聯調 | 程序完成后進行軟件仿真,確保代碼無誤后再進行軟硬件聯調,要求能接收到正確的星座圖。 | ||
3 | 一級 | 自主設計 | 只提供課程設計的要求,設備的使用方法,設備調用的接口,不提供任何子模塊程序,全部程序和軟硬件聯調由自己完成。 |
4、需要掌握XSRP軟件無線電平臺的基本使用方法,需要調用其射頻部分、基帶部分等
(通過“XSRP軟件無線電平臺無線收發軟件測試軟件”驗證其主要功能)
2.4 設計原理
2.4.1?原理框圖
????????正交相移鍵控(QPSK)是一個通過轉換或調制來傳達數據的調制方法,基準信號(載 波)的定相。有時候也叫做第四期或者四相PSK或四相位預共享密鑰(4-PSK),QPSK利 用星座圖圓周上均勻分布的四個點,通過四個相位將每個符號編碼為兩個比特位,用格林 碼表示以將誤比特率降至最低——有時會被誤解為是二進制相移鍵控(BPSK)誤比特率 的兩倍。其實現原理框圖如圖2.2:
圖2.2QPSK頻帶系統設計原理框圖?
????????射頻收發部分:即XSRP軟件無線電平臺的射頻部分
????????基帶處理部分:即XSRP軟件無線電平臺的基帶部分
????????算法實現部分:在電腦中實現
???????? XSRP軟件無線電平臺=機箱+射頻部分+基帶部分+配件(電源線、網線、USB線、天線等)
????????本課設要求學生完成QPSK調制解調及計算CRC模塊。下面主要對QPSK調制和CRC 的原理進行重點講解。
????????在星座圖中規定了星座點與傳輸比特間的對應關系,這種關系稱為“映射”,一種調制 技術的特性可由信號分布和映射完全定義,即可由星座圖來完全定義。四相相移調制是利 用載波的四種不同相位差來表征輸入的數字信息,是四進制移相鍵控。QPSK是在M=4時 的調相技術,它規定了四種載波相位,分別為45°,135°,225°,315°,調制器輸入的數據 是二進制數字序列,為了能和四進制的載波相位配合起來,則需要把二進制數據變換為四 進制數據,也就是說需要把二進制數字序列中每兩個比特分成一組,共有四種組合,即00, 01,10,11,其中每一組稱為雙比特碼元。每一個雙比特碼元是由兩位二進制信息比特組 成,它們分別代表四進制四個符號中的一個符號。QPSK中每次調制可傳輸2個信息比特, 這些信息比特是通過載波的四種相位來傳遞的。解調器根據星座圖及接收到的載波信號的 相位來判斷發送端發送的信息比特。
????????首先將輸入的串行二進制信息序列經串-并變換,變成m=log2M個并行數據流,其 中每一路的數據率是R/m(R是串行輸入碼的數據率)。I/Q信號發生器將每一個m比特的 字節轉換成一對(pn,qn)數字,分成兩路速率減半的序列,電平發生器分別產生雙極性 二電平信號I(t)和Q(t),然后對和進行調制,相加后即得到QPSK信號。
???????? 循環冗余校驗(CyclicRedundancy Check, CRC)是一種根據網絡數據包或電腦文件等數 據產生簡短固定位數校驗碼的一種散列函數,主要用來檢測或校驗數據傳輸或者保存后可 能出現的錯誤。它是利用除法及余數的原理來作錯誤偵測的。?
????????假設數據傳輸過程中需要發送15位的二進制信息g=101001110100001,這串二進制碼 可表示為代數多項式g(x)=x^14+x^12+x^9+x^8+x^7+x^5+1,其中g中第k位的值, 對應g(x)中x^k的系數。將g(x)乘以x^m,既將g后加m個0,然后除以m階多項式h(x), 得到的(m-1)階余項r(x)對應的二進制碼r就是CRC編碼?
2.4.2?功能驗證
????????Step1:將設備串口和電腦串口相連(電腦最好不要再接其他要用串口的設備),設備 網口和電腦網口相連,將電腦網口ip地址設置成當前電腦IP。
???????? Step2:打開“基于軟件無線電平臺的QPSK頻帶通信系統設計”實驗對應的程序源碼, 找到“QPSK_Main”文件并打開,如圖2.3所示:
圖2-3QPSK_Main 文件所在位置?
注:所有的程序代碼都要保存在非中文路徑下。
Step3:打開“QPSK_Main”文件后彈出如圖2-4所示的界面:
圖2-4QPSK無線傳輸系統的主界面
Step4:選擇發送語音文件讀取路徑,如圖2-5所示:
?圖2-5 發送語音文件讀取路徑
Step5:找到程序目錄下的“WindowsXP.wav”文件,作為發送語音,如圖2-6所示:
圖2-6 選擇發送的語音內容
Step6:選擇接收語音文件寫入路徑,如圖2-7所示:
圖2-7 接收語音文件寫入路徑
Step7:找到程序目錄下的“decodwav.wav”文件,作為發送語音,如圖2-8所示:?
圖2-8
??????Step8:運行方式配置為“仿真系統”,點擊運行按鈕,等待運行結束后,出現圖2-9 所示界面:?
圖2-9
Step9:從運行結果可以看出當前幀號為105,CRCFlag為1,說明105幀號CRC校 驗正確,如圖2-10所示:
圖2-10 幀號和CRC所在位置
Step10:比較發送語音波形和接收語音波形,可以發現接收語音波形未出現失真,如 圖2-11所示:
?????????圖2-11 發送語音波形和接收語音波形對比圖
????????Step11:將發射衰減改為34dB,接收增益改為15dB,切換運行方式為“真實系統”, 點擊運行按鈕,等待運行結束后,如圖2-12所示:
圖2-12
????????Step12:從運行結果可以看出當前幀號為105,CRCFlag為0,說明105幀號CRC校 驗錯誤,如圖2-13所示:
圖2-13 幀號和CRC校驗顯示的位置
Step13:比較發送語音波形和接收語音波形,可以發現波形后半部分出現失真,如圖 2-14 所示:
圖2-14 發送語音波形和接收語音波形對比圖
三、軟件設計
3.1 程序解讀
圖3-1?程序解讀框圖
????????由圖3-1可知,程序分為7大模塊設計,其中RF配置、獲取Matlab代碼路徑、射頻 發射和接收、清除Matlab路徑模塊,學生不需要去完成,學生需要理解已提供模塊的功能, 以及在整個系統框架中的作用。下面將介紹已提供模塊的功能
(1)RF配置模塊
???????? VI名稱:RFConfig.vi
????????VI圖標:
????????VI功能:配置XSRP的硬件的射頻發射和接收參數
????????VI輸入參數:發射參數(發射通道、發射頻率、發射衰減),接收參數(接收通道、 接受頻率、接收增益),錯誤輸入
????????VI輸出參數:錯誤輸出
???????? VI位置:文件夾“SDR_AMR”下的“.\LabviewSubVI\RFConfig\ RFConfig.vi”
(2)獲取Matlab代碼路徑模塊
???????? VI名稱:GetMatlabCodePatah.vi
????????VI圖標:
????????VI功能:獲取MatlabCode文件夾所在的路徑
????????VI輸入參數:無
????????VI輸出參數:MatlabCodePath(Matalb 代碼路徑)
????????VI位置:文件夾“SDR_AMR”下的“.\LabviewSubVI\GetMatlabCodePatah.vi”
(3)清除Matlab代碼路徑緩存模塊
????????VI名稱:MatlabPathClear.vi
????????VI圖標:
????????VI功能:清除執行Matlab代碼所加入的路徑緩存
????????VI輸入參數:Path(Matlab代碼路徑),錯誤輸入
????????VI輸出參數:錯誤輸出
????????VI位置:文件夾“SDR_AMR”下的“.\LabviewSubVI\MatlabPathClear.vi”
3.2?程序設計
程序設計整體框圖如圖3-2所示:
圖3-2?程序設計整體框圖
程序設計的所有模塊都已經提供,其分別對應的VI名稱如下
GetVoiceData.vi, PCM_encode.vi,DivFrame.vi,txCRCattach.vi
TxTrchCoder.vi, TxMod.vi , TxAddSyncSig.vi,PulseShaper.vi
RFchannel.vi,DeSync.vi,DownSample.vi,APcorrect.vi,rxDemode.vi, rxTrchDecoder.vi,
rxCRC.vi,PCM_decode.vi,WriteVoiceData.vi
需要通過理解每個模塊在系統中的作用,并使用模塊搭建完整的通信系統。 下面將對每個模塊進行說明:
(1)獲取音頻數據模塊
????????VI名稱:GetVoiceData.vi
????????VI圖標:
????????VI功能:讀取本地WAV文件數據
????????VI輸入參數:Matlab代碼路徑,WAV文件路徑,錯誤輸入
????????VI輸出參數:Matlab代碼路徑、WAV文件數據、音頻數據采樣率、錯誤輸出
????????VI位置:課設文件夾下的“.\LabviewSubVI\GetVoiceData.vi”
(2)PCM編碼模塊
????????VI名稱:PCM_encode.vi
????????VI圖標:
????????VI功能:對數據進行PCM編碼
???????? VI輸入參數:Matlab代碼路徑,音頻數據、音頻數據采樣率、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、以4000HZ采樣后的數據(未用到)、13折線編碼后數 據、錯誤輸出
????????VI位置:課設文件夾下的“.\LabviewSubVI\PCM_encode.vi”
(3)分幀模塊
????????VI名稱:DivFrame.vi
????????VI圖標:
????????VI功能: 根據信道容量對數據進行分幀(本實驗信道容量為960個數據點)
????????VI輸入參數:要分幀的數據
????????VI輸出參數:分幀后數據
????????VI位置:課設文件夾下的“.\LabviewSubVI\DivFrame.vi”
(4)添加CRC模塊
????????VI名稱:txCRCattach.vi
????????VI圖標:
????????VI功能:對輸入數據添加CRC
???????? VI輸入參數:Matlab代碼路徑、要添加CRC的數據、錯誤輸入
???????? VI輸出參數:Matlab代碼路徑、添加CRC后的數據、錯誤輸出
? ? ? ? ?VI位置:課設文件夾下的“.\LabviewSubVI\OFDM_TxTrchCoder.vi”
(5)信道編碼模塊
????????VI名稱:TxTrchCoder.vi
????????VI圖標:
????????VI功能:對輸入的信源比特按照信道編碼方式進行1/2卷積編碼
????????VI輸入參數:Matlab代碼路徑、要編碼的數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、編碼后比特數據、錯誤輸出
????????VI位置:課設文件夾下的“.\LabviewSubVI\TxTrchCoder.vi”
(6)調制映射模塊
???????? VI名稱: txMod.vi
????????VI圖標:
????????VI功能:對輸入的比特按照QPSK產生映射后符號數據
????????VI輸入參數:Matlab代碼路徑,要調制的數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、調制映射后符號數據、錯誤輸出 ? VI位置:課設文件夾下的“.\LabviewSubVI\txMod.vi”
(7)添加同步碼模塊
???????? VI名稱:TxAddSyncSig.vi
???????? VI圖標:
? ? ? ? ?VI功能:對輸入數據添加同步碼
???????? VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入
???????? VI輸出參數:Matlab代碼路徑、添加同步碼后的數據、錯誤輸出
? ? ? ? ?VI位置:課設文件夾下的“.\LabviewSubVI\TxAddSyncSig.vi”
(8)過采樣模塊
????????VI名:PulseShaper.vi
????????VI圖標:
????????VI功能:對輸入數據進行過采樣 ? VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入 ? VI輸出參數:Matlab代碼路徑、過采樣后數據、錯誤輸出 ? VI位置:課設文件夾下的“.\LabviewSubVI\PulseShaper.vi”
(9)IQ發送接收(或射頻收發)模塊
????????VI名:RFchannel.vi
????????VI圖標:
????????VI功能:將基帶IQ信號發送給XSRP,在XSRP中進行DA、上變頻、天線發射、天 線接收、下變頻、AD最后得到接收的IQ信號
????????VI輸入參數:Matlab代碼路徑,選擇經過真實無線信道還是模擬經過信道、輸入數據、 錯誤輸入
????????VI輸出參數:Matlab代碼路徑、待發送IQ數據tx_data、錯誤輸出
????????VI位置:課設文件夾下的“.\LabviewSubVI\RFchannel.vi”
(10)時隙同步模塊
????????VI名:DeSync.vi
????????VI圖標:
????????VI功能:根據同步碼對信號進行時隙同步
????????VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、同步后數據、錯誤輸出
????????VI 位置:課設文件夾下的“.\LabviewSubVI\ DeSync.vi”
(11)降采樣模塊
????????VI名:DownSample.vi
????????VI圖標:
????????VI功能:對數據進行降采樣即抽樣
????????VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、降采樣后數據、錯誤輸出 VI 位置:課設文件夾下的“.\LabviewSubVI\ DownSample.vi”
(12)相位糾正模塊
????????VI名:APcorrect.vi
????????VI圖標:
????????VI功能:對傳輸過程中產生的相位偏移進行糾正
????????VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、相位糾正后的數據、錯誤輸出 VI 位置:課設文件夾下的“.\LabviewSubVI\APcorrect.vi”
(13)解調模塊
????????VI名:rxDemode.vi
????????VI圖標:
????????VI功能:對數據進行解調
????????VI輸入參數:Matlab代碼路徑,糾正相位偏移后的數據、錯誤輸入
(14)信道糾錯模塊
????????VI名:rxTrchDecoder.vi
????????VI圖標:
????????VI功能:對輸入數據進行糾錯
????????VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、糾錯后數據、錯誤輸出
????????VI 位置:課設文件夾下的“.\LabviewSubVI\ rxTrchDecoder.vi”
(15)CRC校驗模塊
????????VI 名:rxCRC.vi
????????VI圖標:
????????VI功能:對輸入數據進行CRC校驗并去除CRC
????????VI輸入參數:Matlab代碼路徑,輸入數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、校驗結果、去除CRC后數據、錯誤輸出
????????VI 位置:課設文件夾下的“.\LabviewSubVI\ rxCRC.vi”
(16)PCM解碼模塊
????????VI 名:PCM_decode.vi
????????VI圖標:
????????VI功能:將PCM編碼后數據還原
????????VI輸入參數:Matlab代碼路徑,PCM編碼數據、錯誤輸入
????????VI輸出參數:Matlab代碼路徑、還原后數據、錯誤輸出 VI 位置:課設文件夾下的“.\LabviewSubVI\ PCM_decode.vi”
3.3 仿真結果:
圖3-2?真實系統 運行效果
圖3-3 仿真框架圖?
四、程序代碼分析
4.1 QPSK符號映射函數“txMod.m”
????????其路徑位置“.\MatlabCode\ txMod.m”,
function outData=txMod(inputData,modType)
if modType==1bitSymbol=modType*2; %一個符號對應的bit數lenOutData=(length(inputData))/bitSymbol;outData=zeros(1,lenOutData);inputData=inputData*(-2)+1;%0 1映射為 1 -1outData=inputData(1,1:2:end)+i*inputData(1,2:2:end); %奇數為實部偶數為虛部
else disp('輸入參數不支持');
end
以上這段代碼定義了一個名為 txMod
的函數,該函數用于對輸入數據進行調制。函數接受兩個參數:inputData
和 modType
。inputData
是輸入的數據,而 modType
是調制類型。
函數的工作思路如下:
? ? ? ? 1.檢查 modType
是否等于 1。如果 modType
等于 1:
? ? ? ? ? ? ? ? (1)計算每個符號對應的比特數?bitSymbol
,這里假設?modType
?乘以 2。
? ? ? ? ? ? ? ? (2)根據?bitSymbol
?計算輸出數據的長度?lenOutData
。
? ? ? ? ? ? ? ? (3)初始化輸出數據?outData
?為全零向量,長度為?lenOutData
。
? ? ? ? ? ? ? ? (4)對輸入數據?inputData
?進行映射,將 0 映射為 1,將 1 映射為 -1。
? ? ? ? ? ? ? ? (5)將映射后的數據按照奇數位為實部、偶數位為虛部的規則,轉換為復數形式的輸出數據?outData
。
? ? ? ? 2.如果 modType
不等于 1,則顯示一條消息 "輸入參數不支持"。
4.2 添加CRC函數“txCRCattach.m”
????????其路徑位置“.\MatlabCode\ txCRCattach.m
function [out_data] = txCRCattach(input_data, crc_num)
input_num = length(input_data);
%% 變量初始化
out_data = zeros(1, input_num+crc_num);
crcBit = zeros(1, crc_num);
regOut = zeros(1, crc_num); %#ok%% 功能實現
switch crc_numcase 0out_data = input_data;case 8%生成多項式 gD = D8+D7+D4+D3+D1+1for num = 1:input_num;regOut = crcBit; %shift bitscrcBit(8) = xor(regOut(7), xor(regOut(8), input_data(num)));crcBit(7) = regOut(6);crcBit(6) = regOut(5);crcBit(5) = xor(regOut(4), xor(regOut(8), input_data(num)));crcBit(4) = xor(regOut(3), xor(regOut(8), input_data(num)));crcBit(3) = regOut(2);crcBit(2) = xor(regOut(1), xor(regOut(8), input_data(num)));crcBit(1) = xor(regOut(8), input_data(num)); end out_data(1, 1:input_num) = input_data(1, 1:input_num);out_data(1, input_num+1:input_num+crc_num) = crcBit; case 12%生成多項式 gD = D12+D11+D3+D2+D1+1for num = 1:input_num;regOut = crcBit; %shift bitscrcBit(12) = xor(regOut(11), xor(regOut(12), input_data(num)));crcBit(11) = regOut(10);crcBit(10) = regOut(9);crcBit(9) = regOut(8);crcBit(8) = regOut(7);crcBit(7) = regOut(6);crcBit(6) = regOut(5);crcBit(5) = regOut(4);crcBit(4) = xor(regOut(3), xor(regOut(12), input_data(num)));crcBit(3) = xor(regOut(2), xor(regOut(12), input_data(num)));crcBit(2) = xor(regOut(1), xor(regOut(12), input_data(num)));crcBit(1) = xor(regOut(12), input_data(num)); end out_data(1, 1:input_num) = input_data(1, 1:input_num);out_data(1, input_num+1:input_num+crc_num) = crcBit; case 16%生成多項式 gD = D16+D12+D5+1for num = 1:input_num;regOut = crcBit; %shift bitscrcBit(16) = regOut(15); crcBit(15) = regOut(14);crcBit(14) = regOut(13);crcBit(13) = xor(regOut(12), xor(regOut(16), input_data(num)));crcBit(12) = regOut(11);crcBit(11) = regOut(10);crcBit(10) = regOut(9);crcBit(9) = regOut(8);crcBit(8) = regOut(7);crcBit(7) = regOut(6);crcBit(6) = xor(regOut(5), xor(regOut(16), input_data(num)));crcBit(5) = regOut(4);crcBit(4) = regOut(3);crcBit(3) = regOut(2);crcBit(2) = regOut(1);crcBit(1) = xor(regOut(16), input_data(num)); end out_data(1, 1:input_num) = input_data(1, 1:input_num);out_data(1, input_num+1:input_num+crc_num) = crcBit;case 24%生成多項式 gD = D24+D23+D6+D5+D1+1for num = 1:input_num;regOut = crcBit; %shift bitscrcBit(24) = xor(regOut(23), xor(regOut(24), input_data(num)));crcBit(23) = regOut(22);crcBit(22) = regOut(21);crcBit(21) = regOut(20);crcBit(20) = regOut(19);crcBit(19) = regOut(18);crcBit(18) = regOut(17);crcBit(17) = regOut(16);crcBit(16) = regOut(15); crcBit(15) = regOut(14);crcBit(14) = regOut(13);crcBit(13) = regOut(12);crcBit(12) = regOut(11);crcBit(11) = regOut(10);crcBit(10) = regOut(9);crcBit(9) = regOut(8);crcBit(8) = regOut(7);crcBit(7) = xor(regOut(6), xor(regOut(24), input_data(num)));crcBit(6) = xor(regOut(5), xor(regOut(24), input_data(num)));crcBit(5) = regOut(4);crcBit(4) = regOut(3);crcBit(3) = regOut(2);crcBit(2) = xor(regOut(1), xor(regOut(16), input_data(num)));crcBit(1) = xor(regOut(24), input_data(num)); end out_data(1, 1:input_num) = input_data(1, 1:input_num);out_data(1, input_num+1:input_num+crc_num) = crcBit; otherwisefprintf('error:函數mfTxCRCattach的參數crc_num輸入錯誤\n');
end end
????????以上這段代碼定義了一個名為 txCRCattach
的 MATLAB 函數。此函數用于在輸入數據中加入循環冗余校驗(CRC)位。CRC是一種常用的檢測數據傳輸或存儲過程中是否出現錯誤的技術。函數 txCRCattach
接受兩個參數:input_data
和 crc_num
,分別代表輸入的數據和要添加的CRC位的數量。
1. 函數實現的過程:
? ? ? ? (1)計算輸入數據?input_data
?的長度?input_num
。
? ? ? ? (2)初始化輸出數據?out_data
?和CRC校驗位?crcBit
?為全零向量。out_data
?的長度是輸入數據長度加上CRC位的數量,crcBit
?的長度是CRC位的數量。
? ? ? ? (3)初始化一個變量?regOut
,用作寄存器,長度等于CRC位的數量。
2. 這個函數通過switch
語句支持不同長度的CRC生成多項式:
? ? ? ? (1)如果?crc_num
?為0,則?out_data
?直接等于?input_data
,未進行CRC添加。
? ? ? ? (2)如果?crc_num
?為8,則使用一個特定的生成多項式來計算8位CRC。這個過程涉及在每個輸入數據位上執行一系列異或操作。
? ? ? ? (3)如果?crc_num
?為12、16或24,過程類似,只是生成多項式不同,這會影響異或操作的位置。
????????對于每個 case
,都有一個循環遍歷 input_data
的所有位,根據生成多項式更新CRC寄存器 crcBit
。
????????在生成CRC位之后,函數將原始的 input_data
和計算出的CRC位 crcBit
拼接起來,形成最終的 out_data
。
????????如果 crc_num
不是函數支持的值(0, 8, 12, 16, 24),則函數會打印錯誤信息。
五、所需資源
5.1 硬件資源
????????1. XSRP軟件無線電平臺及其相關連接線
? ? ? ? 2.電腦(操作系統:Win7及其以上;以太網網卡:千兆;)
5.2?軟件資源
? ? ? ? 1. LabVIEW2015
????????2. Matlab2012b
????????3. XSRP軟件無線電平臺無線收發軟件測試軟件(需要配合XSRP軟件無線電平臺硬 件才能使用)
六、系統調試
????????基于軟件無線電平臺的QPSK(Quadrature Phase Shift Keying)頻帶通信系統設計和系統調試是一個復雜的過程,涉及信號處理、通訊原理和系統集成等多個方面。
6.1?設計階段
????????理解QPSK調制解調原理,包括信號的相位變化代表不同的符號(比如00, 01, 10, 11),確定系統要求,如數據速率、頻帶寬度、誤碼率等。
????????選擇軟件無線電平臺,設計QPSK調制解調鏈路,包括濾波器、放大器、頻率合成器等,使用當前的軟件(如GNU Radio、MATLAB/Simulink等)進行算法實現,編寫代碼實現QPSK的調制和解調過程,包括符號映射、脈沖整形、頻率轉換等,在軟件中進行系統仿真,驗證鏈路性能,進行誤碼率(BER)測試,確保信號質量滿足設計要求。
6.2?調試階段
????????設置軟件無線電硬件參數,如中心頻率、增益、采樣率等、確保天線和其他RF組件適合所選的頻率范圍和功率水平、在實驗環境中測試發射和接收路徑、檢查硬件平臺與軟件設計的接口是否正確、在實際信道條件下評估BER和信號質量、如果有必要,調整硬件設置和軟件算法以提高性能。
????????如果發現性能低于預期,進行問題排查、檢查硬件連接、軟件配置等,確保沒有錯誤、在實際環境下進行長時間的測試,以確保系統穩定性、記錄性能數據,并在不同條件下對系統進行優化。
6.3?調優和優化
????????根據測試結果調整濾波器系數、同步算法、增益控制等參數、考慮環境因素(如多徑效應、干擾等),優化系統以適應不同場景、文檔化整個設計和調試過程,包括參數設置、問題及其解決方案、性能記錄等,以便未來參考和進一步開發。
七、總結
????????在深入參與基于軟件無線電平臺的QPSK頻帶通信系統設計實驗的過程中,我有幸親身體驗到項目模塊設計的精密與卓越。然而,盡管項目的指導材料在大部分方面都做得詳盡且具體,為我們的實踐操作鋪就了扎實的路徑,但在少數環節,如信道估計與均衡的設計部分,我發現指導說明相對模糊,這在一定程度上增加了我們理解和實現的難度。
????????對于這一挑戰,我們有一個建議。在未來的指導過程中,我們可以嘗試采取更加循序漸進的方式。比如,對于一些關鍵但難以理解的部分,我們可以向學生推薦一些相關的學習資料,并指明其中哪些章節或段落是重點閱讀的內容。這種指導方式既可以鍛煉學生的自主學習能力,又可以避免直接給出答案,鼓勵學生自行深入思考和進行探索。
????????此外,我必須贊賞項目設計中調制與解調部分的前后呼應。這種設計增強了實驗的連貫性,讓我們在實現過程中能夠更全面、深入地理解通信系統的整體運作原理。這種巧妙的設計思路無疑對于我們知識的鞏固和技能的提升起到了重要作用。
????????最后,我衷心希望武漢易思達能夠延續這樣的實習機會,為廣大的學生群體提供這樣寶貴的實踐平臺。通過這種實習項目,我們不僅能夠將理論知識與實際操作相結合,進一步為我國高校教育注入更多的優秀資源。這種實踐機會對于培養學生的創新精神和工程實踐能力具有至關重要的意義,同樣也是提升我國高等教育質量的重要手段。我期待在未來,有更多的學子能夠從這樣的實訓項目中受益,共同為推動我國通信技術的發展和人才培養的進步貢獻力量。