LEON3处理器动态图像边缘检测的SoC设计
摘要:针对LEON3开源软核处理器具有高性能,高可靠性等特征,构建了一个基于LEON3的动态图像边缘检测SoC。文中采用局部熵边缘检测算法,将图像采集,边缘检测和图像显示三个部分封装设计为IP核,通过APB总线嵌入到LEON3的经典SoC架构中。与利用微控制器或DSP实现的动态图像边缘检测系统相比.基于LEON3的动态图像边缘检测SoC能够充分发挥硬件设计的高速性和灵活性,并且系统具有很好的可移植性与可配置性,占用资源少,速度快,具有良好的应用前景。
引言
本文采用局部熵边缘检测算法,将图像采集,边缘检测和图像显示三个部分封装设计为IP(Intellectual Property)核,通过AMBA APB总线嵌入到LEON3的经典SoC架构中。实现了多路数据并行处理和DSP模块加速处理,配合CPU软核的协调参数配置功能,可以充分发挥硬件设计的高速性和灵活性。此外,由于动态图像边缘检测是图像处理应用中必不可少的一部分,因此文中设计的动态图像边缘检测SoC可以方便的移植到其他图像处理应用中,具有广泛的应用前景。
1 SoC和LEON3开源软核处理器
SoC是系统级芯片的简称,系统不仅包含了处理器内核、存储器等硬件系统,同时还含有相应的嵌入式软件,是一个真正的软、硬件均具备的完整体系。利用SoC设计方法,可以将一个复杂的系统集成到单一芯片中,并具有低功耗,低成本及高速性的特点。与利用ASIC实现的
SoC相比,利用FPGA实现的SoC具有可配置性的特点,因此具有更好的可扩展性和可移植性。
LEON3开源软核处理器是Gaisler Research公司提出的一款32位、符合SPARC V8结构的开源软核处理器。它具有高性能,低复杂性和低功耗的优点。另外,所有属于GRLIB的IP核及LEON3处理器的源代码在GNU GPL(GNU General Public License,GNU通用公共许可证)授权协议下,可以免费地应用于研究和教学目的,因此,LEON3开源软核处理器特别适合于SoC的开发设计。
2 SoC系统架构设计
通过分析系统的功能与要求,结合LEON3自身架构的特点,设计基于APB总线的动态图像边缘检测Soc系统架构如图1所示。自定义IP核为本设计的重点。在LEON3的SoC架构中,APB外围低速总线为一些低速模块提供了接口。若想要在APB总线实现动态图像的实时采集、处理和显示,就要想办法使采集到的数据不参与到总线传输中去。
在本设计中,通过采用片上存储资源做FIFO的办法,使得摄像头采集到的数据得以缓存,最终在显示器上显示。在数据输出显示之前,可以选择是否经过图像边缘检测算法模块处理。若经过模块,则显示图像经过边缘检测后的结果;若不经过,则显示原始图像。
通过这种方法,避免大量图像数据参与AHB与APB总线之间的数据传输,以减少不必要的中间过程,提高数据的实时性。这样就避免了APB总线低速、低带宽与动态图像边缘检测系统高速、高带宽的矛盾。使得整个图像的数据流都在白定义IP核内部得到处理,这样既满足了APB总线的约束也实现了系统的功能需求。
3 动态图像边缘检测SoC的实现
本设计提出了一种集图像采集、存储、处理和显示于一个IP核的设计方法,也是动态图像边缘检测SoC设计的核心部分。
3.1 局部熵算法的硬件实现
局部熵边缘检测算法的基本思想是:选择待处理像素点的8邻域,即以待处理像素点为中心的3×3窗口;再由局部熵的定义式(公式1)计算出图像3×3窗口的局部熵;
然后通过与给定的阈值进行比较,得到二值化图像,即可得出图像的边缘。硬件实现的处理过程为流水线方式,处理的对象为3×3大小的图像窗口。具体步骤如下:
①3×3窗口的产生。3×3窗口主要通过片上缓存和延时单元实现。图2是以经过3个时钟为例说明了同步产生3×3窗口中一行数据的过程。
②熵值的计算。将步骤1中得到的3×3窗口的9个并行数据途经两路进行处理。对于3×3窗口,式(1)化简为式(2):
3×3窗口的9路并行数据,一边送去做并行相加求和,再求平方,作为除法运算的分母;同时把9个数据分别求平方,再求合,作为除法运算的分子。在做除法运算前,为确保其计算精度,要先将分子与分母转换成IEEE-745浮点数后再进行浮点除法运算。最后还要把除法运算的结算转换成整数,考虑到除法运算的结果可能小于1,于是在转换整数前放大1000倍,即保留3位有小数有效位,最后将转换后的整数输出,至此实现了局部熵值的计算过程。局部熵值计算的硬件处理流程如图3所示:
③阈值比较及二值化处理。②中已经得到了放大1000倍后的熵值,在这里只需通过一个比较电路,当熵值大于阈值时,输出0;当熵值小于阈值时,输出1。这样就
动态图像边缘检测 局部熵算法 IP LEON3 SOC 相关文章:
- 分析内核初始化时根内存盘的加载过程(init/main.c)(11-12)
- 一种动态网络负载平衡集群的实践方法(04-16)
- 如何在Linux系统下配置Java开发环境(04-15)
- 嵌入式Linux发展 谈Montavista Linux(04-15)
- 利用MLD自动化操作系统移植降低 Linux成本(05-04)
- 可扩展的嵌入式网络平台(07-07)