JPEG2000中嵌入式块编码的FPGA设计

技术分类: 可编程器件  | 2007-04-18
来源:电子技术应用 | 作者: 汪 浩 罗伟栋

       显然,交错存储方案更有效,只是它需要在硬件电路上付出一些代价。首先,在预处理小波数据时,必须将符号位按照上述交错方式写入内部RAM,这比处理幅度位复杂一些。其次,在编码过程中,需要读取数据至内部6×4显著或符号寄存器,而对于奇、偶数编码带,其读入顺序也是交错的,对于前者是a、b、c,对于后者则是c、b、a;而且读取三块内存区域的地址信号也是不同步的,如表1所示,读取存储器b的地址信号始终增长,而读取存储器a和b的地址信号则符号以下规律:前者在从奇编码带过到偶编码带时地址增加,而在从偶编码带过渡到奇编码带时地址保持不变;手者正好相反。

  表1 32×32码块编码过程中,处于各个编码带下读取内部缓存abc的相应地址信号

                                                                                 c

  a          b         c 
1  0~31  0~31  0~31 
2  32~63  32~63  0~31 
3  32~63  64~95  32~63 
4  64~95  96~127  32~63 
5  64~95  128~159  64~95 
6  96~127  160~191  64~95 
7  96~127  192~223  96~127 
8  128~159  224~255  96~127 

  因此,必须设计相应的控制电路满足上述要求,尽管这样做付出了额外的代价,但却大大提高了存储器的读写效率(提高了50%),这对于需要频繁访问存储器的位平面编码来说是很宝贵的;另外,采用了交错存储方式,可以对三块存储区域独立地产生地址信号,一次性读取6bit,而在常规的存储方式下,为了读取12bit信息,必须对同一块存储区域访问3次,可见采用交错存储的方案同时也提高了读写速度。

  在JPEG2000的的中,块编码器采用两种编码模式,即NORAML和VCAUSAL。在VCAUSAL模式下,考虑当前编码位的周围显著的信息时,将下一编码带的显著信息看作是不显著的,而在NORMAL模式下则看作是显著。采用VCAUSAL模式,尽管这样简化了对存储访问的逻辑控制,节省了一些存储空间,但却降低了块编码器的编码效率。因此,设计了图3所示的寄存器组来配合上面介绍的交错存储的方案,这些内部寄存器包括6×4bit的显著和符号信息寄存器,8bit的细化和访问信息寄存器,4bit的幅度寄存器,如图3所示。

  图3中表示出了各个寄存器读入数据和写回更新数据的位置、当前的编码位置和当前编码位。这些寄存器都能完成右移一位的功能特别值得注意的是:由于编码过程中必须用到18bit的显著和符号信息,因此在每个编码带开始处,必须对显著和符号信息寄存器做初始化右移一次,确保在编码第0列数据时已经有18bit的信息,见图4的示例。

嵌入式快编码器的硬件结构

  2 硬件设计

  根据本文设计的编码算法,可用如图5所示的硬件结构实现嵌入式块编码器。

  上述结构中,状态机用于控制总体的编码流程,外部信号START使状态机进入初始的预处理状态,表示此时外部RAM的数据已经准备好,然后在编码过程中根据计数器的数值进行状态切换。

  设计中用到的计数器共3个,即Countrow(位计数器)、Count(列计数器)、Countloop(编码带计数器)。图6中示出了块编码器的总体流程,从中可以看出编码器的状态随计数器的数值变化的情况。

  预处理单元预处理包括部分:码块预处理和位平面预处理。其中码块预处理包括计算需要编码的位平面数,撮各个系数的符号位填充相应的符号缓存,初始化显著信息缓存和细化缓存(全部清0);位平面预处理则提取当前位平面的幅度位填充相应的幅度缓存,初始化访问信息缓存(全部清0)。

  读写控制控制单元负责产生合适的控制信号与外部RAM和内部缓存接口;在预处理时负责外部RAM和内部缓存的读写控制,在编码过程中则负责内部缓存和寄存器组的读写控制。

  

0
0
(请您对文章做出评价)
1】【2】【3
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

  • 博客推荐

  • 论坛推荐

  • 在线研讨会