走近FPGA - 预告篇

本文由电子科技大学硕士研究生刘丰瑞同学主笔,黄乐天老师润色和修改,硬木课堂联合出品。原文刊载于知乎专栏《片上征途》: https://zhuanlan.zhihu.com/p/149973731
在3个月前,片上征途专栏发表了“走近SoC预告篇”。相信大家已经搬着小板凳等着我们发布文章了。然而3个月过去了,我们好像没有什么动作。造成为什么我们没有动作的原因并不是懒,主要有以下:
首先是我们为了疫情准备了《微处理器系统结构与嵌入式系统设计》这门课程的在线课程。包括更新PPT、教材以及实验教程。这牵涉了我的导师、我师兄以及我的很大一部分精力。
其次是我们为支持集创赛Arm杯,做了一系列的线上讲座。包括了Cortex-M3/M0的处理器IP如何使用、调试,如何利用CMSDK来快速搭建SoC等等。这些讲座也耗费了我们不少精力。当然这些讲座都很成功。后面希望看到这些讲座的知友们可以移步到极术社区观看。
第三就是我们在准备下学期要开始的微处理器与片上系统挑战性课程,这个课程是准备以MooC的形式在中国大学MooC上线。通过线上线下混合教学的方式,帮助我电的同学走完了一个专用SoC从需求分析到原型验证的全过程。
以上三件事做下来,其实也就没有什么时间了。但真正阻止我们开始“走近SoC”的主要原因是我们发现很多同学的FPGA设计实现能力不行。基本上没有办法独立的完成一个稍微复杂一点的逻辑电路设计。这点在教学和Arm杯的培训中都发现了。而我的导师@其实我是老莫在挑战性课程建设的答辩场上也被资深教授给泼了冷水。按目前的教学模式和教学深度,大部分学生确实没有能力自己定义并实现一个加速器电路,然后将其集成到SoC中。
非常有意思的一点是,我和我的师兄们都是当年我导师@其实我是老莫 EDA技术本科班上的学生。导师当年所设计的多道练习题目确实起到了帮助我们由浅入深,逐次递进的掌握了硬件描述语言和FPGA设计的过程。而反观现在的很多在线教程,其实存在很大的问题。
目前可以看到的FPGA在线教程主要有这么几种:
第一种是技术爱好者的自由博客,多见于CSDN等网站。这些博客对于解决某个点上的问题确实是很有帮助的,我们也大量阅读这些博客来学习到相关知识点。但是这类博客最大的问题是零散且对于初学者不够友好。初学者很难说能直接通过学习这些博客很好的入门的。
第二种是原厂的技术资料、白皮书以及培训视频。这些自然是学习FPGA必然要去参考的学习资料。但是这些资料同样对于初学者并不友好。冗长的技术手册,大部分还是英文的,对于基础知识几乎为零的初学者而言无异于天书。原厂的视频也是有同样的问题,专业性有余但不够友好。动辄1个小时的培训视频是很难让初学者坚持下去的。
第三种是各个开发板厂家所推出的资料和视频教程,这些应该是大家最常接触到的一种。也是很多同学们学习FPGA的起点。但是这类教程的普遍问题在于开发板的厂家毕竟不是专业搞教育出身的,很多视频/教程在制作的过程中不知不觉就变成了开发板功能展示。
第四种是一些培训机构推出的教程和视频,这些教程和视频的最大问题在于良莠不齐。而去很多培训机构的教程是其线下教学版本直接翻录以后做到线上的,并不适合线上学习。
第五种就是高校教师做的了,这类教程我不想太多的评价。感觉大部分还是比较冗长,需要实际动手的部分很少/很简单,看视频的时间多了就会有“脑子说它懂了,手却说它不会”的感觉。
因此我们就有意来做一个“走近FPGA”系列,通过我们对于学习FPGA过程中的理解和感悟,来总结成一个个的小文章。通过知乎这个平台的优势,通过文字、图片、视频综合的运用来帮助大家自学。这样一方面可以督促我们反思自己的学习和思考是否到位,另外一方面也有助于帮助到更多的人来学习。当然,更重要的是能够让我们后续如果担任课程助教的话,没有那么辛苦……
我们把这个系列取名叫“走近FPGA”而不是“走进FPGA”,其实是在向CCTV“走近科学”学习。因为“走近科学”这类电视节目不能替代专业知识的学习,只能“走近”而无法“走进”。同样,我们也无法保证看完了我们的系列文章各位就能够“包教包会”,我们也同样只能让各位“走近”。最终要想完全学会FPGA,还需要长期的自学和在实际工作中不断的历练。
学习FPGA,必然需要有对应的开发平台。因此我们这个系列选择的是硬木课堂的FPGA板:https://item.taobao.com/item.htm?id=612427051465

选择这个开发板的原因有两点:1.目前我电大量的在采用这个板子开课,我们的《微嵌》和后续的挑战性课程都用这个系列的板子。2.这个板子已经被用于支持集创赛的Arm杯,有了一定的群众基础。
我们这个系列将会以应用为导向,所以大家在看我们这个系列之前还是有必要来补充一些基础知识的。

首先建议大家阅读《FPGA原理与结构》[日]天野英晴主编, 赵谦 译
介绍FPGA的基本硬件结构和可编程的原理,理解清楚这些以后才更更好的理解如何对FPGA进行应用开发。

其次大家可以阅读由我校卢友亮老师编写的《Xilinx FPGA原理与实践—基于Vivado和Verilog HDL》。这本书使用的是和我们同系列的FPGA开发板。虽然型号上有一定的差距,但是基本操作方法可以比较方便的借鉴。
最后的最后,要给我的导师打个广告。新一届的保送又要开始了,如果有对微处理器、片上系统感兴趣的同学可以查看这个网页联系我的导师:http://faculty.uestc.edu.cn/huangletian/zh_CN/index.htm
我其实我不太想告诉你们的是——我现在有点想当师兄了,有个师弟能帮着干活不香吗?