FPGA与HPS高速数据交互应用

小梅哥 2019-04-03 00:00

本书节选自小梅哥《SOC FPGA嵌入式设计和开发教程》第11章内容



在前面章节的内容中,针对SoC FPGA的开发流程,从修改Qsys系统配置、更新Quartus工程,到生成对应的板级支持镜像(PreloaderU-Boot[A1] )、Linux应用编程控制这些外设,编译linux内核,修改板级设备树,使用linux驱动程序完成外设的控制等一系列工作的介绍,为读者展示了使用SoCFPGA开发需要掌握的各种方法和思路。但是,作为一个高性能的异构芯片,如何将芯片上的FPGAHPS两者有机的结合起来,实现高性能的数据通信才是该芯片的应用重点。因此,本章将针对该部分内容进行细致的讲解。


11.1 FPGAHPS通信介绍

在含有HPSSOC系统中,由于HPS中的ARM Cortex-A9使用的是AXI总线协议,其提供的与FPGA通信总线也是AXI总线。但是AXI总线和Avalon Memory Mapped总线在信号类型和时序上都有一定的差别,无法直接连接。HPS针对和FPGA的互联通信,总共提供了3种形式的AXI总线协议,分别为用于FPGA主动向HPS发起高效数据传输操作的F2H_AXI_Slave总线,用于HPS主动向FPGA发起高效数据传输操作的H2F_AXI_Master总线,以及用于HPS主动向FPGA发起一些控制或小容量数据传输操作的H2F_LW_AXI_Master总线。

这三个桥都使用先进的微控制器总线架构(Advanced Microcontroller Bus Architecture),即AMBA。高性能可扩展接口(Advanced eXtensible Interface),即AXI协议,就是基于AMBA网络互连架构的。

这些HPS-FPGA桥使得FPGA内核逻辑可以同HPS侧的从设备逻辑进行通信,同时也可以使HPS侧的逻辑能够与FPGA侧的从设备进行通信。例如,设计者可以在FPGA内核逻辑中添加额外的存储器或者外设,然后HPS中的主机逻辑可以来获取这些设备,当然,用户也可以在FPGA侧添加NIOS II 处理器,然后使用NIOS II的主机接口来获取HPS侧的存储器或者外设。

下表为HPS-FPGA桥的一些特性:

特点

FPGA-to-HPS Bridge

HPS-to-FPGA Bridge

Lightweight HPS-to FPGA Bridge

支持AMBA AXI3 接口协议

支持

支持

支持

实现时钟域交互,管理FPGA内核逻辑时钟域和HPS逻辑时钟域的数据交互

支持

支持

支持

实现HPS逻辑和FPGA内核逻辑的数据位宽转换

支持

支持

支持

允许在例化总线接口时配置接口的数据位宽

支持

支持

不支持

每个桥都包含一对主从接口对,其中一个接口导出到FPGA内核逻辑,而另一个接口导出到HPS逻辑。FPGA-to-HPS 桥引出了一个AXI Slave接口,用户可以将其连接到FPGA侧带AXI MasterAvalon-MM Master接口的主机上,HPS-to-FPGA桥和 lightweight HPS-toFPGA桥引出了AXI Master接口,用户用其连接FPGA内核逻辑中带AXI SlaveAvalon-MM Slave的设备。

11.11展示了HPS-FPGA 桥与FPGA内核逻辑以及HPSL3 互联架构的关系,图中每个主和从端口都标明了数据位宽,并通过括号备注的方式标明了每个端口的时钟域。

   

                       

11.11      HPS-FPGA桥与FPGA内核以及HPSL3架构连接关系


HPS-to-FPGA 桥由HPSL3主交互架构作为主机管理,lightweightHPS-to-FPGA 桥由连接在L3上的外设交换架构管理,FPGA-to-HPS 桥作为L3主交互架构的一个主机。从而使得FPGA内核中实现的任何主机都能够获取HPS中的大多数从设备。例如FPGA-to-HPS可以获取Cortex-A9 MPU的加速器一致性接口(ACP) ,从而实现对SDRAM控制器的缓存一致性获取。

对于HPS-to-FPGAFPGA-to-HPS两个高速桥,每个桥最高支持128-bit位宽。在HPS侧逻辑中,每个桥最高可运行在200M的时钟频率下,数据位宽为固定的64bit,因此在不考虑轻量级桥的情况下,FPGAHPS的总通信带宽为64*2*200MHz=25600Mbps

另外,Intel Cyclone V SoC FPGA还提供了一个FPGASDRAM的桥,该桥最高可提供4个独立的读写端口和6个控制端口,支持可配置的32位、64位、128位和256位的数据位宽,适合于FPGA共享使用HPS侧的高性能存储器的应用场合。


11.1.1 H2F_LW_AXI_Master

在前面以AC501_SoC_GHRD工程为基础的实验中,我们重点讲解了H2F_LW_AXI_Master桥上连接的外设的操作方式,包括使用虚拟地址映射的方式和Linux系统内核驱动的方式。H2F_LW_AXI_MasterHPS控制,作用于FPGA内核逻辑,该接口具有一个32位的固定数据宽度,作为FPGA内核逻辑的辅助的、低性能主接口。通过一个固定的宽度和较小地址空间,轻型桥接主要用于低带宽流量的应用,例如对FPGA外设采用存储器映射方式组织的寄存器的访问。该方法可以分担转移高性能HPS-to-FPGA桥接的流量,并且可以改善CSR访问延迟,提高整体系统性能。


11.1.2 10.1.2 H2F_AXI_Master

       H2F_AXI_Master桥为FPGA内核逻辑提供一个可配置宽度的、高性能主接口。该桥提供HPS中的各种主器件对FPGA中实现的逻辑、外设和存储器的访问,有效地址空间大小为960MB。使用时可以配置FPGA内核逻辑的桥接主接口以支持3264128位数据。

H2F_AXI_Master桥的位于HPS逻辑中的从端口数据位宽为64位。该桥能够提供数据位宽适配和时钟域交互逻辑使得 FPGA 中的逻辑能够工作在任意异步于 HPS的时钟域。其中,HPS逻辑中的从端口时钟为ARM L3的主时钟,即l3_main_clk,该时钟频率默认为MPU时钟频率的1/4,当MPU时钟频率为800MHz时,该时钟频率为200MHz。因此该桥的理论总带宽为64bit*200Mhz,即12800MbpsH2F_AXI_Master桥常用于由HPS发起的HPSFPGA侧的存储器进行大量的数据搬运工作,例如HPS从内存中高速搬运大量数据到FPGA侧的SDRAM存储器,或者HPSFPGA侧的SDRAM存储器中读取大量数据到内存中。


11.1.3 10.1.3 F2H_AXI_Slave

F2H_AXI_Slave桥提供一个FPGA内核逻辑对HPS可配置宽度的、高性能主接口,而对于HPS来说,则提供了一个受FPGA内核逻辑中的主机控制访问HPS中外设的从接口。使用时可以配置FPGA内核逻辑的桥接主接口以支持3264128位数据。

F2H_AXI_Slave桥的位于HPS逻辑中的从端口数据位宽为固定的64位。该桥能够提供数据位宽适配和时钟域交互逻辑使得 FPGA 中的逻辑能够工作在任意异步于HPS的时钟域。其中,HPS逻辑中的连接HPSL3主端口时钟与ARM L3的主时钟相同,即l3_main_clk,该时钟频率默认为MPU时钟频率的1/4,当MPU时钟频率为800MHz时,该时钟频率为200MHz。因此该桥的理论总带宽为64bit*200Mhz,即12800MbpsF2H_AXI_Slave桥常用于由FPGA侧逻辑发起的HPSFPGA进行大量的数据搬运工作,例如FPGAHPS内存中高速搬运大量数据到FPGA中(典型应用实例为FramerBuffer),或者由FPGA写入大量数据到HPS中(典型应用为高速数据采集)。


11.2 AXIAvalon-MM总线的互联

为了支持Platform Designer中提供的所有使用Avalon Memory Mapped总线的IP能够方便的连接到HPS上,Platform Designer具有AvalonAXI总线间的自动转换功能,我们在设计时,只需要将Avalon Memory Mapped总线信号连接到AXI信号总线上即可。至于如何完成两者间的信号功能和时序的转换,用户无需关心,Platform Designer会自动生成相应的转换逻辑。这对于一些已经使用NIOS II CPU开发了相应的系统和自定义IP的用户来说,是一件非常方便的事情,用户可以直接在HPS中按照原本NIOS II中的系统架构添加IP并连接好总线,就能实现相同的功能,同时,对于用户自己开发的自定义IP,无需做任何修改就能直接用于SOC系统中,大大降低了系统移植的工作量。

  得益于Platform Designer中提供的强大的Avalon-MMAXI总线协议自动适配功能,用户在编写FPGA侧逻辑时,可以直接使用易用的Avalon-MM总线进行设计,从而避开复杂的AXI总线协议。因此,作为一本讲解SoC FPGA基本开发方法的书,本书也并未安排针对AXI总线协议的FPGA侧逻辑设计的讲解,所有FPGA侧逻辑,无论是主接口还是从接口,都统一使用Avalon-MM总线协议实现。


更多内容,请关注小梅哥《SOC FPGA嵌入式设计和开发教程》一书相关章节。


小梅哥 更新芯航线团队出品的各种资料
评论
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 68浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 50浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 119浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 100浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 106浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 108浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 101浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 120浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 71浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 84浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦