GNU RADIO FAQ 常见问题

常见问题 (和答案). 摘自邮件列表及一些专家的回答.

  1. 概述问题
    1. 什么是 GNU Radio?
    2. 哪儿可以下载 GNU Radio?
    3. 所有部件没有被完全安装时我该如何?
    4. 没法编译时如何办?
    5. 我如何参与 GNU radio?
    6. 我能为 GNU Radio 做些什么贡献?
    7. 谁在维持 GNU Radio?
    8. 为何要开发 GNU radio?
    9. 我在哪儿可以提问一些这儿没有回答的问题?
  2. 项目的创立及运行
    1. 当导入 Python: _gnuradio_swig_py_runtime.so: undefined symbol: ...时出现错误,我该如何办?
  3. GNU Radio 的模块
    1. GNU Radio 供我支配的模块有哪些?
    2. 支持 BPSK/D-BPSK/QPSK/M-QAM/OFDM/ 吗?
    3. 为何用 Python? 我只想用 C++!
    4. Python不是很慢吗? 我的应用需要不同寻常的速度.
    5. 我如何编写模块?
  4. 通用软件无线电平台 (USRP)
    1. 什么是通用软件无线电平台?
    2. 可以把多个 USRPs 安装在同一主机(计算机)上吗?
    3. 我如何收集安装在同一USRP上的不同子板的数据?
    4. 什么是带内信号( inband signaling)我如何利用它?
    5. 在 USRP可以运行 802.11a/b/g/n吗?
    6. USRP 可以覆盖的频率范围多大?
    7. 可以在同一台 USRP 既发射又接受信号吗?
    8. USRP 如何决定在哪儿分配 所需的接受增益?
    9. 我可以管道流向和流开 USRP的I/O插针上的数字信号吗?

概述问题

Who/what/when/where/why/how (不一定非是这个顺序)?

什么是 GNU Radio?

GNU Radio 是一个通过最小程度地结合硬件,用软件来定义无线电波发射和接受的方式来搭建无线电通信系统的开源软件系统 。也即是说, 当今那些高性能的无线电设备中所用到的数字调制问题将变成软件问题。

哪儿可以下载 GNU Radio?

下载到 下载页面Download)去查看, 然后到 创建指导Build guide)去查看系统配置指导和 Gnu Radio 的系统的关联性.

所有部件没有被完全安装时我该如何?

取决于配置脚本决定的系统特性和关联性,有些部件没有被安装。尤其是那些Windows and Mac OS 关联模块,它们当然无法安装在仅需关联Linux的系统上了。 不用担心,只要没有配置错误信息出现,没有安装的部件便是你不需要的部件。

没法编译时如何办?

创建指导Build guide去查看过关联你的系统配置指导以及确信系统的关联安装正确吗?以及确信你的问题没有在当前 配置问题current known build problems)中列出。

严格按照指导,问题还是出现 那只好求助于 邮件列表Mailing list)了.

我如何参与 GNU Radio?

社区贡献Development)页面,先读仔细读一遍 ,再读一遍,最后再读一遍。你应该明白你该如何去做。

我能为 GNU Radio 做些什么贡献?

眼下有那么一些比较显眼工作要完成,也有无穷无尽的软件缺陷(bugs)要修正。请大胆的改进 GNU Radio, 但请你先认真的阅读 社区贡献Development以便能提供有益的贡献.

谁在维护 GNU Radio?

GNU Radio 官方网站由 Eric Blossom 维护,Johnathan Corgan, Matt Ettus 等在做日常维护。

详细贡献者清单请见版本管理器的 AUTHORS .

为何要开发 GNU Radio?

尽管 GNU 在提供自由软件方面极度成功,但在涉及硬件开源尤其是无线射频方面还是存在着很大的盲区。Gnu Radio 通过提供一套信号处理软件和关联硬件(自由的软件,便宜的硬件)给大众以图填充这个空白。

我在哪儿可以提问一些这儿没有回答的问题?

你应当加入邮件列表 Gnu Radio 社区 Mailing lists 积极的参与,认真的阅读.


项目的创立及运行

你已经到 创建指导Build guide寻求帮助, 但还是有一些创建和运行问题未解。

当导入 Python: _gnuradio_swig_py_runtime.so: undefined symbol: ... 时出现错误,我该如何办?

看起来好像 /usr/local/lib 没在库的查询路径中。运行有些Linux,你应当在安装完 Gnu Radio后升级 ld.so 缓存:

$ cat /etc/ld.so.conf

如果 /usr/local/lib 没在这个文件中, 请运行一下三个命令,要不跳到最后运行:

$ cp /etc/ld.so.conf /tmp/ld.so.conf
$ echo /usr/local/lib >> /tmp/ld.so.conf
$ sudo mv /tmp/ld.so.conf /etc/ld.so.conf

... 然后,最后:

$ sudo ldconfig

现在请再运行一遍 Gnu Radio 脚本。


GNU Radio 模块

包括所有的关联 GNU Radio 内核信号处理模块的产生,实现及应用。

GNU Radio 供我支配的模块有哪些?

GNU Radio 用文档生成工具 doxygen 生成 所有模块all the different modules)的帮助文档及内核处理模块的API。

支持 BPSK/D-BPSK/QPSK/M-QAM/OFDM/吗?

当然,这儿有一些例子。 文档也可以在这儿找到。如果没有被实现,试图完成它! 你将会发现你很了不起。

为何用 Python? 我只想用 C++!

这个工作正在做 (#128). 要想完全实现这个目标还需做些事情 (#118), 如果你想早点看到它那请帮忙做些事情。

Python 不是很慢吗? 我的应用需要不同寻常的速度.

Python 只是用于设立流程图。一旦建立,大部分工作还是 C++ 来完成。

我如何编写模块?

Eric Blossom 有一篇很好的教程 如何为 GNU Radio编写模块how to write a block for GNU Radio)请欣赏吧!


通用软件无线电平台 (USRP)

问题涉及 USRP 及其子板,它们的功能及在GBU Radio 中的作用。

什么是通用软件无线电平台?

通用软件无线电平台(USRP) 是一个一般意义的母板其上可运行各类用于配合 GNU Radio 信号处理模块的子板,这些子板是用于特定频率范围的。 

USRP 包含两路 ADI公司的混合信号前端芯片 (Analog Devices AD9862 mixed signal analog front end)同 Altera 公司的 Altera Cyclone EP1C12 FPGA 相连, 大多数下变频在 RX链路RX Chain)实现的。

可以把多个 USRPs 安装在同一主机(计算机)上吗?

可以。它是依靠类 usrp.source_c() 和 usrp.sink_c() 中的which参数实现的:

src1 = usrp.source_c( which=0 )
src2 = usrp.source_c( which=1 )

那一个 USRP 赋值 #0 和 #1 取决于USB的枚举,总线优先,然后再由设备决定。也可能取决于那个先插入或先上电。

如果可行,当你写代码时,用 source_c 对象的序列号标定同它相连的硬件。

在这儿要警告的是大多数母板的所有端口共享同一个USB控制器。因此两个USRPs共享相同的32MB/s 的带宽,结果是如果两个USRP都平均的使用USB的话,它们将平分最大RF带宽。

我如何收集安装在同一USRP上的不同子板的数据?

你需要写一小段程序。USRP 的 RX 只能被打开一次。因此,你需要一个能同时从两个子板读取输入的程序。

查看一下 multi_file.py. 它可以同时处理4个输入信号。

最后,处理两个输入信号时,不必要装载特殊的FPGA固件。标准固件可以很好承担任务。 

什么是带内信号( inband signaling)我如何利用它?

带内信号 (Inband signaling) 是在特定的时间内发送和接受控制,状态和数据包到USRP去履行特殊的使命。它允许苛刻容忍度的TDMA 的介质访问控制 (MACs).

在 USRP可以运行 802.11a/b/g/n吗?

有一些可以以1mbps的速度发送和接受的 802.11b代码。但是USB2.0太慢去支持 802.11 双向交互传输。新版的具有高速接口的USRP正在开发,它可能支持802.11.

目前,由于时延问题,通过USB2.0shang 环形数据处理是不理想的。通过带内信号,速度在随后的发布中可能得以提升,但是环形数据处理终究受时延和处理时间的影响不会太理想。.

USRP 可以覆盖的频率范围多大?

包含 带内信号 (Inband signaling) 的情况下频率覆盖范围从 DC 到 5.9 GHz。

可以在同一台 USRP 既发射又接受信号吗?

可以,但是有几点必须思考的预先说明。首先,如果使用电缆连接的话,对发射和接收端之间的衰减必须心中有数。其次,必须意识到板子没有什么隔离,即使没有天线,信号也可以漏穿。

USRP 如何决定在哪儿分配 所需的接受增益?

母板上的ADC模块 (AD9862)支持 0-20 dB的增益,各个子板具有各自的增益范围。Matt Ettus: "在一般意义上来说,我们尽可能接近天线开始提高增益。因此ADC的增益只在需要特大增益时考虑。各个子板是不同的,到 gr-usrp/src/db_*.py 检查具体我们如何用。“

我可以管道流向和流开 USRP的I/O 插针上的数字信号吗?

可以,查阅 USRP Firmware Extensionhttp://gnuradio.org/redmine/wiki/gnuradio/CompGrGpio)。


完整透彻的USRP FAQ 请参阅 USRP-FAQ 






注:Gnu Radio - Frequently Asked Questions(原文出处,翻译整理仅供参考!)