我是MCU的长时刻用户和狂热者,特别是对多功用低本钱MCU上有着稠密的爱好,这种MCU模块可以经过单芯片完成优异的通讯才能。我做过许多有意思的小玩意,包含:MP3播放器、闹钟、无线地上湿度操控体系、宠物活动监视器、低功耗蓝牙姿势操控等。在这些小项目中,MCU完成信息的搜集和传输,用起来十分便利。
最近,我接手一个项目,这个项目不只要求我运用FPGA,而且还要求我运用功用更强壮的ARM。这都是我从未触摸过的范畴。在这个系列博客中,我将介绍我是怎么将自己现有的MCU常识和阅历运用到FPGA中的。本文是系列博客的在第一篇,我将从FPGA的长处和缺陷下手,并介绍Terasic DE10 Nano开发套件,以及IP核在FPGA规划中的效果。
关于FPGA
假如你开发的项目一向与MCU有关,你必定会发现MCU的学习曲线并不峻峭,所用的开发东西都可以简略取得,开发和调试的进程简略,规划很简略上手。不过,你也会发现,MCU在处理杂乱业务、运转速度和接口的多样性上是很有限的。我个人所阅历的项目,由于功用既不杂乱,也没有重要的处理需求,因而,一向以来MCU是很抱负的挑选。
FPGA是包含可编程逻辑元件(LE)的集成电路,其可编程单元现已内置在芯片中,功用十分灵敏。例如,他们可以经过编程作为加快器或RAM来进步体系功用,可以经过编程完成新的规范或算法,也可以依据需求增加各种通讯接口,一切的这些都有助于下降体系本钱并延伸产品生命周期。但这种规划的缺陷是学习曲线十分峻峭,关于MCU开发人员来说,在刚刚学习FPGA的时分,因IO端口和编码方法的改变,学习起来仍是很困难的。关于MCU来说,在同一时刻,只能完成一个或一组IO的翻转,而且一切的IO只要一个电压规范。而FPGA的IO是并行处理的,而且不同bank的IO可以遵从不同电压规范。
走运的是,我发现了Intel Cyclone V SoC DE10 Nano开发套件。英特尔Cyclone V SoC将FPGA与双核ARM Cortex A9结合,答应运用多种方法装备FPGA,开发套件包含显现和通讯端口、按钮和开关、引脚映射和快速装备东西、JTAG调试器以及来自Terasic和Intel的文档阐明和攻略。
规划FPGA开发
在规划MCU开发的时分,咱们首要确认需求哪些接口,如SPI,I2C,Wi-Fi等,然后依据MCU的电压,引脚数量,供给的通讯接口,支撑的库和价格作出MCU的选型。在运用FPGA的时分,一切的通讯接口都是依托编程来完成的,因而无需考虑通讯接口的约束。其约束要素是逻辑单元的数量,由于所需求的端口,软核或存储器单元都是根据这些逻辑单元创立的。因而,需求做权衡的是,逻辑单元数目越大,FPGA的才能越强,其本钱也越高。尽管FPGA一般具有较高的初始本钱,但由于它们可以完成多个芯片组件的功用,而且还可以节约很多板上空间,所以归纳来看其本钱并不高。
我发现自己正处在一个关键时刻:我要怎么确认我的规划需求多少逻辑单元?答案是,这取决于对IP核的需求,IP核由协议、功用、代码以及外部模块履行的特定使命组成。简直一切的FPGA都是由逻辑单元LE,寄存器和I / O bank组成。具体来说:
• 逻辑单元LE是可编程的,是FPGA内部的门阵列,每一个逻辑单元都具有必定数量的查找表,触发器和多路复用器。
• 寄存器是一组触发器,可以保存数据并完成比如定时器等功用。
• I / O bank是一组衔接外部电路的输入/输出引脚。每个bank都有一个独立的电压规范,而且有电流巨细的约束。
开始我并没有意识到IP核的重要性,由于我还没有领会到这样一个现实:IP核完成了一种可以替代物理设备的才能,这些设备包含MCU、通讯操控器或许其他一些我会运用另一个芯片完成的东西。
图1:Terasic DE10 Nano Cyclone V FPGA和硬件处理器体系(HPS)的接口布局。
大部分初级I / O端口经过FPGA进行操控和衔接,这就下降了CPU等候初等级I/O端口的时刻,一起也答应数据在传递到HPS之前进行相应的处理或调整。
这是一种多么完美的规划,Cyclone V FPGA的接口可扩展,而且可以完成加快器的功用,这种规划架构进步了HPS层的处理才能。在这种情况下,正如图2所示,HDMI接口对错HPS本地接口,因而用作HDMI的MCU资源并不多。
图2:FPGA和HPS的接口布局
在扼要的调查之后,我注意到以下几个优势:
1. HDMI的输出在FPGA上运转,这下降CPU负载并增加了非本地接口;
2. 存在一个OpenCV加快示例,这是为了表现两种类型处理器结合的优势;
3. Terasic现已完成了根本的通讯功用典范,而且有一个预界说的引脚映射列表,该列表界说了电压和电流约束。
总的来说,我很喜欢FPGA,而且对它的扩展和加快功用十分感爱好。不过,我也想知道他们到底有哪些局限性。他们能运转到高的频率?他们可以支撑哪些协议?他们会耗费多少LE?总的来说,IDE比我用过的其他软件更简略,而且包含了令人惊叹的文档。硬件好像十分强壮,现在我正在规划一个项目,这个项目可以测验板上的硬件约束。
那么这个项目是什么呢?而咱们又怎么测验这块主板的硬件约束?请持续重视此系列的第2部分!