我有一个Xilinx ZCU111板,我想在上面部署一个来自srsRAN的开源eNB(LTE基站(堆栈。
是否可以将UHD端口连接到ZCU111?如果可能的话,我该怎么做?如果没有,还有其他方法可以实施吗?
谢谢!
这是可能的——USRP X410使用相同的FPGA(XCZU28DR(。然而,这是一项艰巨的工作。您必须首先克隆X410的OE环境(从这里开始(,并将其与Xilinx提供的嵌入式环境合并(或者反过来(。
您还需要修改FPGA和MPM(一个主要在硬件上运行的Python守护进程(以匹配硬件。这包括控制参考时钟源之类的东西。在MPM中,有一个名为x4xx.py
的文件,它是X410 MPM支持的基础,我将从克隆和修改它开始。
在FPGA上,您应该坚持使用USRP存储库进行FPGA设计,但您必须从头开始重写约束文件和DTS文件,除非ZCU111和X410的引脚明显重叠。你可能想从一个不包含任何收音机的设计开始。
UHD可能不需要那么多修改(相对于所有其他修改(。然而,你可能想制作一个UHD可以识别的伪产品ID,尽管你也可以重复使用X410产品ID,因为大多数控件都在设备上(在MPM中,你已经修改过了(。
这是可能的。这是一项艰巨的工作,但不是一个有动力的人在业余时间无法完成的。我知道这一点是因为我做到了:github.com/ptrkrysik/uhd.
这里的一些建议很好。有些则不然。引脚完全不同,但不必从头开始重写限制-只需编辑即可删除与ZCU111上不存在的东西(如主板上的CPLD和ZBX子板上的CPLD(的连接,并更改引脚分配。关于DTS,我开始使用我自己的DTS覆盖FPGA部分,我想说这是这个项目中最大的死胡同之一,也是问题的根源。现在我使用的是DTS覆盖,它是X410的最小修改版本。
UHD部分的工作花费了比我预期的更多的时间。它需要创建一个使用RFSoC设置载波频率的假子板(我称之为ThinBX(。要做到这一点,我必须意识到UHD中存在一种叫做专家图的东西,它是用来做什么的,以及如何使用它
为了识别X411(这就是我将X410的端口称为ZCU111的方式(,我重用了ZCU111上的EEPROM。这需要对ZCU111的设备树进行更改,以便向系统公开EEPROM。用户必须备份EEPROM(使用EEPROM转储(并以USRP的格式写入数据(使用eeprominit实用程序(。
有很多时候,一个最小的更改需要大量的调试,比如找出为什么meta ettus的股票内核不能在ZCU111上启动,而Xilinx的fork在启动时没有问题。或者为什么在设备树中启用SFP+端口时内核崩溃。在这里,自动git平分为我节省了很多时间来跟踪关键的提交。
如果你需要更多关于如何使用该项目的信息,请联系我。我现在没有时间用这些信息创建网页。
如果你想将X410移植到其他/更便宜的硬件(如PYNQ(,你可以联系我。我可以给你一些建议。