CN110569713B - 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法 - Google Patents
一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法 Download PDFInfo
- Publication number
- CN110569713B CN110569713B CN201910663189.5A CN201910663189A CN110569713B CN 110569713 B CN110569713 B CN 110569713B CN 201910663189 A CN201910663189 A CN 201910663189A CN 110569713 B CN110569713 B CN 110569713B
- Authority
- CN
- China
- Prior art keywords
- transmission
- channel
- parallel
- image
- fuc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/10—Terrestrial scenes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
Abstract
本发明一种利用DMA控制器实现数据串并行二维传输的目标探测系统及方法,系统包括探测器、上位机、FPGA、记录仪和多核ARM处理器;探测器上电工作后,将实时探测得到的图像传输给多核ARM处理器;多核ARM处理器根据上位机发出的指令选择对应的图像预处理算法对接收到的图像进行预处理后,发送给FPGA;FPGA上挂载的深度学习IP核对接收到的预处理后的图像数据进行深度学习目标识别计算,计算结果通过多核ARM处理器反馈至记录仪和上位机。本发明可支持神经网络运算算法单元,具有强实时、易移植、可扩展等特点的软件架构体系。
Description
技术领域
本发明涉及一种利用DMA控制器实现数据串并行二维传输的目标探测系 统及方法,属于深空目标探测领域。
背景技术
得益于计算机数据处理及计算能力的快速增长,基于灰度相关,surf等算 法的静态目标跟踪已经有了很多成功应用。但市面上对动态目标的识别,跟踪 最有效的深度学习算法在导弹武器型在嵌入式系统上的落地还未有先例,现有 技术中,将神经网络运算之类的深度学习算法应用于导弹及制导弹药的图像制 导方面,可有效解决复杂环境下驻港及水面舰船、停机坪飞机等时敏目标,特 别是坦克及装甲车辆目标的精确识别打击难题。
鉴于实现动态目标识别所需要的算法比较复杂,已有的嵌入式软件设计方 法如kcf等,耗时长,效率低,有效的识别场景单一,难以取得较好的效果;
此外,目前缺少信息处理软件和深度学习硬件IP核相配合协同工作共同实 现的目标识别软件设计思路,及时勉强实现了基于嵌入式的深度学习设计,软 件的可扩展性,可移植性以及实用性都很差。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种利用DMA控 制器实现数据串并行二维传输的目标探测系统及方法,可支持神经网络运算算 法单元,具有强实时、易移植、可扩展等特点的软件架构体系。
本发明的技术方案是:一种利用DMA控制器实现数据串并行二维传输的 目标探测系统,包括探测器、上位机、FPGA、记录仪和多核ARM处理器; 探测器上电工作后,将实时探测得到的图像传输给多核ARM处理器;多核ARM处理器根据上位机发出的指令选择对应的图像预处理算法对接收到的图 像进行预处理后,发送给FPGA;FPGA上挂载的深度学习IP核对接收到的预 处理后的图像数据进行深度学习目标识别计算,计算结果通过多核ARM处理器反馈至记录仪和上位机。
其中ARM双核与FPGA按功能划分定义如下:
·ARM核1:执行命令响应、资源调度;接收神经网络运算结果,向记 录仪返回监测信息;以下简称调度单元;
·ARM核2:负责驱动FPGA执行基于神经网络的深度学习计算以及计 算结果尾处理、计算前图像的预处理;以下简称执行单元
·FPGA:负责对接收到的预处理结果图像进行深度学习计算,并返回给 调度单元当前深度学习计算结果;
在调度单元、执行单元与深度学习IP核之间图像数据传输,按传输方向分 为以下四种:
·探测器->调度单元私有内存:完成从外设采集到的图像数据到系统内的 传输:
·调度单元私有内存->调度单元与执行单元的共享内存:完成调度单元私 有内存到调度单元与执行单元共享内存之间的并行传输;
·调度单元与执行单元的共享内存->执行单元私有内存:完成共享内存到 执行单元私有内存的并行传输;
·执行单元私有内存->FPGA:完成执行单元内部图像预处理结果到 FPGA的图像数据传输。
·传输指令特征描述
定义所需要进行传输的传输指令和传输队列,传输队列定义为非环形先入 先出队列。
定义传输指令为包含8个传输特征值的协议TRANS_CMD,按如下顺序排 列:
h)Feature待传输的图像种类:定义当前系统需进行传输的图像名称;
i)TransType传输方式:
定义逻辑值为真为串行传输,表示该类型传输过程中不允许其它类型图像 并行传输;串行传输的含义是系统从启动该类型的传输时刻起,不启动其它类 型图像传输,适用于需要立刻返回传输结果的图像传输类型;
逻辑值假为并行传输,表示该传输类型中允许其它类型图像传输并行;并 行传输的含义是系统从启动该类型的传输时刻起,同时启动多个同类型的图像 传输,不急于得到某种特定图像类型的传输结果,而是希望在系统某一时刻得 到参与并行传输的N个同种类图像数据的所有结果。
j)Channel传输通道:
定义为本次传输类型的分配的通道,系统可动态分配8个通道:CH0~Ch7; 本发明中将通道CH0~Ch1用于串行传输,为不可并行通道;通道CH2~Ch7用 于并行传输,为可并行通道;
系统初始化时将通道CH0~Ch7设定为传输完成产生中断的方式,即该通道 传输完成后将产生中断进入中断服务函数,定义通道CH0~Ch7各自传输完成后 进入的中断服务函数为INTR_FUC0~INTR_FUC7。
各通道工作状态可分为空闲和非空闲,可通过查询指定寄存器方式获得; 本发明中启动的一维DMA传输均设定为启动传输后不等待返回的模式。
k)SrcAddr传输源地址:定义传输图像的源地址;
l)DstAddr传输目的地址:定义传输图像的目的地址;
m)Step(A,a,b)传输偏移量:定义基于传输源地址的横向偏移量A、首次 传输横向偏移量a和首次传输纵向偏移量b。
n)Size(w,h)传输结果:定义基于传输结果特征值:总列数w和总行数h。
o)TransCnt传输次数:定义该传输类型启动一维DMA搬运的次数,初始 值为0,TransCnt∈[0,h];
故传输指令TRANS_CMD特征值文字格式描述如下:
{Feature,TransType,Channel,SrcAddr,DstAddr,Step(A,a,b),Size(w,h),Tran
(2.1)、系统在运行过程中根据系统当前状态实时将当前系统需要的传输 指令在调度单元入队,并在定时器中断内实时出队传输指令队列;当传输队列 不为空时,判断当前传输指令TRANS_CMD的传输特征值TransType:当 TransType值为“真”时,当前传输类型为串行传输,执行(2.2);当TransType值 为“假”时,当前传输类型为并行传输,执行(2.3)。
·基于传输指令的串行传输策略
(2.2)、查询系统为该串行传输类型Featurei分配的传输通道Channelj是 否空闲,其中i∈[0,7],如果不空闲,返回(2.2),继续查询;如果空闲,则执 行基于传输指令的串行传输,具体方法为:查询Stepi中ai和bi是否同时为0并 且Ai=wi,如果是,则为连续地址的搬运,执行(2.2.1),否则为非连续地址 搬运,执行(2.2.2)。
(2.2.1)、占用Channeli通道启动一维DMA传输,从SrcAddri开始传输长 度为wi×hi大小的数据到DstAddi,TransCnti自增hi,系统自动执行(2.2.3);
(2.2.2)、占用Channeli通道启动一维DMA传输,从SrcAddri+Ai*bi+ ai开始传输长度为wi大小的数据到DstAddri,TransCnti自增1,SrcAddri自增 Ai*1,DstAddri自增wi,系统自动执行(2.2.3);
(2.2.3)、DMA传输完成后,系统自动进入Channeli的完成中断INTR_FUCi函数内,此时判断TransCnti是否等于hj,如果是,则该传输类型结束,返回(2.1); 否则继续该传输类型,重复执行(2.2.2)直到该传输类型结束;
·基于传输指令的并行传输策略
(2.3)、查询系统为该并行传输类型Featurej分配的传输通道Channelj是 否空闲,其中j≠i且j∈[0,7],如果不空闲,返回(2.3),继续查询;如果空闲, 则执行基于传输指令的并行传输,具体方法为:
(2.3.1)、建立并行通道轮询队列Qk,用于保存系统为该并行传输类型 Featurej分配的所有传输通道的值;首先将j存入队列Qk中;查询Stepj中aj和bj是否同时为0并且Aj=wj,如果是,则为连续地址的搬运,执行(2.3.2),否 则为非连续地址搬运,执行(2.3.4)。
(2.3.2)、根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在 的同类型指令个数N,将传输指令队列出队N-1次,得到系统为该并行传输类 型Featurej分配的其他传输通道Channelk,将通道值依次存入队列Qk中,执行 (2.3.3)。
(2.3.3)、判断队列Qk是否为空,如果是,则本次图像类型Featurej并行 传输结束,返回(2.1);如果不是,遍历Qk中元素k,判断传输通道Channelk是 否空闲,如果不空闲,不执行任何操作;如果空闲,占用Channelk通道依次启 动一维DMA传输,从SrcAddrk开始传输长度为wk×hk大小的数据到 DstAddrk,TransCntk自增hk,系统自动执行(2.3.8);
(2.3.4)、占用Channelj通道启动一维DMA传输,从SrcAddrj+Aj*bj+ aj开始传输长度为wj大小的数据到DstAddrj,TransCntj自增1,SrcAddrj自增 Aj*1,DstAddrj自增wj,系统自动执行(2.3.5);
(2.3.5)、DMA传输完成后,自动进入Channelj的完成中断INTR_FUCj函 数内,根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在的同类型 指令个数N,在完成中断INTR_FUCj函数内将传输指令队列出队N-1次,得到 系统为该并行传输类型Featurej分配的其他传输通道Channelk,将通道值依次 存入队列Qk中;令k=j,执行(2.3.6)。
(2.3.6)、开始轮询并行传输通道Channelk,轮询方式为:判断队列Qk是 否为空,如果是,则本次图像类型Featurej并行传输结束,返回(2.1);如果 不是,将当前所在的中断函数INTR_FUCk对应的通道号k放在Qk对尾;遍历Qk中 元素k,按队列Qk中元素顺序依次执行(2.3.7);
(2.3.7)、判断传输通道Channelk是否空闲,如果不空闲,不执行任何操 作;如果空闲,则依次占用Channelk通道启动DMA传输,从SrcAddrk+Ak* bk+ak开始传输长度为wk大小的数据到DstAddrk,TransCntk自增1,SrcAddrk自增Ak*1,DstAddrk自增wk,系统自动执行(2.3.8);
(2.3.8)、DMA传输完成后,自动进入Channelk的完成中断INT_FUCk函 数内,判断TransCntk是否等于hk,如果是,则该通道传输结束,将该k值从队 列Qk中出队;
如果当前并行传输方式为连续地址的搬运,重复执行(2.3.3)直到本次图 像类型Featurej并行传输结束;
如果当前并行传输方式为非连续地址搬运,重复执行(2.3.6)直到本次图 像类型Featurej并行传输结束。
本发明与现有技术相比的有益效果是:
创新点1:基于队列中传输指令驱动的可并行的一维DMA实现二维传输方 案
由于ARM芯片的限制,无法提供高效的二维DMA数据搬运驱动,而传统 一维DMA数据搬运只能搬运连续地址空间,现有的一维DMA实现二维数据传 输技术也只能顺序执行单种类型图像数据搬运操作。
本发明提出一种高性能的利用一维DMA数据传输代替二维数据传输的解 决方案。该方法将串行的二维图像数据传输转化为基于队列中传输指令驱动的 可并行的多种二维图像数据传输,从而实现在系统图像数据传输需求进发时, 可自动分配传输通道,同时启动多个通道的二维图像数据传输,实现异构平台 之间高性能的大数据量图像数据传输。
创新点2:采用多核多队列的指令缓存设计
其有益效果为:考虑到系统软件的多核指令交互的进发性,本发明将其中 一个核划分为“调度单元”,在上游(中心机)和下游(核间软中断)均设有 指令缓存机制,处理硬件IP核调用、主流程控制、通信外设接口等。将另一 个核作为“执行单元”,在上游(核间软中断)设有指令缓存机制,可运行硬 件IP核之外的深度学习算法,对硬件IP核进行加强和扩展,解决了硬件IP 核算法的局限性,可修改性差的缺点。
采用多核通信的方式对核间CACHE区域进行动态维护,优化通信效率和 实时性,集中解决多核数据共享的一致性、并行计算核间数据同步的问题。
创新点3:扩展IP核功能,实现深度学习算法灵活切换
其有益效果为:不需要更改软件即可实现基于深度学习的多种目标识别。
附图说明
图1为传输指令内存示意图;
图2为连续地址的串行传输示意图;
图3为非连续地址的串行传输示意图;
图4为连续地址的并行传输示意图;
图5为非连续地址的并行传输示意图;
图6为共享内存滑动分割示意图;
图7系统架构图;
图8为调度单元与执行单元的交互示意图;
图9为执行单元与IP的交互图示;
图10为IP核内部计算流程图示;
具体实施方式
(1)、下面结合附图进行系统架构详叙
本发明所使用的ZYNQ芯片属于“双核ARM+FPGA”的硬件架构,其中的 FPGA作为硬件IP核的平台,ARM多核芯片作为软件的运行平台,其中共有 双核参与神经网络单元的预处理和计算(如图7所示):
·调度单元,执行命令响应、资源调度与源图像预处理(可选),以 下简称调度单元;
·执行单元,负责驱动IP核执行基于神经网络的深度学习计算以及计 算结果尾处理,以下简称执行单元。
·FPGA,负责对接收到的预处理图像进行深度学习计算,并返回当前 深度学习计算结果;
(2)、下面结合附图对本发明的具体实施方式进行进一步的详细描述。
根据系统需求将传输指令定义为包含8个传输特征值的协议TRANS_CMD, 按如下顺序排列:
a)Feature待传输的图像种类:枚举类型,定义当前系统需进行传输 的图像名称;当N个图像需要并行传输时,系统保证中断内循环入队 N次该Feature种类的并行指令,保证其在指令队列中的连续性。
b)TransType传输方式:布尔型,逻辑值真为串行传输,表示该类型 传输过程中不允许其它类型图像并行传输;串行传输的含义是系统 从启动该类型的传输时刻起,不启动其它类型图像传输,适用于需 要立刻返回传输结果的图像传输类型;逻辑值假为并行传输,表示 该传输类型中允许其它类型图像传输并行;并行传输的含义是系统 从启动该类型的传输时刻起,同时启动多个同类型的图像传输,不 急于得到某种特定图像类型的传输结果,而是希望在系统某一时刻 得到参与并行传输的N个同种类图像数据的所有结果。
c)Channel传输通道:枚举类型,为本次传输类型的分配的通道,系 统可动态分配8个通道:CH0~Ch7;本发明中将通道CH0~Ch1用 于串行传输,为不可并行通道;通道CH2~Ch7用于并行传输,为可 并行通道;系统初始化时将通道CH0~Ch7传输完成设为中断触发方 式,CH0~Ch7传输完成会自动进入中断服务程序 INTR_FUC0~INTR_FUC7。各通道工作状态可分为空闲和非空闲,可 通过查询指定寄存器方式获得;本发明中启动的一维DMA传输均设 定为启动传输后不等待返回的模式。
d)SrcAddr传输源地址:无符号32位整型,定义传输图像的源地址;
e)DstAddr传输目的地址:无符号32位整型,定义传输图像的目的地 址;
f)Step(A,a,b)传输偏移量:3个无符号32位整型,定义基于传输源 地址的横向偏移量A、首次传输横向偏移量a和首次传输纵向偏移量b。
g)Size(w,h)传输结果:2个无符号32位整型,定义基于传输结果特 征值:总列数w和总行数h。
h)TransCnt传输次数:无符号32位整型,定义该传输类型启动一维 DMA搬运的次数,初始值为0(TransCnt∈[0,h]);
故传输指令TRANS_CMD图示如附图1所示,其格式为:
{Feature,TransType,Channel,SrcAddr,DstAddr,Step(A,a,b),Size(w,h),TransCnt};
在本发明所描述的系统中共定义4种传输指令,根据系统中数据流的传输 方向定义如下:
·探测器(外设)->调度单元私有内存:
完成从外设采集到的图像数据到系统内的传输:
Feature | TransType | Channel | SrcAddr | DstAddr | Step | Size |
LINKIMG | 1 | Ch0 | —— | —— | 1280,0,0 | 7280,960 |
·调度单元私有内存->共享内存
完成调度单元私有内存到调度单元与执行单元共享内存之间的并行 传输;其中n=2,3;m=0,1。
Feature | TransType | Channel | SrcAddr | DstAddr | Step | Size |
CUTIMG | 0 | Chn | —— | —— | 1280,640<sup>*</sup>m,480<sup>*</sup>m | 640,480 |
·共享内存->执行单元私有内存
完成共享内存到执行单元私有内存的并行传输;其中n=2,3,4,5, 6,7;p、q值的确定采取滑动分窗的方式进行计算决定。
Feature | TransType | Channel | SrcAddr | DstAddr | Step | Size |
PREIMG | 0 | Chn | —— | —— | 1280,p,q | 300,300 |
·执行单元私有内存->FPGA:
完成执行单元内部图像预处理结果到FPGA的图像数据传输。
Feature | TransType | Channel | SrcAddr | DstAddr | Step | Size |
DEEPIMG | 1 | Ch1 | —— | —— | 300,0,0 | 300,300 |
传输指令可根据系统硬件或需求的改变进行设定,传输队列缓存大小根据 系统需求可定义。传输队列定义为非环形,保证最早入队的传输类型执行的完 整性,系统在运行过程中根据系统当前状态实时将当前系统需要的传输指令在 调度单元入队出队,调度单元通过当前所需要执行的传输指令来决策是否需要 通过核间通讯驱动执行单元或FPGA参与传输过程。
(2.1)、系统在运行过程中根据系统当前状态实时将当前系统需要的传输指 令在调度单元入队,并在定时器中断内实时出队传输指令队列;当传输队列不 为空时,判断当前传输指令TRANS_CMD的传输特征值TransType:当 TransType值为“真”时,当前传输类型为串行传输,执行(2.2);当TransType值 为“假”时,当前传输类型为并行传输,执行(2.3)。
·基于传输指令的串行传输策略
(2.2)、查询系统为该串行传输类型Featuri分配的传输通道 Channeli(本发明中定义i∈[0,1],可自定义)是否空闲,如果不空闲,持续查 询该通道是否空闲,重复执行(2.2);如果空闲,则启动基于传输指令的串行 传输,具体方法为:查询Stepi中ai和bi是否同时为0并且Ai=wi,如果是,则 为连续地址的搬运,如附图2所示,执行(2.2.1),否则为非连续地址搬运, 如附图3所示,执行(2.2.2)。
(2.2.1)、占用Channeli通道启动一维DMA传输,从SrcAddri开始传输长 度为wi×hi大小的数据到DstAddi,TransCnti自增hi,系统自动执行(2.2.3);
(2.2.2)、占用Channeli通道启动一维DMA传输,从SrcAddri+Ai*bi+ai开始传输长度为wi大小的数据到DstAddri,TransCnti自增1,SrcAddri自增 Ai*1,DstAi自增wi,系统自动执行(2.2.3);
(2.2.3)、DMA传输完成后,自动进入Channeli的完成中断INTR_FUCi函数 内,此时判断TransCnti是否等于hj,如果是,则该传输类型结束,返回(2.1); 否则继续该传输类型,重复执行(2.2.2)直到该传输类型结束;
基于传输指令的并行传输策略
(2.3)、查询系统为该并行传输类型Featurej分配的传输通道Channelj(本 发明中系统分配给并行传输的通道初始值定为j=2,j∈[0,7]且为不等于已分 配的串行通道i的任意值,可自定义)是否空闲,如果不空闲,执行(2.3);如 果空闲,则启动基于传输指令的并行传输,具体方法为:
(2.3.1)、建立并行通道轮询队列Qk,用于保存系统为该并行传输类型 Featurej分配的所有传输通道的值;首先将j存入队列Qk中,如下表所示;
查询Stepj中aj和bj是否同时为0并且Aj=wj,如果是,则为连续地址的搬 运,如附图4所示,执行(2.3.2),否则为非连续地址搬运,如附图5所示, 执行(2.3.4)。
(2.3.2)、根据指令TRANS_CMD的参数Featurej已知传输指令队列中存 在的同类型指令个数N,将传输指令队列出队N-1次,得到系统为该并行传输 类型Featurej分配的其他传输通道Channelk,将通道值依次存入队列Qk中,如 下表所示,执行(2.3.3)。
(2.3.3)、判断队列Qk是否为空,如果是,则本次图像类型Featurej并 行传输结束,返回(2.1);如果不是,遍历Qk中元素k,占用Channelk通道依 次启动一维DMA传输,从SrcAddrk开始传输长度为wk×hk大小的数据到 DstAddrk,TransCntk自增hk,系统自动执行(2.3.8);
(2.3.4)、占用Channelj通道启动一维DMA传输,从SrcAddrj+Aj*bj+ aj开始传输长度为wj大小的数据到DstAddrj,TransCntj自增1,SrcAddrj自增 Aj*1,DstAddrj自增wj,系统自动执行(2.3.5);
(2.3.5)、DMA传输完成后,自动进入Channelj挂载的完成中断INTR_FUCj函数内,根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在的同类 型指令个数N,在完成中断INTR_FUCj函数内将传输指令队列出队N-1次,得 到系统为该并行传输类型Featurej分配的其他传输通道Channelk,将通道值依 次存入队列Qk中,如下表所示;
令k=j,执行(2.3.6)。
(2.3.6)、开始轮询并行传输通道Channelk,轮询方式为:判断队列Qk是 否为空,如果是,则本次图像类型Featurej并行传输结束,执行(2.1);如果 不是,将当前所在的中断函数INTR_FUCk对应的通道号k放在Qk对尾,如下表 所示;遍历Qk中元素k,按队列Qk中元素顺序依次执行(2.3.7);
INTR_FUC<sub>2</sub> | INTR_FUC<sub>3</sub> | INTR_FUC<sub>2+N-1</sub> | |
Q<sub>k</sub> | Q<sub>k</sub> | … | Q<sub>k</sub> |
k=3 | k=4 | … | k=2 |
4 | 5 | … | 3 |
… | … | … | … |
2+N-1 | 2 | … | … |
2 | 3 | … | 2+N-1 |
(2.3.7)、判断传输通道Channelk是否空闲,如果不空闲,不执行任何操 作;如果空闲,则依次占用Channelk通道启动DMA传输,从SrcAddrk+Ak* bk+ak开始传输长度为wk大小的数据到DstAddrk,TransCntk自增1, SrcAddrk自增Ak*1,DstAddrk自增wk,系统自动执行(2.3.8);
(2.3.8)、DMA传输完成后,自动进入Channelk挂载的完成中断 INT_FUCk函数内,判断TransCntk是否等于hk,如果是,则该通道传输结束, 将该k值从队列Qk中出队;
如果当前并行传输方式为连续地址的搬运,重复执行(2.3.3)直到本 次图像类型Featurej并行传输结束;
如果当前并行传输方式为非连续地址搬运,重复执行(2.3.6)直到本 次图像类型Featurej并行传输结束。
下面结合系统应用情况对方法进行进一步说明:
在基于ZYNQ硬件环境的支持下,神经运算单元的动态图像识别方法由运 行在ZYNQ系统内的信息处理软件实现:
(2.4)、调度单元数据处理方法
软件调度单元主要负责系统对输入的动态响应并返回系统内部运行情况的 关键信息以及对源图像进行预处理的工作,如附图8所示。
(2.4.1)调度单元对指令的动态响应
输入信息主要来自系统外部图像数据流和指令信息。对于图像数据,FPGA 通过MATER模式直接操作DDR将接收到的图像数据写入到DDR相应地址中。 DDR开辟两片地址用于图像数据的LINK_ADDR:乒(0x1000000)乓 (0x11050000)存储以提供调度单元进行实时访问,图像中断20ms依次,系 统每20msLINKIMG传输指令入传输队列:
退出图像中断后,系统定时器中断内实时出队传输指令队列;当解析到当 前传输指令的LINKIMG类型时,开始执行串行传输搬运图像到执行单元私有 内存。系统给实时图像分配的通道为通道0,查看指令携带的信息判定当前传 输为连续地址传输,故只需要占用DMA通道0启动一次传输即可;具体方案 为:
查询系统为该串行传输类型分配的传输通道Channeli(i=0)是否空 闲,如果不空闲,持续判断;如果空闲,则启动基于传输指令的串行 传输,具体方法为:启动一维DMA传输控制器,并设定为启动传输后 不等待返回的模式,查询Stepi中ai和bi是否同时为0并且Ai=wi,如 果是,则为连续地址的搬运
如附图2所示,占用Channeli通道启动DMA传输,从SrcAddri开始传 输长度为wi×hi大小的数据到DstAddri,TransCnti自增hi,DMA传 输完成后,自动进入Channeli挂载的完成中断INTR_FUCi函数内,此时 判断TransCnti等于hi,实时图传输至私有内存结束。
在搬运图像的同时,调度单元响应上位机发出的指令信息包括启动指令(非 周期性关键指令,可重复执行)、结束指令(非周期性关键指令,可重复执行) 和重置指令(非周期性关键指令,可重复执行),指令信息通过在422串口中 断内解析将欲执行的操作命令字入命令字队列,并在调度单元定时器中断内进 行出队,解析出相应指令后通过核间中断按协议组帧发送给执行单元,驱动执 行单元根据不同指令执行不同的操作。
当收到上位机发出的启动指令时,调度单元须立刻将当前接收到的最近的 一张的实时图进行拆分后搬运至调度单元与执行单元的共享内存给执行单元备 用,传输完成后通过核间软中断的方式通知执行单元去指定共享内存上取图进 行预处理计算。首先调度单元将N=2个CUTIMG传输指令入队:
系统定时器中断内实时出队传输指令队列;此时系统要保证最近一次 LINKIMG传输指令执行完,保证图源的完整性以及输入给调度单元以及执行单 元的数据的正确性。当解析到当前传输指令的CUTIMG类型时,查询得到系统分 配给该类型的通道为通道2,传输类型为多通道并行传输。故建立轮询通道队 列Qk,将2入队,同时占用通道2启动DMA一维传输:从0x10A7aB40+1280* 0+0开始传输长度为640大小的数据到0x11100000,TransCnt2自增1, SrcAddr2自增1280,DstAddr2自增640;
DMA通道2传输完成后,自动进入通道2挂载的完成中断INTR_FUC2函数 内,在INTR_FUC2函数内执行操作如下:
判断TransCnt2为1,通道2传输未结束,Qk不删除2;将传输指令队列出 队N-1次,得到系统为该同类型指令分配的其他传输通道Channel3,将3入轮 询队列Qk,此时队列中已经存满所需要轮询的传输通道,开始轮询,在通道2 的完成中断函数INTR_FUC2内轮询顺序为k=3→2:
a)判断通道3是否空闲,如果不是,占用通道3启动DMA一维传输: 从0x10A7aB40+1280*1+640开始传输长度为640大小的数据到 0x11150000,TransCnt3自增1,SrcAddr3自增1280,DstAddr3自增 640;
b)判断通道2是否空闲,如果不是,占用通道2启动DMA一维传输: 从0x10A7aB40+1280*0+0开始传输长度为640大小的数据到 0x11100000,TransCnt2自增1,SrcAddr2自增1280,DstAddr2自增 640;
此时TransCnt3=1,TransCnt2=2,Qk不为空;
DMA通道3传输完成后自动进入INTR_FUC3函数,在INTR_FUC3函数内开 始轮询,轮询顺序为k=2→3,即按顺序执行如上b)和a)过程,重复a)->b)和 b)->a)的过程直到TransCnt2=480时,将2从Qk出队,Qk中轮询值只剩3;然 后重复执行a)过程直到TransCnt3也为480,本次CUTIMG图像类型并行传输结 束。此时执行单元将同时访问到共享内存上的两片640*480大小图像数据。
(2.4.2)向上位机和记录仪返回系统内部运行情况的关键信息。
调度单元能够汇总lP核和执行单元作为系统内部运行情况的监测信息,监 测数据按下述格式组帧:
系统运行后,调度单元将自身内部运行情况以500ms周期性输出,定时器 中断驱动;当驱动执行单元运行后,执行单元对本核运行情况进行监控,并通 过核间中断周期性返回给调度单元,调度单元在接收到执行单元的监测信息后, 进一步整合自身运行情况作为系统监测数据通过422周期性输出,核间中断驱 动;该监测信息是外部指令输入的参考条件,是反应当前信息处理软件系统工 作状态的重要指标。
(2.5)执行单元数据处理方法
必要时为适应IP核对输入图像数据的约束,调度单元同样承担对源图像进 行预处理的工作。该模块依赖于IP核对与图像属性的定制性,比如灰度范围等, 可将图像进行旋转、缩放、插值等操作后给执行单元备用。
对于某些更灵活的IP核来说,可不进行该预处理步骤。
执行单元主要负责系统通过核间中断响应调度单元指令驱动IP核进行深 度学习计算并将深度学习计算结果进行尾处理,同时返回系统内部运行情况的 关键信息,如附图9所示。
(2.5.1)响应来自调度单元的指令
执行单元采用双队列机制,将核间中断接收的数据入队并将解析,将解析 出的命令字进行入队,并在执行单元定时器中断内进行出队,根据不同的指令 类型,具体执行内容如下:
·启动指令
调度单元通过核间通讯将传输指令转发给执行单元:
p、q值的确定采取滑动分窗的方式进行计算决定,横向上滑动步长取:300- (900-640)÷2=170,纵向上滑动步长取:300-(600-480)=180,共享内存 上的图像共可分为3×2=6个300×300的图像块:滑动小图1(p=0,q=0), 滑动小图2(p=0,q=170),滑动小图3(p=0,q=340),滑动小图4(p= 180,q=0),滑动小图5(p=180,q=170),滑动小图6(p=180,q=340), 如附图6所示。
具体方法为:
a)查询系统为PREIMG分配的传输通道Channelj(j∈[2,7]),建 立并行通道轮询队列Qk,将2入队并启动通道2的一维DMA传 输,设定为启动传输后不等待返回的模式,从0x11100000+ 1280*0+0开始传输长度为300大小的数据到0x11800000, TransCnt2自增1,SrcAddr2自增1280*1,DstAddr2自增300;
b)DMA2传输完成后,自动进入Channel2挂载的完成中断 INTR_FUC2函数内,根据PRElMG指令已知传输指令队列中存在 的同类型指令个数N=6个,在完成中断INTR_FUC2函数内将传 输指令队列出队5次,得到系统为该同类型指令分配的其他传输 通道Channelk,k=3,4,5,6,7,同时将传输通道k值依次存 入队列Qk中,此时Qk从队列头到队列尾依次为2,3,4,5,6, 7。
c)开始轮询并行传输通道Channel2,轮询方式为:将当前所在的中 断函数INTR_FUC2对应的通道号2放在Qk对尾,此时Qk从队列头 到队列尾依次为3,4,5,6,7,2,依次执行如下d)操作;
d)判断队列Qk是否为空,如果是则本次图像类型并行传输结束;如 果不是,判断传输通道Channel3是否空闲,如果不空闲,不执行 任何操作;如果空闲,则依次启动一维DMA传输控制器,并设 定为启动传输后不等待返回的模式,占用Channel3通道启动DMA 传输,从SrcAddr3+A*b3+a3开始传输长度为w3大小的数据到 DstAddr3,TransCnt3自增1,SrcAddr3自增A*1,DstAddr3自增 w3;
e)DMA3传输完成后,自动进入Channel3挂载的完成中断INT_FUC3函数内,判断TransCnt3是否等于h3,如果是,则该传输类型结 束,将该k值从队列Qk中出队;开始轮询并行传输通道Channel3, 轮询方式为:将当前所在的中断函数INTR_FUC3对应的通道号3 放在Qk对尾,此时Qk从队列头到队列尾依次为4,5,6,7,2, 3依次执行c)操作;
直到传输类型结束。此时执行单元同时获取6张300*300大小的待 预处理的图像。
(2.5.2)根据指定的深度学习算法进行预处理计算
执行单元能够根据调度单元传递的指令进行预处理模块的选取,选取的依 据为上位机选定的深度学习IP核模块,下文以第一种预处理模块举例:将获取 6张300*300图像根据缩放系数k进行缩放计算,缩放系数k来源于指令携带 的数据区中预设基准高度和预设高度的比值。将缩放后大小为w*h图像按照 与IP核约定的协议将w*h的图通过DMA通道1搬到IP核指定内存,系统入 传输队列的传输指令格式如下,:
Feature | TransType | Channel | SrcAddr | DstAddr | Step | Size |
DEEPIMG | 1 | Ch1 | —— | —— | 300,0,0 | 300,300 |
系统定时器中断内实时出队传输指令队列;当解析到当前传输指令的DEEPIMG类型时,开始执行将处理好的300*300的图像搬运给FPGA的操作。 系统给处理完的图像分配的通道为通道1,查看指令携带的信息判定当前传输 为连续地址传输,故只需要占用DMA通道1启动一次传输即可;具体方案为:
查询系统为该串行传输类型分配的传输通道Channeli(i=1)是否空 闲,如果不空闲,继续查询;如果空闲,则启动基于传输指令的串行 传输,具体方法为:启动一维DMA传输控制器,并设定为启动传输后 不等待返回的模式,查询Stepi中ai和bi是否同时为0并且Ai=wi,如 果是,则为连续地址的搬运
如附图2所示,占用Channeli通道启动DMA传输,从SrcAddri开始传 输长度为wi×hi大小的数据到DstAddri,TransCnti自增hi,DMA传 输完成后,自动进入Channeli挂载的完成中断INTR_FUCi函数内,此时 判断TransCnti等于hi,至此执行单元似有内存到FPGA的图像传输结 束。
通过将启动寄存器START_REG先写1再写0的方式启动FPGA的IP核 进行深度学习计算,如附图10所示。从启动第一次DMA通道1搬图开始,在 500ms(超时退出时间)内持续等待并判断结果寄存器RESULT_REG,当寄 存器结果为1时,表示一张图计算完成,通过DMA通道1将指定内存上的结 果数据搬到执行单元的结果队列中,开始进行结果尾处理。根据背景和目标点 的聚类分析将汇总的大图结果进行结果尾处理计算,并根据目标面积和背景比 例求出最优目标点作为本帧图像的最终目标位置,结果数据格式如下:
·停止指令
响应启动指令后执行单元将自身系统状态机重置为停止等待状态 (WAIT_STAT),在完成本场深度学习计算后停止计算,等待下一次启动指令 驱动。
·重置指令
为适应多种深度学习策略,软件支持从SPIFLASH中重载执行单元所需要 的参数,为信息处理软件通用性打下基础。深度学习计算的驱动需要两种输入: 权重信息等必要的驱动参数,上电后默认从SPIFLASH加载至固定DDR上, 当通过寄存器启动深度学习计算后,IP核自动去指定DDR取加载好的参数; 重载的方式即响应停止指令后,中心机更换DDR上的权重信息,并通过将切 换寄存器写1的方式更换。
系统实例:以识别动态汽车为例,简述软件架构工作流程
芯片上电后,调度单元自动加载SPIFLASH中的数据至固定DDR位置, 然后启动DMA通道0搬运,同时启动DMA通道1将摄像头采集到的图像搬到 DDR上源图像队列中,开始预处理摄像头采集到的图像,对图像进行旋转、缩 放与灰度插值,直到平均灰度和图像复杂度满足深度学习计算后,开始通过核 间软中断向执行单元发送“启动深度学习计算”指令。
执行单元在收到该指令后,开始接收核间中断处理好的源图像数据,将源 图像数据通过DMA通道2搬运至执行单元私有内存后开始截图子图,并通过 DMA通道3将子图搬运至IP核指定的DDR上,启动IP核进行计算。
在启动IP核计算的同时,开始持续判断IP核的结果寄存器,500ms内没 有返回结果,则认为该图异常,停止判断,开始计算下一个子图。直到一张大 图分割的子图的深度学习全部计算完成后,在执行单元将结果进行尾处理,取 置信度超过阈值的结果认为是合法动态目标。动态目标的坐标将以周期性数据 的形式在中心机上显示。此过程中,调度单元和执行单元的关键信息将通过核 间中断和串口发送至中心机。一张图计算过程结束后,开始根据图像采集到的 最近一张源图开始进行下一次计算,依次类推。
实例2:以停止计算过程为例,简述软件架构工作流程
在实例1的基础上,如果想停止计算,中心机可发送停止指令,调度单元 收到指令后,会等待此刻正在计算的源图计算完成后,不会再对下一帧图像采 集的最新的图像进行计算,双核进入等待状态。
实例3:以更改识别目标为例,简述软件架构工作流程
在实例2的基础上,调度单元载接收到中心机发送的重置命令后,开始更 新SPIFLASH上IP核计算所需要的权重、模型等参数,待数据成功写入后, 再发送启动指令给调度单元,此时再启动深度学习算法所识别的动态目标就会 从更新。
所述多核ARM处理器包括调度单元和执行单元;当上位机向调度单元发 出起算指令后,调度单元通过核间通讯将所选择的预处理方法以及图像属性传 输给执行单元;执行单元根据选择的预处理方法以及图像属性对图像进行预处 理;执行单元将预处理后的图像发送至FPGA。
所述核间通讯的具体方法为
(3.1)、在调度单元和执行单元的私有内存上,建立共享消息队列,缓存 各自待发送的核间消息;在调度单元和执行单元的共享内存建立公有CACHE 空间;建立维护CACHE一致性的函数刷入;
(3.2)、当调度单元需要发送消息给执行单元时,将调度单元消息队列中 最早的消息放入公有CACHE空间,并由调度单元维护其CACHE一致性;调 度单元向执行单元发送核间通讯软中断;
(3.3)、当执行单元需要发送消息给调度单元时,将执行单元消息队列中 最早的消息放入公有CACHE空间,并由执行单元维护其CACHE一致性;执 行单元向调度单元发送核间通讯软中断。
本发明采用基于优先状态机驱动的流程设计;状态机驱动的流程设计首先 简化了中心机的输入,并为中心机定期获取双核状态和计算结果提供了解决方 案,在本发明中,执行单元的状态机优先于调度单元的状态机,即执行单元是 否响应调度单元的指令取决于执行单元当前的状态是否处于能够接受调度单元 指令的状态,这种流程设计符合执行单元优先原则,能够保证每一次计算结果 的准确性与完整性,相比于其他软件传统软件架构IP核的计算流程享有最高级 优先待遇。
本发明采用“功能模块低耦合”的软件架构设计,为兼容相关IP核提供了 设计思路,解决一系列软、硬件协同共作问题;在进行软件架构设计时将所有 功能模块零耦合处理,预处理与尾处理封成可灵活调用的模块,增加传入参数 的种类,是否处理等参数等,便于调用、增删功能与软件移植;将硬件模块IP 核作为控制软件直接调用的一个子模块,类似于直接调用函数,调用前直接写 寄存器启动,调用后读寄存器获取结果。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (2)
1.一种利用DMA控制器实现数据串并行二维传输的目标探测系统,其特征在于:包括探测器、上位机、FPGA、记录仪和多核ARM处理器;探测器上电工作后,将实时探测得到的图像传输给多核ARM处理器;多核ARM处理器根据上位机发出的指令选择对应的图像预处理算法对接收到的图像进行预处理后,发送给FPGA;FPGA上挂载的深度学习IP核对接收到的预处理后的图像数据进行深度学习目标识别计算,计算结果通过多核ARM处理器反馈至记录仪和上位机;
所述多核ARM处理器包括调度单元和执行单元;
所述调度单元负责执行命令响应、资源调度;接收神经网络运算结果,向记录仪返回监测信息;
所述执行单元负责驱动FPGA执行基于神经网络的深度学习计算以及计算结果尾处理、计算前图像的预处理;
FPGA负责对接收到的预处理结果图像进行深度学习计算,并返回给调度单元当前深度学习计算结果;
所述调度单元、执行单元与深度学习IP核之间进行图像数据传输时,采用DMA控制器实现数据串并行二维传输,具体为:
1)按传输方向分为以下四种:
a1)探测器->调度单元私有内存:完成从外设采集到的图像数据到系统内的传输:
b1)调度单元私有内存->调度单元与执行单元的共享内存:完成调度单元私有内存到调度单元与执行单元共享内存之间的并行传输;
c1)调度单元与执行单元的共享内存->执行单元私有内存:完成共享内存到执行单元私有内存的并行传输;
d1)执行单元私有内存->FPGA:完成执行单元内部图像预处理结果到FPGA的图像数据传输;
2)定义所需要进行传输的传输指令和传输队列,传输队列定义为非环形先入先出队列;定义传输指令为包含8个传输特征值的协议TRANS_CMD;
所述8个传输特征值如下:
a)Feature,即待传输的图像种类:定义当前系统需进行传输的图像名称;
b)TransType,即传输方式:
逻辑值为真为串行传输,表示该类型传输过程中不允许其它类型图像并行传输;串行传输的含义是系统从启动该类型的传输时刻起,不启动其它类型图像传输,适用于需要立刻返回传输结果的图像传输类型;
逻辑值假为并行传输,表示该传输类型中允许其它类型图像传输并行;并行传输的含义是系统从启动该类型的传输时刻起,同时启动多个同类型的图像传输,不急于得到某种特定图像类型的传输结果,而是希望在系统某一时刻得到参与并行传输的N个同种类图像数据的所有结果;
c)Channel,即传输通道:
定义为本次传输类型的分配的通道,系统可动态分配8个通道:CH0~Ch7;将通道CH0~Ch1用于串行传输,为不可并行通道;通道CH2~Ch7用于并行传输,为可并行通道;
系统初始化时将通道CH0~Ch7设定为传输完成产生中断的方式,即该通道传输完成后将产生中断进入中断服务函数,定义通道CH0~Ch7各自传输完成后进入的中断服务函数为INTR_FUC0~INTR_FUC7;
各通道工作状态可分为空闲和非空闲,通过查询指定寄存器方式获得;启动的一维DMA传输均设定为启动传输后不等待返回的模式;
d)SrcAddr,即传输源地址:定义传输图像的源地址;
e)DstAddr,即传输目的地址:定义传输图像的目的地址;
f)Step(A,a,b),即传输偏移量:定义基于传输源地址的横向偏移量A、首次传输横向偏移量a和首次传输纵向偏移量b;
g)Size(w,h),即传输结果:定义基于传输结果特征值:总列数w和总行数h;
h)TransCnt,即传输次数:定义该传输类型启动一维DMA搬运的次数,初始值为0,TransCnt∈[0,h];
3)系统在运行过程中根据系统当前状态实时将当前系统需要的传输指令在调度单元入队,并在定时器中断内实时出队传输指令队列;当传输队列不为空时,判断当前传输指令TRANS_CMD的传输特征值TransType:当TransType值为“真”时,当前传输类型为串行传输,执行基于传输指令的串行传输策略;当TransType值为“假”时,当前传输类型为并行传输,执行基于传输指令的并行传输策略;
所述基于传输指令的串行传输策略的具体过程为:
(2.2)、查询系统为串行传输类型Featurei分配的传输通道Channeli是否空闲,其中i∈[0,7],如果不空闲,返回步骤(2.2),继续查询;如果空闲,则执行基于传输指令的串行传输,具体方法为:查询Stepi中ai和bi是否同时为0并且Ai=wi,如果是,则为连续地址的搬运,执行步骤(2.2.1),否则为非连续地址搬运,执行步骤(2.2.2);
(2.2.1)占用Channeli通道启动一维DMA传输,从SrcAddri开始传输长度为wi×hi大小的数据到DstAddi,TransCnti自增hi,系统自动执行步骤(2.2.3);
(2.2.2)占用Channeli通道启动一维DMA传输,从SrcAddri+Ai*bi+ai开始传输长度为wi大小的数据到DstAddri,TransCnti自增1,SrcAddri自增Ai*1,DstAddri自增wi,系统自动执行步骤(2.2.3);
(2.2.3)DMA传输完成后,系统自动进入Channeli的完成中断INTR_FUCi函数内,此时判断TransCnti是否等于hi,如果是,则该传输类型结束,返回步骤(2.1);否则继续该传输类型,重复执行步骤(2.2.2)直到该传输类型结束;
所述基于传输指令的并行传输策略的具体过程为:
(2.3)查询系统为并行传输类型Featurej分配的传输通道Channelj是否空闲,其中j≠i且j∈[0,7],如果不空闲,返回步骤(2.3),继续查询;如果空闲,则执行基于传输指令的并行传输,具体方法为:
(2.3.1)建立并行通道轮询队列Qk,用于保存系统为该并行传输类型Featurej分配的所有传输通道的值;首先将j存入队列Qk中;查询Stepj中aj和bj是否同时为0并且Aj=wj,如果是,则为连续地址的搬运,执行步骤(2.3.2),否则为非连续地址搬运,执行步骤(2.3.4);
(2.3.2)根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在的同类型指令个数N,将传输指令队列出队N-1次,得到系统为该并行传输类型Featurej分配的其他传输通道Channelk,将通道值依次存入队列Qk中,执行步骤(2.3.3);
(2.3.3)判断队列Qk是否为空,如果是,则本次图像类型Featurej并行传输结束;如果不是,遍历Qk中元素k,判断传输通道Channelk是否空闲,如果不空闲,不执行任何操作;如果空闲,占用Channelk通道依次启动一维DMA传输,从SrcAddrk开始传输长度为wk×hk大小的数据到DstAddrk,TransCntk自增hk,系统自动执行步骤(2.3.8);
(2.3.4)占用Channelj通道启动一维DMA传输,从SrcAddrj+Aj*bj+aj开始传输长度为wj大小的数据到DstAddrj,TransCntj自增1,SrcAddrj自增Aj*1,DstAddrj自增wj,系统自动执行步骤(2.3.5);
(2.3.5)DMA传输完成后,自动进入Channelj的完成中断INTR_FUCj函数内,根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在的同类型指令个数N,在完成中断INTR_FUCj函数内将传输指令队列出队N-1次,得到系统为该并行传输类型Featurej分配的其他传输通道Channelk,将通道值依次存入队列Qk中;令k=j,执行(2.3.6);
(2.3.6)开始轮询并行传输通道Channelk,轮询方式为:判断队列Qk是否为空,如果是,则本次图像类型Featurej并行传输结束;如果不是,将当前所在的中断函数INTR_FUCk对应的通道号k放在Qk队尾;遍历Qk中元素k,按队列Qk中元素顺序依次执行步骤(2.3.7);
(2.3.7)判断传输通道Channelk是否空闲,如果不空闲,不执行任何操作;如果空闲,则依次占用Channelk通道启动DMA传输,从SrcAddrk+Ak*bk+ak开始传输长度为wk大小的数据到DstAddrk,TransCntk自增1,SrcAddrk自增Ak*1,DstAddrk自增wk,系统自动执行步骤(2.3.8);
(2.3.8)DMA传输完成后,自动进入Channelk的完成中断INT_FUCk函数内,判断TransCntk是否等于hk,如果是,则该通道传输结束,将该k值从队列Qk中出队;
如果当前并行传输方式为连续地址的搬运,重复执行步骤(2.3.3)直到本次图像类型Featurej并行传输结束;
如果当前并行传输方式为非连续地址搬运,重复执行步骤(2.3.6)直到本次图像类型Featurej并行传输结束。
2.一种利用DMA控制器实现数据串并行二维传输的方法,其特征在于步骤如下:
1)将待传输的图像数据按传输方向分为以下四种:
a1)探测器->调度单元私有内存:完成从外设采集到的图像数据到系统内的传输:
b1)调度单元私有内存->调度单元与执行单元的共享内存:完成调度单元私有内存到调度单元与执行单元共享内存之间的并行传输;
c1)调度单元与执行单元的共享内存->执行单元私有内存:完成共享内存到执行单元私有内存的并行传输;
d1)执行单元私有内存->FPGA:完成执行单元内部图像预处理结果到FPGA的图像数据传输;
2)定义所需要进行传输的传输指令和传输指令队列,传输指令队列定义为非环形先入先出队列;定义传输指令为包含8个传输特征值的协议TRANS_CMD;
所述8个传输特征值如下:
i)Feature,即待传输的图像种类:定义当前系统需进行传输的图像名称;
j)TransType,即传输方式:
逻辑值为真为串行传输,表示该类型传输过程中不允许其它类型图像并行传输;串行传输的含义是系统从启动该类型的传输时刻起,不启动其它类型图像传输,适用于需要立刻返回传输结果的图像传输类型;
逻辑值假为并行传输,表示该传输类型中允许其它类型图像传输并行;并行传输的含义是系统从启动该类型的传输时刻起,同时启动多个同类型的图像传输,不急于得到某种特定图像类型的传输结果,而是希望在系统某一时刻得到参与并行传输的N个同种类图像数据的所有结果;
k)Channel,即传输通道:
定义为本次传输类型的分配的通道,系统可动态分配8个通道:CH0~Ch7;将通道CH0~Ch1用于串行传输,为不可并行通道;通道CH2~Ch7用于并行传输,为可并行通道;
系统初始化时将通道CH0~Ch7设定为传输完成产生中断的方式,即该通道传输完成后将产生中断进入中断服务函数,定义通道CH0~Ch7各自传输完成后进入的中断服务函数为INTR_FUC0~INTR_FUC7;
各通道工作状态可分为空闲和非空闲,通过查询指定寄存器方式获得;启动的一维DMA传输均设定为启动传输后不等待返回的模式;
l)SrcAddr,即传输源地址:定义传输图像的源地址;
m)DstAddr,即传输目的地址:定义传输图像的目的地址;
n)Step(A,a,b),即传输偏移量:定义基于传输源地址的横向偏移量A、首次传输横向偏移量a和首次传输纵向偏移量b;
o)Size(w,h),即传输结果:定义基于传输结果特征值:总列数w和总行数h;
p)TransCnt,即传输次数:定义该传输类型启动一维DMA搬运的次数,初始值为0,TransCnt∈[0,h];
3)系统在运行过程中根据系统当前状态实时将当前系统需要的传输指令在调度单元入队,并在定时器中断内实时出队传输指令队列;当传输队列不为空时,判断当前传输指令TRANS_CMD的传输特征值TransType:当TransType值为“真”时,当前传输类型为串行传输,执行基于传输指令的串行传输策略;当TransType值为“假”时,当前传输类型为并行传输,执行基于传输指令的并行传输策略;
所述基于传输指令的串行传输策略的具体过程为:
(2.2)、查询系统为串行传输类型Featurei分配的传输通道Channeli是否空闲,其中i∈[0,7],如果不空闲,返回步骤(2.2),继续查询;如果空闲,则执行基于传输指令的串行传输,具体方法为:查询Stepi中ai和bi是否同时为0并且Ai=wi,如果是,则为连续地址的搬运,执行步骤(2.2.1),否则为非连续地址搬运,执行步骤(2.2.2);
(2.2.1)占用Channeli通道启动一维DMA传输,从SrcAddri开始传输长度为wi×hi大小的数据到DstAddi,TransCnti自增hi,系统自动执行步骤(2.2.3);
(2.2.2)占用Channeli通道启动一维DMA传输,从SrcAddri+Ai*bi+ai开始传输长度为wi大小的数据到DstAddri,TransCnti自增1,SrcAddri自增Ai*1,DstAddri自增wi,系统自动执行步骤(2.2.3);
(2.2.3)DMA传输完成后,系统自动进入Channeli的完成中断INTR_FUCi函数内,此时判断TransCnti是否等于hi,如果是,则该传输类型结束,返回步骤(2.1);否则继续该传输类型,重复执行步骤(2.2.2)直到该传输类型结束;
所述基于传输指令的并行传输策略的具体过程为:
(2.3)查询系统为并行传输类型Featurej分配的传输通道Channelj是否空闲,其中j≠i且j∈[0,7],如果不空闲,返回步骤(2.3),继续查询;如果空闲,则执行基于传输指令的并行传输,具体方法为:
(2.3.1)建立并行通道轮询队列Qk,用于保存系统为该并行传输类型Featurej分配的所有传输通道的值;首先将j存入队列Qk中;查询Stepj中aj和bj是否同时为0并且Aj=wj,如果是,则为连续地址的搬运,执行步骤(2.3.2),否则为非连续地址搬运,执行步骤(2.3.4);
(2.3.2)根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在的同类型指令个数N,将传输指令队列出队N-1次,得到系统为该并行传输类型Featurej分配的其他传输通道Channelk,将通道值依次存入队列Qk中,执行步骤(2.3.3);
(2.3.3)判断队列Qk是否为空,如果是,则本次图像类型Featurej并行传输结束;如果不是,遍历Qk中元素k,判断传输通道Channelk是否空闲,如果不空闲,不执行任何操作;如果空闲,占用Channelk通道依次启动一维DMA传输,从SrcAddrk开始传输长度为wk×hk大小的数据到DstAddrk,TransCntk自增hk,系统自动执行步骤(2.3.8);
(2.3.4)占用Channelj通道启动一维DMA传输,从SrcAddrj+Aj*bj+aj开始传输长度为wj大小的数据到DstAddrj,TransCntj自增1,SrcAddrj自增Aj*1,DstAddrj自增wj,系统自动执行步骤(2.3.5);
(2.3.5)DMA传输完成后,自动进入Channelj的完成中断INTR_FUCj函数内,根据指令TRANS_CMD的参数Featurej已知传输指令队列中存在的同类型指令个数N,在完成中断INTR_FUCj函数内将传输指令队列出队N-1次,得到系统为该并行传输类型Featurej分配的其他传输通道Channelk,将通道值依次存入队列Qk中;令k=j,执行(2.3.6);
(2.3.6)开始轮询并行传输通道Channelk,轮询方式为:判断队列Qk是否为空,如果是,则本次图像类型Featurej并行传输结束;如果不是,将当前所在的中断函数INTR_FUCk对应的通道号k放在Qk队尾;遍历Qk中元素k,按队列Qk中元素顺序依次执行步骤(2.3.7);
(2.3.7)判断传输通道Channelk是否空闲,如果不空闲,不执行任何操作;如果空闲,则依次占用Channelk通道启动DMA传输,从SrcAddrk+Ak*bk+ak开始传输长度为wk大小的数据到DstAddrk,TransCntk自增1,SrcAddrk自增Ak*1,DstAddrk自增wk,系统自动执行步骤(2.3.8);
(2.3.8)DMA传输完成后,自动进入Channelk的完成中断INT_FUCk函数内,判断TransCntk是否等于hk,如果是,则该通道传输结束,将该k值从队列Qk中出队;
如果当前并行传输方式为连续地址的搬运,重复执行步骤(2.3.3)直到本次图像类型Featurej并行传输结束;
如果当前并行传输方式为非连续地址搬运,重复执行步骤(2.3.6)直到本次图像类型Featurej并行传输结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910663189.5A CN110569713B (zh) | 2019-07-22 | 2019-07-22 | 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910663189.5A CN110569713B (zh) | 2019-07-22 | 2019-07-22 | 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569713A CN110569713A (zh) | 2019-12-13 |
CN110569713B true CN110569713B (zh) | 2022-04-08 |
Family
ID=68773196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910663189.5A Active CN110569713B (zh) | 2019-07-22 | 2019-07-22 | 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569713B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546914B (zh) * | 2022-02-23 | 2024-04-26 | 北京奕斯伟计算技术股份有限公司 | 用于对多个通道信息执行数据处理的处理装置及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631798A (zh) * | 2016-03-04 | 2016-06-01 | 北京理工大学 | 低功耗便携式实时图像目标检测与跟踪系统及方法 |
CN206154352U (zh) * | 2016-09-18 | 2017-05-10 | 常州机电职业技术学院 | 具有运动目标检测与跟踪功能的机器人视觉系统及机器人 |
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
CN107657316A (zh) * | 2016-08-12 | 2018-02-02 | 北京深鉴科技有限公司 | 通用处理器与神经网络处理器的协同系统设计 |
CN108090496A (zh) * | 2017-12-22 | 2018-05-29 | 银河水滴科技(北京)有限公司 | 基于卷积神经网络的图像处理的方法和装置 |
US9990687B1 (en) * | 2017-01-19 | 2018-06-05 | Deep Learning Analytics, LLC | Systems and methods for fast and repeatable embedding of high-dimensional data objects using deep learning with power efficient GPU and FPGA-based processing platforms |
CN108806243A (zh) * | 2018-04-24 | 2018-11-13 | 东南大学 | 一种基于Zynq-7000的交通流量信息采集终端 |
CN108829530A (zh) * | 2018-06-15 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种图像处理方法及装置 |
CN109376843A (zh) * | 2018-10-12 | 2019-02-22 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109389120A (zh) * | 2018-10-29 | 2019-02-26 | 济南浪潮高新科技投资发展有限公司 | 一种基于zynqMP的目标检测装置 |
CN109598294A (zh) * | 2018-11-23 | 2019-04-09 | 哈尔滨工程大学 | 基于软硬件平台的云端视网膜oct识别智能诊断系统及其使用方法 |
-
2019
- 2019-07-22 CN CN201910663189.5A patent/CN110569713B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631798A (zh) * | 2016-03-04 | 2016-06-01 | 北京理工大学 | 低功耗便携式实时图像目标检测与跟踪系统及方法 |
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
CN107657316A (zh) * | 2016-08-12 | 2018-02-02 | 北京深鉴科技有限公司 | 通用处理器与神经网络处理器的协同系统设计 |
CN206154352U (zh) * | 2016-09-18 | 2017-05-10 | 常州机电职业技术学院 | 具有运动目标检测与跟踪功能的机器人视觉系统及机器人 |
US9990687B1 (en) * | 2017-01-19 | 2018-06-05 | Deep Learning Analytics, LLC | Systems and methods for fast and repeatable embedding of high-dimensional data objects using deep learning with power efficient GPU and FPGA-based processing platforms |
CN108090496A (zh) * | 2017-12-22 | 2018-05-29 | 银河水滴科技(北京)有限公司 | 基于卷积神经网络的图像处理的方法和装置 |
CN108806243A (zh) * | 2018-04-24 | 2018-11-13 | 东南大学 | 一种基于Zynq-7000的交通流量信息采集终端 |
CN108829530A (zh) * | 2018-06-15 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种图像处理方法及装置 |
CN109376843A (zh) * | 2018-10-12 | 2019-02-22 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109389120A (zh) * | 2018-10-29 | 2019-02-26 | 济南浪潮高新科技投资发展有限公司 | 一种基于zynqMP的目标检测装置 |
CN109598294A (zh) * | 2018-11-23 | 2019-04-09 | 哈尔滨工程大学 | 基于软硬件平台的云端视网膜oct识别智能诊断系统及其使用方法 |
Non-Patent Citations (2)
Title |
---|
Real-time hardware–software embedded vision system for ITS smart camera implemented in Zynq SoC;Tomasz Kryjak 等;《Journal of Real-Time Image Processing》;20180630;第123-159页 * |
基于深度学习的SAR 目标识别及FPGA 实现;刘寒颖 等;《计翼机工程与应用》;20171231;第53卷(第S2期);第371-375页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110569713A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8310492B2 (en) | Hardware-based scheduling of GPU work | |
JP3224782B2 (ja) | 処理分担動的変更方法及びコンピュータ | |
CN101859257B (zh) | 用于无死锁管线操作的系统及方法 | |
US8743131B2 (en) | Course grain command buffer | |
CN100535850C (zh) | 用于在编程引擎之间传送数据的方法和装置 | |
US20200285942A1 (en) | Method, apparatus, accelerator, system and movable device for processing neural network | |
EP2513860B1 (en) | A graphics pipeline scheduling architecture utilizing performance counters | |
CN103064807A (zh) | 多通道直接存储器存取控制器 | |
US11200165B2 (en) | Semiconductor device | |
CN104094235A (zh) | 多线程计算 | |
CN110569713B (zh) | 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法 | |
US20220101086A1 (en) | Reconfigurable hardware buffer in a neural networks accelerator framework | |
CN112949847B (zh) | 神经网络算法加速系统、调度系统及调度方法 | |
CN114399035A (zh) | 搬运数据的方法、直接存储器访问装置以及计算机系统 | |
CN116830554A (zh) | 一种任务调度方法、装置及系统 | |
US20210191754A1 (en) | User-defined metered priority queues | |
US20220382592A1 (en) | Hardware circuit for deep learning task scheduling | |
WO2021179222A1 (zh) | 一种调度装置、调度方法、加速系统及无人机 | |
US20220413752A1 (en) | Memory management for overlap data between tiles of neural networks | |
US9015719B2 (en) | Scheduling of tasks to be performed by a non-coherent device | |
CN112416826B (zh) | 专用计算芯片、dma数据传输系统及方法 | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN109669780B (zh) | 一种视频解析方法及系统 | |
US11941722B2 (en) | Kernel optimization and delayed execution | |
CN114330691A (zh) | 用于直接存储器访问装置的数据搬运方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |