基于Nios的数字图像处理

(整期优先)网络出版时间:2010-04-14
/ 3

基于Nios的数字图像处理

马毛粉1,李平惠2

马毛粉1,李平惠2

(1、南阳师范学院物理与电子工程学院,河南南阳473061;2、南阳市高级技工学校,河南南阳473000)

摘要:本文是以Nios软核CPU为核心处理器,在FPGA中构建SOPC,实现原来主要由DSP器件才能完成的图像处理功能。系统采用软核CPU、DSP软模块、FPGA以及数字视频技术。从数字摄像头输入视频信号,送到FPGA中对数字图像信号进行处理,最后,在工业VGA显示器上显示图像。

关键词:Nios;图像采集;采集控制;图像处理

中图分类号:TP751文献标识码:A文章编号:1007-9599(2010)04-0000-02

DigitalImageProcessingBasedOnNios

MaMaofen1,LiPinghui2

(1.Physical&ElectronicEngineeringCollege,NanyangNormalUniversity,NanYang473061,Chian;2.AdvancedTechnicalSchool,Nanyang473000,China)

Abstract:ThethesisconstructSOPCsysteminFPGAbasedonNIOSsoftcoreCPUtorealizetheimageprocessingwhichonlycouldbefinishedbyDSPdevice.ThissystemadoptsthetechnologyincludingsoftcoreCPU,softcoreofDSP,FPGAanddigitalvideo.Theimagesignalcomesfromadigitalcamera,thensenttoFPGAanddealwithdigitalimagesignal.ItisdisplayedonindustryVGAmonitoratlast.

Keywords:Nios;Imagecollects;Collectioncontrol;Imageprocessing

一、概述

Nios嵌入式处理器是FPGA生产厂商Altera推出的软核(SoftCore)CPU,是一种面向用户,可以灵活定制的通用RISC(精简指令集架构)嵌入式CPU。Nios以软核的方式提供给用户,并且为在Altera的FPGA上实现作了优化,用于SOPC(片上可编程系统),最后在FPGA上实现。通俗地讲Nios是一个可由用户定义外围电路的处理器,硬件上相当于集成于FPGA中的一个IP核,SOPC是对其开发的软件环境,可以用C语言编程,而FPGA其他资源可以通过编程(VHDL/VerilogHDL/AHDL/Perl)实现其外围电路。

Nios具有在FPGA上实现一系列不同于普通嵌入式CPU系统的特性,它的外设可以灵活选择或增删、自定制用户逻辑外设、允许用户定制自己的指令集,设计者可以使用Nios加上外部的Flash、Sram等来构成一个嵌入式处理器系统。简单地说只要设计者遵循Nios的总线协议(Avalon)规范,编写出Nios外部器件或算法模块所对应的程序(IP),就可以集成到SOPC中,形成一个Nios系统。

SOPC_Builder是Altera公司专门为硬件设计人员开发的一套系统设计工具,通过它可以创建NiosCPU设计项目,从而为设计人员提供SOPC设计必需的软硬件设计平台,利用SOPC_Builder创建Nios系统。当用户使用SOPC_Builder创建一个新的Nios系统时,SOPC_Builder会为该系统自动生成一个后缀为PTF的文件,所有的系统设计信息都存储在该PTF文件中。当使用SOPC_Builder重新打开一个已有的系统时,SOPC_Builder会从并且只会从该PTF文件中读取系统具体设计信息。SOPC_Builder可以帮助设计者从IP库中寻找合适的IP并很快地集成一个系统,它采用图形用户界面(GUI)显示和组织IP模块,能够自动生成IP模块互连逻辑,并生成用于综合和模拟的文件,使设计者不需要考虑IP模块间的内部联系,可以轻松地完成整个系统设计。图1是采用niosCPU的系统框图。

图1采用NiosCPU的系统图

二、系统结构

鉴于Nios的功能特点,系统的图像处理和时序控制均使用高性价比的FPGA芯片APEX-EP20K200E完成。该芯片有52个ESB块,总RAM位数为106496Bit,以Nios为核心处理器,构成SOPC。系统处理的图像是彩色图像,它是通过CMOS摄像头采集的8位差分信号的彩色图像,经过FPGA的处理后,再经过VGA控制器模块转换形成图像显示。所以,在FPGA运算过程中可以使用8位数据,其灰度级为0到255之间。图像视场大小为:640×480,即每行有480个像素,共有640行,视场内共有307200个像素数据。

系统工作过程如下:CMOS摄像头对外界景物摄像,输出8位数字信号。图像数据经过锁存之后进入外扩Sram进行存储,等待FPGA进行处理。FPGA处理完成后,图像信号进入VGA控制器模块转换,然后送到VGA显示器进行显示.系统使用JTAG边界扫描方式下载。

图2系统结构框图

三、IP设计

该部分IP设计分为六个模块:图像采集模块、采集控制模块、图像存储模块、图像处理模块、VGA控制器模块、系统应用程序。

(一)图像采集模块

该模块选用OmniVision公司的OV7649摄像头作为图像采集设备。OV7649是30万像素的CMOS数字摄像头,体积小,价格便宜。OV7649具有丰富的编程控制功能,其图像帧频、曝光时间、增益控制、伽马校正等均可通过对芯片内部寄存器的读写进行设置。OV7649通过SCCB(遵循IIC协议)串行接口对芯片内部寄存器进行读写设置,进行初始化。以确定采集图像的开窗位置、开窗大小、彩色(黑白)工作模式等等。因此需要模拟IIC编写对应的摄像头控制IP。

(二)图像存储模块

该模块选用IDT71V424(512Kbit)。在Nios开发板上配有256Kbit的Sram(IDT71V016),因为每帧的图像容量大于256Kbit,所以需要外扩Sram。因为OV7649的输出数据是8位数据宽度,所以Sram选用了与OV7649数据宽度相同的IDT71V424,作为存储图像的缓冲区,共使用了两块,用来实现乒乓交换。因为该Sram是外部设备,所以要给它编写接口程序,使其与Nios通讯。在SOPC_Builer中有IDT71V016的免费IP,对其进行修改就可写出控制IDT71V424的IP,并将其集成到SOPC_Builder中。

(三)采集控制模块

根据图像信号中含有行同步(vsync)、场同步(href)、像素时钟(pclk)等信号,并配合Sram的工作时序及控制信号we、oe、cs等,利用FPGA的资源用VHDL语言编写了图像采集控制模块,对图像数据进行时序控制。使两块Sram能够轮流工作,即当一块Sram正在存储图像数据时,另一块Sram内的图像数据被FPGA读取。

(四)图像处理模块

图像处理的算法只使用了初级处理算法:

1.FIR滤波:FIR滤波器是在DSP_Builder中搭建的,使用Matlab和DSP_Builder这两个工具来设计一个16阶的Fir滤波器,首先设计一个4阶的Fir滤波器,再以该4阶Fir滤波器为基础,设计16阶Fir滤波器。使用DSP_Builder可以方便地在图形化环境中设计Fir滤波器,而滤波器系数的计算可以借助Matlab强大的计算能力和现成的滤波器设计工具来完成。滤波器设计成功后,经仿真验证正确,利用SignalCompiler将其转化为VHDL语言,再次编译仿真正确后,即可下载到FPGA中。

2.中值滤波:中值滤波则是用VHDL语言编写。在本文中,采用二维中值滤波来消除图像中的噪声。因为二维图像中窗口内的各点,在RAM中并不是连续存放的,从RAM中读取数据时必须分行读取;如果采用直接排序取中值,只能进行顺序处理,需要较多时间,可以采用并行处理算法提取窗口内各点的中值。本文中采用3×3窗口,对象素进行并行处理,经比较,在相同时钟的情况下,此算法所用时间大约是直接排序所用时间的四分之一。

(五)VGA控制器模块

因为在FPGA中处理的图像信号是数字信号,而VGA显示器接收的是模拟信号,这就需要AD转换器进行DA转换,为了降低成本及电路复杂度,设计中决定不使用AD转换器。而且显示器的扫描是顺序的,下一个扫描点是可以预知的,完全可以把需要送出的像素信息排成一行,顺序送出,可以把它想像成一个数据流(Streaming)。于是可以实现一个Avalon流模式的VGA控制器,利用DMA控制器在流模式VGA控制器和Sram之间建立一个DMA传送通道,让硬件来完成像素信息的自动读取,而NiosCPU可以仅仅通过操作Sram中对应的区块完成VGA图像的更新。

(六)统应用程序模块

因为以上5个模块是接口程序,主要是为了与Nios通讯,为了让这5个模块能够协调工作,所以需要编写一个系统应用程序,控制各个模块的工作,这个应用程序是用C语言编写的。图3是系统IP构成图

图3系统IP构成图

四、结束语

本设计采用Nios软核处理器来进行图像处理,经过实验验证,在FPGA中是可以实现对图像信号的处理,达到了设计的目的,系统具有小型化、集成化而且实时性好的特点,符合当今流行的SOPC(SystemOnProgrammableChip,片上可编程系统)思想。

参考文献:

[1]Altera,Corp.“NiosSoftwareDevelopmentTutorial”

[2]Altera,Corp.“DSPBuilderReferenceManual”

[3]Omnivision,Corp.“OmniVisionSerialCameraControlBus(SCCB)FunctionalSpecificationDocumentVersion:2.1”

[4]Altera,Corp.“QuartusIIHandbook”

[5]潘松等.SOPC实用技术教程.北京:清华大学出版社,2005

[6]刘宏杰.基于FPGA的iiC总线接口及其控制技术研究,中国工程物理研究院,硕士论文,2001,5

[7]宋千.基于FPGA的FIR滤波器高效实现.信号处理,2001,10

[8]朱鹏飞.视频图像捕获系统SRAM控制器的FPGA实现.半导体技术,2002,6