3*3卷积算法的加速电路的制作方法

文档序号:17454645发布日期:2019-04-20 03:08阅读:335来源:国知局
3*3卷积算法的加速电路的制作方法

本实用新型涉及机器视觉检测技术领域,尤其涉及3*3卷积算法的加速电路。



背景技术:

当前,扫地机在采用视频图像进行地图建图和定位时,需要通过一套图像处理算法对摄像头采集到的图像数据进行预处理,例如图像滤波,图像噪声的消除,图像的特征增强,图像的平滑处理,等等。

现有机器视觉技术领域中,窗处理是图像处理中常见的一种处理,它的思想是对于图像矩阵,通过一个固定大小(例如3*3)的小矩阵对图像进行运算操作。常用的窗处理包括形态学操作,模糊滤波,高斯滤波等。其中,卷积算法被大量使用到。但是,卷积算法需要软件对图像数据进行读入,缓存,计算,然后写出,需要消耗大量的软件指令,占用大量的软件资源,导致效率低下。



技术实现要素:

为了节约软件资源,提高指令效率,本实用新型采用专用集成电路的方式实现基于3*3大小的滑动窗口的快速卷积算法,在设计上能实现硬件并行和流水线技术,可以实现算法的加速,其技术方案如下:

一种3*3卷积算法的加速电路,该加速电路包括,用于存储输入图像和图像卷积运算结果的DDR模块和用于缓冲卷积运算结果的卷积结果FIFO模块,其中,DDR模块包括配置输入图像的基地址和存储空间的像素存储阵列,以及配置图像卷积运算结果的目标地址的卷积结果存储阵列;该加速电路包括主控制模块、移位选择控制模块、行缓冲模块和卷积计算模块;主控制模块,用于通过AHB总线从所述像素存储阵列中突发读取输入图像当前相邻两行的像素数据,并控制移位选择控制模块内像素数据的并行移位使得每次写入卷积计算模块的像素数据与匹配的卷积核数据对齐以加速运算过程,再通过AHB总线将当前相邻两行的像素数据在卷积计算模块中运算结果写入所述卷积结果存储阵列;主控制模块,还用于通过AHB总线读取输入图像中基于当前相邻两行的下一行的像素数据,并进行相应的移位和卷积运算处理,直到输入图像所有像素数据处理完成后发出中断告知CPU卷积运算处理的结果以减小软件指令开销;其中,卷积核数据是 CPU在卷积计算模块内预先配置的卷积窗口中存储的数据;所述每次写入卷积计算模块的像素数据与匹配的卷积核数据对齐是,为实现卷积运算,控制卷积核数据所在的卷积窗口在所写入的卷积计算模块内像素数据所对应的图像矩阵上滑动过程中,形成一个包含卷积核数据所在的卷积窗口中心的重叠区域;行缓冲模块,包括移位寄存器构成的行缓冲器,用于按照图像横向像素数据长度缓冲输入图像相应行的像素数据,并根据主控制模块生成的列地址信号和状态信号将缓冲输入图像中的像素数据输出至移位选择控制模块;移位选择控制模块,用于根据主控制模块输出的所述状态信号选择行缓冲模块中输入图像相应行的像素数据,再将每一列像素数据并行移位,并对像素数据进行填充处理,使得输入图像中所有像素数据写入卷积计算模块中完成卷积运算;卷积计算模块,用于将移位选择控制模块输出的像素数据与对应的卷积核数据进行乘法运算,基于加法器组将所述乘法运算的结果相加以实现卷积运算。

进一步地,所述行缓冲模块的行缓冲器包括第一行缓冲器、第二行缓冲器和第三行缓冲器,用于通过列地址选择端和状态选择端分别与所述主控制模块并联连接,其中:第一行缓冲器用于在所述主控制模块的控制下缓冲AHB总线突发读取的输入图像的第一预置行的像素数据;第二行缓冲器用于在所述主控制模块的控制下缓冲AHB总线突发读取的输入图像的第二预置行的像素数据;第三行缓冲器用于在所述主控制模块的控制下缓冲AHB总线突发读取的输入图像的第三预置行的像素数据;所述第一预置行、所述第二预置行和所述第三预置行是AHB总线从所述像素存储阵列中突发读取的输入图像中彼此相邻的三个行序号,且这三个行序号所对应的像素数据被AHB总线突发读取后根据矩阵卷积运算规律更新。

进一步地,所述移位选择控制模块包括第一选择器、第二选择器、第三选择器和3*3卷积窗口控制逻辑;第一选择器、第二选择器和第三选择器都有三个输入端,这三个输入端分别为第一输入端、第二输入端、第三输入端,其中,第一选择器的第一输入端与所述第三行缓冲器的输出端相连接,第一选择器的第二输入端与所述第一行缓冲器的输出端相连接,第一选择器的第三输入端与所述第二行缓冲器的输出端相连接;第二选择器的第一输入端与所述第一行缓冲器的输出端相连接,第二选择器的第二输入端与所述第二行缓冲器的输出端相连接,第二选择器的第三输入端与所述第三行缓冲器的输出端相连接;第三选择器的第一输入端与所述第二行缓冲器的输出端相连接,第三选择器的第二输入端与所述第三行缓冲器的输出端相连接,第三选择器的第三输入端与所述第一行缓冲器的输出端相连接;3*3卷积窗口控制逻辑,包括由第一移位寄存器、第二移位寄存器和第三移位寄存器构成的3*3卷积窗口,其中,第一移位寄存器、第二移位寄存器和第三移位寄存器都由三个寄存器组合构成;第一移位寄存器的输入端与第一选择器的输出端相连,用于缓冲第一选择器选择进入3*3卷积窗口第一行的像素数据;第二移位寄存器的输入端与第二选择器的输出端相连,用于缓冲第二选择器选择进入3*3卷积窗口第二行的像素数据;第三移位寄存器的输入端与第三选择器的输出端相连,用于缓冲第三选择器选择进入3*3卷积窗口第三行的像素数据;其中,第一选择器的一个地址输入端与第二选择器的一个地址输入端相连接,第二选择器的另一个地址输入端和第三选择器的一个地址输入端相连接,第三选择器的另一个地址输入端与所述主控制模块连接,用于接收所述状态信号。

进一步地,所述移位选择控制模块还包括边缘填充逻辑,包括填充选择器、边缘检测逻辑和像素填充逻辑;边缘检测逻辑,分别与像素填充逻辑和填充选择器相连接,用于判定3*3卷积窗口内的待检测像素点在输入图像的地址位置,并将判断结果信号输出至像素填充逻辑和填充选择器的选择端;填充选择器,包括填充输入端和不填充输入端,用于根据其选择端接收的边缘检测逻辑的判断结果信号选择相应输入端的像素数据写入卷积计算模块;像素填充逻辑,用于根据边缘检测逻辑的判断结果信号对所述3*3卷积窗口控制逻辑移位输出的像素数据进行对称填充,使得3*3卷积窗口所框定的以边界像素点为中心的图像矩阵与所述卷积核数据完成平面卷积,并输出至填充选择器的填充输入端。

进一步地,所述主控制模块包括主状态机,所述主状态机的工作状态包括第一行首次写状态、第二行首次写状态、第一行卷积状态、第三行写状态、第二行卷积状态、第一行写状态、第三行卷积状态和第二行写状态;主状态机,用于在第一行首次写状态下,通过第一行读写使能信号控制AHB总线首次突发读取所述第一预置行的像素数据,并写入所述第一行缓冲器中;在第二行首次写状态下,通过第二行读写使能信号控制AHB总线首次突发读取所述第二预置行的像素数据,并写入所述第二行缓冲器中;在第一行卷积状态下,通过第一行卷积使能信号控制读取出所述第一行缓冲器中的像素数据,并根据列地址使能信号将读取出的像素数据移位写入所述卷积计算模块中进行卷积运算;在第三行写状态下,通过第三行读写使能信号控制AHB总线突发读取所述第三预置行的像素数据,并写入所述第三行缓冲器中;在第二行卷积状态下,通过第二行卷积使能信号控制读取出所述第二行缓冲器中的像素数据,并根据列地址使能信号将读取出的像素数据移位写入所述卷积计算模块中进行卷积运算;在第一行写状态下,通过第一行读写使能信号控制AHB总线突发读取更新后的所述第一预置行的像素数据,并写入所述第一行缓冲器中;在第三行卷积状态下,通过第三行卷积使能信号控制读取出所述第三行缓冲器中的像素数据,并根据列地址使能信号将读取出的像素数据移位写入所述卷积计算模块中进行卷积运算;在第二行写状态下,通过第二行读写使能信号控制AHB总线突发读取更新后的所述第二预置行的像素数据,并写入所述第二行缓冲器中;主状态机还包括环形计数器,用于生成对应所述主状态机的工作状态的所述状态信号;其中,在所述状态信号的控制下,当前行像素数据在所述卷积计算模块进行卷积运算之后,下一行像素数据逐列写入所述卷积计算模块,而所述像素存储阵列中待处理的行像素数据持续被AHB总线突发读取进入空的所述行缓冲器,使得所述第一行写状态、所述第二行写状态和所述第三行写状态这三个工作状态下读取的像素数据不断更新,直到所述像素存储阵列中输入图像所有行的像素数据被全部写入所述卷积计算模块中完成卷积运算。

进一步地,主控制模块还包括卷积运算读写控制状态机,用于在主状态机处于所述第一行卷积状态、所述第二行卷积状态或所述第三行卷积状态下进行状态转换;卷积运算读写控制状态机的工作状态包括:首次读状态、读行缓冲状态、移位写FIFO状态、写FIFO等待状态、写总线状态和写总线等待状态;卷积运算读写控制状态机,用于在首次读状态下读取所述第一行缓冲器中第一列的像素数据选择进入所述3*3 卷积窗口;在读行缓冲状态下读取所述行缓冲模块中除了所述第一行缓冲器的第一列之外的像素数据选择进入所述3*3卷积窗口;在移位写FIFO状态下,根据生成的移位计数器的计数值对所述3*3卷积窗口中像素数据逐列移位传递至所述卷积计算模块作卷积运算,并根据生成的读计数器的计数值对所述3*3卷积窗口换行移位传递至所述卷积计算模块作卷积运算;在写FIFO等待状态下,将所述卷积计算模块的计算结果写入所述卷积结果FIFO模块,直到所述卷积结果FIFO模块的存储深度大于或等于所述AHB总线所配置的突发写数据长度;在写总线状态下,根据生成的写计数器的计数值将所述卷积结果FIFO模块存储的卷积结果写入AHB总线上,直到所述像素存储阵列中的输入图像的所有行和列的像素数据参与卷积计算的结果都写入过所述卷积结果FIFO模块;在写总线等待状态下,根据写计数器或读计数器的计数值,确定所述像素存储阵列中的输入图像的所有行和列的像素数据参与卷积计算的结果写入AHB总线;其中,所述移位计数器计数值作为所述3*3卷积窗口存储的像素数据写入所述卷积计算模块的行序号;所述读计数器的计数值作为所述3*3卷积窗口存储的像素数据在并行移位时产生的列序号。

进一步地,所述移位计数器和所述读计数器的计数变化值作为所述列地址信号输出至所述行缓冲模块。

进一步地,主控制模块还包括AHB接口控制状态机,用于驱动所述主状态机和所述卷积运算读写控制状态机读写AHB总线上的数据,并由所述主状态机中的各个工作状态决定其状态跳转条件以实现AHB总线上的数据的突发传输。

本实用新型的技术方案是基于3*3的滑动窗口实现对于2*2到1024*1024大小的图像的快速卷积处理,相对现有技术,通过耗费少量的硬件资源完成整幅图像的像素数据卷积计算,处理图像完整,图像显示效果不会受图像边界的影响;图像数据的读取,移位卷积处理以及写出处理过程,节省CPU的带宽和计算资源消耗,减小耗时。

附图说明

图1为本实用新型实施例提供的一种3*3卷积算法的加速电路的整体结构框图;

图2为本实用新型实施例提供的卷积计算模块和移位选择控制模块的内部结构框图;

图3为本实用新型实施例中对输入图像的边缘像素的对称填充示意图;

图4为本实用新型实施例提供的主状态机的工作状态转换示意图;

图5为本实用新型实施例提供的卷积运算读写控制状态机的工作状态转换示意图;

图6为本实用新型实施例提供卷积核数据窗口在输入图像中滑动的示意图;

图7为本实用新型实施例提供的AHB接口控制状态机的状态转换示意图。

具体实施方式

下面结合附图对本实用新型的具体实施方式作进一步说明:

本实用新型构思是:3*3卷积核的窗口在遍历输入源图像过程中,通过3个单口1KB行缓存器SRAM缓存来存储来自DDR或SRAM中存储的输入源图像的像素,并借助状态机和列地址计数值实现这种窗口的中心像素点在输入源图像中滑动以完成矩阵卷积运算,然后将卷积运算结果写入16层8位的FIFO,最后采用AHB总线将FIFO中的数据写回DDR并向CPU发送中断指令,从而实现硬件加速卷积计算。

基于上述实用新型构思,本实用新型实施例提供一种3*3卷积算法的加速电路,如图1所示,该加速电路包括,用于存储输入图像和图像卷积运算结果的存储介质、用于缓冲卷积运算结果的卷积结果FIFO 模块和用于控制DDR模块读写的AHB总线,其中所述存储介质包括片上SRAM和片外DDR。在本实用新型实施例中所述存储介质使用DDR,如图1所示的DDR模块中包括配置输入图像的基地址和存储空间的像素存储阵列,以及配置图像卷积运算结果的目标地址的卷积结果存储阵列,其中,输入图像的像素大小范围为 2*2至1024*1024,并以矩阵的形式保存在DDR模块中。所述卷积结果FIFO模块在本实用新型实施例中是深度为16、位宽为8的FIFO。所述AHB总线在AHB接口控制状态机的驱动和突发读状态机的控制作用下从所述像素存储阵列中突发读出输入图像中突发长度的像素数据,在AHB接口控制状态机的驱动和突发读状态机控制作用下把所述卷积结果FIFO模块中突发长度的卷积结果写入所述卷积结果存储阵列中,上述状态机的具体操作皆采用AMB AHB协议下的常规技术手段,并支持burst16,burst8,burst4和burst2 传输,本实用新型实施例中不再赘述。

如图1所示,所述加速电路还包括主状态机控制模块、移位选择控制模块、行缓冲模块和卷积计算模块;其中,主控制模块在本实用新型实施中为DMA master模块,上电复位后,软件初始化所述DDR模块输入图像的像素点的行向像素数量row_size和列向像素数量col_size、所述像素存储阵列内对应图像数据矩阵的基地址INADDR、所述卷积结果存储阵列的输出基地址OUTADDR、卷积计算模块内的3*3卷积核数据和归一化处理系数,然后主控制模块接受中断使能信号开始主动发出对存储介质的访问命令,主控制模块采用状态机控制方式对所述DDR模块、移位选择控制模块、行缓冲模块和卷积计算模块产生相应的控制信号;具体地,在本实用新型实施例中,由于涉及卷积运算的设计逻辑复杂,所以通过设计状态机来实现运算和读写控制过程,主控制模块包括主状态机、支持卷积结果突发写操作的卷积运算读写控制状态机和 AHB接口控制状态机,利用上述状态机的状态转换,在CPU参与度很小的情况下完成图像的卷积计算,大大节省了CPU的带宽,大幅度减小了软件耗时,提高了软件效率。

作为本实用新型实施例,所述主控制模块,在突发读状态机的控制下利用所述AHB总线突发读取所述像素存储阵列中输入图像当前相邻两行的像素数据,并填充入行缓冲模块中两个行缓冲器,其中突发读长度、行缓冲模块的存储深度和输入图像中每一行像素数据长度相匹配,有利于提高系统的利用效率;所述主控制模块根据移位选择控制模块当前读取到的像素数据对应所述输入图像的列序号,控制移位选择控制模块内像素数据的并行移位使得每次写入卷积计算模块的像素数据与匹配的卷积核数据对齐以加速运算过程。其中,所述每次写入卷积计算模块的像素数据与匹配的卷积核数据对齐是为实现卷积运算,卷积核数据所在的卷积窗口在写入卷积计算模块的像素数据所对应的图像矩阵上滑动过程中,形成一个包含卷积核数据所在的卷积窗口中心的重叠区域;

所述主控制模块,还用于通过控制所述AHB总线突发写操作将卷积结果FIFO模块中的卷积结果写回所述卷积结果存储阵列;然后通过AHB总线读取输入图像中基于当前相邻两行的下一行的像素数据,并进行相应的移位和卷积运算处理,直到输入图像所有像素数据处理完成后发出中断告知CPU卷积运算处理的结果以减小软件指令开销;用于并发出中断告知CPU卷积运算处理的结果以减小软件指令开销。其中,卷积核数据是所述加速电路外围的CPU在卷积计算模块内预先配置的窗口中寄存器存储的数据。

本实用新型实施例中所述输入图像是以矩阵形式存储,由于像素的读出一般不是能够一下全部读出的,而是一个一个或者几个像素为一组,基于窗口模板的处理,需要设置一些移位寄存器来构成行缓冲器。所述行缓冲模块是基于所述移位选择控制模块内部的3*3卷积窗口的大小对应设置的包括3个移位寄存器构成的行缓冲器,用于按照图像横向像素数据长度缓冲输入图像相应行的像素数据,并根据主控制模块生成的列地址信号和主状态机生成的状态信号将缓冲输入图像中的像素数据输出至移位选择控制模块,在所述 AHB接口控制状态机的驱动下每次突发读操作下所述移位寄存器可以存储一行图像长度的像素数据。需要说明的是,涉及多特征的卷积计算量非常大,往往超过一个物理阵列处理能力的范围,需要通过缓存中间结果,多次计算累加后才能完成。支持这种计算的方式为:每次计算的累加输入取自缓存,同时计算结果也存至缓存。缓存可以允许存在多个,可以根据需要从指定累加缓存读入,并输出到不同的指定累加缓冲写入。通过缓存到缓存的处理模式,使得硬件资源的灵活使用成为可能;缓存的写入采取所述突发读的方式从获取AHB总线获取数据,缓存的读出采取所述突发写的方式将缓冲获取数据写入AHB总线,适配数据处理规律的需要,降低缓存用量。并且一个缓存单元可以对应多个电路,能够提高数据输入的并行度,使得大规模,高性能并行处理成为可能。

由于卷积运算需要卷积核数据在图像数据滑动窗口进行运算,因此需要移位逻辑对图像数据进行相应的移位操作,移位逻辑读取当前卷积运算层序号。本实用新型实施例中所述移位逻辑为移位选择控制模块,用于根据主控制模块输出所述状态信号选择所述行缓冲模块中输入图像相应行的像素数据,再将每一列像素数据并行移位缓存,使得写入卷积计算模块的像素数据在卷积计算模块内的窗口滑动过程中完成卷积;其中,所述移位选择控制模块从所述行缓冲模块并行读入输入图像的不同行的像素数据后,由所述移位选择控制模块内置的窗口寄存器缓冲。另外在确定卷积运算时,所述移位选择控制模块内置的窗口中存储数据决定待卷积的像素数据在二维平面方向两个维度的大小(即像素点的横向和纵向),根据这两个维度的大小使用所述移位选择控制模块变更图像数据组成的序列顺序(即换行和换列),并根据所述主控制模块输出的所述状态信号确定图像数据序列移位的多少,所述卷积计算模块基于所述移位选择控制模块内置的窗口大小参数提取对应排列的寄存器存储的数据并和其对应的卷积核数据进行乘法运算。

对于窗口操作,现有技术中存在的一个问题是边界部分无法得到处理,导致输出的图像比输入图像减小行和列像素。为解决上述问题需要处理图像边际数据,即对应输入图像的第一行像素数据、最后一行像素数据、其他行的第一列像素数据及其最后一列的像素数据。本实用新型实施例中提供的移位选择控制模块,用于根据主控制模块输出的所述状态信号选择行缓冲模块中输入图像相应行的像素数据,再将每一列像素数据并行移位,并对像素数据采用对称数据进行填充的方式进行处理,使得所述移位选择控制模块将输入图像的全部像素数据移位写入所述卷积计算模块,从而完成整幅输入图像的像素数据与卷积核数据的卷积运算。

卷积计算模块,包括所述卷积核数据,用于将移位选择控制模块输出的像素数据与对应的卷积核数据进行乘法运算,基于加法器组将所述乘法运算的结果相加以实现卷积运算。本实用新型实施例中,每次卷积运算中每一行图像的像素数据行数据在相关状态机的控制下通过移位逐个进行卷积计算处理。所述卷积计算模块基于所述3*3卷积窗口大小参数,用于提取所述3*3卷积窗口控制逻辑中对应排列的触发器存储的数据,和对应的所述卷积核数据在乘法器单元完成乘法运算。

本实用新型实施例中CPU预先配置的3*3卷积核控制逻辑如图2所示,3*3卷积核控制逻辑对应的3*3 窗口内的第一行中从左往右的寄存器依次为寄存器P32、寄存器P31和寄存器P30,第二行中从左往右的寄存器依次为寄存器P22、寄存器P21和寄存器P20,第三行中从左往右的寄存器依次为寄存器P12、寄存器P11和寄存器P10。所述卷积计算模块内相乘求和逻辑采用流水线的方式,通过并行的9个乘法器在一个时钟同时并行对9个数据进行乘法运算,然后把这些乘法结果通过基于树形结构加法器组获得全部累加项的累加结果。

作为本实用新型实施的一种方式,如图1所示,所述行缓冲模块的行缓冲器包括第一行缓冲器、第二行缓冲器和第三行缓冲器,用于通过列地址选择端col_addr和状态选择端state分别与所述主控制模块并联连接,其中行缓冲模块中第一行缓冲器、第二行缓冲器和第三行缓冲器都优选地使用1KB大小的单口 SRAM。第一行缓冲器用于在所述主控制模块的控制下缓冲AHB总线突发读取的输入图像的第一预置行的像素数据;第二行缓冲器用于在所述主控制模块的控制下缓冲AHB总线突发读取的输入图像的第二预置行的像素数据;第三行缓冲器用于在所述主控制模块的控制下缓冲AHB总线突发读取的输入图像的第三预置行的像素数据。

具体地,所述第一预置行、所述第二预置行和所述第三预置行是AHB总线从所述像素存储阵列中突发读取的输入图像中彼此相邻的三个行序号,且这三个行序号所对应的像素数据被AHB总线突发读取后根据矩阵卷积运算规律更新。应理解,对于一次卷积所涉及的不同图像行的数据,可以通过行延迟的延迟处理确保逐次输出的数据并行地输入到3个行缓冲处理单元,也可以通过同步地不同的数据指针来实现。通过这种处理,使得相同的数据同时被所有处理单元复用,提高数据复用率,简化降低功耗的控制电路设计。

作为本实用新型实施的一种方式,如图1所示,为了将输入的整幅图像在所述卷积计算模块中完成卷积处理,所述移位选择控制模块内设置第一选择器S1、第二选择器S2、第三选择器S3和3*3卷积窗口控制逻辑;其中:第一选择器S1、第二选择器S2和第三选择器S3都有三个输入端,这三个输入端分别为第一输入端0、第二输入端1、第三输入端2,第一选择器S1的第一输入端0与所述第三行缓冲器的输出端相连接,第一选择器S1的第二输入端1与所述第一行缓冲器的输出端相连接,第一选择器S1的第三输入端2与所述第二行缓冲器的输出端相连接;第二选择器S2的第一输入端0与所述第一行缓冲器的输出端相连接,第二选择器S2的第二输入端1与所述第二行缓冲器的输出端相连接,第二选择器S2的第三输入端2与所述第三行缓冲器的输出端相连接;第三选择器S3的第一输入端0与所述第二行缓冲器的输出端相连接,第三选择器S3的第二输入端1与所述第三行缓冲器的输出端相连接,第三选择器S3的第三输入端2与所述第一行缓冲器的输出端相连接。

3*3卷积窗口控制逻辑,包括由第一移位寄存器、第二移位寄存器和第三移位寄存器构成的3*3卷积窗口,其中,第一移位寄存器、第二移位寄存器和第三移位寄存器都由三个寄存器组合构成;如图1所示, 3*3卷积窗口内的第一行对应第一移位寄存器,由寄存器L32、寄存器L31、寄存器L30构成;第二行对应第二移位寄存器,由寄存器L22、寄存器L21、寄存器L20构成;第三行对应第三移位寄存器,由寄存器 L12、寄存器L11、寄存器L10构成。

如图1所示,第一移位寄存器的输入端(对应寄存器L32的输入端)与第一选择器S1的输出端row0 相连,用于缓冲第一选择器S1选择进入3*3卷积窗口第一行的像素数据;第二移位寄存器的输入端(对应寄存器L22的输入端)与第二选择器S2的输出端row1相连,用于缓冲第二选择器S2选择进入3*3卷积窗口第二行的像素数据;第三移位寄存器的输入端与第三选择器S3的输出端row2相连,用于缓冲第三选择器S3选择进入3*3卷积窗口第三行的像素数据;其中,第一选择器S1的一个地址输入端与第二选择器S2的一个地址输入端相连接,第二选择器S2的另一个地址输入端和第三选择器S3的一个地址输入端相连接,第三选择器S3的另一个地址输入端与所述主控制模块连接,用于接收所述状态信号。

所述移位选择控制模块输出的像素数据与对应的卷积核数据进行乘法运算的具体:3*3卷积核控制逻辑对应的3*3窗口在存储输入图像像素数据的3*3卷积窗口滑动过程中,为完成输入图像的图像矩阵与卷积核矩阵的矩阵卷积运算,3*3卷积核控制逻辑对应的3*3窗口的中心和3*3卷积窗口的中心都必须在窗口重叠区域内;当3*3卷积核控制逻辑对应的3*3窗口和3*3卷积窗口的相对位置如图6所示,3*3卷积核控制逻辑对应的3*3窗口在输入图像上由左往右开始滑动时,3*3卷积核控制逻辑对应的3*3窗口的中心数据P21和3*3卷积窗口的中心寄存器L21都在窗口重叠区域内,且窗口重叠区域的像素数据对应第一选择器S1的输出端row0和第二选择器S2的输出端row1。后续3*3卷积核控制逻辑对应的3*3窗口往右滑动过程中,所述移位选择控制模块控制所述行缓冲模块输入的图像像素数据进行列变换,窗口重叠区域会发生变化,中心数据P21和3*3卷积窗口的中心寄存器L21都会参与卷积运算,3*3卷积核控制逻辑内数据固定不变;3*3卷积核控制逻辑对应的3*3窗口完成往右滑动后,向下滑动一行,再继续在输入图像的横向上发生滑动,中心数据P21和3*3卷积窗口的中心寄存器L21都会被框定在窗口重叠区域内参与卷积运算;其中,如图6所示的实施例中所述卷积计算模块的计算结果:

Y(0,0)=P32*0+P31*0+P30*0+P22*0+P21*L32+P20*L31+P12*0+P11*L22+P10*L21

=P21*L32+P20*L31+P11*L22+P10*L21。

作为本实用新型实施例,如图2所示:所述移位选择控制模块还包括边缘填充逻辑,包括填充选择器、边缘检测逻辑和像素填充逻辑;边缘检测逻辑,分别与像素填充逻辑和填充选择器相连接,用于通过3*3 卷积窗口在一个待检测像素点处得到以该待检测像素点为中心,周围8个点的像素值,再根据Sobel算子结构的计算结果与一个预置阈值进行比较以实现对该待检测像素点在输入图像地址的判定,当计算后的值大于此阈值时,判定此像素为边缘。然后将判断结果信号输出至像素填充逻辑以控制像素填充操作,同时将判断结果信号输出至填充选择器的选择端,从而实现对写入卷积计算模块的像素数据的控制;

填充选择器S10,包括填充输入端和不填充输入端,用于根据边缘检测逻辑对待检测像素点的判断结果选择像素数据写入卷积计算模块的方式,当所述3*3卷积窗口控制逻辑移位输出的像素数据被边缘检测逻辑判定为边缘像素,则控制对应的像素数据通过像素填充逻辑处理后通过填充选择器S10的填充输入端写入卷积计算模块,否则控制所述3*3卷积窗口控制逻辑移位输出的像素数据直接通过填充选择器S10的不填充输入端写入卷积计算模块。

像素填充逻辑,用于根据边缘检测逻辑对待检测像素点的判断结果对所述3*3卷积窗口控制逻辑移位输出的像素数据进行对称填充,具体地,先设置边缘检测逻辑所判定的输入图像的边界像素点作为对称中心,将边界像素点所在的输入图像内侧的像素点关于该边界像素点进行中心对称地填充到该边界像素点所在的输入图像的外侧,使得3*3卷积窗口所框定的以边界像素点为中心的图像矩阵与所述卷积核数据完成平面卷积。然后输出至填充选择器的填充输入端。判断读取入3*3卷积窗口控制逻辑的像素数据在输入图像的地址是否位于输入图像的边界,对处于输入图像的边缘的像素数据进行填充并输出,而对于未处于输入图像的边缘的像素数据则直接输出,使得输入图像的边缘区域的像素数据参与卷积运算时不受限于3*3 卷积窗口控制逻辑内置的窗口大小。

对于边缘像素的填充方式,提出一个实施例,如图3所示,当所述边缘检测逻辑检测到输入图像的第一行第一列首的像素点a32处于图像边界位置时,像素填充逻辑将像素点a32设置为对称中心,将像素点 a32所在的输入图像内侧的像素点a31、a22和a21关于该像素点a32进行中心对称对应地填充到输入图像的外侧,即输入图像内侧的像素点a21填充到像素点a32的左上方,输入图像内侧的像素点a22填充到像素点a32的正上方,输入图像内侧的像素点a31填充到像素点a31的左侧;相应的,当所述边缘检测逻辑检测到输入图像的第一行第二列首的像素点a31时,将输入图像内侧的像素点a21填充到像素点a31的正上方;当所述边缘检测逻辑检测到输入图像的第二行第一列首的像素点a22时,将输入图像内侧的像素点 a21填充到像素点a22的左侧。

作为本实用新型实施例,所述主控制模块包括主状态机,所述主状态机的工作状态包括初始状态 IDLE/0、第一行首次写状态1、第二行首次写状态2、第一行卷积状态6、第三行写状态5、第二行卷积状态7、第一行写状态3、第三行卷积状态8、第二行写状态4和卷积结束状态9。在AHB接口控制状态机的驱动下,所述主状态机的具体的状态转换操作如图4所示,当控制启动信号start置高电平时,由初始状态IDLE/0转换到第一行首次写状态1。

在第一行首次写状态1中,第一行读写使能信号w_r[0]=0时通过AHB总线首次突发读取所述第一预置行的像素数据,并写入所述第一行缓冲器中;当第一行读写使能信号w_r[0]=1时,表示所述第一预置行的像素数据完全写入所述第一行缓冲器中,并进入第二行首次写状态2,否则继续保持在第一行首次写状态1中。

在第二行首次写状态2下,第二行读写使能信号w_r[1]=0时,控制AHB总线首次突发读取所述第二预置行的像素数据,并写入所述第二行缓冲器中;当第二行读写使能信号w_r[1]=1时,表示所述第二预置行的像素数据完全写入所述第二行缓冲器中,并进入第一行卷积状态6,否则继续保持在第二行首次写状态2中。

在第一行卷积状态6下,第一行卷积使能信号c_r[0]=0时,读取出所述第一行缓冲器中的像素数据,并根据列地址使能信号col将读取出的像素数据移位写入所述卷积计算模块中进行卷积运算;当列地址使能信号col=0且第一行卷积使能信号c_r[0]=1时,所述第一行缓冲器中的像素数据在所述卷积计算模块完成卷积运算但所述移位选择控制模块对AHB总线突发读取的像素数据的移位操作并未结束,进入第三行写状态5;当列地址使能信号col=1且第一行卷积使能信号c_r[0]=1时,所述第一行缓冲器中的像素数据在所述卷积计算模块完成卷积运算且所述移位选择控制模块对AHB总线突发读取的像素数据移位操作结束,进入卷积结束状态9;否则继续保持在第一行卷积状态6中。其中,AHB总线突发读取的像素数据对应所述第一预置行的像素数据和所述第二预置行的像素数据。

在第三行写状态5下,第三行读写使能信号w_r[1]=0或列地址使能信号col=0时,AHB总线突发读取所述第三预置行的像素数据,并写入所述第三行缓冲器中;当列地址使能信号col=1或第三行读写使能信号w_r[1]=1时,表示所述第三预置行的像素数据完全写入所述第三行缓冲器中,同时所述第二行缓冲器内的像素数据开始写入所述卷积计算模块进行卷积运算,并进入第二行卷积状态7,否则继续保持在第二行首次写状态2中。

在第二行卷积状态7下,第二行卷积使能信号c_r[1]=0控制读取出所述第二行缓冲器中的像素数据,并根据列地址使能信号col将读取出的像素数据移位写入所述卷积计算模块中进行卷积运算;当列地址使能信号col=0且第二行卷积使能信号c_r[1]=1时,所述第二行缓冲器中的像素数据在所述卷积计算模块完成卷积运算但所述移位选择控制模块对AHB总线突发读取的像素数据的移位操作并未结束,进入第一行写状态3;当列地址使能信号col=1且第一行卷积使能信号c_r[1]=1时,所述第一行缓冲器中的像素数据在所述卷积计算模块完成卷积运算且所述移位选择控制模块对AHB总线突发读取的像素数据移位操作结束,进入卷积结束状态9;否则继续保持在第二行卷积状态7中。

在第一行写状态3下,第一行读写使能信号w_r[0]=0时,控制AHB总线突发读取更新后的所述第一预置行的像素数据,并写入所述第一行缓冲器中,此时所述第一行缓冲器内的数据在所述第一行卷积状态 6中被读取走;当列地址使能信号col=1或第一行读写使能信号w_r[0]=1时,表示更新的所述第一预置行的像素数据完全写入所述第一行缓冲器中,同时所述第三行缓冲器内的像素数据开始写入所述卷积计算模块进行卷积运算,并进入第三行卷积状态8,否则继续保持在第一行写状态3中。

在第三行卷积状态8下,第三行卷积使能信号c_r[2]=0控制读取出所述第三行缓冲器中的像素数据,并根据列地址使能信号col将读取出的像素数据移位写入所述卷积计算模块中进行卷积运算;当列地址使能信号col=0且第三行卷积使能信号c_r[2]=1时,所述第三行缓冲器中的像素数据在所述卷积计算模块完成卷积运算但所述移位选择控制模块对AHB总线突发读取的像素数据的移位操作并未结束,进入第二行写状态4;当列地址使能信号col=1且第三行卷积使能信号c_r[2]=1时,所述第三行缓冲器中的像素数据在所述卷积计算模块完成卷积运算且所述移位选择控制模块对AHB总线突发读取的像素数据移位操作结束,进入卷积结束状态9;否则继续保持在第三行卷积状态8中。

在第二行写状态4下,第二行读写使能信号w_r[1]=0时,控制AHB总线突发读取更新后的所述第二预置行的像素数据,并写入所述第二行缓冲器中;此时所述第二行缓冲器内的数据在所述第二行卷积状态 7中被读取走;当列地址使能信号col=1或第二行读写使能信号w_r[1]=1时,表示更新的所述第二预置行的像素数据完全写入所述第二行缓冲器中,同时所述第一行缓冲器内的像素数据开始写入所述卷积计算模块进行卷积运算,并进入第一行卷积状态6,否则继续保持在第二行写状态4中。

卷积结束状态9中,主状态机通过控制AHB总线将所述卷积结果FIFO的数据写回所述卷积结果存储阵列;当AHB接口准备信号hready置高电平时,状态跳转回初始状态IDLE/0。然后从所述像素存储阵列继续突发读取所述输入图像的新的一行像素数据,继续重复的上述状态转换过程新输入的处理像素数据。

具体地,主状态机还包括环形计数器,用于生成对应所述主状态机的工作状态的所述状态信号;在所述状态信号和所述列地址使能信号的控制下,当前行像素数据在所述卷积计算模块进行卷积运算之后,下一行像素数据根据所述列地址信号逐列写入所述卷积计算模块,而所述像素存储阵列中待处理的行像素数据持续被AHB总线突发读取进入所述行缓冲模块内空的行缓冲器,使得主状态机在所述第一行写状态3、所述第二行写状态4和所述第三行写状态5这三个工作状态下循环,从所述像素存储阵列中遍历读取所述输入图像不同行的像素数据,直到所述像素存储阵列中输入图像所有行的像素数据被全部写入所述卷积计算模块中完成卷积运算。其中环形计数器的计数值分别对应所述第一行写状态3、所述第二行写状态4和所述第三行写状态5,即生成所述状态信号。

主控制模块还包括卷积运算读写控制状态机,用于在主状态机处于所述第一行卷积状态6、所述第二行卷积状态7或所述第三行卷积状态8下进行状态转换,从而实现所述3*3卷积窗口控制逻辑对第一选择器S1的输出端row0、第二选择器S2的输出端row1和第三选择器S3的输出端row2的数据并行读取,移位卷积计算,并将卷积计算结果写入到所述卷积结果FIFO中,然后在所述AHB接口控制状态机的驱动下从所述卷积结果FIFO中将数据读出来并写出到AHB接口上。其中,卷积计算是在3个时钟周期内完成的,使得主控制模块的运行时序充裕。

作为本实用新型实施例,所述卷积运算读写控制状态机的工作状态包括:初始状态IDLE、首次读状态 RD_ROWO、读行缓冲状态RD_BUF、移位写FIFO状态SHFT、写FIFO等待状态SHFT_WAIT、写总线状态BWR、写总线等待状态BWR_WAIT和写完成状态BWR_END;卷积运算读写控制状态机的具体操作如图5所示:

当所述主状态机处于所述第一行卷积状态6、所述第二行卷积状态7或所述第三行卷积状态8时开始控制卷积运算,所述卷积运算读写控制状态机由初始状态IDLE跳转到首次读状态RD_ROWO,在首次读状态 RD_ROWO下读取所述第一行缓冲器中第一列的像素数据,经过所述移位选择控制模块选择进入所述3*3卷积窗口,此过程中所述移位选择控制模块内的移位寄存器对像素数据开始执行换列操作,然后状态跳转至读行缓冲状态RD_BUF。

在读行缓冲状态RD_BUF下所述移位选择控制模块读取所述行缓冲模块中除了所述第一行缓冲器的第一列外的像素数据逐列移位进入所述3*3卷积窗口,首次读状态RD_ROWO下读取并存储在所述3*3卷积窗口中的数据对应的寄存器列序号发生改变,直到所述移位选择控制模块读取完所述行缓冲模块中当前行图像像素数据,然后所述移位选择控制模块执行换行操作,读取输入图像的下一行像素数据,状态跳转至移位写FIFO状态SHFT。

由于卷积运算需要卷积核数据在图像数据滑动窗口进行运算,因此需要移位逻辑对图像数据进行相应的移位操作,移位逻辑读取当前卷积运算层序号。本实用新型实施例中根据主控制模块输出所述状态信号选择所述行缓冲模块中输入图像相应行的像素数据,再将每一列像素数据并行移位缓存,使得写入卷积计算模块的像素数据在卷积计算模块内的窗口滑动过程中完成卷积;在确定卷积运算时,所述移位选择控制模块内置的窗口中存储数据决定待卷积的像素数据在二维平面方向两个维度的大小(即像素点的横向和纵向),根据这两个维度的大小使用所述移位选择控制模块变更图像数据组成的序列顺序(即换行和换列),并根据所述主控制模块输出的所述状态信号确定图像数据序列移位的多少,使得进入至所述卷积计算模块的每次卷积运算的一行图像的像素数据与卷积核数据对齐。

在移位写FIFO状态SHFT下,当生成的移位计数器wa_cout的计数值不等于3时,对所述3*3卷积窗口中像素数据逐列移位传递至所述卷积计算模块,直到将对应输入图像的一行像素数据写入所述卷积计算模块才能进行卷积运算;当生成的读计数器r_cout的计数值不等于0、移位计数器wa_cout的计数值等于 3且写入所述卷积结果FIFO的数据深度D_F小于突发写长度B_L时,所述卷积计算模块已完成一次卷积运算但从所述卷积计算模块写入所述卷积结果FIFO的卷积结果的个数小于突发写长度B_L,同时所述3*3卷积窗口的移位寄存器当前未存储完一行图像像素数据,则返回读行缓冲状态RD_BUF将读取的图像像素数据继续逐列移位进入所述3*3卷积窗口中,然后对所述输入图像执行一次换行操作;当读计数器r_cout 的计数值等于0且移位计数器wa_cout的计数值等于3时,所述3*3卷积窗口的移位寄存器遍历完所述输入图像内所有像素数据,且对应输入图像像素数据全写入所述卷积计算模块进行卷积运算,则状态跳转至写FIFO等待状态SHFT_WAIT;当生成的读计数器r_cout的计数值等于0、移位计数器wa_cout的计数值等于3且写入所述卷积结果FIFO的数据深度D_F大于或等于突发写长度B_L时,输入图像的像素数据全写入所述卷积计算模块进行卷积运算,同时从所述卷积计算模块写入所述卷积结果FIFO的卷积结果的个数大于或等于突发写长度B_L,则状态跳转至写总线状态BWR。移位写FIFO状态SHFT下对并行输入的像素数据进行卷积运算,并在完成一次卷积运算后对所述输入图像进行换行,再进行下一次卷积运算,直到移位计数器wa_cout的计数值达到3。

在写FIFO等待状态SHFT_WAIT下,移位计数器wa_cout的计数值不等于3,不再给所述卷积结果FIFO 模块提供新的卷积结果;当所述卷积计算模块中当前所有的计算结果都写入所述卷积结果FIFO模块,且所述卷积结果FIFO模块的存储深度D_F大于或等于所述AHB总线所配置的突发写数据长度B_L时,状态跳转至写总线状态BWR。

在写总线状态BWR下,当突发写标志位B_W=1,生成的写计数器wr_cout的计数值非零,且读计数器 r_cout的计数值等于0时,所述卷积结果FIFO已完成一个突发写长度的数据写入AHB总线的操作,但根据写计数器wr_cout的非零计数值可知所述卷积计算模块中的计算结果未完全写入所述卷积结果FIFO模块,则状态跳转至写FIFO等待状态SHFT_WAIT;当突发写标志位B_W=1,生成的写计数器wr_cout的计数值非零,且读计数器r_cout的计数值非零0时,输入图像像素数据未全写入所述卷积计算模块进行卷积运算,则状态跳转至读行缓冲状态RD_BUF;当突发写标志位B_W=1且生成的写计数器wr_cout的计数值 wr_cout=0时,所述卷积结果FIFO模块在已完成一个突发写长度的数据写入AHB总线的基础上,将所述卷积结果FIFO模块中剩余的卷积结果写出至AHB总线,状态跳转至写总线等待状态BWR_WAIT;其中每一个所述卷积结果对应所述3*3卷积窗口中当前存储的像素数据;当所述卷积结果FIFO未完成完整的一个突发写长度的数据写入AHB总线的操作时停留在写总线状态BWR下。

在写总线等待状态BWR_WAIT下,当写计数器wr_cout=0、读计数器r_cout=0或AHB接口准备信号 hready=0时,所述卷积结果FIFO模块中的卷积结果全部写入AHB总线,状态跳转写完成状态BWR_END,否则停留在写总线等待状态BWR_WAIT。当AHB接口准备信号hready=1时,写完成状态BWR_END跳转回初始状态IDLE,所述输入图像的像素数据在AHB总线的写出操作完成。

具体地,所述移位计数器wa_cout的计数值作为所述3*3卷积窗口存储的像素数据写入所述卷积计算模块的换行偏移量;所述读计数器r_cout的计数值,作为所述3*3卷积窗口存储的像素数据在并行移位时产生的列偏移量。所述移位计数器wa_cout和所述读计数器r_cout的计数变化值作为所述列地址信号输出至所述行缓冲模块,使得所述卷积运算读写控制状态机控制所述移位选择控制模块完成对输入图像的像素数据的换行和换列读写。

AHB接口控制状态机,包括初始状态、非连续传输状态和连续传输状态,用于驱动所述主状态机和所述卷积运算读写控制状态机读写AHB总线上的数据,反映所述主控制模块控制AHB总线的突发读写的状态,并由所述主状态机中的各个工作状态决定其状态跳转条件以实现AHB总线上的数据的突发传输。所述AHB 接口控制状态机由所述初始状态跳至所述非连续传输状态,表示在当前进行所述突发读操作下的输入图像的其中一行像素数据中的第一个数据传输,所述主控制模块通过AHB总线从所述像素存储阵列中突发读取输入图像当前相邻两行的像素数据以实现所述3*3卷积窗口滑动过程中的卷积运算;所述AHB接口控制状态机由所述非连续传输状态跳至所述连续传输状态过程中,所述主控制模块通过AHB总线将当前相邻两行的像素数据在卷积计算模块中运算结果写入所述卷积结果存储阵列;所述AHB接口控制状态机由所述连续传输状态跳至所述初始状态过程中,所述主控制模块控制的AHB总线的突发读和突发写操作结束,然后AHB 接口准备信号hready置高电平,所述主控制模块开始新的突发传输。

本实用新型说明书中未进行详细描述部分属于本领域技术人员的公知常识。而以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1