【Pluto SDR】简单模拟通信系统
【Pluto SDR】簡單模擬通信系統
- 引言
- 模擬通信系統模型
- 基于SDR的Pluto模擬信號收發
- 總結與分析
- 代碼
引言
我是一名通信工程的一名大三學生。這是,第一次寫小文章分享呢。以前包括現在也一直欽佩CSDN博客上一些大佬們的分享,所以這次拿著自己的期末報告來稍稍分享一下。如果以下分享有什么問題,大家可以在評論區指點哈~
首先,我們從SDR的概念入手,幫助大家稍稍了解。
軟件無線電,即Software Defined Radio,SDR。通俗來講,SDR就是基于通用的硬件平臺上用軟件來實現各種通信模塊。
概念中有兩個關鍵詞,“通用硬件平臺”和“軟件”?!巴ㄓ糜布脚_”就是說我們能基于這個硬件平臺實現各種各樣的通信功能,而不是說一個硬件平臺只能實現一種通信功能,那么本次實驗我們利用的“通用硬件平臺”就是Pluto Radio;“軟件”來實現通信模塊是相對于傳統的無線電技術來講的,傳統的無線電通信模塊都是用硬件電路來設計,一個通信電路只能完成一種通信功能,開發周期長,開發成本高,而且一旦設計好后功能就無法改變。軟件化可以加快通信模塊的開發速度,降低開發成本,便于調試和維護。
我們可以用下圖來簡單看看軟件無線電基站與傳統的無線電基站的區別。圖片一個是傳統的大基站,另一個是基于軟件無線電的小型化基站。傳統的商用基站體積較大,需要設計很多專用的硬件電路;而SDR基站體積較小,大部分通信功能由軟件實現。
比較通用的SDR系統分類是以SDR的硬件平臺來分類。SDR系統分為三類:基于FPGA的SDR系統,基于DSP的是SDR系統和基于GPP的SDR系統。
其中,GPP,General Purpose Processor,通用處理器。我們可以簡單的把GPP理解為電腦,即我們使用的臺式機、筆記本等?;贕PP能高效地開發各種通信模塊、通信系統,因為我們可以很方便的基于各種高級編程語言、各種鏈接庫來實現各種通信功能,如編碼、調制等。而且,基于GPP的SDR系統開發相比其他兩種具有較低的開發門檻,較低的開發成本,開發周期也較短、便于調試等。
接下來的實驗中我們均利用電腦對Pluto Radio進行通信收發控制。
模擬通信系統模型
通常,按照通信傳輸的信號類型區分,可以將通信系統分為模擬通信系統和數字通信系統。
本次實驗,我們的目標是對模擬信號的發送和接收。所以,我們先討論一下模擬通信系統模型。
在模擬通信系統模型中,一般分為兩種,一種是基帶模擬信號傳輸,另一種是帶通信號傳輸。
由于無線電通信往往需要通過自由空間這一信道,所以基帶傳輸無法實現,則需要進行第二種傳輸方式——將有用信號進過調制器,通過天線發射;將接收天線上接收到的信號通過解調器,即可得到恢復的信號,為信宿所用。
基于SDR的Pluto模擬信號收發
為了探尋Pluto Radio收發前后信道對信號的影響,采用多種基本簡單信號進行試驗——正弦波、鋸齒波、三角波以及方波。
(1)正弦波的試驗
下圖為待發送的信號——一個周期的正弦波
統一Pluto Radio的發射機和接收機的各項參數:
1、中心頻率為2.5GHz
2、基帶采樣速率為1MHz
3、設置接收機中心頻率增益來源為手動,并設置接收機增益為40dB,發射機增益為0dB。
4、設置接收機每次接收數據的采樣數目,根據發送數據的點數而定。
在接收數據的過程中,可能會發現存在自動增益控制的過程,所以會選擇先接收并丟棄前幾幀數據,繼而再接收一幀數據進行分析。
以上是接收端的一幀數據。可以發現其接收了好幾個周期的信息,且幅度整體發生變化,即平均功率未平衡。不過,基本波形未出現明顯的畸變。
以類似的方法,對鋸齒波、三角波以及方波進行試驗。
(2)鋸齒波的試驗
下圖為待發送的信號——一個周期的鋸齒波。
下圖是接收信號,發現其在每個周期的起始位置出現了明顯的畸變現象;同時在鋸齒部分也存在了不平滑現象。
(3)三角波的試驗
下圖為待發送的信號——一個周期的三角。
下圖是接收信號,因為不存在高頻劇烈諧波分量存在,所以轉折處畸變較小;同時在鋸齒部分也存在不平滑現象。
(4)方波的試驗
下圖為待發送的信號——五個周期的方波。
下圖是接收信號,由于信號存在無限的諧波分量,所以在采樣過程中將其濾除了部分極高頻的分量,而未被濾除的較高頻分量則形成了過沖現象。
總結與分析
綜上實驗,我們實現了一個基于Pluto Radio和MATLAB平臺的簡易模擬通信系統。
由于理論基帶采樣頻率的限制,所以對于方波這種存在豐富的諧波分量的簡單波形則無法完美接收。
總的來說,本次實驗對模擬通信系統的理論的理解,對系統的實現等方面有了進一步的理解和認識。
代碼
以下是發送端的MATLAB代碼
%-------------------變量初始化-------------------------- clc;clear;close all sps = 8;%采樣速率 單位:采樣點數/符號 N = 0;%繪圖編號 %% %模擬信號發生器 Num = 100;%信號長度 dt = 1/Num; t = dt : dt : 1; s = sin(2*pi*t)%正弦波模擬信號 % s = t;%鋸齒波模擬信號 % s = [(dt:dt:0.5),(0.5:-dt:dt)]%三角波模擬信號 % s = square(10*pi*t,50);%方波模擬信號redun = zeros(1,10)+1i*zeros(1,10);%尾部信號冗余 Tdata = complex([s]);%繪制待發序列 N = N+1;figure(N);hold on;grid on; plot((dt:dt:dt*length(Tdata)),Tdata); xlabel("Time");ylabel("Amplitude"); set(gca, 'XTickMode', 'manual', 'XTick', [0.25,0.5,0.75,1]); title("Signal from Transmitting Terminal") %% %Pluto發送器 tx = sdrtx('Pluto','CenterFrequency',2.5e+09,...'BasebandSampleRate',1e6,...'Gain',0); %Pluto接收器 rx = sdrrx('Pluto','CenterFrequency',2.5e+09,...'OutputDataType','double',...'BasebandSampleRate',1e6,...'SamplesPerFrame',5000,...'GainSource','Manual',...'Gain',40); %% %信號發送 tx.transmitRepeat(Tdata'); %信號接收 for k=1:3rx(); end Rx_Sig = rx(); release(tx);%釋放Pluto %% %繪制接收到的信號 N = N+1;figure(N);hold on;grid on; plot((dt:dt:dt*length(Rx_Sig(end-500:end))),Rx_Sig(end-500:end)); xlabel("Time");ylabel("Amplitude"); % set(gca, 'XTickMode', 'manual', 'XTick', [0.25,0.5,0.75,1]); title("Signal from Transmitting Terminal")總結
以上是生活随笔為你收集整理的【Pluto SDR】简单模拟通信系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Live-Server使用
- 下一篇: 2、frida入门教程-hook