书籍详情
你好FPGA:一本可以听的入门书
作者:至芯科技
出版社:电子工业出版社
出版时间:2016-07-01
ISBN:9787121290916
定价:¥65.00
购买这本书可以去
内容简介
本书由至芯科技在各大高校的授课内容整理而来,是为初学者量身定制的FPGA入门教材,从基础的软件安装、工具使用、语法解释、设计方法、常用IP,到最后的设计技巧及大量的进阶实验,内容环环相扣,为读者建立了一个比较清晰的学习脉络。设计思路及方法为本书重点强调的内容,它作为一条主线贯穿始终,希望读者学习时注意体会。只有掌握了正确的学习和设计方法,读者才可能在数字逻辑设计的领域越走越远。本书没有收录过多烦琐的理论,一切从实战出发,按照一套相对高效的设计方法直接切入一个个小的项目,深入浅出。希望以此可以培养广大读者的设计能力,我们不但要知道某个逻辑可以这样写,更重要的还必须清楚为什么这样写,这样写有什么优势或劣势,还有没有优化空间等。与本书配套的视频已保存在网络云中,读者可在下载后参考学习。本书内容由浅入深,适合广大可编程逻辑器件的初学者作为入门和进阶的教材,也适合作为电子信息、计算机等专业本科生、研究生,以及具有一定电子专业知识背景的电子工程师的参考用书。
作者简介
王建飞,FPGA工程师,任职于北京至芯开源科技有限责任公司,从事FPGA研发、授课工作,经验丰富雷斌,FPGA工程师,为北京至芯开源科技有限责任公司董事长,具有十多年的FPGA研发、授课工作经验
目录
第1章 没有金刚钻,不揽瓷器活 1
1.1 Quartus II 15.0——温婉简约编译器 1
1.1.1 写在前面的话 1
1.1.2 Altera Quartus II 15.0安装 1
1.2 ModelSim 10.3d——独具慧眼仿真工 7
1.3 级联调试——标准设计势必行 7
第2章 工欲善其事,必先利其器 31
2.1 工程规范——我的地盘,你说了算 31
2.2 初识流水灯——很傻很天真 31
2.2.1 项目需求 31
2.2.2 相关技术介绍 31
2.2.3 硬件设计 32
2.2.4 顶层架构设计 32
2.2.5 端口描述 33
2.2.6 代码解释 33
2.3 测试文件——一切都似曾相识 39
第3章 谆谆教诲莫相忘,字字珠玑记心头 41
3.1 赋值语句——你是我的最爱 41
3.1.1 写在前面的话 41
3.1.2 非阻塞赋值语句 41
3.1.3 阻塞赋值语句 43
3.2 关系运算符——心中永远的痛 45
3.2.1 写在前面的话 45
3.2.2 关系运算符的种类 45
3.2.3 关系运算符的使用意义 45
3.2.4 关系运算符与算数运算符优先级 45
3.3 if-else 与 case——永远的欢喜冤家 45
3.3.1 写在前面的话 45
3.3.2 if-else 条件分支语句 46
3.3.3 case分支控制语句 50
3.3.4 case语句和if-else语句的区别 52
3.4 缩减运算符——就这样变没了 52
3.4.1 写在前面的话 52
3.4.2 工程实例 52
3.5 移位运算符——性子总是这么直 54
3.5.1 写在前面的话 54
3.5.2 移位运算符实例 55
3.6 位拼运算符——聪慧灵秀惹人妒 57
3.6.1 写在前面的话 57
3.6.2 代码实例 57
第4章 会当凌绝顶,设计Top-Down 59
4.1 层次化设计方法——心中永远的女神 59
4.1.1 写在前面的话 59
4.1.2 层次化设计框图示例 59
4.1.3 层次化设计实例 60
4.2 层次化设计技巧——巧夺天工砖瓦匠 65
4.2.1 写在前面的话 65
4.2.2 电平触发 65
4.2.3 尖峰脉冲 66
第5章 内涵丰富本领多,谁与争锋IP核 68
5.1 锁相环——速度,你说了算 68
5.1.1 写在前面的话 68
5.1.2 项目需求 68
5.1.3 操作步骤 68
5.1.4 顶层架构设计 73
5.1.5 端口功能 73
5.1.6 代码解释 73
5.1.7 仿真结果分析 75
5.2 ROM——只有你最慷慨 75
5.2.1 写在前面的话 75
5.2.2 项目需求 75
5.2.3 操作步骤 75
5.2.4 顶层架构设计 80
5.2.5 模块功能介绍 80
5.2.6 模块端口和内部连线描述 80
5.2.7 代码解释 80
5.2.8 仿真分析 83
5.3 RAM——有入有出,公平合理 84
5.3.1 写在前面的话 84
5.3.2 项目需求 84
5.3.3 操作步骤 84
5.3.4 顶层架构设计 86
5.3.5 模块功能介绍 86
5.3.6 模块端口和内部连线描述 87
5.3.7 代码解释 87
5.2.8 仿真分析 90
5.4 FIFO——重中之重缓存器 91
5.4.1 写在前面的话 91
5.4.2 项目需求 91
5.4.3 操作步骤 91
5.4.4 顶层架构设计 94
5.4.5 模块功能介绍 95
5.4.6 模块端口和内部连线描述 95
5.4.7 代码解释 95
5.4.8 仿真分析 100
5.5 移位寄存器——你是我的骄傲 101
5.5.1 写在前面的话 101
5.5.2 功能要求 102
5.5.3 操作步骤 103
5.5.4 顶层架构设计 105
5.5.5 模块功能介绍 105
5.5.6 模块端口和内部连线描述 105
5.5.7 代码解释 106
5.5.8 仿真分析 110
第6章 基础项目我在行,信手拈来显聪慧 111
6.1 二选一之战——我只是个新兵 111
6.1.1 写在前面的话 111
6.1.2 项目需求 111
6.1.3 系统架构 111
6.1.4 模块功能介绍 111
6.1.5 顶层模块端口描述 111
6.1.6 代码解释 112
6.1.7 仿真分析 113
6.1.8 二选一数据寄存 114
6.2 三态门之战——机关算尽太聪明 116
6.2.1 写在前面的话 116
6.2.2 项目需求 116
6.2.3 系统架构 117
6.2.4 模块功能介绍 117
6.2.5 顶层模块端口描述 117
6.2.6 代码解释 117
6.2.7 仿真分析 119
6.3 串并转换——你无处不在 120
6.3.1 写在前面的话 120
6.3.2 需求分析 120
6.3.3 顶层框架设计 120
6.3.4 顶层模块端口介绍 121
6.3.5 代码实现 121
6.4 generate语句——呵呵,你就会偷懒 125
6.4.1 写在前面的话 125
6.4.2 基本概念 126
6.4.3 generate_for语句 126
6.2.4 generate_if语句 132
6.4.5 generate_case语句 133
6.5 边沿检测——如此高大上 135
6.5.1 写在前面的话 135
6.5.2 电路原理分析 135
6.5.3 顶层框架结构 136
6.5.4 顶层模块端口介绍 136
6.5.5 代码实现 136
6.5.6 仿真波形分析 138
6.6 按键消抖—且看老夫手段 139
6.6.1 写在前面的话 139
6.6.2 基于尖峰脉冲的按键消抖 139
6.6.3 项目需求 139
6.6.4 误区排除 139
6.6.5 设计思路 140
6.6.6 系统框架 140
6.6.7 顶层端口描述 141
6.6.8 代码解释 141
6.6.9 仿真分析 144
第7章 没有标准的方法,但见可行的技巧 146
7.1 异步复位同步释放——高端神秘你最帅 146
7.1.1 写在前面的话 146
7.1.2 基本概念 146
7.1.3 代码举例 146
7.1.4 异步复位同步释放电路 148
7.2 任意分频之战——一切都如此简单 155
7.2.1 写在前面的话 155
7.2.2 实现原理 156
7.2.3 系统框架 156
7.2.4 顶层模块端口描述 156
7.2.5 代码分析 156
7.2.6 仿真分析 159
7.3 二进制数转BCD——终极进化 160
7.3.1 写在前面的话 160
7.3.2 基本概念 160
7.3.3 逐步移位法原理 160
7.3.4 设计任务 161
7.3.5 顶层框图设计 161
7.3.6 代码实现 163
7.3.7 仿真分析 165
7.4 BCD转二进制——返璞归真 166
7.4.1 写在前面的话 166
7.4.2 基本概念 166
7.4.3 移位算法原理 166
7.4.4 顶层框架图 166
7.4.5 顶层模块端口介绍 167
7.4.6 代码实现 167
7.4.7 仿真分析 169
7.5 流水线设计之战——效率决定成败 170
7.5.1 写在前面的话 170
7.5.2 流水线的基本概念 170
7.5.3 流水线改造实例 171
7.6 Signaltap 之战——奸细,哪里逃 177
7.6.1 写在前面的话 177
7.6.2 背景知识 178
7.6.3 典型的SignalTap II调试流程 180
7.6.4 SignalTap II调试具体操作步骤 180
7.6.5 具体步骤 181
第8章 进阶首选我当前,乘胜追击势必行 204
8.1 字符状态机之战——进来的,都要审查 204
8.1.1 写在前面的话 204
8.1.2 项目需求 204
8.1.3 解决方案 204
8.1.4 系统架构 204
8.1.5 模块功能介绍 204
8.1.6 顶层模块端口描述 205
8.1.7 代码解释 205
8.1.8 仿真分析 210
8.2 数码管之战——好像胜利的曙光 210
8.2.1 写在前面的话 210
8.2.2 项目需求 210
8.2.3 原理分析 210
8.2.4 单个数码管显示 212
8.2.5 6个数码管显示 215
8.3 PS2之战——键盘原来是这样 221
8.3.1 写在前面的话 221
8.3.2 项目需求 221
8.3.3 原理分析 222
8.3.4 系统架构 223
8.3.5 模块功能介绍 223
8.3.6 顶层模块端口描述 223
8.3.7 用Signaltap II分析波形 223
8.3.8 代码解释 225
8.3.9 仿真分析 232
8.4 矩阵键盘之战——严密的资源整合 233
8.4.1 写在前面的话 233
8.4.2 项目需求 233
8.4.3 矩阵键盘的原理 233
8.4.4 架构设计 235
8.4.5 模块功能介绍 235
8.4.6 顶层模块端口描述 235
8.4.7 代码解释 235
8.4.8 仿真分析 241
8.5 IIC之战——配置离不开你 241
8.5.1 写在前面的话 241
8.5.2 项目需求 242
8.5.3 IIC的原理分析 242
8.5.4 架构设计 246
8.5.5 模块功能介绍 246
8.5.6 顶层模块端口描述 246
8.5.7 代码解释 246
8.5.8 仿真分析 263
8.6 串口通信之战——通信终于畅通了 264
8.6.1 写在前面的话 264
8.6.2 项目需求 265
8.6.3 UART的原理分析 265
8.6.4 系统架构 266
8.6.5 模块功能介绍 268
8.6.6 模块端口和内部连线描述 268
8.6.7 代码解释 268
8.5.8 仿真分析 276
8.7 VGA之战——我型我酷炫 276
8.7.1 写在前面的话 276
8.7.2 什么是VGA 277
8.7.3 VGA接口 277
8.7.4 VGA显示原理 278
8.7.5 顶层框架 280
8.7.6 顶层模块端口描述 280
8.7.7 代码实现 280
8.7.8 仿真分析 285
8.8 12864液晶之战——心灵的窗口 285
8.8.1 写在前面的话 285
8.8.2 基本概念 285
8.8.3 硬件电路结构 286
8.8.4 官方代码解析 287
8.8.5 项目需求 293
8.8.6 系统架构 293
8.8.7 代码解释 294
8.8.8 仿真分析 305
8.9 DDS——形随心动 305
8.9.1 写在前面的话 305
8.9.2 项目需求 305
8.9.3 项目分析 305
8.9.4 系统架构 306
8.9.5 模块功能介绍 306
8.9.6 顶层端口和内部连线描述 306
8.9.7 波形数据的由来 307
8.9.8 波形发生器(不可调频和调相) 308
8.9.9 波形发生器(不可调频,但可以调相) 312
8.9.10 波形发生器(可以调频,可以调相) 315
8.9.11 最终设计 318
8.10 蜂鸣器之战——奏响凯旋的乐章 322
8.10.1 写在前面的话 322
8.10.2 什么是蜂鸣器 322
8.10.3 设计任务 323
8.10.4 顶层端口介绍 325
8.10.5 代码解释 325
8.10.6 仿真分析 331
猜您喜欢