GNU Radio是一个软件无线电软件,与便宜的(相对于大多数软件无线电板卡来说)USRP结合在一起,就构成了一个非常灵活的开发平台,让我们可以像开发小软件一样,轻松的开发无线设备。因为它的开放性和低成本,GNU Radio和USRP现在已经在中国和全世界拥有越来越多的用户。
我从2005年开始接触GNU Radio,作为中国最早的一批GNU Radio用户,我们(我和我的同事们,朋友们,网友们,学生们)在GNU Radio上开发了各种各样的系统,积累了很多经验。
目 录
第1 章GNU Radio 是什么... 6
1.1 软件无线电的基本思想........... 7
1.2 软件架构....................... 8
1.2.1 “Hello World”-Dial tone........... 8
1.2.2 Flow graph(流图)和Block(模块)... 10
1.3 硬件架构..................... 10
1.3.1 USRP,从启动过程说起..... 11
1.3.2 数字中频——FPGA 的职责....... 11
第2 章USRP,GNU Radio 的硬件平台.... 13
2.1 USRP 母板.................. 13
2.1.1 模数转换器部分...... 14
2.1.2 数模转换器部分...... 14
2.1.3 辅助模拟I/O 端口.......... 15
2.1.4 辅助数字I/O 端口.......... 15
2.1.5 FPGA................... 15
2.2 USRP2 母板................ 18
2.3 子板... 19
2.3.1 Basic TX/RX 子板........... 20
2.3.2 低频发射/接收子板........ 21
2.3.3 TVRX 子板.......... 21
2.3.4 DBSRX 子板....... 22
2.3.5 RFX 系列子板..... 22
2.4 电源... 24
2.5 时钟同步问题............. 24
2.5.1 同步所有子板本地晶振....... 24
2.5.2 同步多个USRP....... 25
第3 章GNU Radio 安装..... 26
3.1 安装需求..................... 26
3.2 Ubuntu 下安装............ 26
3.3 Fedora 下安装............. 27
3.4 装好之后可以做的第一件事.............. 29
3.4.1 如果你有USRP....... 29
3.4.2 如果你没有USRP................ 30
第4 章GNU Radio 编程基础......... 32
4.1 在使用GNU Radio 之前的预备知识.............. 32
4.1.1 对GNU Radio 做一个更清晰的认识...... 32
4.1.2 数字信号处理(DSP)知识....... 33
4.1.3 通信系统知识.......... 34
4.2 如何编写Python 应用程序——逐行学习...... 34
4.2.1 概述.......................... 34
4.2.2 FM接收机源代码........... 35
4.2.3 第一行...................... 37
4.2.4 导入需要的模块(module)......................... 38
4.2.5 顶层模块wfm_rx_graph.............. 40
4.3 流图,模块和连接的原理..... 44
4.3.1 顶层模块my_top_block.............. 45
4.3.2 运行程序.................. 48
4.4 图形界面的使用......... 48
4.4.1 频谱分析仪.............. 49
4.4.2 wxPython 是如何工作的............. 49
4.4.3 示波器...................... 53
4.5 处理命令行参数......... 53
4.6 GNU Radio 中常用的block... 54
4.6.1 信号源...................... 55
4.6.2 信宿(Signal Sinks)..... 58
4.6.3 简单运算(Simple Operators)............... 59
4.6.4 类型转换(Type Conversions).............. 62
4.6.5 滤波器(Filters)........... 63
4.6.6 FFT....................... 68
4.6.7 其他一些有用block........ 69
4.7 如何编写C++ blocks............. 70
4.7.1 最简单的方法——利用模板......................... 70
4.7.2 block 的结构和原理........ 74
4.7.3 命名规则.................. 80
4.7.4 如何把C++与Python 连接在一起.......... 81
4.8 如何使用外部库文件............. 84
第5 章 应用范例解读......... 86
5.1 OFDM Tunnel............. 86
5.1.1 系统框图和MAC 帧的构成........ 87
5.1.2 物理层...................... 88
5.1.3 开发和调试方法...... 90
5.2 MIMO.... 91
5.2.1 MUX 参数的含义........... 91
5.2.2 代码示例:2 天线接收... 94
5.2.3 代码范例:2 天线发射... 96
第6 章GNU Radio 的其他应用... 101
6.1 商业应用................... 101
6.2 国防和国土安全....... 101
6.3 无线研究................... 102
6.4 教学........................... 102
6.5 其他应用................... 103
第7 章 其他的SDR 平台简介...... 104
7.1 几种SDR 平台简介............. 104
7.2 微软的SORA........... 106
7.2.1 SORA 上已经实现了什么系统?.......... 106
7.2.2 硬件接口板:RCB(Radio Control Board).................. 107
7.2.3 软件架构................ 108
7.2.4 如何提高CPU 做通信信号处理的速度.......................... 108
7.2.5 SORA 对TDMA 的支持........... 110
下载GNU Radio教程
更多软件无线电学习资料下载