MyFPGA Forum

 找回密码
 注册
搜索
查看: 2277|回复: 0

从MCU到FPGA:第3部分

[复制链接]
发表于 2020-6-18 10:22:28 | 显示全部楼层 |阅读模式
        当我开始这个项目的时候,我已经了解到FPGA的好处在于它可以将多种功能集成到单一的芯片中,并可以通过重配置而修改芯片功能。但是这种灵活性也让我想知道:我应该如何处理FPGA与外部组件的接口以及接口连线等问题呢?由于FPGA的平均设计周期为两到三年,并且考虑到诸如USB 3.0到USB Type-C等通信技术的更新换代,我很难理解FPGA如何才能真正地带来好处。

        和处理大多数MCU项目时一样,我打算从示例代码开始,然后通过各种示例搭建自己的项目。但是对于每一个例子,我发现越来越不熟悉,并且结果也越来越混乱。在这里代码被用来定义对象和调用函数,这在MCU里倒是很常见,但是有些定义是在高阶函数里进行的,而其他的则是在另一个地方。像往常一样,这些函数被用来执行一个功能或任务,但有一些函数要依赖于其他函数而另一些函数则是独立的。正如我试图对它们发表评论时所发现的那样,那些没有被直接调用的代码仍然是代码功能的关键。

        我决定在YouTube上搜索“Intel FPGA Setup Cyclone V”来寻找示例和“Setup&Go”培训。当我浏览这些内容时,我发现一个共同的主题(图1):

  • 看似不连贯的一组命令仍然有效,但似乎并不完整。
  • 缺乏不支持FPGA的外部模块或组件。


        有了这些观察,我回顾了更多设计样本和代码,并发现了英特尔Cyclone V和HPS FPGA架构显著的优势。图1显示了HDMI命令集,其中包括一系列未被调用的代码。它们不是按顺序运行的,而是并行运行的。它们的功能很像回调函数,在HPS中如果有来自较高级别控制器的数据调用时,这些回调函数就会被激活。然后编译器就会提高向MCU传递信息的能力,反之亦然。在这两者之间需要做的就是协调定义和时间安排。

图1.jpg
图1:HDMI命令集,其中包括一系列未被调用的代码。

项目流程如下所示:

Linux HPS抓取图像。
Linux将OpenCV处理过程移交给FPGA。
Linux调整图像。
FPGA接收原始图像信息,并将其编码为HDMI接口。

        这是使用HPS和FPGA的完美示例。FPGA能够处理大量重复的运算并实现协议,而Linux和MCU则处理了程序的动态元素。这让我看到了FPGA的优势。

        当我深入研究仅含有MCU的设计时,我发现了FPGA的其他优点:它需要很少的元件,而且可以使成本更低,性能更好的MCU获得非常好的效果。例如,仅含MCU的设计将需要更高的A52等条件来进行图像处理,此外还需要一个GPU来进行图形加速处理和更多的RAM来完成整个设计。设计完成后,最终结果仍然是一个锁定的,有限的可升级模块。有了FPGA,这些组件便可以被引入同一个芯片,所以产品级PCB设计更为简单,因为它需要较少的的组件接口,而且由此产生的模块仍然可以升级或优化。

        我头顶上的灯泡在几英里外都可能被看到。

        将多功能集成到单个电路上,减少接口数量,或者根据线路修改功能等这些都是FPGA的优势,但它的好处远不止这些。FPGA改变了我为了高效完成任务而增加外部组件的方式:不是“按顺序执行步骤1,步骤2,步骤3”,现在我正在考虑这样完成任务:“执行步骤A,B,C,并且当执行完B之后,就执行D”。现在,为什么要花时间来研究MCU到FPGA开发转换的原因也已变得越来越明晰了。

        请继续关注第4部分文章!

转自:http://www.eechina.com/thread-525021-1-1.html
作者:JPaul Carpenter
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-4-17 07:17 , Processed in 0.036542 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表