本文提出了一种低面积低功耗RGB与YCbCr色彩空间转换的电路实现方法。首先提出一种结合简化加法器图(Reduced Adder Graph, RAG)的公共子表达式消除(Common Subexpression Elimination, CSE)的电路实现,然后提出一个提高精度的补偿方法。最后采用TSMC 0.18um工艺对所提出的算法进行综合和布局布线。仿真和综合结果表明相比于传统的正则有符号数字(Canonic Signed Digit, CSD)编码系统,采用本文提出的结合CSE和RAG的RGB到YCbCr空间转换电路实现方法面积和功耗减小了20%,补偿算法提高了系统精度。
随着移动互联网的发展,视频播放器和智能手机等移动多媒体设备已经成为市场上的主流产品。低面积和低功耗是影响专用集成电路(Application Specific Integrated Circuits, ASICs)性能的关键因素,低面积可减小成本而低功耗直接增加电池寿命。对显示设备来说,RGB [1]是最主流的颜色空间。但是分离的R、G、B 无法直接展现色调、饱和度以及亮度等信息,往往不适合各种视频应用场合。而YcbCr [2]作为RGB 的线性转换空间,为大部分显示器所采用,其中Y 代表亮度,CbCr 分别代表蓝偏和红偏分量。因此研究RGB 到YCbCr 颜色空间转换的硬件电路实现是很有必要的,这也是多常数乘法器(Multiple con-stant Multiplication, MCM) [3]的一个研究问题。
乘法器可以分解为加法器、减法器、移位寄存器来实现。减法器和加法器具有相似的实现复杂度, 在本文都称作加法器。
单常数乘法问题的优化对编译器和综合工具都是至关重要的, 应用CSD [4]编码方式可以有效降低乘法电路面积,因为CSD 编码的非零元素是最少的。在一个n 位CSD 数中非零位的数量近似为n/3 + 1/9。例如,为了实现乘法器运算{D = 13A + 59B + 75C},转换各个系数的二进制编码为{13:1101, 59:111011, 75:1001011}, 传统的移位相加运算方法是分别实现A, B, C 的乘法系数再相加{D = A<<3 + A<<2 + A + B<<5 + B<<4 + B<<3 + B<<1 + B + C<<6 + C<<3 + C<<1 + C},需要九个移位寄存器和11 个加法器。CSD 编码优化后为{D = A<<3 + A<<2 + A + B<<6 − B<<2 − B + C<<6 + C<<3 + C<<1 + C},需要7 个移位寄存器和9 个加法器,比传统的二进制编码节约了2 个加法器和2 个移位寄存器。
CSE [5]算法和基于图(Graph-dependence, GD)的算法是更为高效的算法, CSE 算法的思想是找到系数集的公共子表达式,为实现上文的乘法器运算,令{E = A − B},那么表达式变成{D = A<<3 + E<<2 + E + B<<6 + C<<6 + C<<3 + C<<1 + C},需要6 个移位寄存器和8 个加法器,比CSD 编码方式节省了1 个移位寄存器和1 个加法器。
而GD 算法中的n 维简化加法器图(n-dimensional reduced adder graph, RAG-n) [6] [7]算法用最少的加法器数量产生乘法器。例如为了实现乘法器集合{F1 = 13A; F2 = 59A; F3 = 75A},基于CSD 编码的一般方法表示为{13A = A<<3 + A<<2 + A},{59A = A<<6 − A<<2 − A}和{75A = A<<6 + A<<3 + A<<1 + A},需要四个移位寄存器和7 个加法器。2005 年改进的算法RAG-05 选择将中项{15A =