【原创深度】从MCU到FPGA: 第4部分

作者:JPaul Carpenter

本周我想进一步探究可编程逻辑(FPGA)与硬核处理器(HPS)之间互联的结构。我发现了三种主要方式,它们是如何映射并处理通信的,哪些组件需要管控时序并且有访问权限。

“”

AXI Bridge

为了能够实现HPS与FPGA之间的通信接口,衍生出了AXI bridge协议。AXI bridge协议能够处理带宽适应和时钟控制,支持HPS与FPGA之间双向的逻辑和数据交互。

“图1:FPGA结构可视化表示(来源:Intel
图1:FPGA结构可视化表示(来源:Intel PSG)

HPS到FPGA

HPS到FPGA有两种类型:高吞吐量和低吞吐量。高吞吐量的数据带宽可以使32位、64位或128位,它是专门为高带宽数据传输而设计的,HPS作为主,处在L3层。

轻量级(或低吞吐量)通道被限制为32位,然而它进行了优化,延迟最低。它的主要功能是将控制和状态寄存器传递给FPGA。此外它也对HPS到FPGA的通信通道进行了一定的分流,具体类比描述见图1,从HPS到FPGA有两条通道:第一个是32位数据通道具有更高的速度限制,另一个则设计了很多个通道,在同一时刻支持更高的带宽和更多的数据传输。

FPGA到HPS

图1的第三个通道是实现FPGA到HPS的数据传输,它设计的目的是访问HP slave接口或在HPS程序端等待数据的输入。它可以配置为32位、64位或者128位的数据带宽,是由HPS L3主切换时钟来控制。

为了将这些通信通道结合在一起,我开始翻阅Intel开发者社区的黄金硬件参考设计指南(GHRD),它提供了一些例子来说明如何在FPGA和HPS之间建立AXI bridge通道,正是借助它我真正体会到了“配置向导”的强大功能,只需要鼠标点击六次我就完成了三个通信通道的配置,同时还可以配置内存分配。最后我了解到HPS bridge是映射到片上内存,实现尽可能少的延迟。而FPGA部分则映射到从内存地址,当有数据时将数据写入内存。

将它们整合在一起

那么这意味着什么?通信通道和不同传输层对于我这种对小型低功耗的MCU经验丰富的人来说也不是有太多的机会应用它们。尽管如此,那些习惯ARM MCU编程的开发者来说可能会熟悉这些通信通道(Bridge)。实际上这些通信通道是一系列的控制寄存器和内存映射,会以非常高的速度被访问,这对于多线程、多核系统非常的有用,因为这类系统需要高速、多用途的数据传输。当然这种内部互联的想法对于MCU爱好者来说是非常普遍的。使用内部互联通信通道来分担任务是非常熟悉的,但是将它们当做内存或RAM来访问则有些新奇了。简单来说,L3层是实现从FPGA到HPS通信机制而设计的,支持不同处理器核之间的数据传输。它开放了FPGA资源执行一些HPS所要完成的任务,否则HPS会有极大的阻碍,最终从整体上提升了系统性能。

原文链接:https://www.mouser.cn/blog/introducing-an-mcu-guy-to-fpga-part-4-of-6

相关阅读:

【原创深度】从MCU到FPGA:第1部分
【原创深度】从MCU到FPGA:第2部分
【原创深度】从MCU到FPGA:第3部分

该发布文章为独家原创文章,转载请注明来源。对于未经许可的复制和不符合要求的转载我们将保留依法追究法律责任的权利。

推荐阅读