一种基于FPGA的多路AXI总线的控制方法技术

技术编号:26033254 阅读:22 留言:0更新日期:2020-10-23 21:11
本发明专利技术公开了一种基于FPGA的多路AXI总线的控制方法,整个架构采用4根AXI总线和DDR产生数据交互,第一根AXI总线部署目标检测算法,主要包括图片数据,卷积计算模块和量化模块;第二根AXI总线主要用来传输对应的权重数据,2D网络最终的计算结果通过第一根和第二根AXI总线写回DDR,第三根AXI总线主要部署激光点云网络,3D网络的计算结果通过第三根AXI总线写回DDR,这部分结果作为2D网络的输入;第四根总线主要部署3D网络的一些前向计算,最终的结果由第四根DDR总线写回DDR内存,并且这部分数据作为3D网络的输入。本发明专利技术不需要过多花费资源和损失算法精度的情况下,降低了整个FPGA的时延并且提高了帧率,满足了相应的场景实际需求。

【技术实现步骤摘要】
一种基于FPGA的多路AXI总线的控制方法
本专利技术涉及一种控制方法,具体是一种基于FPGA的多路AXI总线的控制方法。
技术介绍
FPGA即现场可编程门阵列,是一种半定制电路。作为专用集成电路中的一种,由PAL,GAL,CPLD传统逻辑电路和门阵列演变而来。FPGA采用了逻辑单元阵列LCA导概念,将逻辑单元、RAM、乘法器等硬件资源通过合理组织实现乘法器、寄存器、地址产生器等相应的硬件电路。随着算法更新的不断迭代,算法流程越来越越复杂,处理精度越来越高,在某些应用场景下,单一的算法网络已经不足以满足要求,这就需要多个算法网络同时运行以达到更好的效果。而FPGA虽然有着运算能力高、功耗低的特点,但是受限于硬件资源,很难同时运行多个网络,或者运行多个网络时的时延过长,导致最终的结果不理想。传统的FPGA在一块开发板上同时运行多个算法网络时,往往采用的是通过AXI总线传输数据,但是网络与网络之间是串行的关系,往往会导致时延过长,最终的帧率过低或者精度不足。
技术实现思路
本专利技术的目的在于提供一种基于FPGA的多路AXI总线的控制方法,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种基于FPGA的多路AXI总线的控制方法,将逻辑模块化,整个架构采用4根AXI总线和DDR产生数据交互,第一根AXI总线部署目标检测算法,即2D网络,包括图片数据、卷积计算模块和量化模块;第二根AXI总线用来传输对应的权重数据,2D网络最终的计算结果通过第一根和第二根AXI总线写回DDR,完成整个数据的交互;第三根AXI总线部署激光点云网络,即3D网络,3D网络的计算结果通过第三根AXI总线写回DDR,结果作为2D网络的输入;第四根总线部署3D网络的前向计算,最终的结果由第四根DDR总线写回DDR内存,并且数据作为3D网络的输入;具体方法如下:首先arm将4帧图片数据放入由参数设置的DDR地址,并且把4次运行指令参数传入到第四根AXI总线上的出入栈模块,第4根线开始启动并进行相应的计算,模块输出由第四根AXI总线写回DDR,并且地址偏移4个buff,每当完成一个buff的数据产生一个中断信号通知第三根AXI总线启动3D计算模块,并且第四根AXI总线去读取第2个buff地址上的数据,继续自己的前向计算过程,第三根AXI总线从相应的地址读取前向计算好的数据,待全部计算完成写回DDR,产生一个中断信号通知第一和第二根AXI总线的2D模块启动,并且自己读取前向计算好后的第2个buff的数据进行3D网络的运算,当2D网络完成计算后,通过第一根和第二根AXI总线将数据写回相应的DDR地址,产生中断信号通知arm继续向FPGA传输运行指令参数和将原始数据放入相应的buff地址,此时四根AXI总线都在同时工作,当前向计算运行地帧率数据时,3D计算在运行第2帧率数据,而2D在计算第1帧数据,四根AXI总线以三级流水的方式并行计算。作为本专利技术进一步的方案:每根所述AXI总线的输入端均设置一个出入栈模块,用来存储arm端通过写寄存器传输来的运行指令参数,每当有一帧数据运行指令存入栈内,内部的计数器就会加1。作为本专利技术再进一步的方案:每根所述AXI总线计算结束时均产生一个终止信号,表明所在的AXI总线运行结束,且将出入栈模块内存储的运行指令参数的计数器减1,当每根AXI总线的栈内模块运行指令参水参数完全为0时,表明所有的数据都运行完毕,整个程序结束。作为本专利技术再进一步的方案:所述控制方法将预先设定好的参数转换为二进制文件并输入进程序,需要偏移地址buffer的数量自行设置。作为本专利技术再进一步的方案:所述控制方法通过外部的参数控制,将AXI总线读取和写回预先设定好的DDR内存地址。与现有技术相比,本专利技术的有益效果是:本专利技术通过控制多路AXI总线并行工作,一条AXI总线对应一个网络,为其传输数据访问DDR内存。不同的网络通过各自的AXI总线进行数据访问,互不影响各自的计算过程,以多级流水的方式并行计算,不需要互相等待。这样的设计在不需要过多花费资源和损失算法精度的情况下,降低了整个FPGA的时延并且提高了帧率,满足了相应的场景实际需求。附图说明图1为FPGA和GPU以及ASIC的对比示意图。图2为网络整体架构示意图。图3为地址偏移控制参数示意图。图4为多路AXI总线整体运行顺序示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参阅图1~4,本专利技术实施例中,一种基于FPGA的多路AXI总线的控制方法,将所有的逻辑模块化,整体架构如图2所示,首先整个架构采用4根AXI总线和DDR产生数据交互,第一根AXI总线部署目标检测算法(2D网络),主要包括图片数据(FeatureMap),卷积计算模块和量化模块;第二根AXI总线主要用来传输对应的权重数据,2D网络最终的计算结果通过第一根和第二根AXI总线写回DDR,完成整个数据的交互。第三根AXI总线主要部署激光点云网络(3D网络),3D网络的计算结果通过第三根AXI总线写回DDR,这部分结果作为2D网络的输入。第四根总线主要部署3D网络的一些前向计算,最终的结果由第四根DDR总线写回DDR内存,并且这部分数据作为3D网络的输入。为了能让四根总线同时运行,本专利技术在每根AXI总线的输入端设置了一个出入栈模块,主要用来存储arm端通过写寄存器传输来的运行指令参数,每当有一帧数据运行指令存入栈内,内部的计数器就会加1。除此以外,每根线计算结束时都会产生一个终止信号,表明所在的AXI总线运行结束,并且会将出入栈模块内存储的运行指令参数的计数器减1,当每根AXI总线的栈内模块运行指令参水参数完全为0时,表明所有的数据都运行完毕,整个程序结束。本专利技术的控制方法还可以通过外部的参数控制,可以将AXI总线读取和写回预先设定好的DDR内存地址,也就是AXI总线的地址偏移,地址偏移量设置如图3所示,这个控制方法将预先设定好的参数转换为二进制文件并输入进程序,具体需要偏移多少个地址buffer可以根据实际情况进行设置,简单方便,不需要额外修改整个FPGA程序,提高了效率。本专利技术的控制方法实际应用在上述的2D网络和3D网络的效果如图4所示,其中方框内的数字表示每帧的原始数据,首先arm将4帧图片数据放入由参数设置的DDR地址,并且把4次运行指令参数传入到第四根AXI总线上的出入栈模块,此时第4根线开始启动并进行相应的计算,模块输出由第四根AXI总线写回DDR,并且地址偏移4个buff,每当完成一个buff的数据产生一个中断信号通知第三根AXI总线启动3D计算模块,并且第四根AXI总线去读取第2个buff地址本文档来自技高网...

【技术保护点】
1.一种基于FPGA的多路AXI总线的控制方法,其特征在于,将逻辑模块化,整个架构采用4根AXI总线和DDR产生数据交互,第一根AXI总线部署目标检测算法,即2D网络,包括图片数据、卷积计算模块和量化模块;/n第二根AXI总线用来传输对应的权重数据,2D网络最终的计算结果通过第一根和第二根AXI总线写回DDR,完成整个数据的交互;/n第三根AXI总线部署激光点云网络,即3D网络,3D网络的计算结果通过第三根AXI总线写回DDR,结果作为2D网络的输入;/n第四根总线部署3D网络的前向计算,最终的结果由第四根DDR总线写回DDR内存,并且数据作为3D网络的输入;/n具体方法如下:/n首先arm将4帧图片数据放入由参数设置的DDR地址,并且把4次运行指令参数传入到第四根AXI总线上的出入栈模块,第4根线开始启动并进行相应的计算,模块输出由第四根AXI总线写回DDR,并且地址偏移4个buff,每当完成一个buff的数据产生一个中断信号通知第三根AXI总线启动3D计算模块,并且第四根AXI总线去读取第2个buff地址上的数据,继续自己的前向计算过程,第三根AXI总线从相应的地址读取前向计算好的数据,待全部计算完成写回DDR,产生一个中断信号通知第一和第二根AXI总线的2D模块启动,并且自己读取前向计算好后的第2个buff的数据进行3D网络的运算,当2D网络完成计算后,通过第一根和第二根AXI总线将数据写回相应的DDR地址,产生中断信号通知arm继续向FPGA传输运行指令参数和将原始数据放入相应的buff地址,此时四根AXI总线都在同时工作,当前向计算运行地帧率数据时,3D计算在运行第2帧率数据,而2D在计算第1帧数据,四根AXI总线以三级流水的方式并行计算。/n...

【技术特征摘要】
1.一种基于FPGA的多路AXI总线的控制方法,其特征在于,将逻辑模块化,整个架构采用4根AXI总线和DDR产生数据交互,第一根AXI总线部署目标检测算法,即2D网络,包括图片数据、卷积计算模块和量化模块;
第二根AXI总线用来传输对应的权重数据,2D网络最终的计算结果通过第一根和第二根AXI总线写回DDR,完成整个数据的交互;
第三根AXI总线部署激光点云网络,即3D网络,3D网络的计算结果通过第三根AXI总线写回DDR,结果作为2D网络的输入;
第四根总线部署3D网络的前向计算,最终的结果由第四根DDR总线写回DDR内存,并且数据作为3D网络的输入;
具体方法如下:
首先arm将4帧图片数据放入由参数设置的DDR地址,并且把4次运行指令参数传入到第四根AXI总线上的出入栈模块,第4根线开始启动并进行相应的计算,模块输出由第四根AXI总线写回DDR,并且地址偏移4个buff,每当完成一个buff的数据产生一个中断信号通知第三根AXI总线启动3D计算模块,并且第四根AXI总线去读取第2个buff地址上的数据,继续自己的前向计算过程,第三根AXI总线从相应的地址读取前向计算好的数据,待全部计算完成写回DDR,产生一个中断信号通知第一和第二根AXI总线的2D模块启动,并且自己读取前向计算好后的第2个buff的数据进行3D网络的运算,当2D网络完成计算后,通过第一根和第二根AXI总线将数...

【专利技术属性】
技术研发人员:江超
申请(专利权)人:上海雪湖科技有限公司
类型:发明
国别省市:上海;31

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

1