最近,我在做一个项目,该项目要求我这个MCU迷,转向FPGA开发。在这个系列博客中,我将介绍如何将现有的MCU知识和经验运用到FPGA的开发中。在第一部分中,我介绍了FPGA的优缺点,以及Terasic DE10 nano开发套件,并且探讨了影响FPGA设计的关键因素。现在,在第2部分,我将分析示例代码并发现更多的有用的资源。
MCU和FPGA之间的区别类似于摩托车和汽车之间的差异:尽管两者都可以让你从A点到达B点,但是机制却有着根本的不同。我认为这个类比在描述MCU和FPGA的引脚模式、引脚类型以及串并行处理时非常贴切,在这些方面,两者是完全不同的。
最初,我从Terasic的设置和指导实践开始,但是一直处于困境中。每次编译过程都会以错误结束。为了坚持下去,我会再喝一杯咖啡,并开始查阅英特尔开发人员专区网站。这个网站提供了更简单的例子,我惊讶于复杂度的降低,在这里,示例很容易理解,这些示例甚至已经被编译和运行了。一旦理解了基础知识,完成Terasic的示例就会相当简单,我认为开始觉得困难的一部分原因是由于编译器的建立,另一部分原因是现在我对它们更加熟悉了。
硬核处理器系统
Terasic DE10-Nano将MCU--即硬核处理器系统(HPS)与FPGA相结合,因此我决定从熟悉的领域即MCU开始研究。ARM(“我的第一个HPS”)的开发熟悉而简单,在Eclipse IDE中运行没有任何阻碍,并且英特尔SoC开发工具使编程系统变得更简单。我改进了“Hello World”这个范例,多加了一行,除了测试编译器的功能外,不会改变其他的功能。幸运的是,我编译成功了。IDE非常棒,非常像我过去处理过的大多数HPS IDE。
FPGA
最终,我不得不转到FPGA部分,在这一部分,我可以同时(并行)做很多事情,这与MCU的串行方式不同。这个概念可能一时难以接受,但是,考虑到这个概念较为新颖,理解起来其实也不是很困难。由于预先的配置和安装指导,Intel Developer Zone无疑是最好的一套学习指南。
Intel Developer Zone安装文件提供了基础知识,然后Terasic建立在这些新技能的基础上,增加了更多的功能并提供了完整的流程,所以这套指南教给我们的并不是寻找,复制和粘贴的学习方法。英特尔推出了我的应用程序所需的知识库,包括构建模块图,时序配置文件和I / O编程。在复杂的程序开发中,方框图能够提供清晰的视觉流程,时序配置文件则可以处理串并行协议和总线时序协议等问题。
每一个引脚都可以完成任意功能,这可能是FPGA最著名的特点了。(引脚编程是一个旅行!)引脚分配管理器非常炫酷,但查找表的工作量也是相当艰巨的。值得庆幸的是,在Quartus的最新版本中,Terasic使用详尽的命名模式,为所有端口和引脚提供了完整的映射。这使得编码部分更加简单。
遇到的挑战
在新的开发环境中工作很不舒服。新的处理过程和快捷键都需要调整。当然,新IDE的创建也会出现一些常规的设置问题。但是,文档很清晰,图像也有很大的帮助。因特尔已经拓展其性能以创建Linux系统和Windows系统,并为编程提供了Linux仿真,这些都极大的简化了原始的处理过程。但是,在设置Linux时我仍然遇到了问题,并且不再尝试自己编译的Linux IDE。后来,我找到了一个120页的指南才得以正确的设置它。下面就让我们搞清楚具体是怎么操作的吧!
Takeaways
我很喜欢这个练习,并且对此充满信心。但是,下载、配置并且弄清楚下一步要做什么是相当繁杂的。我对下一阶段的任务感到兴奋,我计划引入不同的硬件,使用示例代码来开发自己的软件,并利用HPS和FPGA技术。我的计划是利用HPS(使用外部硬件)来运行OpenCV软件,同时利用FPGA来加速视频处理过程。
请继续关注第3部分!同时,如果您是一位正在向FPGA过渡的MCU开发人员,请在评论中分享您的经验,技巧和建议!