基于FlexSPIARM与FPGA的高速通信方法技术

技术编号:37822233 阅读:21 留言:0更新日期:2023-06-09 09:58
本发明专利技术公开了一种基于FlexSPIARM与FPGA的高速通信方法,ARM芯片和FPGA芯片通过FlexSPI总线进行通信,其包括以下步骤:只保留现有FlexSPI总线的linux驱动程序中FlexSPI初始化的配置,并简化LUT配置,只实现单独的读写数据命令序列,形成简化后的FlexSPI时序;在ARM中设置linux内核启动参数,将目标CPU核心从linux内核SMP平衡和调度算法中剔除,隔离出来只给FlexSPI数据通信的进程使用,并使该目标CPU核心进入无滴答状态。实施本发明专利技术实施例,可以实现ARM芯片与FPGA芯片的稳定高速通信,满足系统对实时、高速率的需求。高速率的需求。高速率的需求。

【技术实现步骤摘要】
基于FlexSPI ARM与FPGA的高速通信方法


[0001]本专利技术涉及嵌入式系统
,具体涉及一种基于FlexSPI ARM与FPGA的高速通信方法。

技术介绍

[0002]随着科学技术的不断发展,微电子领域发生了翻天覆地的变化,嵌入式技术也得到了突飞猛进的发展。与此同时ARM和FPGA之间的传输数据的接口方式也越来越多,主要分为以下几种:第一种是低速串行传输方式,利用ARM处理器的I2C、SPI、UART接口与FPGA实现连接,这种方式连接简单,但只能满足低速数据传输要求;第二种是FPGA和ARM之间通过双口RAM来实现数据传输,这种方式能满足高速数据传输要求,也能处理数据传输速度不匹配的情况,但是设计相对复杂,成本也相对较高;第三种则为并行传输方式,也就是所谓的总线连接,这种连接方式传输速度快,设计也相对简单,但是相比串行接口的方式需要更多的IO资源;第四种是高速串行传输方式,该方式传输速度高,能满足绝大多数高速数据传输要求,但设计难度高且对平台有着较高的要求。

技术实现思路

[0003]本专利技术的目的在于提供一种基于FlexSPI ARM与FPGA的高速通信方法,其实现基于FlexSPI ARM与FPGA的稳定高速通信,满足系统对实时、高速率的需求。
[0004]为实现上述目的,本专利技术第一方面公开了一种基于FlexSPI ARM与FPGA的高速通信方法,所述ARM芯片和FPGA芯片通过FlexSPI总线进行通信,其特征在于,其包括以下步骤:
[0005]现有FlexSPI总线的linux驱动程序中FlexSPI初始化的配置,并简化LUT配置,只实现单独的读写数据命令序列,形成简化后的FlexSPI时序;
[0006]在ARM中设置linux内核启动参数,将目标CPU核心从linux内核SMP平衡和调度算法中剔除,隔离出来只给FlexSPI数据通信的进程使用,并使该目标CPU核心进入无滴答状态。
[0007]作为一种可选的实施方式,在本专利技术实施例中,简化LUT配置,只实现单独的读写数据命令序列,包括:
[0008]配置LUT读数据命令序列为CMD_DDRPAD_8X+READ_DDRPAD_8X,即使用DDR双边沿触发模式读命令,并且数据位宽为8bit。
[0009]作为一种可选的实施方式,在本专利技术实施例中,简化LUT配置,只实现单独的读写数据命令序列,包括:
[0010]配置LUT写数据命令序列=CMD_DDRPAD_8X+WRITE_DDRPAD_8X,即使用DDR双边沿触发模式写命令,并且数据位宽为8bit。
[0011]作为一种可选的实施方式,在本专利技术实施例中,FPGA芯片基于该简化后的FlexSPI时序实现数据收发处理逻辑,而ARM芯片基于内存访问的方式与FPGA实现数据传输。
[0012]作为一种可选的实施方式,在本专利技术实施例中,在ARM中设置linux内核启动参数,将目标CPU核心从linux内核SMP平衡和调度算法中剔除,隔离出来只给FlexSPI数据通信的进程使用,包括:
[0013]设置内核启动参数isolcpus=i,即将作为目标CPU核心的第i个CPU从linux内核SMP平衡和调度算法中剔除,将剔除的所述目标CPU核心隔离作为FlexSPI数据通信的进程使用,0≤i≤n

1,n为ARM芯片的CPU总数。
[0014]作为一种可选的实施方式,在本专利技术实施例中,使该目标CPU核心进入无滴答状态,包括:
[0015]在使用CONFIG_NO_HZ_FULL=y构建的linux内核中,设置内核启动参数nohz_full=i,即指定作为目标CPU核心的第i个CPU进入无滴答状态;
[0016]同时,设置内核启动参数rcu_nocbs=i,即指定作为目标CPU核心的第i个CPU卸载RCU回调处理。
[0017]相比现有技术,本专利技术的有益效果在于:
[0018]本专利技术实施例通过ARM本身自带的FlexSPI总线的传输方式实现ARM和FPGA的通信,目前FlexSPI总线的传输方式主要用于驱动NAND/NORFlash等设备,基于现有的linux驱动程序与FPGA通信会导致FPGA的数据通信逻辑实现较为复杂、开发难度高。本专利技术通过简化ARM端的FlexSPI的LUT配置,从而简化ARM与FPGA通信的FlexSPI时序,这样FPGA端的数据通信逻辑实现就会相对简单,ARM端基于内存访问的方式即可与FPGA通信。
[0019]然而仅仅实现基于FlexSPI ARM与FPGA的通信,还未能够满足实时、高速率的需求。由于linux系统SMP平衡和调度算法、cache刷写数据延迟等因素,会导致高速、大批量实时传输数据的时候引起系统抖动,从而影响ARM与FPGA高速率的实时传输性能。本专利技术通过配置linux系统内核,将特定的CPU核心隔离出来只给指定的FlexSPI数据通信的进程使用,并且降低该CPU核心的中断触发频率,从而减少了系统抖动,实现基于FlexSPI ARM与FPGA的稳定高速通信,满足系统对实时、高速率的需求。
附图说明
[0020]图1为本专利技术实施例基于FlexSPI ARM与FPGA的高速通信系统的结构框图;
[0021]图2为本专利技术实施例FlexSPI读数据时序图;
[0022]图3为本专利技术实施例FlexSPI写数据时序图。
具体实施方式
[0023]下面,结合附图以及具体实施方式,对本专利技术做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。除特殊说明的之外,本实施例中所采用到的材料及设备均可从市场购得。实施例的实例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解对本申请的限制。
[0024]本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系
统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0025]实施例一
[0026]请参照图1所示,本专利技术公开的一种基于FlexSPI ARM与FPGA的高速通信方法,是通过ARM芯片自带的FlexSPI总线与FPGA芯片进行通信的。具体地,通过FlexSPI总线设置的SCLK(时钟)引脚、SS(从机选择信号)引脚、DQS(数据选通信号)引脚以及数据传输(DATA0~DATA7)引脚和FPGA芯片相对应的引脚连接,实现ARM芯片和FPGA芯片的通信。
[0027]FlexSPI是一种主要用于驱动NAND/NORFlash串行通信总线,该接口支持Single/Dual/Quad/Oct本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FlexSPIARM与FPGA的高速通信方法,所述ARM芯片和FPGA芯片通过所述ARM芯片自带的FlexSPI总线进行通信,其特征在于,其包括以下步骤:只保留现有FlexSPI总线的linux驱动程序中FlexSPI初始化的配置,并简化LUT配置,只实现单独的读写数据命令序列,形成简化后的FlexSPI时序;在ARM中设置linux内核启动参数,将目标CPU核心从linux内核SMP平衡和调度算法中剔除,隔离出来只给FlexSPI数据通信的进程使用,并使该目标CPU核心进入无滴答状态。2.根据权利要求1所述的基于FlexSPIARM与FPGA的高速通信方法,其特征在于,简化LUT配置,只实现单独的读写数据命令序列,包括:配置LUT读数据命令序列为CMD_DDRPAD_8X+READ_DDRPAD_8X,即使用DDR双边沿触发模式读命令,并且数据位宽为8bit。3.根据权利要求1所述的基于FlexSPIARM与FPGA的高速通信方法,其特征在于,简化LUT配置,只实现单独的读写数据命令序列,包括:配置LUT写数据命令序列=CMD_DDRPAD_8X+WRITE_DDRPAD_8X,即使用DDR双边沿触发模式写命令,并且数据位宽为8bit。4.根据权利要求1所述的基于FlexS...

【专利技术属性】
技术研发人员:梁金泉邓引梁权荣周伯齐
申请(专利权)人:广州创龙电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1