2021-07-03

BladeRF基于matlab的GPS L1接收机

在这里插入图片描述

0.简单说明

0.1开发环境

  1. 本人使用MATLAB 2021 ,低版本应该可以使用,但是不做保证
  2. 需要额外下载链接库(链接库会包含在本项目中,其他文件以及bladerf测试详见nuand网站
  3. 项目使用BladeRF XA4)

0.2版本信息

  1. 当前版本:1.0.2
  2. 更新日期:18/11/2021
  3. 作者:xiaoyeyimier
  4. 联系方式:xiaoyeyimier@163.com
  5. 当前md仅用作交流,维护程序,谢谢。

0.3 其他说明

  1. 如有不足之处请gitee下Issue或者邮件我

1.BladeRF Setup

参考Install documents

1.1下载Installer

最新的安装程序可以在以下的链接下载到:

https://nuand.com/windows_installers/bladeRF-win-installer-latest.exe

历史版本见:

https://nuand.com/installers.php

在安装程序成功完成前,不要连接bladeRF,除非固件升级控制台指示这样做。首先运行exe文件。如果Windows提示是否允许程序执行,请在单击“是”之前验证该发行商是否为Nuand, LLC。启动后,将显示一个欢迎视窗,如下所示。根据提示操作就行。

在这里插入图片描述

1.2 固件更新

下面的页面提供了在安装过程中更新bladeRF固件的选项。v2.0.0 bladeRF固件引入了一个新的USBVID/PID。这需要libbladeRF (bladeRF.dll) v1.16.0或更高版本。然而,第三方应用程序或其他系统(例如,实时映像、Linux发行版)可能提供较旧的libbladeRF版本,这些版本无法检测到运行这个新固件的设备。

因此,v1.9.1固件也提供了反向兼容性的目的。总是可以使用bladeRF-cliprogram2在稍后的时间升级(或降级)固件。FX3固件镜像在bladerf安装中的FX3固件文件夹中提供。这个安装程序也可以重新运行以在v1.9.3和v2.0.0固件之间切换。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sPT9TLSZ-1637484445278)(https://i.loli.net/2021/11/18/WEKfm3ujV6g1nQ9.png)]

1.3 MATLAB®搜索路径

如果检测到安装了64位MATLAB,将显示以下视窗。建议选择将bladeRF项添加到MATLAB搜索路径的默认选项。

install3.PNG

1.4 开始菜单

这个页面提供了自定义开始菜单位置的功能,在该位置可以放置到bladeRF-cli和卸载程序的快捷方式。

install4.PNG

1.5 安装

按照提示操作(懒得翻译了,ψ(`∇´)ψ)

1.6 系统路径

在安装结束时,将显示以下视窗。将bladeRF项目添加到%PATH%将允许从cmd.exe执行bladeRF-cli,以及其他程序来定位bladeRF.dll

install5.PNG

1.7 安装完成

完成前面的步骤后,将显示最后的完成视窗。重要地,为了使对系统路径和MATLAB搜索路径变量的更改生效,您可能需要注销并重新登录

1.8 测试基本设备接入

验证安装成功的一种快速方法是使用bladeRF-cli程序查看有关bladeRF的信息。可以从开始菜单中选择的位置执行bladeRF-cli的快捷方式。也可以通过cmd.exe执行命令:在命令行界面中,bladeRF-cli -iOnce可以通过version、info、print命令获取设备信息。示例输出如下所示。

install6.PNG

1.9 MATLAB搜索路径

如果在1.3小节中没有将bladeRF项添加到MATLAB搜索路径中,那么以下路径必须提供给MATLABaddpath函数。;例如:

c:\Program Files\bladeRF\x64

C:\Program Files\bladeRF\matlabChange C:\Program Files\bladeRF

2.项目简介

2.1 目的

接IQ GPS L1数据,验证BladeRF功能

2.2 基本baldeRF设置

基本配置见于:\SetBladeRF.m

    %% set bladerf
    rootpath = cd;
    DevSettings.sampletime       = 30;                                     % Data receiving time      [s]
    DevSettings.num_rxs          = 10;                                     % Number of batches stored [times]
    DevSettings.Fs               = 6e6;                                    % Sampling Frequency       [Hz]
    DevSettings.Fc               = 1575.42e6;                              % Center Frequency         [Hz]
    DevSettings.Bw_rx            = 1.5e6;                                    % Bandwidth                [Hz]
    DevSettings.num_buf          = 512;                                    % buffer size of BladeRF
    DevSettings.channel          = 'RX2';                                  % Choose Channel 'RX1'/'RX2'
    DevSettings.biastee          = 1;                                      % Biastee (1/0 = open or close) 
    DevSettings.dataType         = 'double';                               % Data type (BladeRF & GPS Receiver)
    DevSettings.SavePath         = [rootpath,'\',...
                                    datestr(now,'mmmm-dd-yyyy__HH-MM-SS')];% Save file path named as now time
    DevSettings.FileName         = datestr(now,'mmmm-dd-yyyy__HH-MM-SS');  % Stored file named as now time
    DevSettings.LibPath          = 'C:\Program Files\bladeRF\matlab';      % BladeRF matlab lib
    DevSettings.RealTimeProcess  = true;                                   % if RealTimeProcess = false,use history data
    DevSettings.HistoryDataPath  = 'C:\matlab项目\BladeRF_GPS\有源天线_10_8\'; % It only works when RealTimeProcess = false
    DevSettings.HistoryDataName  = 'GPSData@Fs10000KHz_Fc1575420KHz_Bw200_';   % It only works when RealTimeProcess = false
    DevSettings.FileType         = 'txt';                                  % File type (BladeRF & GPS Receiver)
字段单位意义
sampletime采样时间
num_rxs储存批次数
FsHz采样频率
FcHz中心频率
Bw_rxHz带宽
num_bufBladeRF的缓冲大小
channel‘RX1’/‘RX2’通道号
biastee1/0宽带放大器馈电电路
dataTypeMATLAB数据格式保存数据格式
SavePath可设置保存数据路径,不建议修改
FileName可设置保存数据文件名,不建议修改
LibPath自行选择BladeRF链接库位置(忘记了戳这里,再戳这里
RealTimeProcesstrue/falsetrue接收机直接使用当前数据,false使用历史数据
HistoryDataPath自行选择如果选择回放历史数据,其路径
HistoryDataName自行选择如果选择回放历史数据,其文件名
FileTypetxt读取和保存文件的类型

我们知道matlab是无法实现多线程的,因此我们再文件存储时就没法进行接收机的数据读取,造成实际接收数据存在一定的gap,所以采样时间、储存批次数之间的关系就显得很重要,储存批次数太大,gap过多可能导致无法跟踪。储存批次数太小,开辟内存太大,可能导致程序卡死。如当前程序采样30秒,分10批次,一次采集3s数据,需要开辟
2 × T t o t a l s a m p l e N r x s × F S × L D a t a T y p e = 2 × 30 10 × 1 0 7 × 8 = 480 M B y t e s 2\times\frac{T_{totalsample}}{N_{rxs}}\times F_S\times L_{DataType}=2\times\frac{30}{10}\times10^7\times8=480MBytes 2×NrxsTtotalsample×FS×LDataType=2×1030×107×8=480MBytes

2.2 输出格式

成功运行一次程序,输出一个文件夹,文件夹格式mm-dd-yy_hour-min-sec,如下图所示:

output1.png

文件夹中包含Idata,Qdata,Log三个文件。

其中Log文件记录了一些当前运行时的接收机设置

output3.png

接收机部分是一个功能非常不完全的接收机,实际上我只是为了验证数据接收完好,读取有效而抄了一小段程序。仅包含了捕获和跟踪,没有定位。欢迎使用者自己开发。~( ̄▽ ̄~)~

显示捕获结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z4ibH7HY-1637484445292)(https://m1.im5i.com/2021/11/18/UnCJc3.png)]

显示跟踪结果(这个中间掉电了┐( ‾᷅㉨‾᷅ )┌ )

UnCfiM.png

3.硬件链接

硬件连接需要注意:

  • USB保证是3.0接口
  • 需要一个biastee,不知道为什么内置biastee打开了也没用
  • 不要用电脑USB端口给biastee供电,电流不够,需外接移动电源

4.接收机配置

%% Processing settings ===========================================
% Number of milliseconds to be processed used 36000 + any transients (see
% below - in Nav parameters) to ensure nav subframes are provided
%% read settings of bladerf
Fs = DevSettings.Fs;
IF = DevSettings.Fc-1575.42e6;
Bw = DevSettings.Bw_rx;
ms2Process        = 25000;        %[ms]
ms2Skip           = 50;        %[ms]
dataType = DevSettings.dataType;
eval(['Tempa=',dataType,'(0);']);
Info_A = whos('Tempa');
BytesPerData = Info_A.bytes;
skipNumberOfBytes = ms2Skip*Fs*BytesPerData*1e-3;

%% Acquisition settings ==========================================
% List of satellites to look for. Some satellites can be excluded to speed
% up acquisition
% Intermediate, sampling and code frequencies
AcqSettings.samplingFreq = Fs;
AcqSettings.codeLength   = 1023;
AcqSettings.IF           = IF;
AcqSettings.acqSearchBand = 10;
AcqSettings.acqSatelliteList = 1:32;
AcqSettings.acq_Acc_ms_No = 5;
AcqSettings.OnlyI = false;
AcqSettings.codeFreqBasis = 1.023e6;
AcqSettings.acqThreshold = 2;
AcqSettings.numberOfChannels = 8;
%% Tracking loops settings =======================================
%% Fields of settings used
TrackingSettings.msToProcess = ms2Process;
TrackingSettings.skipNumberOfBytes = skipNumberOfBytes;
TrackingSettings.numberOfChannels = 8;
TrackingSettings.codeFreqBasis = 1.023e6;
TrackingSettings.samplingFreq = Fs;
TrackingSettings.codeLength = 1023;
TrackingSettings.Pa = 5e-3;
TrackingSettings.BytesPerData = BytesPerData;
% Code tracking loop parameters
TrackingSettings.dllDampingRatio         = 0.7;
TrackingSettings.dllNoiseBandwidth       = 2;       %[Hz]
TrackingSettings.dllCorrelatorSpacing    = 0.5;     %[chips]
% Carrier tracking loop parameters
TrackingSettings.pllDampingRatio         = 0.7;
TrackingSettings.pllNoiseBandwidth       = 25;      %[Hz]
TrackingSettings.dataType                = dataType;
TrackingSettings.IsBlanking              = true;

4.1 捕获参数

字段单位意义
msToProcessHz采样频率
codeLengthbits伪码长度
IFHz中频
acqSearchBandKHz多普勒搜索带宽
acqSatelliteList编号无量纲卫星编号PRN
acq_Acc_ms_No个(毫秒)非相干积分时间(多少个毫秒)
OnlyItrue/false1只是用I支路,0用IQ支路
codeFreqBasisbits/s伪码速率
acqThreshold比值无量纲相关峰主峰与次峰门限
numberOfChannels最大捕获个数

4.2 跟踪参数

字段单位意义
skipNumberOfBytesbits跳过起始不稳定时间
Pa概率无量纲干扰消除虚警率(计算门限用)
dataTypeMATLAB数据格式读取·数据格式
IsBlankingSavePathtrue/false可设置是否进行干扰消除

其余参数为标准CT参数,懒得解释了。

5.下载

本项目可移步gitee下载,更多设置(比如Linux环境下配置和TX的使用)可以参考Nuand的GitHub仓库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值