ADALM-PLUTO主动学习模块(PlutoSDR)易于使用,有助于向电气工程专业学生介绍软件定义无线电(SDR)、射频(RF)和无线通信的基础知识。该模块针对不同层次和背景的学生而设计,可同时用于教师辅导和自主学习,旨在帮助学生在攻读理学、技术或工程学位时为实际RF和通信打下基础。
PlutoSDR与主机配合使用时,充当便携式实验室,可增强课堂学习。MATLAB和Simulink是由PlutoSDR支持的两个主要软件包,它提供直观的用户图形用户界面(GUI),让学生可以更快学会,更巧妙地开展工作并探索更多知识。
PlutoSDR具有独立的接收和发射通道,可在全双工模式下工作。主动学习模块可以在325 MHz至3800 MHz频率范围内以最高每秒61.44MSPS产生或捕获RF模拟信号。PlutoSDR非常小,可装在衬衣口袋中,完全独立自足且由配有默认固件的USB供电。由于PlutoSDR通过libiio驱动程序启动,因此它支持OS X®、Windows®和Linux®,可让学生在多台设备上学习和探索。
PlutoSDR提供许多适合SDR项目的可用在线教程,拥有涵盖众多主题的实验室和教学资料,如ADS-B航空器位置、接收NOAA和Meteor-M2天气卫星图像、GSM分析、TETRA信号监听、寻呼机解码等!
matlab 提供了简单易用的 PLUTO 访问接口,使得用户非常方便地使用使用PLUTO。
我们只需考虑基带处理部分,PlutoSDR替我们将基带信号“搬”到频带,我们只需设置频带的中心频率、带宽、收发的增益、收端接收一帧容纳的比特数等参数。
1,在matlab中 进行数据接收。
clear all
close all
clc
%pluto rx 设置
rxPluto = sdrrx('Pluto');
rxPluto.CenterFrequency = 2400000000; %设置中心频率 2.4GHz
rxPluto.BasebandSampleRate = 18e6; %设置采样率 :10MHz
rxPluto.SamplesPerFrame = 1024 ; %设置采样点数:1024
fs = rxPluto.BasebandSampleRate ;
N = rxPluto.SamplesPerFrame ;
freq = (-N/2:N/2-1)/N* fs/1000000 ;
% 接收信号
% data即收到的信号,datavalid指示数据是否有效,overflow指示数据是否溢出。
[data,datavalid,overflow] = rxPluto(); %利用 pluto进行数据接收
XK = fft( data ); %fft变换
figure(1);
plot(freq,20*log10( fftshift(abs( XK )) ) ); %绘制数据的频谱
figure(2);
plot(real(data)); hold on; %绘制数据实部
plot(imag(data)); %绘制数据虚部
将 pluto 通过 USB 插入到电脑主机,运行上述 matlab 代码。通过信号源给pluto 输入一个频率为 2.401 GHz 的信号,结果如下。
频域图 ,可以观察到在 1.02MHz 处存在信号。
时域图 ,I,Q两路数据如下,比较标准的正弦波。
2,在matlab中 进行数据发送
例子
发送、接收一个单频信号:
参数设置:
中心频率:800MHz
带宽:100kHz
发送端增益:0dB
接收端增益:30dB
接收端默认接收数据:20000bit,若要修改,在sdrrx对象中添加'SamplesPerFrame',20e4,数据长度自定义。
发送端代码:
txPluto = sdrtx('Pluto','RadioID','usb:0','CenterFrequency',800e6, ...'BasebandSampleRate',100e3,'ChannelMapping',1,'Gain',0);
modSignal=exp(1i*2*pi/128*(1:1500000)).';
i=100;
while i
txPluto(modSignal);
i=i-1
end
运行上述脚本,将 pluto TX 端口连接到 示波器 或 频谱仪 上,即可观察到发送的信号。
PlutoSDR 官方网站:https://wiki.analog.com/university/tools/pluto