专栏首页网络交换FPGA留守在家,如何提升和精进FPGA设计能力?

留守在家,如何提升和精进FPGA设计能力?


本文作者:西南交通大学研究生导师邸志雄博士。


工欲善其事,必先利其器,代码可综合设计能力、电路设计方法学、领域特定架构和算法理论,是提升和精进FPGA技能的必要基础。不需要FPGA开发板实物,也能够在家学习和夯实这些基础知识(ps:注意,如果长期学习FPGA,有一块FPGA开发板是非常必要的。本文章重点针对短期留守在家的同学。)。

0、FPGA入门基础

具备基本数字逻辑基础、基本VerilogHDL编写能力。

此处推荐东南大学汤勇明老师编写的《搭建你的数字积木——数字电路与逻辑设计》。这本书将Xilinx Vivado集成设计开发环境在第1章中就呈现给读者,让读者从一开始就能利用该开发工具学习具体逻辑设计。这本书的优点是采用了电路设计加VerilogHDL编写的方法,重点突出模块化编程思想并详细介绍了IP设计、封装和调用方法,并在书中给出了VGA控制器、数字图像处理设计等实际案例。

如果已经具备了“数字电路+FPGA”基础,可从如下内容开始学习。

1、VerilogHDL和电路设计能力提升

经常碰到学生问类似“VerilogHDL不会编,如何提升编程能力”等等的问题,其实这个问题一开始就是错误的。VerilogHDL是硬件编程语言,与C语言等软件编程语言有着非常大的差异,如果使用C语言的书写思维去学习Verilog,那就完全错了。Verilog HDL语言是对已知硬件电路的文本描述,因此必须理解其可综合特性。

编写Verilog HDL前:

  • 应对所需实现的硬件电路“胸有成竹”;
  • 牢记可综合Verilog HDL与电路结构一一对应的关系;
  • 确认电路指标是什么:性能?面积?
  • 硬件思维方式,代码不再是一行行的代码而是一块一块的硬件模块;

真正理解以上几点,才可以理解电路设计的思想,写出行云流水般的高质量代码。关于如何实现高质量的VerilogHDL代码书写的内容、如何理解数字电路的设计思想,可以在家学习我在“中国大学MOOC”网站的慕课《芯动力——硬件加速设计方法》第二章和第三章。目前该课程在线学习人数已经超过1200人。第四章和第五章重点讲数字芯片的逻辑综合和静态时序分析方法,但是与FPGA的综合和时序约束很接近,也可以学习。

在“中国大学MOOC”搜索课程名称即可参与,或者访问链接

https://www.icourse163.org/course/SWJTU-1207492806?tid=1207824209

免费收看。

参考书推荐:

  • 《轻松成为设计高手:Verilog HDL实用精解》。EDA先锋工作室编写,目前市面上的中文书籍里,少有的几本能够从VerilogHDL硬件本质来阐述的书。(ps:该书的前一版书名为:设计与验证。两版内容基本上一样,看哪个都可以)
  • 《Altera FPGA/CPLD设计(高级篇)》。EDA先锋工作室编写,人民邮电出版社. (ps:一定要注意是“高级篇”。该系列还有一本“基础篇”,不建议阅读)
  • 《SoC设计方法与实现(第3版)》,郭炜 等编写. 电子工业出版社。
  • 《FPGA深度解析》,樊继明,陆锦宏 著. 北京航空航天大学出版社. 2015年。(ps:以上两本对电路设计的相关知识点做了详细阐释)

2、选择好的FPGA案例,提升设计能力

FPAG的优势是硬件加速,其“能效比”远高于传统的CPU和GPU。因此,FPGA在对算力有极致需求的领域有着非常广泛的应用,如人工智能、图像视频处理、密码安全、数据中心、航天航空、高频量化交易等。

那么,什么案例适用于FPGA教学?这是一个很有意思,也值得思考的问题。是流水灯?I2C串口传输?我认为不是,这些案例完全没有体现出FPGA应用的特点,反而因为FPGA上手和调试较难的原因,劝退了一部分本来有兴趣学习FPGA的学生。这些案例的特点是系统更关注“控制”而不是“计算”,且I/O、存储数量要求非常小。一方面,无法体现FPGA带来的硬件加速效果;另一方面,用单片机、MCU来实现流水灯、串口等系统,上手简单,又快又好,为什么要用FPGA来做这些?

个人认为最适合学习FPGA的案例有以下几种:

  • 处理器原型设计与实现。例如,在FPGA上完成一颗小型RISC CPU的设计,如果手上开发板,还可以进一步完成操作系统的移植和应用程序编写。也可以在FPAG上完成AI处理器的设计,最终在开发板上实现诸如图像检测、人脸识别等系统功能。
  • 高性能算法加速。例如,在FPAG上完成数字信号处理算法、图像视频处理算法等单片机无法实现的系统。

同学们可以充分利用参考书、公众号、B站、github等各种网络资源,从应用领域的架构、算法等基础学起。如果没有开发板,可以完成电路设计、代码编写、FPGA的验证和实现流程。

参考书与案例推荐:

  • 《搭建你的数字积木——数字电路与逻辑设计》。汤勇明等编著,清华大学出版社,2017年。(ps:书中最后几章有很多FPGA案例)
  • 《手把手教你设计CPU——RISC-V处理器篇 》。胡振波编著,人民邮电出版社,2018年。(ps:github上面有该CPU的源码)
  • pynq.io (http://www.pynq.io/),这是一个网站。Xilinx PYNQ开发板的开源的开发者社区,有很多使用PYNQ的开发案例,如AI处理器、视频图像处理等等。
  • Parallel Programming for FPGAs。本书有中文版和英文版,书和案例都可以在github下载。网址为 https://xupsh.github.io/pp4fpgas-cn/。(ps:本书中所有案例都采用HLS C编写完成,如果对使用C++/C语言开发FPGA感兴趣,可以学习这本书)
  • 《VLSI数字信号处理系统设计与实现》(作者:Keshab K.Parhi)与《数字信号处理的FPGA实现》(作者:Uwe Meyer-Baese)。(ps:这两本仅限有数字信号处理基础的同学学习。不建议初学者学习)
  • 斯坦福开设的一门机器学习硬件加速器的课程,“Hardware Accelerators for Machine Learning (CS 217)”(ps:仅限有机器学习和FPGA开发能力的同学学习。不建议初学者学习)

另外,如果有同学对FPGA芯片本身感兴趣,可以阅读这本书:《FPGA原理和结构》,[日] 天野英晴 著,赵谦 译,人民邮电出版社。尽管已经有很多书籍和课程来讲授如何应用FPGA来搭建电子系统、实现硬件加速,但是几乎没有一本中文入门教材来讲授FPGA内部的设计原理和结构。《FPGA原理和结构》一书集结了日本FPGA和可重构计算领域的多位权威和专家,译者老师也长期从事FPGA和可重构计算研究,在FPL等FPGA顶级学术会议发表多篇论文。本书不仅对FPGA内部结构做了引人入胜的分析和讲解,而且对FPGA CAD工具和算法也进行了详细深入的阐述。更惊喜的是,本书还介绍了FPGA在超算、基因科学、金融、人工智能、高频交易等方面的应用,可以让读者看到一个当下和未来更大的FPGA世界。本书写作风格浅显易懂,严谨求实,非常适合本科生和研究生作为FPGA结构与原理的入门教材,本书日文原作在日本可重构领域几乎人手一本。

如果有同学在阅读《FPGA原理和结构》一书后对FPGA开发工具的设计原理感兴趣,可以研究下学术界经常用的FPGA开源工具VTR:

https://vtr.readthedocs.io/en/latest/。

3、开发工具推荐

Xilinx vivado 2018.3。注意版本号2018.3,版本号要正确,不建议下载比2018.3更早的版本。官网就可以完成下载,由于该工具体积很大(约18G),所以要耐心等待。

使用Xilinx vivado 或者Intel Qurtus Ⅱ都可以完成FPGA开发全流程。如果觉得其中内嵌的工具不好用,还可以使用如下工具代替:

  • VS code编辑器(要安装Verilog插件),完成代码编辑;编辑器还有notepad++、Ultraedit、Vim等,看个人编程习惯。Vim学习曲线比较陡峭,熟练之后效率非常高。
  • Modelsim,完成代码仿真。

4、开发板推荐

目前情况看,网购基本上还不影响。如果有同学确实觉得需要一个实体开发板来落实系统设计,推荐以下几款,都可以在淘宝购入:

  • Spartan Edge Accelerator(SEA)。Seeed出品,采用了Xilinx Spartan7器件,价格<300元,适合入门的初学者完成一些轻量级的系统加速。SEA可以支持外插arduino作为其扩展板,如果熟悉arduino,可以采用这款开发板入门。
  • Arty A7(Artix-7)。Digilent出品,硬件逻辑资源和接口相对丰富,开源的案例比较多,有利于入门的时候做一些较为复杂的案例。
  • Xilinx PYNQ Z2。依元素出品,该系列FPGA中嵌入了一颗双核ARM,既能发挥FPGA的定制特性,也能发挥处理器的通用特性,而且两个部分之间接口丰富、官方文档齐全,可玩性极高。用户可以使用Python语言编程开发ARM端,并且代码可直接在PYNQ-Z2上进行开发和测试。当引入Python后,就可以使用一些Python中强大的第三方库,例如Numpy、Matplotlib等。注意:PYNQ的FPGA端仍需使用VerilogHDL或者HLS进行编程实现。

5、扩展知识

以上是FPAG的必备知识。但是,随着FPAG技术的快速发展,当下的FPGA已经与传统的FPGA硬件开发有了天壤之别。尤其是集成SoC的FPGA推出之后,更加注重软、硬结合的复合能力。从两大厂商FPGA推陈出新的技术来看,软件开发能力已经被提到前所未有的高度。如果同学们学有余力,可以学习如下扩展知识和技能:

  • Python。PYNQ就是一个非常好的例子。从最近三年“全国大学生FPGA创新竞赛”的获奖作品可以看出,使用Python可以快速完成一个复杂FPGA系统的搭建。但是,请务必分清楚PL和PS。
  • HLS C。C++/C非常适用于将复杂算法放到FPGA上,开发效率远胜VerilogHDL好几倍,如果同学们感兴趣的话,可以参考上述第2部分推荐的参考书《Parallel Programming for FPGAs》。

全文完。

本文分享自微信公众号 - 网络交换FPGA(gh_cb8502189068),作者:邸志雄

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度 | 如何评价微软在数据中心使用 FPGA ?

    AI 科技评论按:本文作者李博杰,本文整理自知乎问题《如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法?》下的回答,AI 科技评论授权转载。

    网络交换FPGA
  • 高端FPGA揭秘之设计工具起源

    在本系列的第1部分中,我们研究了Xilinx,Intel和Achronix的新型高端FPGA系列,并讨论了它们的底层半导体工艺,可编程逻辑LUT结构的类型和数量...

    网络交换FPGA
  • 高端FPGA揭秘之存储及高速接口

    来源:内容由「网络交换FPGA」编译自「eejournal」,作者:Kevin Morris,谢谢。

    网络交换FPGA
  • 腾讯云FPGA访谈:国内首款FPGA云化的设计初衷、应用场景和价值

    FPGA(Field Programmable Gate Array)现场可编程门阵列,作为ASIC领域中的一种半定制电路而出现已有30年的历史了,它既解决了定...

    新智元
  • FPL 2017最佳论文:如何对FPGA云发动DoS攻击?

    第27届现场可编程逻辑与应用国际会议(The International Conference on Field-Programmable Logic and ...

    AI研习社
  • 深度 | 如何评价微软在数据中心使用 FPGA ?

    AI 科技评论按:本文作者李博杰,本文整理自知乎问题《如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法?》下的回答,AI 科技评论授权转载。

    网络交换FPGA
  • 从Xilinx Kintex-7认识FPGA

    FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。...

    FPGA开源工作室
  • 腾讯云 FPGA云服务器优惠_FPGA 实例_硬件加速 - 腾讯云优惠

    腾讯云FPGA 云服务器(FPGA Cloud Computing)是基于FPGA(Field Programmable Gate Array)现场可编程阵列的...

    用户5899212
  • FPGA,你为什么这么牛?

    众所周知,通用处理器(CPU)的摩尔定律已入暮年,而机器学习和 Web 服务的规模却在指数级增长。

    鲜枣课堂
  • 腾讯云国内首款FPGA云服务器,性能是通用CPU服务器30倍以上

    FPGA(Field Programmable Gate Array)现场可编程门阵列,作为ASIC领域中的一种半定制电路而出现已有30年的历史了,它既解决了定...

    尊托云数

扫码关注云+社区

领取腾讯云代金券