集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 873|回复: 2

如何实现微控制器与FPGA的接口设计

[复制链接]
辉煌 发表于 2017-6-24 10:02:37 | 显示全部楼层 |阅读模式

将近一半的嵌入式设计用到FPGA,仅次于微控制器。FPGA可用于执行任何胶合逻辑、自定义IP 、计算密集型算法加速器。通过采取一些处理任务, FPGA可以帮助提高系统性能,从而使单片机从周期密集的任务中腾出部分时间。FPGA还提供优良的性能特点和更的灵活性,以适应不断变化的标准。

         基于FPGA的MCU设计有两种基本实现方式:一种是在FPGA逻辑结构中内置MCU软核;一种是使用基于离散FPGA的标准MCU产品。FPGA内置软核有效果,但与标准MCU相比,该方式实现一个微控制器是比较昂贵和耗电的。尤其是使用基于32位ARM的内核。结果,基于FPGA内置软核的FPGA MCU设计只占三分之一。其余的三分之二是基于离散FPGA的标准微控制器产品。

        标准微控制器产品和FPGA都没有有效的发展两者之间的通信,甚至使用不同的语言。因此,它们之间的接口将是一种挑战。FPGA的没有任何专门的逻辑电路来与微控制器通讯。首先,这种逻辑模块的设计必须从零开始。其次,微控制器和FPGA之间的通信是异步的。特别是需要使单片机与FPGA时钟域同步。最后,无论是接口,还是微控制器总线,都存在瓶颈问题。MCU和FPGA之间的信息传递通常需要在MCU总线上循环,且通常占用资源(PIO or EBI)影响传递速度。因此必须注意避免与外部SRAM或闪存和微控制器总线的瓶颈问题。

         MCU的FPGA接口基本上有三种硬件选择:可编程的I / O(PIO);外部总线接口( EBI的),如果有的话;最后,MCU之间的一个专门的接口,先进的高速总线( AHB )和FPGA 。该方法的使用依赖于高端应用和市场期望。

PIO接口

        通过PIO 连接MCU和FPGA相对简单数据传输来说比较简单,包括传输32位的地址, 32位数据,还有一些控制信号的控制。这就需要一个32位的PIO和一个2位PIO(图1) 。

图1 PIO连接FPGA
         为了将数据传输到FPGA,PIO中的双向缓冲器方向必须设置为输出。数据传输到FPGA的软件算法实现如下:
PIO_DATA = ADDRESS; // Pass the address to write
PIO_CTROL = START | WR; // Send start of address cycle
PIO_CTROL = CLEAR; // Clear PIO ctrl, this ends the address cycle
PIO_DATA = DATA; // Set data to transfer
PIO_CTROL = START; // Data is ready in PIO
PIO_CTROL = CLEAR; // This ends the data cycle
        从FPGA读取数据的方法相似。同样,PIO中的缓冲区首先必须设置为输出,然后改变方向为输入从FPGA读取数据,下面是执行代码:
PIO_DATA = ADDRESS; // Set the address to read
PIO_CTROL = START | RD; // Send start of address cycle
PIO_CTROL = CLEAR; // Clear PIO ctrl, this ends the address cycle
PIO_DATA_DIR = INPUT; // Set PIO-Data direction as input to receive the data
DELAY(WAIT_FOR_FPGA); // wait for the FPGA to send the data
DATA_FROM_FPGA = *PIO_DATA; // Read data from FPGA
        上述算法是一个基本的传输,更先进的算法是必要在ARM微控制器和FPGA之间建立适当的通信。特别要注意的是,确保数据的可靠性,例如没有因高速或等待周期造成资料遗失等。

        访问时间计算的总和:
T访问-PIO=t1+处理阶段+t2+数据阶段
        使用最大优化的GCC编译器,系统大约需要55个AHB周期向FPGA执行写操作(图2)。


图2 PIO向FPGA 写数据

         假设t2(FPGA的等待响应时间)也大约是25个 AHB周期,系统大约需要85个AHB周期从FPGA进行读操作(图3)。


图3 PIO从FPGA读取数据

         MCU自身接口连接非常简单和直截了当。然而,在FPGA里必须用特殊的逻辑来解码所有的由PIO生成的业务流。在大多数情况下,微控制器的业务流是完全异步。因此,FPGA必须能够从微控制器中过采样控制信号;否则,FPGA将错过时间窗口且业务流将不会最终到达FPGA内。
晓灰灰 发表于 2017-6-26 09:30:37 | 显示全部楼层
通过PIO 连接MCU和FPGA相对简单数据传输来说比较简单,包括传输32位的地址, 32位数据,还有一些控制信号的控制。这就需要一个32位的PIO和一个2位PIO(图1) 。
zxopenljx 发表于 2023-2-5 10:02:38 | 显示全部楼层
如何实现微控制器与FPGA的接口设计
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 11:01 , Processed in 0.055728 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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