图书介绍
FPGA之道PDF|Epub|txt|kindle电子书版本网盘下载
![FPGA之道](https://www.shukui.net/cover/54/34452371.jpg)
- 狄超,刘萌著 著
- 出版社: 西安:西安交通大学出版社
- ISBN:9787560561899
- 出版时间:2014
- 标注页数:1196页
- 文件大小:179MB
- 文件页数:1213页
- 主题词:可编程序逻辑器件
PDF下载
下载说明
FPGA之道PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
1 与我同行1
1.1 个人简介1
1.2 “道”的含义1
1.3 写作目的2
1.3.1 技术人生,有总结才有提高2
1.3.2 从入门到精通,带你走上FPGA之路2
1.3.3 即是教材,也是参考3
1.3.4 一起出生吧!3
1.4 内容综述4
1.5 默认共识5
1.6 3,2,1,我们开始6
2 共同语言7
2.1 什么是FPGA?7
2.1.1 名词解释7
2.1.2 发展简史7
2.1.3 应用方向8
2.2 模拟与数字10
2.2.1 模拟的与数字的11
2.2.2 模拟信号与数字信号11
2.2.2.1 模拟信号的概念12
2.2.2.2 数字信号的概念12
2.2.2.3 模拟信号转换为数字信号13
2.2.3 模拟电路与数字电路14
2.2.3.1 电信号的本质14
2.2.3.2 模拟电路简介15
2.2.3.3 数字电路简介16
2.2.4 模拟信号处理电路系统与数字信号处理电路系统17
2.2.4.1 模拟信号处理电路系统17
2.2.4.2 数字信号处理电路系统17
2.2.4.3 模拟系统与数字系统的优缺点比较18
2.2.4.4 模拟系统与数字系统之间的接口19
2.2.4.5 数字系统之间的接口20
2.3 数字逻辑电路基础知识24
2.3.1 数与数制简介24
2.3.1.1 常见数制简介24
2.3.1.2 数制间的转换25
2.3.1.3 二进制编码简介30
2.3.2 数字逻辑的基本运算32
2.3.2.1 集合与数字逻辑32
2.3.2.2 数字逻辑的基本运算33
2.3.2.3 真值表34
2.3.2.4 数字逻辑运算的基本公式与规律35
2.3.2.5 数字逻辑运算中的三个规则36
2.3.3 数字逻辑的化简37
2.3.3.1 公式化简法37
2.3.3.2 卡诺图化简法38
2.3.3.3 系统化简法46
2.3.4 数字逻辑功能单元49
2.3.4.1 基本逻辑功能单元简介50
2.3.4.2 小规模集成组合逻辑单元简介57
2.3.4.3 时序逻辑基本单元简介71
2.3.5 数字逻辑的载体93
2.3.5.1 半导体器件简介93
2.3.5.2 CMOS门电路举例98
2.4 硬件描述语言102
2.4.1 图形化设计方法简介102
2.4.2 从图形化设计到HDL103
2.4.3 HDL简史103
2.4.3.1 VHDL简史103
2.4.3.2 Verilog HDL简史104
2.4.4 软件编程思路与FPGA编程思路的变革105
2.4.4.1 名称对比分析105
2.4.4.2 抽象层级对比107
2.4.4.3 编译原理对比107
2.4.4.4 执行方式对比108
2.5 硬件扩展110
2.5.1 电源转换芯片系列110
2.5.2 数模转换芯片系列110
2.5.3 数据存储芯片系列111
2.5.4 微处理器芯片系列112
2.6 最自由的开发者113
3 知己知彼114
3.1 可编程逻辑器件的原理架构114
3.1.1 集成电路简介114
3.1.2 PLA原理架构115
3.1.3 PAL原理架构115
3.1.4 GAL原理架构116
3.1.5 FPLA原理架构118
3.1.6 CPLD原理架构119
3.1.7 FPGA原理架构119
3.2 FPGA产品介绍121
3.2.1 Xilinx公司FPGA产品简介121
3.2.2 Altera公司FPGA产品简介121
3.2.3 其他公司FPGA产品简介121
3.2.4 FPGA产品的工业等级简介122
3.2.5 FPGA产品的速度等级简介122
3.3 FPGA内部资源介绍123
3.3.1 逻辑资源块123
3.3.2 时钟网络资源126
3.3.3 时钟处理单元127
3.3.3.1 PLL127
3.3.3.2 DCM129
3.3.4 BLOCK RAM130
3.3.5 DSP130
3.3.6 布线资源132
3.3.7 接口资源133
3.3.8 专用高速接口资源135
3.3.9 To be continued135
3.4 FPGA芯片的供电135
3.4.1 外部端口供电机制135
3.4.2 内部逻辑供电机制136
3.4.3 专有电路供电机制136
3.4.4 电源稳定性讨论137
3.5 FPGA芯片的配置方法137
3.5.1 主动配置模式137
3.5.2 被动配置模式138
3.5.3 JTAG配置模式139
3.5.4 应用模式简介139
3.6 IP核介绍140
3.6.1 IP核概述140
3.6.2 嵌入式微处理器概述141
3.7 组合逻辑电路与时序逻辑电路141
3.8 同步逻辑电路与异步逻辑电路142
4 开发流程145
4.1 背景知识的分析与研究145
4.2 项目方案的设计与制定146
4.2.1 写清楚项目背景147
4.2.2 写清楚项目需求147
4.2.3 写清楚方案框架147
4.2.4 写清楚算法细节148
4.2.5 确保逻辑完备性148
4.2.6 确保实现无关性148
4.2.7 确保书面易懂性149
4.3 算法可行性仿真与验证149
4.3.1 Why149
4.3.2 When151
4.3.3 How151
4.4 FPGA设计方案的制定151
4.4.1 编写FPGA设计方案的好处152
4.4.2 如何编写FPGA设计方案152
4.5 FPGA功能代码的编写153
4.6 FPGA设计的功能仿真154
4.7 FPGA顶层模块的门级仿真156
4.7.1 门级仿真简介156
4.7.2 形式化验证简介157
4.7.3 形式化验证在FPGA设计中的应用158
4.8 FPGA设计的用户约束159
4.9 FPGA设计的时序分析160
4.10 FPGA顶层模块的时序仿真163
4.11 FPGA设计的实现过程164
4.11.1 编译概述165
4.11.2 编译流程之综合165
4.11.2.1 综合的输入165
4.11.2.2 综合的输出168
4.11.2.3 综合的工具169
4.11.3 编译流程之翻译融合169
4.11.3.1 翻译融合的输入169
4.11.3.2 翻译融合的输出170
4.11.3.3 翻译融合工具171
4.11.4 编译流程之映射171
4.11.4.1 映射的输入171
4.11.4.2 映射的输出173
4.11.4.3 映射工具174
4.11.5 编译流程之布局布线174
4.11.5.1 布局布线的输入174
4.11.5.2 布局布线的输出176
4.11.5.3 布局布线工具176
4.11.6 编译流程之配置生成176
4.11.6.1 配置生成的输入177
4.11.6.2 配置生成的输出177
4.11.6.3 配置生成工具178
4.11.7 高级编译方法简介178
4.11.7.1 Partition178
4.11.7.2 手动布局布线181
4.11.7.3 智能化实现指导182
4.11.7.4 时序收敛方案182
4.12 开发板制作182
4.13 FPGA设计的上板调试183
4.13.1 “实践是检验真理的唯一标准”183
4.13.2 如何解决问题183
4.13.3 如何找到问题185
4.13.4 “时间是检验真理的第二标准”186
4.14 项目总结备份与后期维护187
4.15 开发流程中的团队分工187
5 程序设计189
5.1 编程语法189
5.1.1 VHDL基本语法189
5.1.1.1 VHDL基本程序框架189
5.1.1.2 VHDL注释语法198
5.1.1.3 VHDL的signal、variable与constant199
5.1.1.4 VHDL数据类型200
5.1.1.5 VHDL初始化206
5.1.1.6 VHDL的操作符号207
5.1.1.7 VHDL的并行语句215
5.1.1.8 VHDL的串行语句225
5.1.1.9 编写自己的VHDL库文件234
5.1.1.10 VHDL编写注意事项240
5.1.2 Verilog基本语法246
5.1.2.1 Verilog基本程序框架246
5.1.2.2 Verilog注释语法253
5.1.2.3 Verilog数据类型254
5.1.2.4 Verilog初始化260
5.1.2.5 Verilog的操作符号261
5.1.2.6 Verilog的并行语句271
5.1.2.7 Verilog的串行语句285
5.1.2.8 Verilog中的编译指令294
5.1.2.9 Verilog中的编写注意事项296
5.1.3 VHDL与Verilog的比较301
5.1.3.1 语法比较301
5.1.3.2 语言比较304
5.2 编程思路305
5.2.1 代码风格306
5.2.1.1 代码风格四步走306
5.2.1.2 HDL选择306
5.2.1.3 命名规则307
5.2.1.4 语法结构311
5.2.1.5 空格空行316
5.2.1.6 注释编写317
5.2.1.7 模块设计320
5.2.1.8 文件结构324
5.2.2 三种描述方式324
5.2.2.1 结构化描述方式324
5.2.2.2 数据流描述方式326
5.2.2.3 行为级描述方式328
5.2.3 顶层设计模块330
5.2.3.1 概念浅析330
5.2.3.2 特点说明331
5.2.4 设计的分类332
5.2.4.1 按功能分332
5.2.4.2 按面向分332
5.2.4.3 按速度和规模分333
5.2.5 编写纯净的组合或时序逻辑334
5.2.5.1 组合逻辑描述方法334
5.2.5.2 纯时序逻辑描述方法336
5.2.5.3 清晰的时序逻辑描述方法338
5.2.5.4 有隐患的混写逻辑340
5.2.6 正确的变量访问思路345
5.2.6.1 变量访问思路概述345
5.2.6.2 赋值冲突348
5.2.6.3 总线是怎么回事353
5.2.7 数字电路中的隐患361
5.2.7.1 寄存器输出的不稳定态361
5.2.7.2 组合逻辑中的竞争与险象369
5.2.8 时钟及时钟域385
5.2.8.1 时钟,时序逻辑的心跳385
5.2.8.2 时钟信号基本特征385
5.2.8.3 时钟信号的分类386
5.2.8.4 时钟域389
5.2.8.5 跨时钟域问题394
5.2.9 DCM与PLL403
5.2.9.1 PLL模块基本端口简介403
5.2.9.2 DCM模块基本端口简介406
5.2.9.3 应用场合409
5.2.10 复位的设计416
5.2.10.1 为什么FPGA设计中要有复位416
5.2.10.2 复位方式的分类417
5.2.10.3 复位的设计方法418
5.2.11 数据的存储429
5.2.11.1 为什么需要数据存储429
5.2.11.2 数据存储的载体429
5.2.11.3 数据存储的形式、实现及应用场合430
5.2.11.4 寄存器的HDL描述与用法433
5.2.11.5 单口RAM的HDL描述与用法434
5.2.11.6 双口RAM的HDL描述与用法441
5.2.11.7 ROM的HDL描述与用法443
5.2.11.8 同步FIFO的HDL描述与用法446
5.2.11.9 异步FIFO的HDL描述与用法448
5.2.11.10 FIFO使用小技巧之冗余法461
5.2.11.11 STACK的HDL描述与用法465
5.2.11.12 外部存储芯片的HDL描述与用法467
5.2.11.13 数据存储的使用思路467
5.2.12 状态机,FPGA的灵魂469
5.2.12.1 状态机的概念469
5.2.12.2 状态机的模型472
5.2.12.3 状态机的设计477
5.2.12.4 状态机的HDL模板492
5.2.12.5 状态的编码方式511
5.2.12.6 状态机的实现方式513
5.2.12.7 显式状态机与隐式状态机517
5.2.13 关于外界接口的编程思路523
5.2.13.1 按传递方向分类523
5.2.13.2 按电气特性分类528
5.2.13.3 按功能特性分类531
5.2.13.4 按时钟特性分类532
5.2.13.5 按数据位宽分类551
5.2.13.6 按速度分类555
5.2.14 数的表示与数的运算557
5.2.14.1 FPGA中数的存储形式557
5.2.14.2 整数在FPGA中的表示形式557
5.2.14.3 整数的加、减运算563
5.2.14.4 整数的乘法运算572
5.2.14.5 整数的除法运算651
5.2.14.6 整数的其他类型运算简介667
5.2.14.7 非整数运算浅析674
5.2.15 时空变换684
5.2.15.1 时空变换之基本概念684
5.2.15.2 时空变换之时域优化686
5.2.15.3 时空变换之空域优化702
5.2.15.4 时空变换之时间换空间707
5.2.15.5 时空变换之空间换时间719
5.2.16 “万能”的查表法732
5.2.16.1 正弦波发生器示例732
5.2.16.2 Gamma校正示例735
5.2.17 代码中的约束信息741
5.2.17.1 为什么要在HDL中加入约束信息741
5.2.17.2 HDL中的常用约束示例741
5.2.18 原语的使用756
5.2.18.1 什么是原语756
5.2.18.2 需要使用原语的情况759
5.2.18.3 用原语表示IP核的好处763
5.2.18.4 UDP简介767
5.2.19 提高设计的综合性能768
5.2.19.1 提高设计的鲁棒性768
5.2.19.2 提高设计的自测性775
5.2.19.3 提高设计的重用性790
5.2.19.4 提高设计的易改性790
5.2.19.5 提高设计的移植性806
5.2.19.6 提高设计的保密性807
5.2.20 设计方法学讨论808
5.2.21 FPGA程序设计的境界809
6 功能仿真811
6.1 仿真原理811
6.1.1 串行模仿并行思路分析811
6.1.2 有限模仿无限思路分析812
6.1.3 组合逻辑仿真原理812
6.1.4 时序逻辑仿真原理813
6.1.5 HDL的仿真原理813
6.1.6 仿真时间与物理时间814
6.2 仿真语法815
6.2.1 Graphic Waveform815
6.2.1.1 数字波形简介815
6.2.1.2 从实际到仿真817
6.2.1.3 “Hello world”之Graphic Waveform818
6.2.1.4 一些绘制波形的操作818
6.2.1.5 一些观察波形的操作820
6.2.1.6 波形仿真结果分析及重要注意事项820
6.2.2 VHDL Test Bench822
6.2.2.1 “Hello World”之VHDL Test Bench822
6.2.2.2 继承描述语法825
6.2.2.3 时间相关语法825
6.2.2.4 时钟激励语法827
6.2.2.5 循环仿真语法829
6.2.2.6 进程语句体831
6.2.2.7 文件操作语法832
6.2.3 Verilog Test Fixture837
6.2.3.1 “Hello world”之Verilog Test Fixture837
6.2.3.2 继承描述语法839
6.2.3.3 时间相关语法839
6.2.3.4 时钟激励语法843
6.2.3.5 循环仿真语法846
6.2.3.6 程序块语句体847
6.2.3.7 字符显示语法848
6.2.3.8 系统存储载入函数849
6.2.3.9 系统文件操作函数850
6.2.3.10 系统屏幕输出函数855
6.2.3.11 系统随机数生成函数855
6.2.3.12 系统仿真时间函数857
6.2.3.13 系统仿真进度控制任务858
6.2.4 System Verilog SVT859
6.2.4.1 “Hello World”之面向过程SV Test859
6.2.4.2 “Hello World”之面向对象SV Test868
6.2.4.3 测试平台相关语法878
6.2.4.4 System Verilog的数据类型894
6.2.4.5 System Verilog的数组类型906
6.2.4.6 System Verilog的操作符号920
6.2.4.7 System Verilog的过程语句922
6.2.4.8 System Verilog的进程语句930
6.2.4.9 System Verilog的任务和函数930
6.2.4.10 System Verilog的线程及线程间通信938
6.2.4.11 System Verilog的系统函数、任务语法960
6.2.4.12 System Verilog的面向对象编程语法969
6.2.4.13 System Verilog的随机化语法995
6.2.5 Assertion1016
6.2.5.1 Why Assertion?1017
6.2.5.2 SVA分类1017
6.2.5.3 SVA expression1023
6.2.5.4 SVA sequence1026
6.2.5.5 SVA property1033
6.2.5.6 SVA assert1035
6.2.5.7 并发断言进阶1036
6.3 仿真环境1048
6.3.1 待测设计准备1049
6.3.1.1 寻找所需的模块1049
6.3.1.2 寻找所需的文件1050
6.3.1.3 Clean工程的概念1051
6.3.2 仿真库文件准备1051
6.3.2.1 建Xilinx平台相关的仿真库1052
6.3.2.2 建立Altera平台相关的仿真库1069
6.3.3 仿真平台的结构设计1069
6.3.4 仿真平台的变形1070
6.3.4.1 直接观察波形法1071
6.3.4.2 用多仿真平台替换任务生成模块1071
6.3.4.3 用参考设计替换记分板模块1071
6.3.4.4 添加逆变换模块1073
6.3.4.5 第三方器件模拟1074
6.4 仿真思路1075
6.4.1 如何围绕FPGA项目展开仿真1075
6.4.1.1 仿真介入的时机1075
6.4.1.2 自底向上的仿真1076
6.4.1.3 自顶向下的仿真1076
6.4.1.4 回归测试1077
6.4.2 仿真模块的实现1077
6.4.3 测试用例的分类1078
6.4.4 定位问题的手段浅析1079
6.4.4.1 找出所有的问题1079
6.4.4.2 如何具体进行问题排查1080
6.4.4.3 如何加速问题的出现1081
6.5 仿真覆盖率1081
6.5.1 覆盖率浅析1081
6.5.2 代码覆盖率简介1082
6.5.2.1 代码覆盖率的种类1083
6.5.2.2 代码覆盖率的示例1086
6.5.3 功能覆盖率简介1096
6.5.3.1 覆盖组简介1097
6.5.3.2 覆盖组数据的收集规则1102
6.5.3.3 覆盖组的选项1119
6.5.3.4 在仿真中进行覆盖率统计1123
6.5.4 覆盖率的合并1124
7 时序分析1128
7.1 基本概念介绍1128
7.1.1 常用时间参数介绍1128
7.1.2 线延迟与门延迟1129
7.1.3 影响延迟的因素1130
7.1.3.1 温度与电压1130
7.1.3.2 三种工况1131
7.1.4 时钟信号的偏差描述1132
7.2 时序分析的原理1133
7.2.1 一道时序分析的例题1133
7.2.1.1 解答一:能否正确工作分析1134
7.2.1.2 解答二:最大时钟速率分析1136
7.2.1.3 延伸二:最小时钟速率?1137
7.2.1.4 解答三:保持时间不足情形分析1138
7.2.2 同步时序逻辑的分析原理1138
7.2.2.1 逻辑锥的概念1138
7.2.2.2 逻辑锥的划分1138
7.2.2.3 逻辑锥的求解1139
7.2.3 其他常见逻辑情形的应对方法1143
7.2.3.1 内部时钟相关时序分析1143
7.2.3.2 外部接口相关时序分析1151
7.3 常用时序约束介绍1167
7.3.1 时序环境约束1168
7.3.2 分组时序约束1168
7.3.3 常用时序约束1169
7.3.2.1 周期约束1169
7.3.2.2 输入约束1171
7.3.2.3 组间约束1175
7.3.2.4 输出约束1177
7.4 根据时序报告修改设计1179
7.4.1 时序分析报告示例1179
7.4.1.1 待分析设计1179
7.4.1.2 时序约束文件1180
7.4.1.3 时序报告简介1181
7.4.2 常见问题及修改1189
7.4.2.1 可以不改的一些问题1189
7.4.2.2 常见时序收敛的手段1189
8 梦想启航1193
8.1 你懂了吗?1193
8.2 趁热打铁吧1193
8.3 常回来看看1193
8.4 共同成长1193
8.5 祝你好运1194
8.6 致谢1195
参考文献1196