如何着手 GNU Radio?即使 GNU Radio 被 成功的安装 之后,对其能够干什么及曾经干过什么还是一团迷雾。在此将宏观的介绍它的功用及使用。 使用随系统的工具及功能软件GNU Radio 随系统附带大量的可开箱即用的工具及功能软件。如若安装是源自于源代码,便可在 gr-utils/src/python 和 gr-uhd/apps 目录下发现其源代码。如果是基于 Linux 环境,使用源(比如,使用脚本 下面是一些最常用的工具:
使用 Linux,可以在命令行下使用这些工具。所有的工具都包含 "-h" 选项开关(switch)用来表现帮助信息。就 uhd_fft.py 而言,其表现形式如下:
下面是使用该命令基于 USRP1 及 DBSRx 子板的配合对 GSM 下行信号的频谱分析图:
图形化信号处理的开发:GNU Radio Companion (GRC)数字信号处理(DSP) 是 GNU Radio 的亮点:这也是它最初能够得以产生的原因。GRC 是一款同 Simulink 类似的用于设计信号处理图形流程的图形工具。如若对 FIR 滤波器、数字调制及其它 DSP 概念比较熟悉的话,对 GRC 的使用便会觉得简单而且直接。 对 Linux 系统而言,GRC 是通过 gnuradio-companion 命令被激活。如果安装过程一切正常的话,GRC 便会以自定义的窗口形式跳出。(在该窗口的)右手侧将会展示所有的可供使用的模块(在此分享一个令人鼓舞的消息:添加新的模块不是特别困难!),它可以被拖到(左手侧)的主窗口然后通过点击边界将其连接。GRC 有其自己的维客:GRC 中文维客。 下面的例程是窄带 FM 接收机,其工作机理是由信号滤波、FM 解调然后将其传递给声卡组成的(该例程和其它一些例程在 www.oz9aec.net 上可以找到)。 使用 Python 编写功能强大的信号处理及无线应用GRC 并非总是能够永远灵活地满足项目(程序)的需求。在 GRC 中通过点击所能实现的,通过 Python 的编程也能够被完全替代。不仅如此,在通过代码展示其可以构建这些(GRC 能够实现的功能)的魅力的同时,也显现出 Python 及库函数的其它更完善的能力及功用。诸如,基于 Python 的信号处理的 SciPy、NumPy 及能够随意构建 GUI 的库的 widget library 等。 想在此领域展示一下手脚,请参阅 如何写 GNU Radio 的 Python 应用 。该讲义教程同时也包括 GNU Radio 核心概念的入门,比如流程图。
C++ 的领地:扩展 GNU RadioGNU Radio 尽管异常强大其所包含的信号处理模块也包罗万象。但是,针对某个特殊的领域还是或迟或早的会发现有很多不足之处:(解决的方法无外乎)一段针对性的代码、一个算法的部分之类。这通常是 C++ 所能胜任的,目的是尽可能的使 GNU Radio 能够被加速。如果情况果真如此,敬请参阅:如何编写 GNU Radio 信号处理功能块 。 想揣摩明白其机理: 阅读例程开始使用 GNU Radio 貌似令人生畏。GNU Radio 是很强大也很吓人,学习它会有一个陡峭的学习曲线。 在源码构架中,其相应的子目录下都有例程代码。诸如,在 'gr-digital/examples' 下,包含所有的数字调制的例程;在 'gr-filter/examples' 下,包含了所有滤波器相关(也包含重采样 - resampling 等)的例程等等。GNU Radio 提供了关联 Python、GNU Radio Companion(GRC) 及 C++ 类丰富的例程。 学习 GNU Radio (如同学习其它任何的新技术一样)的最佳途径便是揣摩例程。在 Linux 环境中,它通常被安装在 /usr/local/share/gnuradio/examples 下。理论上,基于论题对其进行检索,大概会有好几百个例程。 注:How do I use GNU Radio?(原文出处,翻译整理仅供参考!) |