基于FPGA的RGB到YCrCb颜色空间转换
![](http://m.amcfsurvey.com/editerupload/fetch/20131118/191650_2_0.jpg)
根据B’的取值不同,ofset的取值取整后为14,15,16。在计算过程中,可以用一个数据选择器根据B’值的不同选择offset的值。0.5-B’的计算可以用移位实现。化简后的转换算法.对Y,Cb,Cr的计算将比原来节省4个乘法器。在FPGA中,加法器、数据选择器和移位算法的实现比乘法器简单,该化简将利于减少逻辑资源的应用,简化实现电路,提高运算速度。转换电路结构如图l所示。本文引用地址://m.amcfsurvey.com/article/191650.htm
3 基于FPGA的实现
在FPGA中,对乘法的实现比较复杂,可以采用如下几种方法:
(1)直接用编程语言描述乘法运算,由综合工具自动实现,用该方法描述,实现简单,但是耗用比较多的逻辑资源。
(2)利用查找表的方式实现乘法运算,事先把要相乘数据的所有结果算出来存到ROM中,根据输入数据的值读取相应的结果,当用该方法相乘数据位数比较多时,会占用大量的存储空间。
(3)用FPGA中内嵌的乘法器实现,该方法实现简单,当用VHDL语言实现时,调用相应的乘法模块即可。
本文采用第三种方法,用专用乘法器来实现转换公式中的乘法运算。Xilinx的Virtex 4系列FPGA芯片内嵌的乘法器为Xtreme DSPTM S1i-ceDSP48 Slice其工作频率高达500 MHz,支持多种独立的功能,包括乘法器、乘累加器(MAC)、后接加法器的乘法器、三输入加法器、桶形移位寄存器、宽路线多路复用器、大小及比较器或宽计数器。本文将运用DSP48 Slice模块实现乘加运算,在电路结构图的虚线框中,乘法和加法的运算将用单个DSP48 Slice模块实现。这样将会减少转换关系式中加法器的数量,节约逻辑资源,在程序中可以用元件例化语句调用DSP-48 Slice模块,实现方法简单,程序简洁。为了满足浮点数和运算精度的要求,适合在FPGA中实现,将式(2)改写为:
评论