文号
928173
阅读
21360
回复
19
收藏
5
NI PXIe-5644R矢量收发信机折腾小记
2024/01/07
IP:瑞士

eevblog上看到有大佬关注这款模块,其为NI的第一代PXIe VST产品,65M-6G RF,16 bits 120Msps AD/DA,80M基带带宽, 射频性能不错。可能因为其大量使用在OEM的移动通信测试平台上,而其基带带宽已经落伍,有不少淘汰产品,ebay上现价只要不到400刀。

更令人心动的是,eevblog上那位大佬做了一个转接板(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ),把PXIe的接口breakout直接转到PCIe上,没有任何bridge就可以挂在电脑PCIe bus上使用,连PXIe机箱和控制器都省了。(不需要进行任何配置,不需要伪装出一个chassis就可使用,直接在NI MAX里显示成一个RIO设备,简直是个奇迹)

本想着这么便宜买不了吃亏买不了上当,按开源文件嘉立创打了张转接板,ebay上整了一块回来。

。。。结果被卖家坑了,跨过半个地球给我发来一张坏得离谱的卡来 IMG20231212082431.jpg

明显被摔过,PXIe接口部分有一连接器一排针孔被摔堵,另一个press-fit的连接器直接失踪了。

ebay上跟卖家argue,找客服继续argue,最终结果同意退款不退货,变成我坑卖家了。

从另一家另买一块,接上转接板,上电一次成功。

success2.png success1.png

原来那块摔烂了的死马当活马医一下,digikey买来摔没了的插头(ERNI 973028),开拆。

全机分三块板, 发射,接收,处理各一块。撕开前面板覆膜,拧开螺丝,分离由一组排针和两个不认识的高速连接器互联的三个模块

IMG20240105224737.jpg IMG20240105224745.jpg IMG20240105224842.jpg

被摔没得连接器在FPGA处理板上,拆下二层小板,就露出了这个press-fit连接器原有的孔位

IMG20240105235005.jpg

拿来买来的新连接器,用锤子在心理接受范围内尽量用劲将其敲进去。。。这其实是件很困难的事,这玩意非常非常的紧,又离其他元件很近,敲得都有心理阴影了。。。最终没能完全敲到位,但是电气接触已经没问题,位置上也大概在mating的连接器的容限以内。

另外拆开发射模块看看(接收模块螺丝太紧不拆,第一次见Torx还能滑丝的)

IMG20240106102218.jpg IMG20240106102303.jpg IMG20240106102257.jpg IMG20240106102332.jpg IMG20240106102410.jpg IMG20240106102430.jpg IMG20240106102403.jpg IMG20240106102406.jpg

主控板板正面散热器下看上去用了一种会固化的蓝色的导热胶,完全无法拆开(要是FPGA寄了应该是无法维修的)。

背面屏蔽罩拆开如图

IMG20240106102018.jpg

IMG20240106102021.jpg

IMG20240106102033.jpg

IMG20240106102038.jpg

哦豁,有个钽电容看上去情况不妙,但是并没有短路。限于条件,暂时不换。

IMG20240106112018.jpg

接上转接板,上电测试,居然工作正常,实乃意外惊喜

vnc__06-01-2024 11-06-411.png

vnc__06-01-2024 11-13-22.jpeg


qiuzheru1作者
2年10个月前IP:瑞士
928195
3楼
引用warmonkey发表于2楼的内容
据论坛某位大佬说这玩意容易暴毙,我就没有浪费钱再尝试了。

这个其实是可能的,如此高集成度的东西几乎没法维护,看上去冷却可能也会是个问题(现在用一个比较暴力的风扇上下吹,FPGA温升控制在20度以下)。

但是价格如此亲民,如果不需要109 MHz to 270 MHz的发射,就算买两块一块用一块冗余,也几乎是现在最高性价比的宽带SDR方案。

最近要是有空,准备花点时间写一个GNURadio的接口。

引用
评论
qiuzheru1作者
2年10个月前IP:瑞士
928205
5楼
引用量子隧道发表于4楼的内容
撸主,这种针上有鱼眼的高密连接器,一般是用压力压进去。你可以试试桌面虎钳或铣床钳,甚至焊接夹具,找合适尺寸的垫块,慢慢压进去。

是的,这是正确的方法。用锤子只是因为没有合适的夹具,背面难以支撑。

引用
评论
qiuzheru1作者
2年10个月前修改于 2年10个月前IP:瑞士
928229
6楼

没有任何优化的GNURadio source调通了,主要的难度在于如何在Windows上编译好OOT模块。

除了NI RFSA驱动全家桶,radioconda外(和gnuradio-build-deps ?),还需要安装Boost库,Visual Studio 2019以及Windows SDK。懒得改CMake文件了,直接在生成的VS工程里把RFSA的header和lib加上就好。make install的时候注意按以下第二个链接配置好安装目录。

还有一个漏掉的大坑,OOT模块需要创建python binding,这一部分在Windows上因为各种bug无法自动生成(bindtool给castxml错误传入的'-fPIC',还有castxml在windows下根本就不兼容boost库(issue #36)),需要参考pybind手动创建。

参考了

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Untitled.png

引用
评论(5)
6
qiuzheru1作者
2年10个月前修改于 2年9个月前IP:瑞士
928281
7楼

用NI RFSA库直接暴力fetch和memcpy,在这台i7-3770古代电脑上完全稳定工作的极限在IQ rate 30MSps左右(block min output size 1M)。加上gr-fosphor当RTSA用能有很好的效果,视频是繁忙的2.4G波段,加上微波炉正常工作(没有打开门)时漏出微波的干扰。


VID20240112225151.mp4  点击下载 ‎

费了点功夫装上官方的LabVIEW Streaming案例(按序装新版labview,新版驱动全家桶,15版labview,VST IDL之后可在23版labview上跑),把buffer设大一点后40MSps TDMS格式stream到SSD也是可以的,但是更快就会underflow,不知道瓶颈在哪。

更新: 其实不需要memcpy的,直接把CF32或者CS16的buffer传给RFSA就行了。NI的complex type成员名字不同,但是物理存储格式恰好和std::complex兼容。

引用
评论
qiuzheru1作者
2年10个月前IP:瑞士
928302
8楼

找到瓶颈在哪了,PCIe链路宽度本来应该可以x4的,但是协商成了x1,不知道为什么。


引用
评论
qiuzheru1作者
2年9个月前IP:瑞士
928308
9楼

经查,原来是trivial的问题,做转接板的时候press-fit的MiniSAS连接器接触不良,万用表测不通。总共0,1,2,3四对差分TXRX,只有1是完全通的,主板居然能支持这种情况也不容易。直接焊上修复之后可以轻松跑满120Msps IQ rate,使用GT530古代显卡时,gr-fosphor也能用上使用全部80M带宽。

引用
评论
qiuzheru1作者
2年9个月前IP:瑞士
928460
10楼

SoapySDR接收也已经调通。但是不知为何,有一个s级的延迟,按MTU设置来看不应该呀。。。

SoapySDR.png

ebay上少于$500的货在上周末几天之内瞬间消失,怕不是有人看到了商机一起买走了。本来还想等等有没有便宜的5646,现在看来需要多等一会了。

引用
评论
qiuzheru1作者
1年2个月前IP:瑞士
946718
16楼
引用bluewater523发表于15楼的内容
膜拜大佬!这种方式能获得全性能吗?

当时写得很随便,直接在soapySDR例程上,改成一个NI RFSA的wrapper。最后带宽能跑满,但是有一个奇怪的延迟,后续也没找到花时间优化。

测试电脑的SSD挂了,现在代码除了一部分抢救出来的GNURadio的给了个eevblog网友(好像经过同意后他挂github了,但是其实难点全tm在怎么编译出来上),其他都丢了。但是现在有了AI工具,这种trivial的代码写起来很容易。

引用
评论
1
qiuzheru1作者
1年2个月前IP:瑞士
946719
17楼

另外不知道有没有人研究E6640A/E6650A/M9430A或者类似的M9420A/M9421A吗?我有一套E6650A刷FPGA固件时出错,把模块弄挂了,还有一个不便公开谈论的软件问题,不知道有没有人有相关经验,可以付费(如确有帮助,800RMB起价)求助。

引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的