无分裂结构的二维小波变换图片处理芯片设计与验证
1.2.1 行变换数据存取结构
行变换模块输入数据读取方式,是用读取寄存器中数据流的方式代替地址寻址的数据读取模式。
数据依照输入顺序,在寄存器A,B,C,D中依次流动。变换模块在不同的时间分别从A,C和D中读取数据,进行预测和更新的变化步骤。变换后输出的数据存放在列变换模块的寄存器D1和FIFO-A中。行变换模块结构图如图2所示。本文引用地址:https://www.eepw.com.cn/article/190283.htm
1.2.2 列变化数据存取结构
在进行列变换时,需要读取变换数据点临近行的同列数据。而完成该数据点变换后,进行的是同一行下一列的数据点的列变换。因此需要依次读出相邻4行的同列数据,行数不变,列数依次递增。
为了简单的实现该数据读取的顺序,本文使用3个FIFO来保存连续3行的数据:当输入新一行的第1个数据时,3个FIFO释放出第1个数据(即之前3行每1行的第1个数据),刚好组成完成列变换的相邻4行的同列数据。同时,数据的新1行的数据进入FIFO-A,FIFO-A释放出的数据进入FIFO-B,FIFO-B释放出的数据进入FIFO-C。之后,释放出第2列的数据,并重复上述步骤。
因此在完成数据变换的同时,数据在FIFO-A,FIFO-B,FIFO-C中依次流动。完成该行的所有列数据的变换后,FIFO-A中的数据依次寄存在FIFO-B中,FIFO-B的数据寄存在FIFO-C中,而FIFO-A则寄存了新1行的数据。当下1行的数据输入时,又依照上述顺序,开始下1行的列变换。
1.3 变换模块结构
常见的小波变换结构是当输入奇数地址数据时完成预测步骤,当输入偶数地址数据时完成更新步骤。而本文提出的结构不进行数据分裂,直接对数据进行预测和更新,并同时输出到数据选择器。数据选择器对地址奇偶进行判断,选择输出数据,可以得到和常用结构相同的结果。列变换模块结构图如图3所示。
1.3.1 行变换结构
本文提出了无分裂步骤的结构中,行变换时数据流输入后依次寄存在寄存器D1,D2,D3,D4中。如图4(a),寄存器D1,D2,D3,D4中已分别寄存了输入数据X4,X3,X2,X1,而寄存器D5,D6,D7则分别寄存了数据Y2,Y1,Y0。此时利用寄存器D1,D2,D3中的数据X4,X3,X2经过预测步骤,得到预测结果y3=x3-(x2+x4)/2;此前已在寄存器D5,D6,D7中分别寄存了前3个时钟分别完成计算的结果Y2,Y1,Y0,则经过更新步骤可得y1=x1+(y0+y2+2)/4。此时通过数据选择器输出的值Y1是奇数地址,因此仅需要完成预测步骤运算的结果(即寄存器D6中的数据),也就是说输出寄存器D6中的Y1值,放弃更新步骤产生的Y1值。
在下一个时钟沿来临时,X4,X3,X2依次取代X3,X2,X1的位置,输入的X5则寄存在X4的位置,同理Y2,Y1依次取代Y1,Y0的位置,预测产生的Y3值则寄存在Y2,则下一次计算时,寄存器中的值如图4b,预测步骤产生Y4,更新步骤产生Y2,由于是偶数地址,所以通过数据选择器输出经过更新步骤的Y2值。
评论