【USRP X310】如何将你的X310转化为USRP RIO 可以用于FPGA编程

news/2024/11/16 20:49:29/

X310 转化为USRP RIO

  • X310产品
    • X310和NI-USRP对应关系
  • 简介
  • 第一步
    • 原理解释
    • 打开工具
    • 运行 Initialize Flash.vi
    • 可以去选择设备类型
    • Hardware Current Version 如何选择
  • 第二步
    • 创建工程
    • 运行校准程序
  • 附录:射频子板的ID
    • WBX
    • SBX
    • CBX
    • UBX
    • TwinRX

X310产品

在这里插入图片描述

X310和NI-USRP对应关系

NI-USRPEttus X310
USRP-2940RX310 + WBX (x2)
USRP-2942RX310 + SBX (x2)
USRP-2943RX310 + CBX (x2)
USRP-2944RX310 + UBX (x2)
USRP-2945RX310 + TwinRX (x2)
USRP-2950RX310 + WBX (x2) + GPSDO
USRP-2952RX310 + SBX (x2) + GPSDO
USRP-2953RX310 + CBX (x2) + GPSDO
USRP-2954RX310 + UBX (x2) + GPSDO
USRP-2955RX310 + TwinRX (x2) + GPSDO

简介

NI发布的USRP版本事封装测试好的,所以自己要攒一台的话,是可以用X310加对应的子板,再通过转换工具,就可以将一台X310转化为NI-USRP,转化之后,上位机就不不再显示X310了,而是显示对应的USRP型号。

该操作是没有什么风险的,只要按照教程来做即可。而且只有两个步骤,非常的简单。

第一步

原理解释

第一步就是要重新烧些X310的内部寄存器,这个寄存器叫EEPROM,和你学过的单片机是一样的,X310也适用它来保存一些关键的信息,当上电的时候,将会自动进行读取。

打开工具

要重新烧写EEPROM这个寄存器,是需要打开烧写工具的,工具的位置在:

C:\Program Files (x86)\National Instruments\LabVIEW 2015\vi.lib\LabVIEW Targets\FPGA\USRP\niusrprio_tools.llb

不同的LabVIEW版本是打开的路径是不一样的,需要更换年份,上面这个文件夹是2015年的,如果你的LabVIEW是2020年的,则更换年份,得到的地址就是:

C:\Program Files (x86)\National Instruments\LabVIEW 2020\vi.lib\LabVIEW Targets\FPGA\USRP\niusrprio_tools.llb

工具打开之后就是下面的这个样子:
在这里插入图片描述

运行 Initialize Flash.vi

点击 Initialize Flash.vi 这个文件,并打开,然后运行这个程序。

使用 Initialize Flash.vi 将会加载设备上射频子板的 ID号 和序列号,加载出来的序列号和子板上的序列号不一定一致,这是正常现象,不需要担心自己买到的是二手货。

显示如下:
在这里插入图片描述

可以去选择设备类型

在这里插入图片描述

Hardware Current Version 如何选择

在这里插入图片描述
这个需要拆开盖子去看X310母版上写的硬件的修订版本,这里有严格的版本对于关系。

字母修订版本Hardware Current Version 数字写多少Device Mode
A13.3V
B23.3V
C33.3V
D43.3V
E53.3V
F63.3V
G71.8V
H81.8V

你在上面选择Device Mode的时候,一定会看到有电压的选项,一般你看到应该是有疑惑的,电压一定要根据硬件的版本去选择,不懂可以问我,选择错了,可能没法用,需要重新烧写正确的配置才可以。

第二步

当你完成USRP的转换之后,接下来就需要进行校准了,这个工作将会决定你采集到的射频信号的质量了,所以一定需要进行。

校准的是IQ imbalance corrections,校准之后的参数将会固化到EEPROM中,这样每次运行的时候,将会使用这个校准数值。

创建工程

将 IQ 不平衡校正加载到子板 EEPROM 中的最简单方法是创建一个示例 USRP-RIO 项目。 在默认的 LabVIEW 窗口中,单击创建新项目并选择 NI-USRP Simple Streaming:
在这里插入图片描述

运行校准程序

创建项目后,导航至项目窗口中的实用程序并打开 Self Correct RX IQ Offset.vi:
在这里插入图片描述
该.vi 将自动计算最佳 IQ 不平衡校正因子并将其加载到子板 EEPROM 上的出厂默认位置。

附录:射频子板的ID

WBX

Name (as reported by UHD)RX IDTX IDNotes
WBX LO0x00510x0050(Not registered in UHD)
WBX0x00530x0052
WBX + Simple GDB0x00530x004f
WBX v30x00570x0056
WBX v3 + Simple GDB0x0057 0x004f
WBX v40x00630x0062
WBX v4 + Simple GDB0x00630x004f
WBX-1200x0081 0x0080
WBX-120 + Simple GDB0x00810x004f

SBX

Name (as reported by UHD)RX IDTX IDNotes
SBX0x00540x0055v3
SBX v40x00650x0064
SBX v50x00690x0068
SBX-1200x00830x0082

CBX

Name (as reported by UHD)RX IDTX IDNotes
CBX0x00670x0066v3
CBX-1200x00850x0084

UBX

Name (as reported by UHD)RX IDTX IDNotes
UBX v0.30x00740x0073Prototype
UBX v0.40x00760x0075Prototype
UBX-40 v10x00780x0077
UBX-160 v10x007A0x0079

TwinRX

Name (as reported by UHD)RX IDTX IDNotes
TwinRX v1.00x00910xffff(0x90 Reserved)

参考:https://kb.ettus.com/Converting_an_X310_into_an_NI-USRP_Rio


http://www.ppmy.cn/news/897907.html

相关文章

我的世界服务器卡无限刷物品,我的世界怎么刷物品 我的世界无限刷物品教程...

第一种:这种最麻烦的方法速度慢而且只可以刷可以盖的东西如石头、铁箱等。不可以卡鸡、蛋糕 等不可以堆积的东西。 好首先把要刷的材料随便放在一个地方。可以是土上面,或者沙子上面。然后把你要刷的东西盖在那边。之后火速的按home键,并且把…

Minecraft Mod 开发:4-创造模式物品栏

今天我们来补一补上一期的坑。 4.0.前言(可跳过) Q 为什么托更? A 疫情&开学。 4.1.基础部分 4.1.1.创建创造模式物品栏 在主包com.rycb.etech下新建一个包tab,作为创造模式物品栏的包。 在com.rycb.etech.tab包下新建类ECTab.java并继承Creativ…

我的世界4个实用指令生成网站:自定义物品/名称,自定义药水,自定义实体,数据包编写

1.https://www.gamergeeks.net/apps/minecraft/give-command-generator [点击进入] 这个网站可以制作自定义物品,还可以切换版本,自定义物品名称,设置黑体、粗体等 2.https://minecraft.tools/en [点击进入] 这个网站功能很全,包括…

鼠标移动到物品上显示物品名字,点击后显示物品信息

鼠标放在物品上显示物品名字,点击物品后出现物品信息 首先创建一个Cube,并且给它添加BoxColider组件,使它可以被检测到。然后新建一个C#脚本,并添加给Cube。 C#源代码: using UnityEngine; using System.Collection…

我的世界服务器没有显示物品ID,我的世界怎么查看物品ID

命令方块物品代码ID: 0 minecraft:air Air 空气 1 minecraft:stone StoneSB 石头 2 minecraft:grass Grass Block 草方块 3 minecraft:dirt DirtSB 泥土 4 minecraft:cobblestone Cobblestone 圆石 5 minecraft:planks Wood PlanksSB 木板 6 minecraft:sapling Sapl…

迷你世界物品查询代码lua

迷你世界物品查询 local A{} local B{} local n0 local s0 local function add2() for j1,500 do --等待1秒 --threadpool:wait(2) i(n-1)*500j local result,nameItem:getItemName(i) --local result,name1Creature:getActorName(i) --local result,name1Player:getNic…

【随笔】持续伤害的设计模式思考(draft)

README 关于一个伤害数值的计算模拟。 灵感与思考 破败王者之剑的伤害是当前生命值的 y%在看 som 关于 Path of Achra 这个游戏的录播的时候,让我对持续伤害有了想法。 我其实想到了很多伤害模式: 比如叠毒层数,每秒造成层数的伤害&#x…

C/C++动态内存开辟(详解)

目录 一,mallloc 函数参数: 函数原理: 二,calloc 函数参数: 函数原理: 三,realloc 函数参数: 函数原理: 五,小结 2)对开辟空间的越界访问 3&#x…