内容简介
本书以Xilinx公司Zynq-7000系列SoC和ADI公司AD9361射频收发器为核心定制的硬件平台SDR-AI-Z7为基础,以GNU Radio软件和MATLAB软件为设计平台,详细介绍了软件定义无线电(Software Defined Radio,SDR)的原理,以及基于不同软件平台实现SDR通信系统的方法。 本书在介绍SDR的原理和基于SDR技术实现通信系统时,为读者展现了不同实现方法对通信系统的性能、灵活性、成本和功耗方面的影响。本书共13章,主要内容包括软件定义无线电技术基础、软件定义无线电平台硬件和软件架构、软件定义无线电平台开发环境的构建、通信信号处理的基础知识、正交调制和复指数的基础知识、前向纠错的基本原理和实现、软件定义无线电系统同步原理和实现、信道估计与均衡原理和实现、FM和FSK的GNU Radio实现、BPSK和QPSK无线传输的Simulink实现、OFDM无线传输的Simulink实现、802.11a无线传输的MATLAB实现,以及ADS-B信号接收Simulink实现。此外,本书的附录提供了AM的GNU Radio实现和QPSK的GNU Radio实现等。 本书理论和实践并重,通过采用不同的软件框架实现SDR通信系统,从多个角度诠释了软件定义无线电中“软件”的本质含义。
目录
目录
第1章 软件定义无线电技术基础 1
1.1 无线电频谱及分配 1
1.1.1 无线电频谱的定义 1
1.1.2 无线电频谱分配 3
1.1.3 频谱许可和合法使用 4
1.1.4 频谱政策 4
1.2 自由空间路径损耗 5
1.3 软件定义无线电的发展历史 6
1.4 通信系统的分层模型 9
1.4.1 开放系统互连模型 9
1.4.2 TCP/IP模型 11
1.5 无线通信标准 12
1.5.1 通信标准的定义和重要性 12
1.5.2 Wi-Fi的发展历程 14
1.5.3 蜂窝网络的发展历程 15
1.6 SDR实现通信协议栈 16
1.6.1 MAC和PHY 16
1.6.2 上层 17
1.6.3 无线物理层 17
第2章 软件定义无线电平台硬件和软件架构 19
2.1 软件定义无线电架构的演进 19
2.1.1 基带采样/模拟中频基带采样SDR 19
2.1.2 数字中频采样SDR 20
2.1.3 带可调谐RF的基带采样SDR 20
2.1.4 直接射频SDR 22
2.2 可重构软件定义无线电平台硬件架构 23
2.2.1 Xilinx Zynq-7000异构架构SoC 23
2.2.2 ADI的AD9361射频收发器 23
2.2.3 软件无线电硬件开发平台 27
2.2.4 Vivado底层硬件框架 29
2.3 使用软件无线电框架的必要性 49
2.4 ADI的IIO子系统 51
2.5 GNU Radio软件无线电开发框架 55
2.5.1 GNU Radio的发展历史 55
2.5.2 GNU Radio的功能 56
2.5.3 GNU Radio的初衷 57
2.5.4 GNU Radio中的典型块 59
2.6 MathWorks软件无线电开发框架 60
2.6.1 AD9361 Simulink模型 60
2.6.2 通用的通信和DSP系统工具箱功能 63
2.6.3 面向硬件可编程逻辑的Simulink工具流程 64
2.6.4 SDR设计中的软硬件协同设计方法的框架 64
2.6.5 SDR设计中的软硬件协同设计方法的实现 65
2.7 动态可重配置软件无线电开发框架 68
2.7.1 动态可重配置技术与SoC结构的结合 68
2.7.2 动态可重配置技术的核心单元 69
第3章 软件定义无线电平台开发环境的构建 71
3.1 Vivado设计套件的下载和安装 71
3.1.1 Vivado设计套件的设计流程 71
3.1.2 Vivado设计套件的下载 73
3.1.3 Vivado设计套件的安装 75
3.1.4 添加许可文件 79
3.1.5 添加板支持包 81
3.2 GNU Radio软件的下载和安装 81
3.2.1 GNU Radio软件的下载 81
3.2.2 GNU Radio软件的安装 83
3.3 MATLAB软件的下载和安装 86
3.3.1 MATLAB软件的下载 86
3.3.2 MATLAB软件的安装 87
3.3.3 安装Simulink软件支持包 93
3.3.4 添加HDL Coder工具补丁包 96
3.3.5 安装定制硬件平台的软件支持包 97
第4章 通信信号处理的基础知识 98
4.1 调制和解调 98
4.2 射频术语和参数 98
4.3 多速率信号处理 99
4.3.1 多速率采样的原因 99
4.3.2 过采样ADC和DAC 100
4.3.3 抽取 101
4.3.4 插值 102
4.3.5 半带和L带滤波器 103
4.3.6 抽取和插值级联 104
4.4 基带调制(位到符号) 106
4.4.1 正交调制与符号空间维度 106
4.4.2 幅移键控 107
4.4.3 正交幅度调制 107
4.4.4 相移键控 109
4.4.5 其他调制方案 110
4.5 基带解调(符号到位) 110
4.5.1 符号判决 111
4.5.2 加性高斯白噪声信道 111
4.5.3 误差矢量幅度 113
4.5.4 比特错误率 113
4.6 无线信道 113
4.6.1 信道效应 114
4.6.2 解决方法 117
4.7 脉冲整形与匹配滤波 118
4.7.1 符号作为脉冲 119
4.7.2 脉冲整形要求和实现 119
4.7.3 平方根升余弦匹配滤波 120
4.7.4 最大效果点 121
4.8 比特错误率分析 121
第5章 正交调制和复指数的基础知识 123
5.1 信号的表示 123
5.1.1 模拟和数字信号 123
5.1.2 实数和复数信号 123
5.1.3 欧拉公式 124
5.1.4 使用复数频谱在频域中查看实信号 125
5.2 幅度调制和解调 129
5.2.1 双边带抑制载波幅度调制 130
5.2.2 幅度解调 131
5.2.3 带有相位误差的幅度解调 132
5.3 正交幅度调制和解调 133
5.3.1 正交调制的三角表示 133
5.3.2 正交解调的三角表示 134
5.3.3 带相位移动的正交解调 135
5.4 复数符号的正交调制和解调 136
5.4.1 复指数表示法的正交调制 136
5.4.2 复指数表示法的正交解调 137
5.5 复指数解调的频谱表示 138
5.6 接收机的频率偏移和校正 141
第6章 前向纠错的基本原理和实现 143
6.1 前向纠错概论 143
6.1.1 前向纠错的背景 143
6.1.2 前向纠错的基本原理 143
6.1.3 最大似然译码 146
6.2 汉明码 146
6.2.1 汉明码的参数 146
6.2.2 最小距离的定义及其和纠错检错能力的关系 147
6.2.3 一致监督矩阵 147
6.2.4 生成矩阵 149
6.2.5 线性分组码的编码 149
6.2.6 线性分组码的译码 150
6.3 循环码 153
6.3.1 循环码的定义和生成多项式 154
6.3.2 监督多项式和监督矩阵 156
6.3.3 (n,k)循环码的编码 157
6.3.4 (n,k)循环码的译码 161
6.4 卷积码 167
6.5 维特比译码器 169
6.6 BCJR、Log-MAP和Max-Log-MAP算法 172
6.6.1 BCJR算法 172
6.6.2 Log-MAP和MAX-Log-MAP算法 174
6.7 卷积码的性能 175
6.8 衰落信道的前向纠错 176
6.9 Turbo码 177
6.10 LDPC码 181
6.10.1 编码 181
6.10.2 译码 183
6.10.3 5G NR标准中的LDPC码 186
第7章 软件定义无线电系统同步原理和实现 188
7.1 信号的同步问题 188
7.2 定时同步 189
7.2.1 符号定时原理 189
7.2.2 符号定时恢复结构 189
7.2.3 定时误差检测器 190
7.2.4 定时分辨率 196
7.3 载波同步 196
7.3.1 载波偏移 197
7.3.2 粗频率校正 197
7.3.3 细频率校正 198
7.4 帧同步 204
7.4.1 帧的常见格式 205
7.4.2 巴克码 205
7.4.3 Zadoff-Chu序列 209
7.4.4 高莱互补序列 211
第8章 信道估计与均衡原理和实现 213
8.1 多径干扰 213
8.2 信道估计 214
8.3 均衡器 217
8.3.1 线性均衡器 217
8.3.2 非线性均衡器 220
第9章 FM和FSK的GNU Radio实现 223
9.1 FM的原理和相关参数 223
9.1.1 FM的原理 223
9.1.2 FM的相关参数 224
9.2 系统设计环境支持 225
9.3 FM发射系统的设计 226
9.3.1 启动GNU Radio软件 226
9.3.2 添加Wav File Source块 227
9.3.3 添加WBFM Transmit块 228
9.3.4 添加QT GUI Time Sink块 229
9.3.5 添加QT GUI Sink块 231
9.3.6 添加FMComms2/3/4 Sink块 232
9.3.7 连接流程图中的块 233
9.3.8 保存设计 234
9.4 FM接收系统的设计 234
9.4.1 启动GNU Radio软件 234
9.4.2 添加FMComms2/3/4 Source块 235
9.4.3 添加QT GUI Sink块 236
9.4.4 添加Low Pass Filter块(一) 237
9.4.5 添加WBFM Receive块 238
9.4.6 添加Multiply Const块 239
9.4.7 添加Low Pass Filter块(二) 241
9.4.8 添加Audio Sink块 241
9.4.9 连接流程图中的块 242
9.4.10 保存设计 244
9.5 系统测试和验证 244
9.5.1 镜像文件的复制 244
9.5.2 安装PuTTY软件工具 246
9.5.3 硬件平台的设置和启动 247
9.5.4 配置网络参数 249
9.5.5 FM无线传输系统的硬件测试 250
9.6 FSK的原理 252
9.6.1 2-FSK的原理 252
9.6.2 其他FSK方式 254
9.7 FSK原理仿真 255
9.7.1 系统参数设置 257
9.7.2 信源生成子系统 257
9.7.3 FSK调制子系统 258
9.7.4 FSK解调与验证子系统 258
9.7.5 FSK原理仿真 260
9.8 FSK发射机的设计 260
9.8.1 FSK发射机的参数 262
9.8.2 FSK发射机的结构 262
9.9 FSK接收机的设计 263
9.9.1 FSK解调子系统的结构 265
9.9.2 FSK数据恢复子系统的结构 265
9.10 FSK文件传输系统测试 266
9.10.1 测试前的准备工作 266
9.10.2 系统测试结果 267
第10章 BPSK和QPSK无线传输的Simulink实现 271
10.1 系统设计结构 271
10.2 BPSK和QPSK基带处理器的设计 272
10.2.1 创建新的Simulink设计模型 272
10.2.2 符号映射 276
10.2.3 整形滤波 279
10.2.4 自动增益控制 280
10.2.5 粗频率校正 281
10.2.6 细频率校正 284
10.2.7 时序同步 288
10.2.8 帧同步 290
10.2.9 抽样判决 292
10.3 基带处理模块功能仿真与系统仿真 292
10.3.1 QPSK仿真环境的构建 292
10.3.2 查看系统采样率 294
10.3.3 按模块功能仿真 295
10.3.4 系统功能仿真 301
10.3.5 BPSK功能仿真 301
10.4 编译HDL模型与软件接口模型 303
10.4.1 编译HDL模型 303
10.4.2 软件接口模型设计 312
10.4.3 软件模型的设计 316
10.5 单个SDR硬件平台上运行发送和接收测试 317
10.5.1 硬件设备连接 317
10.5.2 发射端与接收端的IP设置 318
10.5.3 执行MATLAB脚本 318
10.5.4 运行设计 319
10.5.5 可编程逻辑资源利用率 321
10.6 编译为独立的可执行文件并运行 321
10.6.1 编译独立的可执行文件 321
10.6.2 加载设计及运行可执行文件 322
第11章 OFDM无线传输的Simulink实现 326
11.1 OFDM的产生背景 326
11.1.1 OFDM技术的起因 326
11.1.2 OFDM的动机 327
11.2 多载波调制 330
11.3 OFDM的原理 332
11.3.1 OFDM调制和解调 332
11.3.2 循环前缀 334
11.4 OFDM系统框架 336
11.4.1 OFDM顶层模型 337
11.4.2 OFDM帧结构 338
11.5 OFDM发射机设计概要 340
11.5.1 OFDM发射机接口 340
11.5.2 OFDM发射机的结构 341
11.6 OFDM发射机详细设计 342
11.6.1 帧控制器和输入采样器子系统 342
11.6.2 数据生成器子系统 347
11.6.3 多路复用子系统 357
11.6.4 帧形成和OFDM调制子系统 358
11.6.5 离散FIR滤波子系统 361
11.7 OFDM接收机设计概要 361
11.7.1 OFDM接收机的接口 362
11.7.2 OFDM接收机结构 363
11.8 OFDM接收机详细设计 363
11.8.1 同步和OFDM解调子系统 365
11.8.2 信道和载波相位误差估计与校正子系统 376
11.8.3 报头和数据恢复子系统 382
11.8.4 诊断总线生成子系统 384
11.9 系统HDL模型配置和仿真 387
11.9.1 系统HDL模型的配置 387
11.9.2 系统HDL模型的仿真 387
11.10 系统的软硬件协同实现 389
11.10.1 编译HDL模型 389
11.10.2 设计软件接口模型 390
11.10.3 设计软件模型 391
11.10.4 测试OFDM无线传输系统 392
第12章 802.11a无线传输的MATLAB实现 395
12.1 802.11a协议栈的底层结构分析 395
12.1.1 802.11a的底层格式 395
12.1.2 MPDU的帧结构 396
12.1.3 PPDU的帧结构 397
12.1.4 数据扰码器 400
12.1.5 卷积编码器 400
12.1.6 数据交织 402
12.1.7 子载波调制映射 402
12.1.8 导频子载波 404
12.1.9 OFDM调制 404
12.2 图像发射端设计 405
12.2.1 创建新的图像发送设计 406
12.2.2 图像读取与预处理 406
12.2.3 生成数据链路层MPDU 407
12.2.4 生成物理层PPDU 408
12.2.5 波形形成与信号发送 409
12.3 图像接收端设计 410
12.3.1 创建新的图像接收设计 410
12.3.2 计算发送数据的规模 411
12.3.3 设置接收端参数 412
12.3.4 设置接收机并捕获数据包 412
12.3.5 接收端数据处理 413
12.3.6 重建图像 417
12.4 图像发送和接收测试 418
第13章 ADS-B信号接收Simulink实现 421
13.1 基础知识 421
13.1.1 Mode S编码 421
13.1.2 ADS-B编码 422
13.1.3 脉冲位置调制 423
13.2 ADS-B无线传输系统模型设计 423
13.2.1 ADS-B发射机的设计 425
13.2.2 ADS-B接收机的设计 425
13.3 ADS-B无线传输系统的模型仿真 430
13.4 ADS-B系统实现与测试 431
13.4.1 编译HDL模型 431
13.4.2 设计软件接口模型 432
13.4.3 设计软件模型 433
13.4.4 运行ADS-B信号接收系统 434
附录A AM的GNU Radio实现 436
A.1 AM的基本原理 436
A.2 AM发射机和接收机模型的构建 436
A.2.1 AM发射机模型的构建 436
A.2.2 AM接收机模型的构建 438
A.3 AM发射机和接收机模型的测试结果 438
A.3.1 AM发射机模型的测试结果 439
A.3.2 AM接收机模型的测试结果 439
附录B QPSK的GNU Radio实现 441
B.1 QPSK发射机和接收机模型的构建 441
B.1.1 QPSK发射机模型的构建 441
B.1.2 QPSK接收机模型的构建 442
B.2 QPSK发射机和接收机模型的测试结果 444
B.2.1 CVSD解码结果的测试 444
B.2.2 自收自发模式的测试结果 444
B.2.3 对传模式的测试结果 445
附录C GNU Radio移植到Zynq-7000 SoC平台 446
C.1 背景 446
C.2 移植的实现 447
C.3 gr-iio的测试 447