基于ADV212的图像压缩系统设计与实现

更新时间:2024-04-01 作者:用户投稿原创标记本站原创 点赞:16305 浏览:70582

摘 要:本文在分析了单片JPEG2000压缩标准的专用编解码芯片ADV212的硬件结构和工作原理的基础上,实现了基于ADV212的图像压缩系统的硬件设计和FPGA逻辑设计.其中,该系统的数据输入接口采用LVDS,数据输出接口采用USB,FPGA主要实现对压缩芯片ADV212寄存器的配置,整个系统的数据流控制以及系统时序逻辑适配.实验结果表明,该系统满足系统对图像压缩实时性的要求,同时,重构后的图像与原始图像进行相比,具有较高的峰值信噪比(PSNR).

关 键 词 :图像压缩 ADV212 JPEG2000 FPGA

中图分类号:TN919 文献标识码:A 文章编号:1674-098X(2013)04(b)-0152-03

近年来,图像在航空航天领域的应用越来越普遍.众所周知,图像信息具有数据海量性的特点,在特定的环境下,受传输时间、存储空间和信道带宽的影响,携带大量数据的图像信息很难被快速的传输或存储,这成为图像信息处理发展的主要瓶颈之一.因此,研究有效的图像编码技术,以压缩的形式存储或传输,并且保证被压缩的图像重构后能被接受,这样就解决了在遥感等某些重要领域图像的快速存储和传输问题.

1.基于ADV212图像压缩系统设计

本文中的方案采用“FPGA+ADV212”的架构,用硬件电路实现系统中图像压缩子系统,该系统的结构框图如图1所示.FPGA逻辑设计主要实现对ADV212芯片的配置、整个系统的数据流控制以及系统时序逻辑适配,同时,系统中还有一些电源转换模块、存储模块、输入输出模块、USB模块以及显示模块.与传统的设计方法相比较,该方法具有开发周期短、设计效率高、扩展性和升级性好、设计灵活等特点.


1.1 ADV212硬件结构及工作原理

ADV212是AD公司推出的一款单片JPEG2000编解码芯片,是当今市场上少有的具有实时压缩和解压缩标准视频信号和高清晰度视频信号功能的芯片.该芯片适用于多种视频和静止图像格式.ADV212的内部功能框图如图2所示,该芯片主要由像素接口、小波变换引擎、熵编、嵌入式处理器、存储器系统和内部DMA引擎等组成.输入图像和像素数据输入像素接口,采样值则经过隔行扫描传输到小波变换引擎中.在小波引擎中,每个图块或帧将通过5/3或9/7滤波器分解成许多子带.生成的小波系数写入内部寄存器中.熵编将图像数据编码为符合JPEG2000标准的数据.内部DMA引擎提供存储器之间的高带宽传输及各模块和存储器之间的高性能传输.RISC处理器具有每一个程序和数据存储器、中断控制器、标准总线接口及定时器计数器所对应的ROM和RAM.

1.2 ADV212压缩芯片的初始化流程及关键寄存器说明

在本系统中,通过FPGA内嵌NIOSII软核实现对JPEG2000压缩芯片ADV212的初始化,初始化的过程包括直接寄存器的配置、间接寄存器的配置以及固件的加载,其中,配置所需的ADV212 RISC固件存储在NIOS II外部存储总线的FLASH芯片上.对于本系统中压缩芯片设置为HIPI 模式,其初始化的具体流程如图3所示.系统上电后,先进行上电复位(BOOT等于0x008A),然后配置内部锁相环(PLL),至少等待20us锁相环配置成功后,设置No-Boot Host模式(BOOT等于0x008A),配置主机接口访问方式(BMODE等于0x000A,这里主要设置主机控制数据宽度和DMA数据宽度)和间接寄存器的访问方式(MMODE等于0x000A,这里主要设置数据存取位数和间接地址步长大小),然后NIOS II软核将存储在片外FLASH中大小为32KB的固件读出并且写入ADV212中0x57F00~0x57FF0存储空间上,软复位(BOOT等于0x008D),重新设置BUODE和MMODE,再设置编码参数(包括图像格式、精度、小波变换级数、小波类型、编码块的大小、压缩比、量化步长、输出码流格式等),配置间接寄存器(行列计数器、F0_START、F1_START、V0_START、V1_START、V0_END、V1_END、PIXEL_START、PIXEL_END、PMODE2、VMODE、DMA等),配置完这些寄存器后使能中断,查询固件是否正确加载(SWFLAG等于0XFF82),如果固件被正确加载,清标志(EIRQFLAG等于0xFFFF)后就可以进行编码了,否则继续查询.

1.3 ADV212压缩的时序控制模块

ADV212压缩的时序控制是通过管脚DACK,DREQ,WE,RD,HDATA,按照握手协议进行读写的时序控制.模块DMA_burst_write和模块DMA_burst_read是ADV212压缩的时序控制模块.此程序中,ADV212的压缩模式为HIPI模式,数据通过HDATA接口利用DMA模式输入和输出ADV212.

DMA_burst_write模块的顶层设计如图4所示,此模块是数据写入到HDATA的时序控制.DMA_burst_read模块的顶层设计如图5所示,此模块是外部从ADV212的HDATA接口读出数据的时序控制.

DMA模式的读写时序为ADV212发出请求DREQ,外部产生应答QACK和读或者写信号.如图6所示为DMA_burst_write模块在线时序仿真,当dreq0_adv212变为低电平时,表明此时压缩芯片ADV212请求输入未压缩的图像数据.当dack0_adv212出现一个低脉冲信号时,此时写入未压缩的图像数据.由图6可知,每出现一个读脉冲信号adv212_we,都会写入一个32位的未压缩的图像数据,否则继续等待dack0_adv212信号变低.

如图7所示为DMA_burst_read模块在线时序仿真,当dreq1_adv212变为低电平时,表明此时压缩芯片ADV212请求输出压缩后的图像数据.当压缩完成,dack1_adv212会出现一个低脉冲信号,此时响应输出压缩后的图像数据.由图7可知,每出现一个读脉冲信号adv212_rd,都会读出一个32位的压缩数据,否则不输出,继续等待dack1_adv212信号变低.当LCODE信号出现一个高脉冲信号时,在HDATA总线上可以看到帧结束标志0xFFD9,表明此时一帧图像压缩结束. 1.4 NIOSⅡ软核接口

基于ADV212的图像压缩系统的NIOSⅡ系统模块包括FPGA、存储器和外设接口三部分.

FPGA部分的设计是建立在FPGA芯片内部的,核心是NIOSⅡ嵌入式CPU模块,与一般的嵌入式系统开发不同,当SOPC设计需要新的外设模块时,不需要在PCB上加入相应的外设芯片,在FPGA芯片内部加入相应的外设模块,并通过在片上的Avalon总线与NIOSⅡ CPU相连即可.

存储器部分的设计有作为代码运行和变量交换的空间的片上RAM;有用于将程序固化EPCS;还有FLASH控制器,控制NIOSⅡ CPU对Flash的读写,Flash中事先写入了ADV212的配置数据.

另外还有ADV212控制器用于控制NIOSⅡ CPU对ADV212寄存器的读写,从而配置ADV212;SYSID是一个简单的只读设备,它作为SOPC Builder系统提供唯一的标识符;Avalon三态总线桥用来连接NIOSⅡ CPU与SDRAM、Flash.

2.测试实验结果

为了验证该图像压缩系统的效果,将一副512*512的灰度图输入至压缩芯片ADV212,如图8所示为原始图像,按10:1的压缩比,不可逆的5级定点97小波变换将此图像压缩成JP2格式,然后利用开源软件kakadu.exe进行重构,如图9所示为重构后的图像,比对图8和图9的区别,用肉眼几乎很难看出差异,所以,我们只能用数学统计的方法定量的计算图像的峰值信噪比和实时性等评价压缩质量的指标,以此来验证该图像压缩系统的效果.

其中,和分别表示原始图像和重构图像坐标为(i,j)处的像素幅值.表示原始图像中可能取的最大值.由公式1和公式2计算可知,压缩后重构图像和原始图像的峰值信噪比计算结果如表1所示.

实时性测试:通过软件测试,将原始图像coffee输入到ADV212的HDATA数据总线上,从输入图像开始计时,到从HDATA数据总线读出压缩后的图像信息,时间小于0.1ms,满足系统对于图像压缩实时性的要求.

3.结语

通过对JPEG2000压缩标准的专用编解码芯片ADV212的硬件结构与工作原理的学习,让我们深入了解了JPEG2000压缩编码的实现流程,在此基础上开发了基于ADV212的图像压缩系统,为今后在FPGA上开发更高效的JPEG2000算法夯实了基础.实验表明,该图像压缩系统满足系统对于图像压缩的实时性和峰值信噪比的要求.

相关论文范文