当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:针对Altera SoC FPGA平台的Linux环境下ARM核与FPGA逻辑之间的数据交换问题,提出了一种简单有效的异步接口实现方案。该方案在轻量级总线桥上挂载Avalon 三态控制器,并通过Linux应用程序读写控制器对应的地址,从而实现ARM核与FPGA逻辑间数据的异步交换。实验结果表明,该方案能够稳定、正确、快速地读写数据,可达到预期目标。

引 言

FPGA 硬件资源和ARM 处理器的片内紧密耦合是Altera SoC FPGA 体系结构最显著的优势。Altera SoC FPGA 使用高宽带干线互联,在 FPGA 架构中集成了基于 ARM 的硬核处理器系统(HPS),该系统包括处理器、外设和存储器接口。可同时实现硬核知识产权(IP)的性能和低功耗,以及可编程逻辑的灵活性 [1]。ARM 的AMBA NIC-301 网络互联基础架构提供了三种交换架构——L3 主交换、L3 主机外设交换、L3 从机外设交换。在 L3 主交换和 FPGA 之间则由FPGA- to-HPS 总线桥 、HPS-to-FPGA 总线桥、轻量级的 HPS-to- FPGA 总线桥连接,HPS-to-FPGA 总线桥上可以挂载 AXI 接口逻辑或 Avalon 接口逻辑,实现处理器对FPGA 中寄存器的访问。

在实际应用中,许多功能简单的FPGA 逻辑与ARM 之间的数据交换量不是很多,交换速度要求不高,这样就可以通过在总线上挂载通用的异步接口来实现 ARM 对这类外设或逻辑的访问。Altera 提供了一种Avalon Tri-State Conduit Components, 该组件可以实现多种异步接口的时序如 CFI Flash、SSRAM、8086 接口外设等,可使开发者快速实现简单有效的数据访问。

1 硬件设计

1.1 异步接口的实现

本系统可在友晶科技的DE1-SOC 开发板上实现,其系统架构如图 1 所示。

从图 1可以看出, 双核 CortexA9由经 L3主交换通过轻量级的HPS-to-FPGA总线桥对Avalon三态电路组件访问。Altera提供的 Avalon三态电路组件包括,通用三态控制器(GenericTri-StateConduitController)、三态引脚共享器(Tri-State Conduit Pin Sharer)、三态桥(Tri-State Conduit)[2]。 通用三态控制器提供了自定义的数据位宽和时序功能,以提供不同的外设兼容。三态引脚共享器则可将多个态控制的地址、数据、读写信号共享到一个三态桥上,配合片选信号控制特定的外设,三态桥则实现了与外界的双向数据通路接口。

基于SoCFPGA异步通信接口的实现

本设计通过 QuartusII软件中的 Qsys工具向HPS的轻量级HPS-to-FPGA总线桥主端(h2f_lw_axi_master)添加了Avalon通用三态电路组件,硬核系统的Qsys互联如图2所示。

基于SoCFPGA异步通信接口的实现

图2 中ext_bus 即为三态控制器,其包含片选信号、读信号、写信号、片选、读信号、写信号、16 位地址线和 16 位数据线。

1.2 异步接口解析逻辑的实现

与上述异步接口对应,解析逻辑包括片选信号 cs_n、读使能 oe_n、写使能 wr_n、16 位的地址 addr 和 16 位双向数据线data。当cs_n 为低电平且是 oe_n 的下降沿时,总线根据给出的addr上的地址在相应的mem 寄存器上读取数据到data 数据线上完成读操作;当 cs_n 为低电平且是wr_n 的上跳沿时, 总线根据给出的addr上的地址将 data 数据线上的数据写入对应的mem 寄存器完成写操作。mem 寄存器读写的HDL 代码如下:

基于SoCFPGA异步通信接口的实现

2 软件设计

2.1 在设备树中添加接口信息

为解决arm 体系内核代码中充斥着大量的板级垃圾代码, Device Tree(设备树)被引入到 Linux 3.x 内核中。Device Tree 是一种用以描述硬件的数据结构,由一系列的硬件节点和属性构成,许多硬件细节可以直接透过它传递给内核 [3]。在修改硬件后,一般要修改相应的设备树描述文件与之对应以便内核能正确识别硬件。由于在上述过程中,三态控制被添加到轻量级的HPS-to-FPGA 总线上,对应需要修改相关设备描述信息如下:

hps_0_h2f_lw :bridge@0xff200000 {

compatible = "altr,h2f_lw_bridge-1.0","simple-bus" ;

reg = < 0xFF200100 0x00200000 > ;

ranges = < 0x00000100 0xFF200100 0x00000080 

                0x00030000 0xFF230000 0x00010000

              > ;

ext_bus :bus_ctr@0x30000 {

compatible =“altr,generic_tristate_controller-14.0”,

“altr,generic_tristate_controller-1.0”;

reg = < 0x00030000 0x00010000 > ;

} ;//end bus_ctr@0x30000(bus_ctr_0)

} ;//endbridge@0xff200000(hps_0_h2f_lw)

由描述信息可知,ext_bus位于h2f_lw(轻量级的HPS- to-FPGA总线桥)下。它的起始地址为 0xFF23000(总线地址0xff200000 + 偏移地址为 0x30000),地址长度为 0x10000。

2.2 应用程序设计

Linux 应 用 程 序 通 过 Linux 内 核 的 memory-mapped device 驱动访问[4],由ext_bus 所在的物理地址进而实现对ext_bus 所在的地址空间进行读写。首先,使用系统 open 函数打开/dev/mem 设备,然后调用系统 mmap 函数映射 HPS 的 L3 外设区域的物理地址到一个虚拟地址, 并根据轻量级HPS-to-FPGA 总线相对于L3 外设区域基地址的偏移量和ext_bus 相对于轻量级HPS-to-FPGA 总线的偏移量计算出ext_bus 的虚拟地址。读写则直接操作对应的虚拟地址完成操作,异步总线的地址获取代码实现如下:

基于SoCFPGA异步通信接口的实现

3 结 语

实验表明,这种设计方法可以正确有效地完成对异步接口的读写操作。其设计思路非常简单,只需要将控制器添加到总线上,在应用程序中操作相应的虚拟地址即可,是一种快速有效的ARM 与FPGA 数据交换的实现方式。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭