原创 基于SOPC的高分辨率彩色数字相机的设计

2007-12-23 21:43 1972 4 4 分类: FPGA/CPLD
1  引 言

自20世纪下半叶以来,微电子技术得到了迅速的发展,可将原先由许多IC组成的电子系统集成在一个单片系统上,构成片上系统(System On Chip, SOC[5])。同时,电子系统的设计已经由通用的IC进行PCB板级的设计转向以大规模FPGA等物理载体的系统芯片设计,即可编程片上系统 (System On a Programmable Chip,SOPC[4])。SOPC设计是以IP(Intellectual Property Core)核为基础,硬件描述语言为主要设计手段,借助计算机平台的EDA工具进行的。

CMOS(Complementary Metal Oxide Semiconductor)在成像领域已有广阔应用。它利用全像素电荷转移和传感器模拟处理等技术克服了CMOS相比CCD在信噪比等方面的不足。其成 像芯片在每个像素基础上进行信号放大,可进行快速数据扫描,能胜任千万像素级别的信息处理速率。而且CMOS是标准工艺制程,可利用现有的半导体制造流水 线,不需额外投资生产设备,品质可随半导体技术的进步而提升。

当今数字相机越来越向高分辨率、小型化和低功耗的方向发展。本文提出的设计采用CMOS彩色高分辨率成像芯片,结合SOPC设计方法,设计实现了一套集图 像采集、存储和显示于一体的小型高分辨率彩色数字相机系统。该系统图像分辨率高,体积小,功耗低,可扩展性强,应用前景广阔。

本文结构如下:第二节概述SOPC技术,第三、四节分别介绍了该图像采集系统的硬件和软件架构,第五节阐述了系统的测试情况,最后对整个系统的设计进行总结。

2  SOPC概述

SOPC技术是由美国Altera公司最先提出的基于FPGA解决方案的SOC技术。它既有基于FPGA嵌入IP硬核[4]的SOPC系统,也有基于嵌入 式软核处理器[4]的解决方案。采用嵌入式的软核处理器,可以克服硬核固有的知识产权、外围器件复杂和系统难以定制等问题,故有更广泛的应用前景。目前比 较有代表性的软核嵌入式处理器有Altera公司的NiosII[1] 软核和Xilinx公司的MicroBlaze软核等。特别是Altera的NiosII软核,它是32位的RISC嵌入式软核CPU,最高速率可达 200DMIPS,它无论在对嵌入式操作系统的支持,还是FPGA的通用性发面都要优于Xilinx公司MicroBlaze软核。图1为NiosII软 核的体系结构。

qrs_072014d-1.jpg

NiosII软核采用Avalon Bus总线[3]接口,所有的外设接口与总线时钟同步;信号高低电平有效,便于高速传输;地址、数据和控制信号分离,最大可寻址4GB地址空间;可实现动 态地址对齐;支持多主设备,自动生成仲裁逻辑;用户可以配置和构建自己的指令集,也可为处理器设计各种加速器,以指令的形式加入到NiosII的指令系统 中成为一个专用设备。同时NiosII软核为开发者提供了强大的硬软件调试方式,用户可自己定制设备,使系统在硬件结构、功能特点和资源消耗方面都满足用 户自身的设计要求;所有设备可集成在任何一款Altera的FPGA中,没有芯片数量和型号的限制,集成度高,功耗低;
NiosII的SOPC开发过程分硬件和软件两个部分。硬件开发主要包括由用户定制系统硬件结构和由SOPC Builder和QuartusII工具生成硬件配置文件;软件开发和传统方式类似,分为HAL(Hardware Abstraction Layer)层驱动程序开发和应用系统开发,设计的源代码可通过NiosII IDE编译器生成可执行代码。最后硬件配置文件和可执行代码通过JTAG下载电缆下载到Altera的FPGA芯片中,完成系统的设计。

NiosII软核技术不仅给用户带来了完善的解决方案,而且设计的系统功能强大,结构简单,可扩展性强,集成度高,功耗低,开发简易。另外,NiosII 的软核是由Altera公司直接推出的非第三方产品,无需支付知识产权费用,开发成本低、周期快,应用场景广阔。

3 系统硬件框架

本文设计的系统以NiosII软核为核心处理器,附加片外的Flash和SDRAM构成最小系统。在此基础上,增加DMA控制器、自定制的图像采集模块、 图像显示模块和外围接口块(如IO、CF接口等),组成了一套完整的数字相机系统。图2为数字相机的硬件架构。

qrs_072014d-2.jpg

该系统的核心为Altera公司的NiosII 32-Bit嵌入式软核处理器。FLASH和SDRAM分别通过一个三态桥和SDRAM控制器与Avalon Bus总线连接。CMOS DMA、CMOS Controller和CF Peripheral等模块都直接挂接在总线上。

采集到的图像数据通过DMA传输到SDRAM中存储。DMA传输还负责将图像数据传送到VGA显示模块上。通过使用DMA进行大数据量的传输,可以不需要 CPU干预,大大提高了系统的工作效率。需要保存图像时可将其以文件的形式存储到CF卡中。以下将分别介绍系统中各模块的功能。

CMOS Chip采用的是OmniVision公司的OV2610[7]。它是一款2百万象素级别的高分辨率彩色数字CMOS成像芯片,可用于静态或动态图像的拍 摄。这款芯片的图像分辨率高,成像精度高,采集图像质量好,功耗低,非常适合作为数字相机的采集前端。表1为OV2610芯片的主要技术参数:

qrs_072014d-3.jpg

CMOS Controller:该模块是用VHDL语言在FPGA内部设计实现的图像采集控制器。其结构框图如图3所示。它由NiosII处理器控制,按照 CMOS成像芯片的控制逻辑,控制芯片的初始化、开始、停止、采集等操作。CMOS芯片的内部寄存器是通过SCCB[7]总线进行配置的。SCCB 总线是一个串行三线制总线,类似于I2C总线,由SCCB Enable、SCL和SDA构成。本系统通过三个IO口(总线选通信号SCCB Enable,总线时钟SCL和数据线SDA)实现了对SCCB总线的读/写操作。

同时CMOS Controller也是图像信号的数据通道。由于Avalon Bus总线和CMOS芯片之间的时序并不匹配,故设计了一级缓存实现了CMOS接口和Avalon Bus总线接口间的时序匹配。CMOS成像芯片采集到的图像数据在控制模块的控制下,通过DMA传输,将其从Buffer中传输到SDRAM中。

qrs_072014d-4.jpg

VGA Controller:存储在SDRAM中的图像数据可通过该模块显示在VGA显示器上。VGA Controller结构框图如图4所示。同样为了匹配Avalon Bus的总线时序,在该模块中运用了一级Buffer缓存。在NiosII初始化VGA Controller模块和VGA DMA传输后,VGA DMA即将图像数据从SDRAM中读到VGA Controller的缓存中。VGA时序发生器则负责将数据从缓存中读出,并按照640×480的分辨率同步图像数据的行、场同步信号,并将其一起传送 到D/A转换模块上,接上VGA显示器即可直接显示数字图像。

qrs_072014d-5.jpg

CF Periphreal:由于CF(Compact Flash)卡具有寿命长、容量大、体积小等优点,而且读写速度快,可与多种电脑操作系统平台兼容,因此本系统选择CF卡作为图像存储介质。CF Peripheral模块是一个用Verilog HDL编写的 CF 卡接口模块,它实现了NiosII软核和CF卡间的通信。该模块通过地址空间映射和CPLD的组合逻辑产生读/写控制信号,从而实现了对CF卡的读/写操作。

此外,系统还提供按键控制和显示器菜单控制两种用户交互方式。
4 系统软件框架

数字相机系统的硬件结构实现了系统物理层的数据和控制信号通道。在此基础上,通过对NiosII软核进行驱动程序和应用程序的开发,实现整个系统的设计。以下主要讲述数字图像采集驱动程序的设计方法。

首先,对系统进行初始化操作,包括系统复位,寄存器配置,内存分配和DMA的初始化等工作。

由于用3个IO口实现了SCCB总线的操作,故在驱动程序中按照SCCB总线的协议编写了总线读写的驱动代码,该驱动程序完成了对CMOS内部寄存器的读写配置。

随后,初始化DMA控制器和DMA中断[2],同时在SDRAM中分配一块内存用以存放一帧图像。由于OV2610采集的图像每个象素点是10 bit,故需用2 字节存储一个象素,存储一帧UXGA图像就需1600×1200×2 字节。

完成初始化操作之后即启动图像采集。当CMOS Controller的Buffer中每存完一行图像数据时就会产生一个中断信号,唤醒DMA传输,DMA将该行图像数据从Buffer传输到SDRAM 中。一行传完之后DMA停止传输,并等待CMOS Controller下一次中断的到来。如此循环反复直至存完一整帧图像。

完成图像的采集后可将其输出在VGA监视器上。首先初始化VGA DMA和VGA时序发生器。与存储时的DMA传输类似,VGA DMA是将大小为640×480的图像数据从SDRAM中传送到VGA Controller中的Buffer中。VGA时序发生器是一个硬件模块,对它初始化后无需操作,它会自动从Buffer中读取图像数据,同步图像数据 的行、场同步等信号,并将其一并送到D/A模块上,最终在VGA监视器上显示图像。

同时可将图像存储到CF卡中。几乎所有的操作系统都支持FAT16文件系统[8],并且它可支持2GB容量的磁盘驱动器,因此本系统中采用FAT16文件系统存储图像数据,保存数据的格式则选择BMP文件格式。

FAT16文件系统的实现主要依靠一个重要的数据结构-文件目录表(File Directory Table, FDT),它保存了文件系统下文件的所有属性信息。知道FDT所在扇区及扇区偏移后就可以打开相应的扇区读出FDT,并转换成各个文件信息。

创建BMP图像文件时,首先建立一个FDT表保存在文件夹相应的扇区内,然后在FAT表中分配一块存储区(起始簇号)作为文件的数据区。写文件时首先将 BMP文件的文件头写入到文件数据区中,然后按照BMP文件的格式将原始图像数据写入文件数据区中。当文件数据超过一簇时由FAT表继续分配一簇的存储 区,由上一簇链接到该簇,直到完成整个文件的存储。图5为数字相机的工作流程图。

qrs_072014d-6.jpg

5  系统测试

系统的测试平台为Altera的Cyclone 1C20开发板,CMOS芯片采集子板,VGA视频输出子板(带D/A模块)和16M的CF卡。FPGA部分的硬件设计在QuartusII 5.0上实现,软件设计则在NiosII IDE 5.0上开发完成,最后通过JTAG电缆将代码下载到FPGA中。

全部系统设计并编译完成之后占用约4800个逻辑单元(Logic Element),静态功耗约为100mW。由于为了实现文件系统的管理,实现了FAT16文件系统的存储,CF卡的写速度约为160KB/s。

系统通过按键或菜单选择的方式实现系统的启动/停止,采集,存储和显示等控制。同时为了降低对成像镜头的需求,采集图像时采用CMOS芯片的自动曝光工作 模式。系统最终能够稳定的采集图像,图像大小为1600×1200,速率为10fps。工作稳定,能够在VGA监视器上清晰的看到采集得到的图像,同时在 CF卡上用FAT16文件系统,以BMP的格式保存下了拍摄的数字图像,实现并完成了数字相机系统的设计和测试。

6  结 论

本文提出的基于SOPC的高分辨率数字相机设计方法结构简单,功能全面,通用性和扩展性强,集成度高,功耗低。同时,由于本文设计的系统采用基于SOPC的设计方法,可利用FPGA强大的信号处理能力和接口扩展能力,在不增加任何硬件的基础上添加如H.264编解码器、图像信号处理等功能模块,实现各种特殊的功能,故其有很广阔的应用前景。

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条