第1章 设计环境及开发平台介绍 1
1.1 FPGA基础知识 2
1.1.1 基本概念及发展历程 2
1.1.2 FPGA的结构和工作原理 4
1.1.3 FPGA在数字信号处理中的应用 12
1.2 Altera器件简介 12
1.3 Verilog HDL语言简介 15
1.3.1 HDL语言简介 15
1.3.2 Verilog HDL语言特点 16
1.3.3 Verilog HDL程序结构 17
1.4 Quartus II开发套件 18
1.4.1 Quartus II开发套件简介 18
1.4.2 Quartus II软件的用户界面 19
1.5 ModelSim仿真软件 22
1.6 MATLAB软件 24
1.6.1 MATLAB软件介绍 24
1.6.2 MATLAB工作界面 24
1.6.3 MATLAB的特点及优势 25
1.6.4 MATLAB与Quartus的数据交互 27
1.7 SystemView软件 28
1.7.1 SystemView简介 28
1.7.2 SystemView工作界面 29
1.8 小结―欲善其事先利其器 32
第2章 FPGA数字信号处理基础 33
2.1 FPGA中数的表示 34
2.1.1 莱布尼兹与二进制 34
2.1.2 定点数表示 35
2.1.3 浮点数表示 36
2.2 FPGA中数的运算 40
2.2.1 加/减法运算 40
2.2.2 乘法运算 43
2.2.3 除法运算 44
2.2.4 有效数据位的计算 44
2.3 有限字长效应 47
2.3.1 字长效应的产生因素 47
2.3.2 A/D转换的字长效应 48
2.3.3 系统运算中的字长效应 49
2.4 FPGA中的常用处理模块 51
2.4.1 加法器模块 51
2.4.2 乘法器模块 53
2.4.3 除法器模块 56
2.4.4 浮点运算模块 57
2.5 小结―四个过桥人 59
第3章 锁相环为什么能够跟踪相位 61
3.1 锁相环的组成 62
3.1.1 关注信号的相位分量 62
3.1.2 VCO是一个积分器件 63
3.1.3 正弦鉴相器还是余弦鉴相器 65
3.1.4 环路滤波器的作用 68
3.2 从负反馈电路理解锁相环 69
3.2.1 反馈电路的概念 69
3.2.2 负反馈电路的控制作用 70
3.2.3 锁相环与基本负反馈电路的区别 71
3.2.4 分析锁相环的工作状态 72
3.3 最简单的锁相环 73
3.3.1 一阶锁相环的SystemView模型 73
3.3.2 确定VCO输出的同相支路 74
3.4 锁相环的基本性能参数 77
3.4.1 捕获及跟踪过程 77
3.4.2 环路的基本性能要求 78
3.5 分析一阶环的基本参数 79
3.5.1 数学方法求解一阶环 79
3.5.2 图解法分析一阶环工作过程 81
3.5.3 工程设计与理论分析的差异 82
3.5.4 遗忘的参数――鉴相滤波器截止频率 85
3.6 小结――千条路与磨豆腐 87
第4章 一阶锁相环的FPGA实现 89
4.1 一阶环的数字化模型 90
4.1.1 工程实例需求 90
4.1.2 数字鉴相器 91
4.1.3 数控振荡器 92
4.1.4 计算环路增益 94
4.2 数字鉴相滤波器设计 95
4.2.1 FIR与IIR滤波器 95
4.2.2 MATLAB滤波器函数 97
4.2.3 FIR滤波器的MATLAB设计 100
4.2.4 量化滤波器系数 102
4.3 Verilog HDL代码风格 105
4.3.1 文件接口声明 105
4.3.2 变量的命名方式 106
4.3.3 模块对齐方式 106
4.3.4 阻塞赋值和非阻塞赋值 107
4.3.5 注释语句 107
4.4 一阶环的Verilog HDL设计 108
4.4.1 新建FPGA工程 108
4.4.2 数字乘法器设计 110
4.4.3 低通滤波器设计 112
4.4.4 数控振荡器设计 115
4.4.5 顶层文件设计 115
4.5 一阶环的ModelSim仿真测试 119
4.5.1 MATLAB生成测试数据 119
4.5.2 编写测试激励文件 120
4.5.3 环路为什么不能锁定 122
4.5.4 继续仿真分析环路性能 125
4.6 小结―科学的方法 127
第5章 从线性方程到环路模型 129
5.1 线性时不变系统 130
5.1.1 线性系统的概念 130
5.1.2 时不变系统的概念 132
5.1.3 为什么研究线性时不变系统 132
5.2 信号的线性分解 133
5.2.1 信号的常用分解方法 133
5.2.2 分析的化身―欧拉 135
5.2.3 “e”是一个函数的极限 137
5.2.4 泰勒、麦克劳林与牛顿 139
5.2.5 上帝创造的公式―欧拉公式 141
5.3 从傅里叶级数到Z变换 142
5.3.1 温室效应的发现者―傅里叶 142
5.3.2 傅里叶级数是一篇美妙的乐章 143
5.3.3 负频率信号是什么信号? 147
5.3.4 傅氏变换与拉氏变换 151
5.3.5 Z变换―离散时间系统分析工具 153
5.3.6 如何判断系统是否稳定 156
5.4 锁相环路的模型 158
5.5 小结―乔布斯的演讲 160
第6章 环路滤波器决定锁相环特性 163
6.1 最简单的环路滤波器―RC滤波器 164
6.1.1 RC低通滤波器的频率特性 164
6.1.2 二阶环路的传输函数 166
6.2 回顾二阶线性电路 167
6.2.1 二阶线性电路与锁相环 167
6.2.2 固有振荡频率与阻尼系数 168
6.2.3 单位阶跃信号的响应分析 169
6.3 RC滤波器二阶环的SystemView仿真 172
6.3.1 RC滤波器锁相环路模型 172
6.3.2 锁定状态与阻尼系数的仿真 174
6.4 反馈环路的稳定性分析 177
6.4.1 系统稳定与锁相环稳定的关系 177
6.4.2 频率特性与环路的稳定性关系 177
6.4.3 伯德图分析方法 179
6.4.4 伯德图分析RC二阶环路的稳定性 180
6.4.5 二阶环路的相位滞后是如何产生的 181
6.4.6 鉴相滤波器的影响 182
6.5 无源比例积分滤波器 184
6.5.1 频率特性 184
6.5.2 环路的传输函数 185
6.5.3 环路稳定性分析及参数设计 186
6.5.4 环路的SystemView仿真 188
6.6 有源比例积分滤波器 189
6.6.1 频率特性 189
6.6.2 环路的传输函数 191
6.6.3 环路稳定性分析及参数设计 193
6.6.4 环路的SystemView仿真 194
6.6.5 为什么稳态相差可以为零 196
6.7 小结―世界上最容易的事 198
第7章 二阶环的FPGA实现 199
7.1 依据模拟环设计数字环 200
7.1.1 从模拟到数字――双线性变换 200
7.1.2 环路滤波器的数字化 202
7.1.3 理想二阶环的参数设计 203
7.1.4 理想二阶环的Verilog HDL设计 205
7.2 FPGA实现后的仿真测试 208
7.2.1 环路增益对锁定性能的影响 208
7.2.2 频差对锁定性能的影响 210
7.2.3 环路捕获范围测试 211
7.3 理想二阶环的数字化 213
7.3.1 NCO的数字化模型 213
7.3.2 环路的数字化模型 214
7.4 模拟与数字环路的关联 215
7.4.1 确定环路滤波器系数 215
7.4.2 增益与环路滤波器系数的关系 216
7.4.3 两种系数计算方法比较 216
7.5 小结―芝诺与庄子的哲学 217
第8章 锁相环的性能分析 219
8.1 捕获性能 220
8.1.1 捕获过程 220
8.1.2 捕获带与捕获时间 221
8.1.3 辅助捕获方法 222
8.2 跟踪性能 224
8.2.1 环路的稳态相差 224
8.2.2 环路的频率特性 225
8.2.3 调制跟踪与载波跟踪 228
8.2.4 两种跟踪方式的SystemView仿真 229
8.3 噪声性能 237
8.3.1 噪声情况下的环路模型 237
8.3.2 输出相位噪声方差 240
8.3.3 环路噪声带宽 241
8.3.4 环路信噪比 242
8.4 理想二阶环设计公式 244
8.5 小结―兴趣是最好的老师 245
第9章 锁相环解调PSK信号的FPGA实现 247
9.1 PSK调制解调原理 248
9.1.1 PSK调制原理及信号特征 248
9.1.2 PSK信号的MATLAB仿真 249
9.1.3 锁相环解调PSK原理 252
9.2 锁相环路解调参数设计 254
9.2.1 总体性能参数设计 254
9.2.2 下变频乘法器设计 256
9.2.3 下变频低通滤波器设计 257
9.2.4 鉴相乘法器设计 259
9.2.5 数控振荡器设计 260
9.2.6 环路滤波器设计 261
9.3 锁相解调环的Verilog设计 262
9.3.1 顶层文件的Verilog设计 262
9.3.2 鉴相器的Verilog设计 264
9.3.3 环路滤波器的Verilog设计 265
9.4 锁相解调环的仿真测试 266
9.4.1 环路捕获范围测试 266
9.4.2 NCO更新周期对环路增益的影响 267
9.5 小结―渔王的儿子 272
参考文献 274