第1章 可编程逻辑设计指导原则 1
1.1 可编程逻辑基本设计原则 1
1.1.1 面积和速度的平衡与互换原则 1
1.1.2 硬件原则 11
1.1.3 系统原则 13
1.1.4 同步设计原则 16
1.2 可编程逻辑常用设计思想与技巧 19
1.2.1 乒乓操作 19
1.2.2 串并转换 21
1.2.3 流水线操作 21
1.2.4 异步时钟域数据同步 22
1.3 Altera推荐的Coding Style 26
1.3.1 Coding Style的含义 27
1.3.2 结构层次化编码(Hierarchical Coding) 27
1.3.3 模块划分的技巧(Design Partitioning) 28
1.3.4 组合逻辑的注意事项 29
1.3.5 时钟设计的注意事项 32
1.3.6 全局异步复位资源 38
1.3.7 判断比较语句case和if...else的优先级 39
1.3.8 使用Pipelining技术优化时序 39
1.3.9 模块复用与Resource Sharing 39
1.3.10 逻辑复制 41
1.3.11 香农扩展运算 43
1.3.12 信号敏感表 45
1.3.13 状态机设计的一般原则 46
1.3.14 Altera Megafunction资源的使用 48
1.3.15 三态信号的设计 48
1.3.16 加法树的设计 49
1.4 小结 51
1.5 问题与思考 52
第2章 Altera器件高级特性与应用 53
2.1 时钟管理 53
2.1.1 时序问题 53
2.1.2 锁相环应用 60
2.2 Arria 10硬浮点数字信号处理模块 69
2.2.1 硬浮点DSP块介绍 69
2.2.2 Altera FPGA中浮点DSP实现的演进 69
2.2.3 硬浮点DSP的优势 70
2.2.4 Xilinx Ultrascale DSP48E2 74
2.3 片外高速存储器 74
2.3.1 外部存储接口方案的关键特性 74
2.3.2 支持的存储标准 75
2.3.3 存储接口宽度 75
2.3.4 I/O管脚 76
2.3.5 外部存储接口IP支持类型 76
2.3.6 Arria10 外部存储接口架构 78
2.4 Hybrid Memory Cube 83
2.4.1 存储带宽面临的挑战 83
2.4.2 HMC的优势 84
2.4.3 Altera HMC交互操作平台 85
2.4.4 Altera HMC路标 87
2.4.5 网络系统应用案例 88
2.5 Altera JESD204B Megacore 90
2.5.1 基本介绍 90
2.5.2 功能描述 94
2.5.3 Debug指导 97
2.6 高速串行收发器 100
2.6.1 Arria10 Transceiver概述 100
2.6.2 Transceiver设计流程 104
2.6.3 PLL和时钟网络 107
2.6.4 复位Transceiver通道 112
2.6.5 重配接口和动态重配 115
2.6.6 校准 118
2.7 小结 119
2.8 问题与思考 119
第3章 SoC FPGA嵌入式设计基础 120
3.1 SoC FPGA简介 120
3.1.1 SoC FPGA系列器件组合 120
3.1.2 SoC FPGA的工具和软件 124
3.1.3 SoC FPGA的生态系统 124
3.2 基于ARM Coretex A9 MPCore的硬件处理系统 126
3.2.1 硬核处理器系统框图与系统集成 127
3.2.2 Endian支持 129
3.2.3 HPS-FPGA桥接 129
3.2.4 HPS地址映射 130
3.3 Qsys系统集成工具 131
3.3.1 Qsys简介 131
3.3.2 在Qsys中例化硬核处理器系统组件 132
3.4 SoC嵌入式设计套装(Embedded Design Suite) 140
3.4.1 SoC EDS介绍 140
3.4.2 Embedded Command Shell 143
3.4.3 ARM DS-5AE 143
3.4.4 启动工具使用指南 144
3.4.5 硬件库(Hardware Library) 145
3.4.6 HPS Flash编程器 146
3.4.7 裸金属编译器 147
3.4.8 Linux软件开发工具 147
3.5 小结 148
3.6 问题与思考 148
第4章 时序约束与时序分析 149
4.1 时序约束与时序分析基础 149
4.1.1 周期与最高频率 150
4.1.2 利用Quartus Ⅱ工具分析设计 152
4.1.3 时钟建立时间 155
4.1.4 时钟保持时间 156
4.1.5 时钟输出延时 156
4.1.6 引脚到引脚的延迟 157
4.1.7 Slack 157
4.1.8 时钟偏斜 158
4.1.9 Quartus Ⅱ时序分析工具和优化向导 158
4.2 设置时序约束的常用方法 159
4.2.1 指定全局时序约束 160
4.2.2 指定个别时钟约束 164
4.3 高级时序分析 172
4.3.1 时钟偏斜 172
4.3.2 多时钟域 174
4.3.3 多周期约束 174
4.3.4 伪路径 181
4.3.5 修正保持时间违例 183
4.3.6 异步时钟域时序分析 184
4.4 最小化时序分析 185
4.5 使用Tcl工具进行高级时序分析 186
4.6 TimeQuest简介 187
4.7 小结 190
4.8 问题与思考 190
第5章 设计优化 191
5.1 解读设计 191
5.1.1 内部时钟域 192
5.1.2 多周期路径和伪路径 193
5.1.3 I/O接口的时序要求 194
5.1.4 平衡资源的使用 194
5.2 设计优化的基本流程和首次编译 195
5.2.1 设计优化基本流程 195
5.2.2 首次编译的约束和设置 196
5.2.3 查看编译报告 198
5.3 资源利用优化 200
5.3.1 设计代码优化 201
5.3.2 资源重新分配 201
5.3.3 解决互连资源紧张的问题 203
5.3.4 逻辑综合面积优化 203
5.3.5 网表面积优化 207
5.3.6 寄存器打包 209
5.3.7 Quartus Ⅱ中的资源优化顾问 211
5.4 I/O时序优化 211
5.4.1 执行时序驱动的编译 211
5.4.2 使用IOE中的触发器 212
5.4.3 可编程输入/输出延时 215
5.4.4 使用锁相环对时钟移相 217
5.4.5 其他I/O时序优化方法 218
5.5 最高时钟频率优化 219
5.5.1 设计代码优化 219
5.5.2 逻辑综合速度优化 225
5.5.3 布局布线器设置 227
5.5.4 网表优化和物理综合 228
5.5.5 使用LogicLock对局部进行优化 233
5.5.6 位置约束、手动布局和反标注 234
5.5.7 Quartus Ⅱ中的时序优化顾问 235
5.6 使用DSE工具优化设计 236
5.6.1 为什么需要DSE 236
5.6.2 什么是DSE,如何使用 236
5.7 如何减少编译时间 238
5.8 设计优化实例 239
5.9 小结 242
5.10 问题与思考 243
第6章 Altera OpenCL开发套件和其他高级工具 244
6.1 命令行与Tcl脚本 244
6.1.1 命令行脚本 245
6.1.2 Tcl脚本 249
6.1.3 使用命令行和Tcl脚本 253
6.2 DSP Builder工具 254
6.2.1 DSP Builder设计流程 254
6.2.2 与SOPC Builder一起构建系统 258
6.3 Altera OpenCL软件开发套件 259
6.3.1 OpenCL基本介绍 259
6.3.2 OpenCL架构 260
6.3.3 AOCL的安装和应用 264
6.3.4 AOCL FPGA编程 267
6.4 小结 272
6.5 问题与思考 272
第7章 FPGA系统级设计技术 273
7.1 信号完整性及常用I/O电平标准 273
7.1.1 信号完整性 273
7.1.2 单端标准 278
7.1.3 差分标准 282
7.1.4 伪差分标准 285
7.1.5 片上终端电阻 285
7.2 电源完整性设计 286
7.2.1 电源完整性 286
7.2.2 同步翻转噪声 287
7.2.3 非理想回路 290
7.2.4 低阻抗电源分配系统 293
7.3 功耗分析和热设计 297
7.3.1 功耗的挑战 297
7.3.2 FPGA的功耗 297
7.3.3 热设计 299
7.4 SERDES与高速系统设计 301
7.4.1 SERDES的基本概念 302
7.4.2 Altera Stratix IV GX中SERDES的基本结构 305
7.4.3 典型高速系统应用框图举例 311
7.4.4 高速PCB设计注意事项 315
7.5 小结 317
7.6 问题与思考 318