我有一台 Ettus E310,我使用 UHD 3.14 创建包含 Window、FFT 和 LogPwr RFNoC 模块的自定义 FPGA 映像。 在那个版本中,我像这样使用了 uhd_image_builder.py:
source ~/rfnoc/src/uhd/fpga-src/usrp3/top/e300/setupenv.sh
cd ~/rfnoc/src/uhd/fpga-src/usrp3/tools/scripts
./uhd_image_builder.py fft window logpwr
-t E310_RFNOC_sg3 -d E310 -m 5 --fill-with-fifos
然后我使用 uhd::rfnoc::graph::connect() 在我的 C++ 应用程序中将这些块连接在一起。 一切都很好。
现在,我正在尝试迁移到 UHD 4.7。 我正在尝试创建包含相同块的 FPGA 映像。
我注意到 uhd_image_builder.py 已被 rfnoc_image_builder 取代。我必须编辑 .yaml 文件并将所需的块添加到 noc_blocks 部分并将它们全部连接在一起,而不是简单地列出要包含在命令行上的块。 我对此很陌生,我不知道如何将它们连接在一起。
有没有办法只指定要包含哪些块,然后担心稍后在运行时通过 uhd::rfnoc::graph::connect() 连接它们?
而且,是的,我确实读过https://kb.ettus.com/Getting_Started_with_RFNoC_in_UHD_4.0#RFNoC_Image_Builder,它提供了一个很好的具体示例,但它并没有解释发生了什么,使我能够创建包含 Window、FFT 和 LogPwr RFNoC 模块的 FPGA 映像。
任何人都可以启发我,或者向我指出解释 UHD 4.x 中 FPGA 自定义图像的资源吗?
摘自问题。
要记住的重要一点是所有流媒体 端点会自动连接到交叉开关,这意味着您可以 在代码中动态连接 RFNoC 块。就我而言,我总是想要 窗口->FFT->logpwr。端点连接到 window 和 logpwr。 我永远不想在 FFT 或检查的输入端注入一些东西 FFT 输出端的某些东西。使 window->FFT->logpwr 成为静态 路线还节省了 FPGA 资源,为其他模块留出更多空间。
以下是 .yaml 文件中的连接:
- { srcblk: radio0, srcport: ctrlport, dstblk: _device_, dstport: ctrlport } - { srcblk: _device_, srcport: radio, dstblk: radio0, dstport: radio } - { srcblk: _device_, srcport: time, dstblk: radio0, dstport: time } - { srcblk: ep_fft, srcport: out0, dstblk: window0, dstport: in_0 } - { srcblk: window0, srcport: out_0, dstblk: fft0, dstport: in_0 } - { srcblk: fft0, srcport: out_0, dstblk: logpwr0, dstport: in_0 } - { srcblk: logpwr0, srcport: out_0, dstblk: ep_fft, dstport: in0 } ```