图书目录

目录

第1章FPGA学习建议与职业前景1

1.1FPGA学习路线1

1.1.1入门初感1

1.1.2初级路线2

1.1.3进阶路线3

1.1.4高级路线3

1.2入门知识储备4

1.2.1编程语言4

1.2.2数字电路技术5

1.2.3电路原理图5

1.2.4接口/总线5

1.2.5常用软件6

1.3专业理论8

1.3.1数字信号处理8

1.3.2通信原理9

1.3.3图像处理9

1.3.4语音处理9

1.4算法验证9

1.4.1MATLAB编程9

1.4.2C语言模型10

1.5ARM开发10

1.5.1操作系统10

1.5.2嵌入式编程10

1.5.3AMBA总线11

1.6上位机11

1.7AI加速12

1.7.1神经网络12

1.7.2深度学习处理器12

1.8职业展望13

1.8.1企业招聘要求13

1.8.2FPGA职业规划14

1.9小结14

习题114

目录〖3〗第2章初识FPGA16

2.1可编程逻辑器件16

2.1.1CPLD概述16

2.1.2FPGA概述16

2.2FPGA的发展17

2.2.1FPGA国外发展17

2.2.2FPGA国内发展18

2.3FPGA应用场景18

2.4Xilinx芯片19

2.4.1命名规则19

2.4.2芯片分类20

2.4.3资源对比22

2.5芯片内部资源23

2.5.1可配置逻辑块24

2.5.2可编程输入输出单元25

2.5.3嵌入式块RAM25

2.5.4内嵌IP核26

2.5.5布线资源27

2.5.6时钟管理模块27

2.6小结28

习题228

第3章Verilog可综合语法29

3.1硬件描述语言的发展29

3.2组合电路与时序电路30

3.3可综合与不可综合31

3.4可综合语法32

3.4.1标识符命名规则32

3.4.2数值表示32

3.4.3模块声明34

3.4.4输入输出声明35

3.4.5线网型变量36

3.4.6寄存器型变量37

3.4.7begin…end语句39

3.4.8连续赋值语句39

3.4.9过程赋值语句40

3.4.10阻塞和非阻塞语句41

3.4.11基本运算符43

3.4.12条件分支语句47

3.4.13循环语句50

3.4.14参数定义52

3.4.15编译预处理53

3.4.16基本门电路55

3.4.17例化语句56

3.4.18函数语句块58

3.5如何编写可综合代码模块59

3.6小结60

习题360

第4章Verilog不可综合语法61

4.1概述61

4.2Testbench常用不可综合语法62

4.2.1`timescale指令62

4.2.2延时语句63

4.2.3生成时钟/复位信号63

4.2.4触发语句64

4.2.5initial语句65

4.2.6repeat语句66

4.2.7forever语句66

4.2.8系统函数67

4.2.9task语句81

4.3Testbench范例解析83

4.3.1简单仿真示例83

4.3.2自动化仿真示例86

4.4小结91

习题491

第5章FPGA开发与主要工具使用92

5.1开发流程92

5.1.1需求分析92

5.1.2RTL代码设计93

5.1.3功能仿真93

5.1.4综合94

5.1.5实现94

5.1.6时序仿真95

5.1.7比特流烧录95

5.1.8板级验证96

5.2功能仿真与综合介绍97

5.2.1功能仿真概述97

5.2.2综合概述97

5.3ModelSim用法97

5.3.1常规用法97

5.3.2IP核仿真100

5.3.3与Vivado关联106

5.3.4脚本.do106

5.4Vivado用法109

5.4.1软件使用109

5.4.2工程文件结构118

5.4.3引脚约束118

5.4.4时钟约束120

5.4.5静态时序分析121

5.5小结124

习题5124

第6章Verilog代码规范125

6.1命名规范125

6.1.1文件命名125

6.1.2代码命名126

6.2注释规范128

6.2.1总体原则128

6.2.2文件头129

6.2.3端口注释129

6.2.4内部信号注释129

6.2.5模块例化注释130

6.3代码编写规范130

6.3.1条件语句130

6.3.2端口131

6.3.3对齐132

6.3.4状态机132

6.3.5运算133

6.3.6其他133

6.4示例134

6.5小结136

习题6136

第7章FPGA常用设计方法137

7.1基本概念137

7.1.1同步与异步137

7.1.2锁存器与触发器137

7.1.3建立时间与保持时间138

7.1.4延迟优化139

7.1.5亚稳态与跨时钟域140

7.2设计思想141

7.2.1以电路思维设计代码141

7.2.2代码与硬件资源适配143

7.2.3模块间接口适配145

7.2.4模块动态可配145

7.3设计技巧146

7.3.1状态机146

7.3.2流水线设计150

7.3.3乒乓操作151

7.3.4串并/并串转换152

7.3.5数据处理152

7.3.6溢出与截断155

7.4综合属性约束156

7.4.1寄存器约束156

7.4.2输入输出信号约束157

7.4.3模块约束158

7.4.4状态机约束159

7.4.5KEEP约束160

7.4.6调试约束161

7.4.7存储器约束161

7.5综合策略配置163

7.5.1默认策略选项163

7.5.2自定义综合策略164

7.6小结164

习题7165

第8章应用与实践166

8.1认识开发板166

8.1.1FPGA开发板资源166

8.1.2FPGA开发板IO资源167

8.2入门例程168

8.2.1LED流水灯168

8.2.2数字电子时钟178

8.2.3EEPROM读写188

8.2.4单口/双口RAM读写200

8.2.5同步/异步FIFO读写206

8.3HDLBits210

8.4小结210

习题8210

第9章FPGA相关学科竞赛212

9.1概述212

9.1.1赛前准备213

9.1.2作品设计与实现213

9.1.3提交与评审214

9.1.4展示与分享214

9.1.5参加FPGA竞赛的意义214

9.2集成电路创新创业大赛215

9.2.1赛事简介215

9.2.2比赛细则216

9.3嵌入式芯片与系统设计竞赛217

9.3.1赛事简介217

9.3.2比赛细则217

9.4蓝桥杯大赛219

9.4.1赛事简介219

9.4.2比赛细则219

9.5比赛建议220

9.6小结221

参考文献222