2 PNG解码的软硬件协调机制
整个PNG硬件解码过程都是由软件来调度的,在硬件解码中若校验到图片数据出错或解码完成时,则PNG硬件模块通过配置专门的寄存器给软件检查做中断处理;当软件检测到这个寄存器信号使能时就产生中断,就能即使关闭PNG硬件解码模块,在数据有误的情况下节省了硬件解码的功耗。
解码前后数据的搬运机制是通过公用的AVI模块(相当于FIF0实现输入输出数据的缓存)实现了PNG数据的搬运:解码前,软件通过调配AVI模块从内存中搬取压缩数据给PNG硬件模块做解码;解码后的数据经过Resize模块缩放后又可以利用AVI搬运给VGA做显示,这种较优的软件调配机制,解决了该设计的软硬件协调问题,可以在节省功耗的前提下实现高效率的解码,具体的软件硬件协调原理如图2所示。
3 PNG解码的总体硬件结构
PNG硬件解码加速的整体结构主要由Bytesshift字符容器、PNG头信息处理模块、Inflate table建Huffman表模块、Inflate fast快速解码模块、Lz77寻找匹配串模块、Filter反滤波反交织模块和Resize放大缩小模块7大模块组成。具体PNG解码的硬件流程图如图3所示。
如图3可见,PNG解码的基本流程为:通过AVI模块从总线上搬取压缩数据到Bytesshift字符容器进行缓存,并转换为压缩比特流;通过PNG头信息处理模块保留下文件的头信息,通过控制Inflate table模块读取码长信息来建立Huffman表,并对压缩数据进行解码;解码后的数据经过Filter模块进行反滤波和反交织等处理,然后发给Resize模块做放大缩小处理后,并通过AVI模块将最终解码后的数据传输出去。其中,解码核心模块和Filter模块通过采用了数据的流水线处理方式,也极大地提高了.PNG的解码效率。