书籍介绍
《Altera
FPGA工程师成长手册》陈欣波等编著
- 基于多年教学经历,合理安排理论知识和时间内容
- 按照学习的认知秩序组织内容,力求深入浅出,简单易懂
- 涵盖从基本逻辑电路设计到DSP模块设计,再到基于软核处理器的设计
- 列举大量实例讲解难于理解的内容,并给出详细说明和实现步骤
- 着力贯彻自顶向下的设计思路,培养层次化和模块化的设计思想
电子技术
论坛推荐
27个应用案例、3个综合案例
下周
FPGA论坛即将开展版块内小活动,论坛将以出版社赠送的5本 《Altera FPGA工程师成长手册》(定价49元)作为活动奖品
免费送给5位幸运会员,希望FPGA的网友们继续给力,积极参与活动,更多关注与支持电子论坛FPGA论坛。
书籍目录
第1篇 FPGA开发基础
第1章 EDA技术概述 2
1.1 EDA技术及发展 2
1.1.1 何谓EDA技术 2
1.1.2 基于大规模可编程逻辑器件的数字系统设计 2
1.2 可编程逻辑器件的发展简介 3
1.2.1 逻辑设计基本流程 3
1.2.2 可编程逻辑器件PAL 5
1.2.3 从PAL到PLD到复杂可编程逻辑器件CPLD 7
1.2.4 从CPLD到FPGA的产生 9
1.2.5 在系统编程问题的解决 9
1.3 FPGA系统结构和资源 10
1.3.1 可编程逻辑单元(LE) 10
1.3.2 可编程布线 12
1.3.3 可编程I/O 13
1.3.4 嵌入式存储器RAM 13
1.3.5 嵌入式乘法器 13
1.3.6 时钟 13
1.3.7 锁相环 14
1.3.8 FPGA与CPLD的对比 14
1.4 FPGA的设计流程 15
1.5 Altera公司FPGA低成本器件——Cyclone II 16
1.5.1 主要特性 16
1.5.2 基于数字信号处理(DSP)应用 17
1.5.3 专用外部存储器接口 17
1.5.4 嵌入式锁相环 18
1.5.5 单端I/O特性 19
1.5.6 差分I/O特性 20
1.5.7 自动CRC检测 20
1.5.8 支持Nios II嵌入式处理器 21
1.6 Altera公司FPGA高成本器件——Stratix Ⅲ器件 21
1.6.1 主要特性 21
1.6.2 体系架构 22
1.6.3 TriMatrix嵌入式存储器 23
1.6.4 DSP块 24
1.6.5 时钟网络和锁相环 25
1.6.6 高速I/O信号和接口 25
1.6.7 设计安全性 26
1.7 小结 27
第2章 Altera Quartus II软件开发流程 28
2.1 Quartus II综述 28
2.1.1 Quartus II软件的特点 28
2.1.2 Quartus II设计软件的流程和集成的工具 29
2.1.3 Quartus II软件的用户界面 30
2.2 设计输入 33
2.2.1 建立工程 33
2.2.2 输入方式 34
2.3 约束输入 36
2.3.1 使用分配编辑器 36
2.3.2 使用引脚规划器 38
2.3.3 使用Settings对话框 39
2.4 综合 40
2.4.1 使用Quartus II软件集成的综合工具 40
2.4.2 使用其他 EDA 综合工具 42
2.4.3 使用RTL查看器和状态机查看器分析综合结果 43
2.5 布局布线 45
2.5.1 设置Fitter选项 46
2.5.2 设置物理综合优化选项 48
2.5.3 通过反标保留分配 50
2.6 仿真 50
2.6.1 Quartus II仿真器设置 52
2.6.2 建立用于仿真的波形文件 53
2.7 编程与配置 56
2.7.1 建立编程文件 56
2.7.2 器件编程和配置 59
2.8 小结 60
第3章 Altera Quartus II软件开发向导 61
3.1 模块编辑及设计流程 61
3.1.1 原理图输入文件的建立 61
3.1.2 图表模块输入 65
3.1.3 原理图设计流程 71
3.1.4 波形仿真 77
3.1.5 引脚分配 79
3.1.6 下载验证 79
3.1.7 Quartus II的几个常用功能 83
3.2 文本编辑及设计流程 84
3.2.1 建立文本文件 84
3.2.2 文本设计流程——建立新工程 88
3.2.3 文本设计流程——编译工程 88
3.2.4 文本设计流程——建立矢量波形文件 89
3.2.5 文本设计流程——仿真波形 92
3.2.6 文本设计流程——引脚分配及下载验证 94
3.3 混合设计 94
3.3.1 建立计数器文件 94
3.3.2 建立七段译码显示电路文件 95
3.3.3 设计流程 96
3.4 使用Signal Tap II的实时测试 100
3.4.1 打开Signal Tap II的编辑窗口 100
3.4.2 调入待测信号 100
3.4.3 设置Signal Tap II参数 102
3.4.4 文件存盘 103
3.4.5 编译选择 104
3.4.6 启动Signal Tap II进行采样分析 104
3.4.7 Signal Tap II的其他设置和控制方法 104
3.5 小结 105
第4章 VHDL语言基础 106
4.1 VHDL语言基本结构 106
4.1.1 实体 108
4.1.2 结构体 109
4.1.3 配置 110
4.1.4 库 111
4.2 VHDL语言要素 114
4.2.1 VHDL语法规则 114
4.2.2 VHDL数据对象 116
4.2.3 数据类型 118
4.2.4 操作符 120
4.3 顺序语句 123
4.3.1 赋值语句 123
4.3.2 IF语句 124
4.3.3 CASE语句 126
4.3.4 LOOP语句 127
4.3.5 跳出循环的语句 129
4.3.6 RETURN语句 130
4.3.7 NULL语句 131
4.4 并行语句 131
4.4.1 并行信号赋值语句 131
4.4.2 进程(PROCESS)语句 133
4.5 子程序 136
4.5.1 过程 137
4.5.2 函数 140
4.6 VHDL语言描述风格 143
4.6.1 行为描述 143
4.6.2 数据流描述 144
4.6.3 结构化描述 145
4.7 小结 148
第5章 基本逻辑电路设计 149
5.1 组合逻辑电路设计 149
5.1.1 门电路设计 149
5.1.2 三态门及总线缓冲器设计 151
5.1.3 编码器、译码器设计 153
5.1.4 多路数据选择器和多路数据分配器设计 155
5.2 时序逻辑电路设计 157
5.2.1 触发器设计 158
5.2.2 寄存器设计 159
5.2.3 计数器设计 161
5.3 有限状态机电路设计 165
5.3.1 有限状态机概述 165
5.3.2 有限状态机的算法描述 166
5.3.3 有限状态机的VHDL描述模式 167
5.4 设计实例:交通信号灯控制器设计 171
5.4.1 交通信号灯控制器的设计要求 171
5.4.2 交通信号灯控制器的设计分析 172
5.5 小结 179
第2篇 FPGA实例开发
第6章 宏模块和LPM函数的应用 182
6.1 存储器模块的用法 182
6.1.1 RAM的使用 182
6.1.2 ROM的建立过程 187
6.1.3 FIFO的建立使用 191
6.2 乘法器和锁相环的使用 193
6.2.1 乘法器的使用 193
6.2.2 锁相环的使用 196
6.3 NCO IP核的使用 199
6.4 基于宏模块的设计实例 204
6.4.1 正弦波信号发生器的设计 204
6.4.2 流水线乘累加器的设计 205
6.5 小结 208
第7章 基于FPGA的DSP开发设计 209
7.1 概述 209
7.2 DSP Builder功能简介与设计流程 210
7.2.1 DSP Builder功能简介 210
7.2.2 DSP Builder设计流程 210
7.3 基于DSP Builder技术的设计示例——调幅电路 212
7.3.1 在MATLAB/Simulink中建立算法模型 212
7.3.2 准备工作 212
7.3.3 在新模型窗口中添加单元模块 215
7.3.4 在Simulink环境中仿真 219
7.3.5 在Modelsim环境中进行功能仿真 222
7.3.6 在Quartus II环境中进行时序仿真 224
7.4 基于DSP Builder的层次化设计——FIR滤波器 229
7.4.1 FIR滤波器的原理 229
7.4.2 建立系统设计模型 230
7.4.3 建立子系统的模型 232
7.4.4 在Simulink和Modelsim中仿真 234
7.5 Megacore函数的使用 236
7.5.1 安装Megacore函数 236
7.5.2 使用Megacore函数的设计流程 236
7.5.3 使用Megacore函数设计FIR滤波器 236
7.6 小结 241
第3篇 FPGA高级应用
第8章 SOPC技术开发概述 244
8.1 SOPC的概念 244
8.2 SOPC系统的核心——Nios II处理器 245
8.3 SOPC系统开发流程 247
8.3.1 SOPC Builder的设计流程 247
8.3.2 SOPC的设计阶段 248
8.4 SOPC系统开发环境 249
8.5 小结 251
第9章 SOPC系统构架 252
9.1 Nios II处理器体系结构 252
9.1.1 Nios II的内部寄存器 254
9.1.2 Nios II存储器与I/O组织 256
9.2 Nios II的异常处理 259
9.2.1 硬件中断 259
9.2.2 软件异常 259
9.2.3 NIos II的异常处理流程 260
9.3 算术逻辑单元和复位信号 261
9.3.1 算术逻辑单元 261
9.3.2 复位信号 262
9.4 JTAG调试模块 262
9.5 Avalon总线 263
9.5.1 Avalon互连规范 264
9.5.2 Avalon总线的概念 265
9.5.3 Avalon总线信号 267
9.5.4 Avalon的中断与复位信号 271
9.5.5 Avalon总线传输 272
9.6 小结 272
第10章 SOPC系统硬件开发 273
10.1 数字钟的设计要求 273
10.2 硬件开发流程 273
10.3 创建Quartus II工程 274
10.3.1 创建Quartus II工程 274
10.3.2 创建顶层实体文件 276
10.4 创建Nios II系统模块 277
10.4.1 创建新系统 277
10.4.2 加入Nios II处理器 278
10.4.3 加入外围模块 280
10.4.4 分配系统各IP模块的地址和中断号分配、Nios II系统配置 284
10.4.5 生成Nios II并添加到工程中 286
10.4.6 建立锁相环PLL模块 288
10.5 编译和下载 294
10.5.1 引脚分配 294
10.5.2 配置工程 295
10.5.3 编译设计 296
10.5.4 程序配置下载 296
10.6 小结 297
第11章 SOPC系统软件开发 298
11.1 Nios II IDE简介 298
11.1.1 Nios II IDE的功能模块 298
11.1.2 Nios II IDE开发流程 300
11.2 基于Nios II IDE软件示例——数字钟软件 301
11.2.1 建立软件工程 301
11.2.2 编译工程 305
11.2.3 运行 308
11.3 数字钟的程序设计 310
11.4 HAL系统库 313
11.4.1 HAL简述 313
11.4.2 目前提供的主要HAL资源 315
11. 5 使用HAL开发应用程序 317
11.6 小结 318
第12章 Nios II常用外设使用 319
12.1 并行输入/输出内核(PIO) 319
12.1.1 PIO内核简介 319
12.1.2 PIO内核的配置 320
12.1.3 PIO内核的C语言编程 323
12.2 定时器的使用 328
12.2.1 内核定时器简介 329
12.2.2 定时器内核的配置 330
12.2.3 定时器内核的C语言编程 331
12.3 Flash接口控制器的使用 333
12.3.1 Flash接口控制器简介 333
12.3.2 CFI控制器的配置 334
12.3.3 CFI控制器的C语言编程 335
12.4 SDRAM控制器的使用 336
12.4.1 SDRAM控制器内核概述 336
12.4.2 SDRAM内核配置 338
12.4.3 软件编程 340
12.5 UART的使用 341
12.5.1 UART内核简介 341
12.5.2 UART内核的寄存器 343
12.5.3 UART内核配置 346
12.5.4 软件编程 348
12.6 小结 350
第13章 LogicLock优化技术 351
13.1 LogicLock优化技术简介 351
13.1.1 LogicLock 设计方法目标 351
13.1.2 LogicLock的区域 352
13.1.3 锁定区域的基本方式 353
13.1.4 LogicLock技术的应用流程 354
13.2 为应用LogicLock技术准备的具体实例 355
13.2.1 数字滤波器结构及其VHDL描述 355
13.2.2 滤波器设计和结果 358
13.3 LogicLock优化设计——底层模块设计 359
13.3.1 建立底层模块工程 360
13.3.2 建立父区域 360
13.3.3 定义逻辑锁定子区域 363
13.3.4 将设计实体移至锁定区域 365
13.3.5 编译优化锁定后的filter模块 365
13.3.6 输出逻辑锁定后的VQM文件 367
13.4 LogicLock优化设计——顶层设计 368
13.4.1 建立顶层工程 368
13.4.2 将VQM文件加到顶层工程中 368
13.4.3 导入LogicLock约束 370
13.5 小结 373
第14章 数字系统设计实例——电子乐器 374
14.1 电子乐器的设计 374
14.1.1 设计要求 374
14.1.2 设计原理 374
14.1.3 乐曲硬件演奏电路的层次化设计方案 376
14.2 FFT设计 381
14.2.1 FFT的原理 381
14.2.2 基于Dsp Builder设计FFT的方法 382
14.3 SD卡驱动的设计 384
14.3.1 SD卡和SPI内核简介 385
14.3.2 SD卡与FPGA接口电路 386
14.3.3 硬件系统的SOPC设计 387
14.3.4 系统软件设计 388
14.4 小结 394