在第3章和第4章中,我们讨论了一个控制密集型设计——BCU。在本章中,我们将讨论一个数据路径密集型设计:JPEG设计中的离散余弦变换(DCT)模块。我们将展示如何通过重新编码显著简化RTL设计。
DCT在许多视频应用中使用,它是一种对8x8像素矩阵执行的二维变换。通常,它被实现为两个一维变换:
- 水平变换:将矩阵逐行乘以一组常数。
- 垂直变换:将修改后的矩阵(水平变换的结果)逐列乘以一组常数。
为了讨论的方便,我们可以忽略DCT的许多细节。但了解变换的基本结构和流程是有帮助的。为了理解这一结构,让我们从它的C语言实现开始。如图7-1所示,我们使用了三个8x8数组:
- 变量数组block:包含被操作的64个像素。
- 常数数组c:包含算法中使用的常数乘数。
- 常数数组s:指示哪些部分积需要符号反转。