当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:针对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 数据交换的实现方式。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭