第一部分 基础普及 2
笔记1初识FPGA 2
一、关于FPGA的一些基本概念 2
二、关于FPGA的基本结构 3
笔记2应用领域 5
一、逻辑粘合与实时控制 5
二、信号处理与协议实现 6
三、片上系统 6
笔记3开发流程 8
一、需求分析到模块划分 9
二、设计输入到综合优化 9
三、实现到时序收敛 10
四、仿真测试到板级调试 10
第二部分 设计技巧 14
笔记4基本语法 14
一、可综合的Verilog语法子集 14
二、if…else与case语句分析 15
三、Verilog代码优化之for语句 19
四、inout用法浅析 21
五、从Technology Map Viewer看4输入LUT 22
六、关于注释 24
七、解读Verilog代码的一点经验 24
笔记5漫谈状态机设计 26
一、状态机的基本概念 26
二、三种不同状态机写法 27
笔记6 复位设计 35
一、异步复位与同步复位 35
二、复位与亚稳态 37
三、异步复位、同步释放 38
四、PLL配置后的复位设计 39
笔记7 FPGA重要设计思想及工程应用 41
一、速度和面积互换原则 41
二、乒乓操作及串/并转换设计 42
三、流水线设计 43
四、逻辑复制与模块复用 45
五、模块化设计 46
六、时钟设计技巧 49
笔记8 基于FPGA的跨时钟域信号处理 52
一、同步设计思想 53
二、单向控制信号检测 57
三、专用握手信号 59
四、搞定亚稳态 62
五、借助于存储器 66
第三部分 仿真测试 70
笔记9 简单的Testbench设计 70
一、Testbench的基本概念 70
二、简单Testbench的搭建 71
笔记10 Testbench书写技巧 74
一、封装有用的子程序 74
二、关于变量的定义 75
三、HDL的并行性 76
四、结构化Testbench 77
五、读/写紊乱状态 81
六、防止同时调用task 83
笔记11 测试用例设计 85
一、模拟串口自收发通信 85
二、乘法器全覆盖测试 89
三、可重用MCU读/写设计 93
第四部分 时序分析 98
笔记12 时序分析基础 98
一、静态时序分析的概念 98
二、时钟相关概念 99
三、数据传输路径分析 101
笔记13 基于ISE的时序约束 103
一、全局约束 103
二、分组与OFFSET约束 109
三、特定路径约束 114
四、达到时序收敛 117
笔记14 基于TimeQuest的时序分析 119
一、从Technology Map Viewer分析Clock Setup Slack 119
二、基于TimeQuest的reg2reg之Th分析 121
三、深入剖析I/O约束 123
四、添加时序例外 128
五、多周期约束的基本用法 130
六、Quartus Ⅱ流水线均衡负载设置实例 134
七、读SRAM时序约束分析 140
八、源同步接口的时序模型 143
九、recovery时序优化一例 148
十、基于Chip Planner的时序优化一例 153
第五部分 实践经验与感悟 160
笔记15 系统架构思想 160
一、FPGA到底能做什么 160
二、DMA无处不在 162
三、图片显示速度测试报告 165
四、仲裁逻辑设计要点 168
五、硬件加速:用起来很美 170
六、数据吞吐量预估一例 173
七、秒杀FPGA片间通信 175
八、FPGA+CPU:并行处理大行其道 178
笔记16 实践应用技巧 181
一、被综合掉的寄存器 181
二、Verilog中宏定义位宽带来的问题 182
三、Verilog代码可移植性设计 186
四、Cyclone器件全局时钟尽在掌控 189
五、Cyclone Ⅲ原型开发调试 193
六、M4K使用率 196
七、榨干FPGA片上存储资源 196
八、存储器实现方式转换 203
九、关于MAX Ⅱ上电和复位的一点讨论 207
十、基于Altera FPGA的LVDS配置实例 210
十一、用FPGA的差分输入实现A/D转换 215
十二、守株待兔,收效显著 216
笔记17 板级调试 219
一、复用引脚,陷阱多多 219
二、EPCS芯片的信号完整性问题 220
三、都是I/O弱上拉惹的祸 222
四、被忽略的硬件常识——I/(O电气特性 224
五、PLL专用输出引脚带来的反思 226
六、毛刺滤波的一些方法 227
七、遭遇空间电磁辐射 230
第六部分 项目应用 234
笔记18 基于EP1C3的FPGA应用实例 234
一、开发板简介 234
二、AS和JTAG配置方式 237
三、基于74HC595的数码管实验 243
四、PLL配置仿真实验 245
五、基于FIFO的串口发送机设计 251
六、VGA字符显示实验 253
七、基于M4K块配置ROM的字符数据存储VGA显示实验 256
八、基于M4K块的单口RAM配置仿真实验 258
九、基于M4K块的移位寄存器配置仿真实验 261
十、基于SDRAM读/写的串口调试实验 263
笔记19 DIY逻辑分析仪 268
一、背景介绍 268
二、功能需求及模块划分 269
三、数据采集、触发及存储 272
四、基于VGA的显示界面设计 274
笔记20 DIY数码相框 277
一、背景介绍 277
二、功能需求及模块划分 278
三、SPI接口控制 281
四、SD卡数据存储结构与FAT16文件系统 283
五、SD卡初始化及读操作 293
六、SDRAM控制器设计 296
七、BMP格式图片显示 297
笔记21 电源监控数字接口板开发 306
一、整体硬件接口与模块划分 306
二、A/D接口调试 308
三、A/D接口在线调试 310
四、基于Virtual JTAG的A/D接口调试 312
五、简单的Virtual JTAG调试窗口 317
六、LCD仿真方案 318
七、板级调试 319
八、回顾与思考 320
第七部分 网络杂文 322
笔记22 Xilinx网站资源导航 322
一、Xilinx软件介绍 323
二、软件版本和软件更新 324
三、软件教程 325
四、硬件资料 328
五、参考资源 328
六、问题解决 329
七、总结 329
笔记23 苦练基本功 330
一、datasheet要看原版 330
二、开发工具要熟练 331
三、焊接功底要扎实 331
四、不要厌烦写文档 332
笔记24 永远忠于年轻时的梦想 335
笔记25 年轻正当时 337
笔记26 FPGA工程师:持守梦想or屈于现实 339
参考文献 342