第1章 FPGA设计概论 1
1.1 FPGA芯片结构与特点 1
1.2 FPGA工作原理 3
1.3 FPGA主要器件 5
1.3.1 Xilinx 5
1.3.2 Altera 8
1.4 FPGA设计流程 12
1.5 FPGA开发工具 14
1.6 FPGA应用 15
第2章 硬件描述语言Verilog HDL 18
2.1 Verilog HDL的基本规范 19
2.1.1 标识符 19
2.1.2 转义标识符 19
2.1.3 空白符 20
2.1.4 注释 20
2.2 数据类型 20
2.2.1 逻辑值 20
2.2.2 线网 20
2.2.3 寄存器 21
2.2.4 数字的表示 21
2.2.5 向量 22
2.2.6 数组 23
2.2.7 参数 23
2.2.8 字符串 23
2.3 运算符 23
2.4 模块 27
2.4.1 模块的基本概念 27
2.4.2 模块的例化 30
2.4.3 模块的测试 32
2.5 过程语句 33
2.5.1 两个过程 33
2.5.2 寄存器变量的过程赋值 34
2.5.3 线网变量的连续赋值 34
2.5.4 时序控制 35
2.5.5 顺序代码块与并行代码块 36
2.6 条件语句 37
2.7 任务和函数 38
2.8 系统任务 38
2.9 编译指令 38
2.10 阻塞赋值与非阻塞 39
第3章 FPGA基础电路设计 41
3.1 组合电路 41
3.2 时序电路 45
3.3 数据通路 53
3.3.1 加法器基础理论 53
3.3.2 常用数据通路设计 59
第4章 逻辑综合 63
4.1 逻辑综合目的 63
4.2 Design Compiler综合 64
4.2.1 准备Design Compiler启动脚本文件 65
4.2.2 约束文件 66
4.2.3 报告分析 73
4.2.4 优化的参数选择 75
4.2.5 综合结果 75
4.3 Synplify的综合设计 76
4.4 HDL的可综合性设计 83
4.4.1 状态机设计 84
4.4.2 实例化资源 84
4.4.3 综合选项 85
第5章 Testbench与ModelSim仿真 87
5.1 Testbench实例 87
5.1.1 产生时钟信号 91
5.1.2 提供激励信号 92
5.1.3 显示结果 93
5.1.4 Verilog HDL Testbench实例 93
5.1.5 自动验证 95
5.1.6 自我检查Testbench 95
5.1.7 编写Testbench的准则 96
5.2 仿真工具ModelSim 96
第6章 CORDIC算法及通信调制技术 101
6.1 CORDIC算法 101
6.2 FPGA实现 104
6.3 基于CORDIC算法的通信调制技术 107
6.4 ISE中CORDIC IP核的使用 110
第7章 FPGA通信协议设计 113
7.1 CPRI协议 113
7.1.1 协议范围 113
7.1.2 帧结构 115
7.1.3 CPRI在FPGA中实现 118
7.2 IR协议简介 128
7.2.1 Ir接口物理层 129
7.2.2 Ir协议传输帧时序结构 133
7.2.3 C&M通道 134
7.2.4 物理层控制字定义 135
7.2.5 Ir协议中的时延测量 139
7.2.6 FPGA实现Ir协议 140
第8章 数字直放站的FPGA设计 142
8.1 直放站FPGA系统设计 142
8.2 数据接口 143
8.2.1 ADC接口 143
8.2.2 DAC接口 151
8.2.3 SPI接口 152
8.3 信号处理部分 154
8.3.1 数据的抽取和内插 155
8.3.2 信号的上变频和下变频 161
第9章 永磁同步电机矢量控制系统的FPGA实现 175
9.1 永磁同步电机矢量控制系统简介 175
9.2 系统硬件平台 178
9.3 软件开发平台 180
9.4 FPGA片上电路设计 181
9.5 实验验证 212
第10章 可靠性设计——DO-254 216
10.1 DO-254 216
10.2 FPGA与DO-254 217
10.2.1 DO-254基本情况 217
10.2.2 DO-254硬件的生命周期 218
10.2.3 规划 218
10.2.4 硬件安全性评价 218
10.2.5 硬件设计流程 220
10.2.6 支持流程 220
10.2.7 文档和组织 220
10.3 DO-254标准和美国联邦航空局 221
10.4 DO-254项目的FPGA工具流程 222
10.5 FPGA设计的工具流程 224
10.6 结论 226
第11章 FPGA设计实验 227
11.1 实验一:LED灯控制 227
11.2 实验二:基于IP核设计的数码管显示 232
11.3 实验三:基于Verilog HDL设计的数码管显示 238
11.4 实验四:基于DSP Builder设计的clark坐标变换模块 239
11.5 实验五:分别基于SOPC Builder和Qsys工具控制LED灯 253
11.5.1 实验内容 253
11.5.2 SOPC Builder工具设计流程 253
11.5.3 Qsys工具设计流程 264
11.5.4 实验小结 271
11.6 实验六:基于NiosⅡ定时中断控制LED闪烁 271
11.7 实验七:NiosⅡ与LabVIEW的串口通信 277
11.8 实验八:程序烧写 283
11.9 实验九:DE2上的μClinux移植 291
11.9.1 任务要求 291
11.9.2 NiosⅡ硬件定制 291
11.9.3 顶层文件 296
11.9.4 编译系统 296
11.9.5 内核结构 298
11.9.6 文件格式 298
11.9.7 进程调度 298
11.9.8 文件系统 299
11.9.9 移植层次与代码结构 299
11.9.10 源码获取 300
11.9.11 内核剪裁和编译 301
11.9.12 映像生成 304
11.9.13 镜像下载 304
11.9.14 终端调试 305
11.9.15 执行TCP/IP网络命令 306
11.10 实验十:VGA视频显示系统的SOPC设计 308
11.10.1 NiosⅡ的硬件开发 308
11.10.2 生成NiosⅡ硬件系统 319
11.10.3 系统的软件设计 320
11.10.4 VGA视频显示系统的NiosⅡIDE调试 322
11.11 实验十一:Vivado HLS设计流程实验 325
参考文献 341