CN103067706B - 基于fpga的ip核 - Google Patents

基于fpga的ip核 Download PDF

Info

Publication number
CN103067706B
CN103067706B CN201210560143.9A CN201210560143A CN103067706B CN 103067706 B CN103067706 B CN 103067706B CN 201210560143 A CN201210560143 A CN 201210560143A CN 103067706 B CN103067706 B CN 103067706B
Authority
CN
China
Prior art keywords
unit
image
module
computed
gravity
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
Application number
CN201210560143.9A
Other languages
English (en)
Other versions
CN103067706A (zh
Inventor
王爽
焦李成
侯彪
张广亮
刘坤
张涛
马文萍
马晶晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201210560143.9A priority Critical patent/CN103067706B/zh
Publication of CN103067706A publication Critical patent/CN103067706A/zh
Application granted granted Critical
Publication of CN103067706B publication Critical patent/CN103067706B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Processing (AREA)

Abstract

本发明公开了一种基于FPGA的IP核,主要解决现有技术计算图像中心矩比较慢的问题。它包括:Avalon总线接口(1)、状态机单元(2)、地址解析单元(3)、FIFO单元(4)、控制寄存器单元(5)、状态寄存器单元(6)、计算图像重心单元(7)、计算图像中心矩单元(8)、多路选择器单元(9)。地址解析单元(3)对Avalon总线地址信号进行解析,进而对不同的地址空间进行访问,在状态机单元(2)的控制下,计算图像重心单元(7)从FIFO单元(4)中读取图像数据进行图像重心的计算,将图像的重心传给计算图像中心矩单元(8),计算图像中心矩单元(8)从FIFO单元(4)中读取图像数据进行图像中心矩的计算,计算完成则产生中断信号,结果由多路选择器单元(9)输出。本发明具有速度快、结构简单、可重构性好的优点,可以用于目标检测片上系统SOPC的搭建。

Description

基于FPGA的IP核
技术领域
本发明属于图像目标检测和识别领域,特别是一种基于FPGA的IP核,可以应用到实时的视频目标检测和识别。
背景技术
目前在图像分类与识别处理的许多方面得到广泛使用的是矩特征。不管图像是移动、转动或是等比例放大与缩小,计算机系统在识别这些图像时应呈现出不变的特征,即图像要保持自己的不变性。经过多次试验和结论对比,Hu矩具有这种不变性,因此得到了广泛的应用。
Hu矩特征向量是在目标检测和识别中最为常用的矩特征,它的计算并不复杂,包括以下步骤:
a).根据公式计算(p,q)阶矩,其中f(x,y)是图像中(x,y)点处的灰度值,M,N为图像的大小;
b).根据公式 计算图像的重心,(xc,yc)为图像的重心;
c).根据公式 μ pq = Σ x = 0 M - 1 Σ y = 0 N - 1 ( x - x c ) p ( y - y c ) q f ( x , y ) 计算图像的中心矩;
d).根据公式 计算归一化中心矩;
e).计算Hu矩特征向量Φ={φi|i=1,2,…,7},其中φ12,…,φ7分别定义为:
φ1=η2002,
φ 2 = ( η 20 + η 02 ) 2 + 4 η 11 2 ,
φ3=(η30-3η12)2+(3η2103)2,
φ4=(η3012)2+(η2103)2,
φ5=(η30-3η12)(η3012x+(η03-3η21)(η0312y,
φ6=(η2002)[(η3012)2-(η2103)2]+4η113012)(η0321),
φ7=(3η2103)(η3012x+(η30-3η12)(η0321y,
其中,φx=(η3012)2-3(η2103)2y=(η2103)2-3(η3012)2
可以看出,在计算Hu矩的过程中需要先计算出图像的中心矩,中心矩的计算是大量的乘累加过程,而乘累加的计算是非常耗时的,并且图像越大需要的时间越长。为了满足视频目标检测或识别的实时性,找到一种快速有效的计算中心矩的方法或系统是迫不及待的。
目前视频目标检测主要通过计算机或者数字信号处理器DSP实现,在通用计算机上要做到高的识别率是比较容易的,可以通过复杂的算法来达到高的识别率,但是通用计算机不具备便携性和灵活性,因此用通用计算机做视频目标检测在要求便携的实际应用中价值不大。数字信号处理器是专门为数字信号处理而设计的,内部有硬件乘累加器,在数字信号处理领域有着广泛的应用,但是其指令的执行是串行的,在速度要求很高的场合,很难达到实时处理的要求。
近年来,现场可编程门阵列FPGA的发展,为提高图像处理技术的各种性能提供了新的思路和方法。由于实时图像处理数据量很大,同时要求处理速度快、系统体积尽可能小,而FPGA具有集成度高、天生的并行结构等特点,以FPGA作为主要处理芯片的图像处理系统非常适合于对图像进行实时处理。
结合通用计算机、DSP和FPGA各自的特点,采用可编程片上系统SOPC(SystemonaProgrammableChip)的架构是一种视频目标检测和识别的比较好解决方案,可编程偏上系统SOPC是一种高效、灵活的片上系统SoC(SystemonChip)技术,可编程片上系统SOPC支持软硬件协同设计,它的主要思想就是在FPGA内部嵌入一个通用处理器来负责软件的设计,一些复杂的算法可以利用FPGA内部的硬件逻辑资源来实现,处理器和算法的硬件电路通过片上总线连接构成一个系统。这种基于可编程片上系统SOPC的设计不仅具有处理器的软件灵活设计的有点,同时基于FPGA内部的硬件逻辑也是可以灵活设计和裁剪的,算法的硬件设计提高了算法的处理速度,很容易满足系统的实时性要求。
发明内容
本发明的目的在于针对上述现有技术的不足,利用FPGA内部的硬件逻辑资源,提出一种基于FPGA的IP核,以完成视频目标检测的可编程片上系统SOPC搭建,进而提高视频目标检测的实时性。
本发明的技术原理是:根据图像中心矩计算的过程,充分利用FPGA硬件的并行和流水线特性,将整个IP核分为计算图像重心的单元和计算中心矩的单元两个核心的部分,计算图像重心的单元采用由FPGA硬件逻辑搭建的乘累加器实现,计算图像中心矩的单元采用硬件的并行结构和流水线的结合来实现,最终在硬件的顶层模块添加Avalon总线逻辑来实现IP核与可编程片上系统SOPC的连接。
根据上述原理,本发明包括:
Avalon总线接口1,用于IP核与Avalon总线时序的匹配;
状态机单元2,用于控制IP核中FIFO单元4的读和写操作,控制计算图像重心的单元7和计算图像中心矩的单元8工作进程的开启与关闭并提供计算所需的图像像素点的坐标,同时向状态寄存器单元6写入当前的工作状态;
地址解析单元3,该单元与Avalon总线接口1相连,用于对来自Avalon总线的地址和控制信号进行解译,协助Avalon总线上的主机对IP核中不同的地址空间进行访问;
FIFO单元4,该单元与Avalon总线接口1、地址解析单元3相连,用于对Avalon总线与IP核之间的图像像素数据缓冲,保证Avalon总线传输数据的连续性;
控制寄存器单元5,该单元与Avalon总线接口1、地址解析单元3相连,用于接收来自Avalon总线的命令,对IP核工作进程和复位进行控制,以及对中断标志的清除;
状态寄存器单元6,该单元与状态机单元2相连,用于显示状态机单元2当前的工作状态;
计算图像重心单元7,该单元与状态机单元2、FIFO单元4相连,用于接收FIFO单元2中的图像数据,在状态机单元2的控制下计算输入图像f(x,y)的重心(xc,yc)和输入图像f(x,y)的中心矩μ00,其中 x c = Σ x = 0 M - 1 ( Σ y = 0 N - 1 x × f ( x , y ) ) Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , y c = Σ x = 0 M - 1 ( Σ y = 0 N - 1 y × f ( x , y ) ) Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , μ 00 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , x是输入图像的行坐标,y是输入图像的列坐标,M是图像的行数,N是图像的列数;
计算图像中心矩单元8,该单元与状态机单元2、FIFO单元4、计算图像重心的单元4相连,用于接收FIFO单元4的图像数据和计算图像重心的单元7的计算结果,在状态机单元2的控制下计算输入图像f(x,y)的(p,q)阶中心矩μpq,其中 μ pq = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( ( x - x c ) p ( y - y c ) q f ( x , y ) ) ) , (p,q)={(1,1),(2,0),(0,2),(2,1),(1,2),(0,3),(3,0)},x是图像的行坐标,y是图像的列坐标,M是图像的行数,N是图像的列数;
多路选择器单元9,该单元与地址解析单元3、状态寄存器单元6、计算图像重心单元7、计算图像中心矩单元8相连,用于根据地址解析单元3输出的不同地址选择Avalon总线上的主机要访问的地址空间。
作为优选,上述的基于FPGA的IP核,其特征在于:所述的状态机单元2,包括:
初始化模块21,该模块负责对IP核的初始化,并根据控制寄存器单元5输出的命令通知计算图像重心准备模块22工作,或者通知计算图像中心矩准备模块25工作;
计算图像重心准备模块22,该模块负责初始化图像像素的坐标,复位计算图像重心的单元7,并且等待控制寄存器单元5输出下一步工作的命令,以通知计算图像重心开始模块23工作;
计算图像重心开始模块23,用于控制FIFO单元4向计算图像重心单元7传输图像数据,更新图像像素点的坐标,并控制计算图像重心单元7开始对传来的数据进行图像重心的计算,在图像数据传输完成时通知计算图像重心完成模块24工作;
计算图像重心完成模块24,用于在计算图像重心单元7计算完成时,发起中断信号,通知初始化模块21重新开始工作,并向状态寄存器单元6写入“当前已完成图像重心的计算”的状态;
计算图像中心矩准备模块25,该模块负责初始化图像像素的坐标,复位计算图像中心矩单元8,并且等待控制寄存器单元5输出下一步工作的命令,以通知计算图像中心矩开始模块26工作;
计算图像中心矩开始模块26,用于控制FIFO单元4向计算图像中心矩单元8传输图像数据,更新图像像素点的坐标,并控制计算图像中心矩单元8开始对传来的数据进行图像中心矩的计算,在图像数据传输完成时通知计算图像中心矩完成模块27工作;
计算图像中心矩完成模块27,用于在计算图像中心矩单元8计算完成时,发起中断信号,通知初始化模块21重新开始工作,并向状态寄存器单元6写入“当前已完成图像中心矩的计算”的状态。
作为优选,上述基于FPGA的IP核,其特征在于:所述的控制寄存器单元5采用一个双端口随机访问存储器RAM来实现,存储空间大小为1个字节,读端口和写端口都是8位的数据端口,读端口采用时钟异步方式,写端口采用时钟同步方式。
作为优选,上述基于FPGA的IP核,其特征在于:所述的状态寄存器单元6采用一个双端口的随机访问存储器RAM实现,存储空间大小为1个32位的字,读端口和写端口都是32位的数据端口,读端口采用时钟异步方式,写端口采用时钟同步方式。
作为优选,上述基于FPGA的IP核,其特征在于:所述的计算图像重心单元7,包括:
乘累加模块71,用于计算(0,0)阶矩 m 00 = μ 00 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , (0,1)阶矩 m 00 = μ 00 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , (1,0)阶矩 m 10 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( x × f ( x , y ) ) ) , 其中,x是图像的行坐标,y是图像的列坐标,f(x,y)是图像在坐标(x,y)处的灰度值,M是图像的行数,N是图像的列数;
除法器模块72,该模块的输入端与乘累加模块71的输出对应连接,用于计算图像重心(xc,yc),其中
输出逻辑模块73,用于将乘累加模块71的输出m00转换成32位的单精度浮点数μ00,其中μ00为输入图像的(0,0)阶中心矩,该模块的输出即是计算图像重心的单元7的输出。
作为优选,上述的基于FPGA的IP核,其特征在于,所述的计算图像中心矩单元8,包括:
核心模块81,用于计算(p,q)阶中心矩μpq,其中 μ pq = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( ( x - x c ) p ( y - y c ) q f ( x , y ) ) ) , (p,q)={(1,1),(2,0),(0,2),(2,1),(1,2),(0,3),(3,0)},x是图像的行坐标,y是图像的列坐标,f(x,y)是图像在坐标(x,y)处的灰度值,M是图像的行数,N是图像的列数,该模块的输入为图像中心矩计算单元8的输入。
7个浮点数模块82,该模块与计算图像中心矩的核心模块81相连,用于将图像中心矩计算核心模块81的计算结果转换成浮点数,以提供给Avalon总线主机进行高精度算法的处理。
本发明与现有技术相比具有一下优点:
1、本发明将图像的中心矩的计算设计成了基于FPGA的IP核形式,所有支持Avalon总线的片上系统都可以方便的调用此模块进行视频目标检测的应用。
2、本发明核心模块采用FPGA的硬件流水线结构和并行结构结合方式实现,提高了计算速度,进而提高了视频目标检测的实时性。
3、本发明采用中断技术,IP核完成工作时向Avalon总线上的主机发出中断信号,减少了主机频繁查询的时间消耗。
附图说明
图1是本发明的顶层硬件框图;
图2是本发明中的状态机单元各功能模块及工作原理图;
图3是本发明中的计算图像重心单元框图;
图4是本发明计算图像重心单元中的乘累加器模块框图;
图5是本发明计算图像中心矩单元的核心模块框图;
图6是本发明计算图像中心矩单元核心模块中的三级流水线子模块框图。
具体实施方式
参照图1,本发明包括:Avalon总线接口1、状态机单元2、地址解析单元3、FIFO单元4、控制寄存器单元5、状态寄存器模块6、计算图像重心模块7、计算图像中心矩单元8、多路选择器单元9。其中:
所述的Avalon总线接口1,用于IP核与Avalon总线时序的匹配;
所述的状态机单元2,用于控制IP核中FIFO单元4的读和写操作,控制计算图像重心的单元7和计算图像中心矩的单元8工作进程的开启与关闭并提供计算所需的图像像素点的坐标,同时向状态寄存器单元6写入当前的工作状态;该单元包括:初始化模块21、计算图像重心准备模块22、计算图像重心开始模块23、计算图像重心完成模块24、计算图像中心矩准备模块25、计算图像中心矩开始模块26、计算图像中心矩完成模块27,并且在同一时刻只有一个模块在工作;
所述的地址解析单元3,该单元与Avalon总线接口1相连,用于对来自Avalon总线的地址和控制信号进行解译,协助Avalon总线上的主机对IP核中不同的地址空间进行访问。其中地址的分配如表1所示:
表1地址解析单元对IP核不同访问空间的地址分配
所述的FIFO单元4,该单元与Avalon总线接口1、地址解析单元3相连,用于对Avalon总线与IP核之间的图像像素数据缓冲,保证Avalon总线传输数据的连续性;
所述的控制寄存器单元5,该单元与Avalon总线接口1、地址解析单元3相连,用于接收来自Avalon总线的命令,对IP核工作进程和复位进行控制,以及对中断标志的清除。控制寄存器采用一个双端口RAM来实现,其存储空间大小为1个字节大小,读端口和写端口都是8位的数据端口,其中读端口采用时钟异步方式,写端口采用时钟同步方式。其中第0位是复位控制位,有效值是1,系统上电复位值是0,在必要的时候用户可以向该数据位写入1来对IP核进行复位;第1位是清中断控制位,有效值是1,系统上电复位值为0,通过对此位写1可以清除中断信号;第2位和第3位组合在一起为工作进程控制位,且第2位是低位,第3位是高位,系统上电复位为00,当此二位为01时,控制系统进入图像重心的计算,当此二位为10时,控制系统进入图像中心矩的计算,当此二位为11时,则开始当前的工作。
所述的状态寄存器单元6,该单元与状态机单元2相连,用于显示状态机单元2当前的工作状态,Avalon总线上的主设备可以通过读此寄存器来知道当前IP核的工作状态,由此来做出不同的操作。状态寄存器采用一个双端口的RAM实现,其存储空间大小为1个32位的字,读端口和写端口都是32位的数据端口,其中读端口采用时钟异步方式,写端口采用时钟同步方式。主要有两个状态,0x0000FFFF表示图像重心的计算完成,0xFFFF0000表示图像中心矩的计算完成。
所述的计算图像重心单元7,该单元与状态机单元2、FIFO单元4相连,用于接收FIFO单元2中的图像数据,在状态机单元2的控制下计算输入图像f(x,y)的重心(xc,yc)和输入图像f(x,y)的中心矩μ00,其中 x c = Σ x = 0 M - 1 ( Σ y = 0 N - 1 x × f ( x , y ) ) Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , y c = Σ x = 0 M - 1 ( Σ y = 0 N - 1 y × f ( x , y ) ) Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , μ 00 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , x是输入图像的行坐标,y是输入图像的列坐标,M是图像的行数,N是图像的列数,该计算图像重心单元7的结构如图3所示;
所述的计算图像中心矩单元8,该单元与状态机单元2、FIFO单元4、计算图像重心的单元4相连,用于接收FIFO单元4的图像数据和计算图像重心单元7的计算结果,在状态机单元2的控制下计算输入图像f(x,y)的(p,q)阶中心矩μpq,其中 μ pq = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( ( x - x c ) p ( y - y c ) q f ( x , y ) ) ) , (p,q)={(1,1),(2,0),(0,2),(2,1),(1,2),(0,3),(3,0)},x是图像的行坐标,y是图像的列坐标,M是图像的行数,N是图像的列数;该计算图像中心矩单元包括:核心模块81和7个浮点数模块82,其中,核心模块81,用于计算(p,q)阶中心矩μpq;7个浮点数模块82,与核心模块81相连,用于将图像中心矩计算核心模块81的计算结果转换成浮点数,以提供给Avalon总线主机进行高精度算法的处理。
所述的多路选择器单元9,该单元与地址解析单元3、状态寄存器单元6、计算图像重心的单元7、计算图像中心矩的单元8相连,用于根据地址解析单元3输出的不同地址选择Avalon总线上的主机要访问的地址空间。
参照图2,所述的状态机单元2中各模块的功能和进程切换关系如下:
初始化模块21,该模块负责对IP核的初始化,同时在IP核所有的工作都完成时等待主机读走数据,系统上电复位时该模块开始工作,根据控制寄存器单元5不同的输出,若控制寄存器单元5输出的命令是“准备计算图像重心”,则图像重心准备模块22开始工作,同时该初始化模块停止工作,若控制寄存器单元5输出的命令是“准备计算图像中心矩”,则计算图像中心矩准备模块25开始工作,同时该初始化模块停止工作,若控制寄存器单元5没有输出有效的命令,则状态机一直在该初始化模块中进行等待;
计算图像重心准备模块22,该模块负责初始化图像像素的坐标,复位计算图像重心单元7,并且等待控制寄存器单元5输出下一步工作的命令,若控制寄存器单元5输出“开始工作”,该模块停止工作,由计算图像重心开始模块23开始工作;
计算图像重心开始模块23,用于控制FIFO单元4向计算图像重心单元7传输图像数据,更新图像像素点的坐标,并控制计算图像重心的单元7开始对传来的数据进行图像重心的计算,若发现图像数据传输完成,则该模块停止工作,由计算图像重心完成模块24开始工作;
计算图像重心完成模块24,用于在计算图像重心单元7计算完成时,发起中断信号,并向状态寄存器单元6写入“当前已完成图像重心的计算”的状态,同时通知初始化模块21重新开始工作,该计算图像重心完成模块停止工作;
计算图像中心矩准备模块25,该模块负责初始化图像像素的坐标,复位计算图像中心矩单元8,并且等待控制寄存器单元5输出下一步工作的命令,若控制寄存器单元5输出“开始工作”,则该模块停止工作,由计算图像重心开始模块26开始工作;
计算图像中心矩开始模块26,用于控制FIFO单元4向计算图像中心矩的单元8传输图像数据,更新图像像素点的坐标,并控制计算图像中心矩的单元8开始对传来的数据进行图像中心矩的计算,若发现图像数据传输完成,则该模块停止工作,由计算图像重心完成模块27开始工作;
计算图像中心矩完成模块27,用于在计算图像中心矩的单元8计算完成时,发起中断信号,并向状态寄存器单元6写入“当前已完成图像中心矩的计算”的状态,同时通知初始化模块21重新开始工作,该计算图像中心矩完成模块停止工作。
参照图3,所述的计算图像重心的单元7包括乘累加模块71、除法器模块72和输出逻辑模块73,其中:
乘累加模块71,包括2个乘法器、3个加法器和3个D触发器,如图4所示。其中,乘法器用来计算输入数据的乘积(y×f(x,y))和(x×f(x,y)),其中,x是图像的行坐标,y是图像的列坐标,f(x,y)是图像在坐标(x,y)处的灰度值,加法器和D触发器组合在一起用于对乘法器的输出作乘累加运算,输出1为(0,1)阶矩m01,输出2为(1,0)阶矩m10,输出3为(0,0)阶矩m00,其中, m 01 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( y × f ( x , y ) ) ) , m 10 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( x × f ( x , y ) ) ) , m 00 = μ 00 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , M是图像的行数,N是图像的列数。
除法器模块72,该模块的输入端与乘累加模块71的输出对应连接,用于计算图像重心(xc,yc),其中
输出逻辑模块73,用于将乘累加模块71的输出m00转换成32位的单精度浮点数μ00,其中μ00为输入图像的(0,0)阶中心矩,该模块的输出即是计算图像重心的单元7的输出。
参照图5,本发明计算图像中心矩单元8中的核心模块81,包括3级流水线子模块811和7个并行的乘累加子模块812,其中:
3级流水线子模块811,用于计算当前像素点与图像重心的坐标偏移量(y-yc)3、(y-yc)2、((x-xc)×(y-yc)2)、((x-xc)×(y-yc))、((x-xc)2×(y-yc))、(x-xc)3、(x-xc)2,其中y是图像像素点的列坐标,xc是图像的重心的行坐标,yc是图像重心的列坐标,如图5所示,输出1是(y-yc)3,输出2是(y-yc)2,输出3是((x-xc)(y-yc)2),输出4是(x-xc)(y-yc),输出5是(x-xc)2(y-yc),输出6是(x-xc)2,输出7是(x-xc)3,该流水线子模块有利于减少关键路径的延时,提高系统的工作时钟频率,该模块的输入为核心模块81对应的输入,该模块的结构关系如图6所示;
7个并行的乘累加子模块812,其分别与3级流水线模块的输出对应相连,它的输出为核心模块81的输出,用于对3级流水线子模块811的输出进行乘累加运算。
参照图6,所述的3级流水线子模块811的结构关系如下:
第1级流水线,包括两组并行的减法器和D触发器,分别用来计算坐标偏移量x-xc和坐标偏移量y-yc,其中x是图像像素点的行坐标,y是图像像素点的列坐标,xc是图像重心的行坐标,yc是图像重心的列坐标;
第2级流水线,包括两组并行的乘法器和D触发器的组合以及两个并行的D触发器,其中两组并行的乘法器和D触发器分别用于计算坐标偏移量(y-yc)2和(x-xc)2另外两个并行的D触发器用于对第一级流水线的结果延时,进而保持{(x-xc),(y-yc)}与{(y-yc)2,(x-xc)2}的同步;
第3级流水线,包括5组并行的乘法器和D触发器的组合以及两个并行的D触发器,其中5组乘法器和D触发器的组合分别用于计算坐标偏移量(y-yc)3、((x-xc)(y-yc)2)、(x-xc)(y-yc)、(x-xc)2(y-yc)、(x-xc)3,两个并行的触发器用于对第二级流水线的结果进行延时,进而保持{(y-yc)2,(x-xc)2}与第三级流水线的计算结果同步,如图6所示,输出1是(y-yc)3,输出2是(y-yc)2,输出3是((x-xc)(y-yc)2),输出4是(x-xc)(y-yc),输出5是(x-xc)2(y-yc),输出6是(x-xc)2,输出7是(x-xc)3
以上仅为本发明的一个具体实例,不构成对本发明的任何限制,显然,在本发明的思想下可以做出不同的变更,但这些均在本发明的保护范围之列。

Claims (8)

1.一种基于FPGA的IP核,包含:
Avalon总线接口(1),用于IP核与Avalon总线时序的匹配;
状态机单元(2),用于控制IP核中FIFO单元(4)的读和写操作,控制计算图像重心单元(7)和计算图像中心矩单元(8)工作进程的开启与关闭并提供计算所需的图像像素点的坐标,同时向状态寄存器单元(6)写入当前的工作状态;
地址解析单元(3),该单元与Avalon总线接口(1)相连,用于对来自Avalon总线的地址和控制信号进行解译,协助Avalon总线上的主机对IP核中不同的地址空间进行访问;
FIFO单元(4),该单元与Avalon总线接口(1)、地址解析单元(3)相连,用于对Avalon总线与IP核之间的图像像素数据缓冲,保证Avalon总线传输数据的连续性;
控制寄存器单元(5),该单元与Avalon总线接口(1)、地址解析单元(3)相连,用于接收来自Avalon总线的命令,对IP核工作进程和复位进行控制,以及对中断标志的清除;
状态寄存器单元(6),该单元与状态机单元(2)相连,用于显示状态机单元(2)当前的工作状态;
计算图像重心单元(7),该单元与状态机单元(2)、FIFO单元(4)相连,用于接收FIFO单元(4)中的图像数据,在状态机单元(2)的控制下计算输入图像f(x,y)的重心(xc,yc)和输入图像f(x,y)的中心矩μ00,其中 y c = Σ x = 0 M - 1 ( Σ y = 0 N - 1 y × f ( x , y ) ) Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , μ 00 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 f ( x , y ) ) , x是输入图像的行坐标,y是输入图像的列坐标,M是图像的行数,N是图像的列数;
计算图像中心矩单元(8),该单元与状态机单元(2)、FIFO单元(4)、计算图像重心的单元(4)相连,用于接收FIFO单元(4)的图像数据和计算图像重心单元(7)的计算结果,在状态机单元(2)的控制下计算输入图像f(x,y)的(p,q)阶中心矩μpq,其中 μ p q = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( ( x - x c ) p ( y - y c ) q f ( x , y ) ) ) , (p,q)={(1,1),(2,0),(0,2),(2,1),(1,2),(0,3),(3,0)},x是图像的行坐标,y是图像的列坐标,M是图像的行数,N是图像的列数;
多路选择器单元(9),该单元与地址解析单元(3)、状态寄存器单元(6)、计算图像重心单元(7)、计算图像中心矩单元(8)相连,用于根据地址解析单元(3)输出的不同地址选择Avalon总线上的主机要访问的地址空间。
2.根据权利要求1所述的基于FPGA的IP核,其特征在于:所述的状态机单元(2),包括:
初始化模块(21),该模块负责对IP核的初始化,并根据控制寄存器单元(5)输出的命令通知计算图像重心准备模块(22)工作,或者通知计算图像中心矩准备模块(25)工作;
计算图像重心准备模块(22),该模块负责初始化图像像素的坐标,复位计算图像重心的单元(7),并且等待控制寄存器单元(5)输出下一步工作的命令,以通知计算图像重心开始模块(23)工作;
计算图像重心开始模块(23),用于控制FIFO单元(4)向计算图像重心单元(7)传输图像数据,更新图像像素点的坐标,并控制计算图像重心单元(7)开始对传来的数据进行图像重心的计算,在图像数据传输完成时通知计算图像重心完成模块(24)工作;
计算图像重心完成模块(24),用于在计算图像重心单元(7)计算完成时,发起中断信号,通知初始化模块(21)重新开始工作,并向状态寄存器单元(6)写入“当前已完成图像重心的计算”的状态;
计算图像中心矩准备模块(25),该模块负责初始化图像像素的坐标,复位计算图像中心矩单元(8),并且等待控制寄存器单元(5)输出下一步工作的命令,以通知计算图像中心矩开始模块(26)工作;
计算图像中心矩开始模块(26),用于控制FIFO单元(4)向计算图像中心矩单元(8)传输图像数据,更新图像像素点的坐标,并控制计算图像中心矩单元(8)开始对传来的数据进行图像中心矩的计算,在图像数据传输完成时通知计算图像中心矩完成模块(27)工作;
计算图像中心矩完成模块(27),用于在计算图像中心矩单元(8)计算完成时,发起中断信号,通知初始化模块(21)重新开始工作,并向状态寄存器单元(6)写入“当前已完成图像中心矩的计算”的状态。
3.根据权利要求1所述的基于FPGA的IP核,其特征在于:所述的控制寄存器单元(5)采用一个双端口随机访问存储器RAM来实现,存储空间大小为1个字节,读端口和写端口都是8位的数据端口,读端口采用时钟异步方式,写端口采用时钟同步方式。
4.根据权利要求1所述的基于FPGA的IP核,其特征在于:所述的状态寄存器单元(6)采用一个双端口的随机访问存储器RAM实现,存储空间大小为1个32位的字,读端口和写端口都是32位的数据端口,读端口采用时钟异步方式,写端口采用时钟同步方式。
5.根据权利要求1所述的基于FPGA的IP核,其特征在于:所述的计算图像重心的单元(7),包括:
乘累加模块(71),用于计算(0,0)阶矩(0,1)阶矩 m 01 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( y × f ( x , y ) ) ) , (1,0)阶矩 m 10 = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( x × f ( x , y ) ) ) , 其中,x是图像的行坐标,y是图像的列坐标,f(x,y)是图像在坐标(x,y)处的灰度值,M是图像的行数,N是图像的列数;
除法器模块(72),该模块的输入端与乘累加模块(71)的输出对应连接,用于计算图像重心(xc,yc),其中 x c = m 10 m 00 , y c = m 01 m 00 ;
输出逻辑模块(73),用于将乘累加模块(71)的输出m00转换成32位的单精度浮点数μ00,其中μ00为输入图像的(0,0)阶中心矩,该模块的输出即是计算图像重心单元(7)的输出。
6.根据权利要求1所述的基于FPGA的IP核,其特征在于,所述的计算图像中心矩的单元(8),包括:
核心模块(81),用于计算(p,q)阶中心矩μpq,其中 μ p q = Σ x = 0 M - 1 ( Σ y = 0 N - 1 ( ( x - x c ) p ( y - y c ) q f ( x , y ) ) ) , (p,q)={(1,1),(2,0),(0,2),(2,1),(1,2),(0,3),(3,0)},x是图像的行坐标,y是图像的列坐标,f(x,y)是图像在坐标(x,y)处的灰度值,M是图像的行数,N是图像的列数,该模块的输入为图像中心矩计算单元(8)的输入;
7个浮点数模块(82),该模块与计算图像中心矩的核心模块(81)相连,用于将图像中心矩计算核心模块(81)的计算结果转换成浮点数,以提供给Avalon总线主机进行高精度算法的处理。
7.根据权利要求6所述的基于FPGA的IP核,其特征在于,所述的核心模块(81),包括:
3级流水线子模块(811),用于计算当前像素点与图像重心的坐标偏移量(y-yc)3、(y-yc)2、((x-xc)×(y-yc)2)、((x-xc)×(y-yc))、((x-xc)2×(y-yc))、(x-xc)3、(x-xc)2,其中y是图像像素点的列坐标,xc是图像的重心的行坐标,yc是图像重心的列坐标,减少关键路径的延时,提高系统的工作时钟频率,该模块的输入为核心模块(81)对应的输入;
7个并行的乘累加子模块(812),其分别与3级流水线模块的输出对应相连,它的输出为核心模块(81)的输出,用于对3级流水线子模块(811)的输出进行乘累加运算。
8.根据权利要求7所述的基于FPGA的IP核,其特征在于,所述的3级流水线子模块(811)的结构关系如下:
第1级流水线,包括两组并行的减法器和D触发器,分别用来计算坐标偏移量x-xc和坐标偏移量y-yc,其中x是图像像素点的行坐标,y是图像像素点的列坐标,xc是图像重心的行坐标,yc是图像重心的列坐标;
第2级流水线,包括两组并行的乘法器和D触发器的组合以及两个并行的D触发器,其中两组并行的乘法器和D触发器分别用于计算坐标偏移量(y-yc)2和(x-xc)2,另外两个并行的D触发器用于对第一级流水线的结果延时,进而保持{(x-xc),(y-yc)}与{(y-yc)2,(x-xc)2}的同步;
第3级流水线,包括5组并行的乘法器和D触发器的组合以及两个并行的D触发器,其中5组乘法器和D触发器的组合分别用于计算坐标偏移量(y-yc)3、((x-xc)(y-yc)2)、(x-xc)(y-yc)、(x-xc)2(y-yc)、(x-xc)3,两个并行的触发器用于对第二级流水线的结果进行延时,进而保持((y-yc)2,(x-xc)2)与第三级流水线的计算结果同步。
CN201210560143.9A 2012-12-20 2012-12-20 基于fpga的ip核 Active CN103067706B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210560143.9A CN103067706B (zh) 2012-12-20 2012-12-20 基于fpga的ip核

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210560143.9A CN103067706B (zh) 2012-12-20 2012-12-20 基于fpga的ip核

Publications (2)

Publication Number Publication Date
CN103067706A CN103067706A (zh) 2013-04-24
CN103067706B true CN103067706B (zh) 2016-01-20

Family

ID=48110145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210560143.9A Active CN103067706B (zh) 2012-12-20 2012-12-20 基于fpga的ip核

Country Status (1)

Country Link
CN (1) CN103067706B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440219B (zh) * 2013-08-23 2016-06-08 上海航天测控通信研究所 一种通用总线转换桥ip核
CN104954024B (zh) * 2014-03-30 2019-04-05 江苏易格生物科技有限公司 基于fpga的σ-△adc控制信号同步方法
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
CN109828744B (zh) * 2019-01-18 2020-09-08 东北师范大学 一种基于fpga的可配置浮点向量乘法ip核
CN110928832A (zh) * 2019-10-09 2020-03-27 中山大学 异步流水线处理器电路、装置及数据处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299233A (zh) * 2008-04-08 2008-11-05 西安交通大学 基于fpga实现的运动目标识别与跟踪装置及方法
CN102222240A (zh) * 2011-06-29 2011-10-19 东南大学 一种基于DSmT的图像目标多特征融合识别方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012106419A1 (en) * 2011-02-03 2012-08-09 L3 Communications Corporation Graphics processing architecture for an fpga

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101299233A (zh) * 2008-04-08 2008-11-05 西安交通大学 基于fpga实现的运动目标识别与跟踪装置及方法
CN102222240A (zh) * 2011-06-29 2011-10-19 东南大学 一种基于DSmT的图像目标多特征融合识别方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于FPGA的高速多路视频数据采集系统;赵宏阳等;《单片机与嵌入式系统应用》;20120731(第7期);全文 *

Also Published As

Publication number Publication date
CN103067706A (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
CN103067706B (zh) 基于fpga的ip核
CN106250349A (zh) 一种高能效异构计算系统
CN101089840A (zh) 基于多fpga的矩阵乘法并行计算系统
CN104899167A (zh) 一种基于fpga的便携式高速数据采集方法
CN103984560A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN105446934A (zh) 一种基于多核dsp的动目标及恒虚警检测系统
CN103760525A (zh) 一种补齐式原地矩阵转置方法
Li et al. A hardware-efficient computing engine for FPGA-based deep convolutional neural network accelerator
Chang et al. Efficient hardware accelerators for the computation of Tchebichef moments
WO2021083101A1 (zh) 数据处理方法、装置及相关产品
Walczak et al. Optimization of real-time ultrasound PCIe data streaming and OpenCL processing for SAFT imaging
CN201773402U (zh) PC104 plus接口多通道高速同步数据采集系统
CN111260070B (zh) 运算方法、装置及相关产品
CN101794276B (zh) 适用于soc的dct_idct协处理器
CN205228473U (zh) 一种基于现场可编程门阵列的微型导航计算机
CN111382852B (zh) 数据处理装置、方法、芯片及电子设备
CN111382856B (zh) 数据处理装置、方法、芯片及电子设备
CN114661634A (zh) 数据缓存装置、方法、集成电路芯片、计算装置和板卡
CN206892323U (zh) 水声阵列信号处理平台
CN102073346A (zh) 一种通用阵列信号处理板
Zhang et al. ARM and FPGA heterogeneous accelerated processing system based on HLS and PCIe
CN111258641A (zh) 运算方法、装置及相关产品
WO2021037083A1 (zh) 用于处理数据的方法、装置以及相关产品
CN116662730B (zh) 一种基于FPGA的Cholesky分解计算加速系统
WO2022246617A1 (zh) 卷积运算方法、图像处理方法、装置和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant