基于色度学的浮点数算法设计
2011-01-04赵红东董志勇
鲍 曼,赵红东,董志勇
(1.河北工业大学 信息工程学院,天津 300401;2.河北省广播电影电视局 机关服务中心,石家庄 050031)
基于色度学的浮点数算法设计
鲍 曼1,赵红东1,董志勇2
(1.河北工业大学 信息工程学院,天津 300401;2.河北省广播电影电视局 机关服务中心,石家庄 050031)
以浮点数为基础,首先对色度学基本公式进行化简,使程序更为简洁,并节省硬件资源.随后按照自顶向下的系统设计流程,采用模块化设计方法,利用Verilog HDL语言设计硬件电路,对64位双精度浮点数运算模块进行设计.利用仿真软件对3个模块分别进行功能仿真,给出功能仿真图和仿真实数显示图.在通过仿真验证之后,采取调用运算模块的方法将各个模块组合起来进行系统的设计和仿真.为了验证程序的正确性,选用Matlab软件进行算法验证.通过对比两组结果发现:Modelsim程序的输出结果由于受到位数的限制,最终只能精确到小数点后第6位,而Matlab的输出结果位数可以精确到小数点后第14位,但两组结果在同时保留6位小数的情况下可以保证数值的一致性.因此,浮点数运算模块误差较小,具有较高的可行性和可靠性,适合在进一步设计中加以应用.
色度学;算法;浮点数;Verilog
色度学属于物理学的范畴,是一门复杂而且交叉性很强的边缘学科.它以人类的平均感觉为基础,以色光对人眼的刺激强度来度量,主要涉及光学、物理学、计量学和视觉心理等学科,是一门以大量实验为基础的实验性综合性科学.在现代建筑环境和城市色彩规划产业、纺织服装与服饰产业、新闻出版与印刷传媒产业、文艺演出与文化载体产业以及动画与游戏制作产业等诸多领域都有着广泛的应用,并对这些产业的发展产生重大的影响[1].因此,从色度学基本公式出发,设计了一种以Verilog硬件描述语言为基础,用以计算照明光源色度坐标,同时具有较高精确度的浮点数算法就显得尤为重要且必要.
1 基本理论
人们周围存在的各种物体所表现出来的各种色彩都是由蓝色、绿色和红色3种光线按适当比例混合起来组成的,即作用不同的吸收或反射而呈现在人们眼中的.所以,蓝色、绿色和红色是组成各种色彩的基本单元,因此,也把这3种颜色单元称为三原色.CIE(国际照明委员会)在1931年制定标准时,选取了三原色的特定波长值为主原色,其中蓝光为435.8nm,绿光为546.1nm,红光为700nm.选取这3个特定波长的单色光为主原色是因为可见光谱的红色末端是700nm,而546.1nm和435.8 nm是相对而言比较明显的汞谱线,这样三者都能较为精确地产生出来[2].
同样的物体在不同的照明光源下会表现不同的颜色,因此,物体的颜色与照明光源存在着密切关系.物体色彩感觉形成的四要素分别为:人的大脑、眼睛、光源和颜色物体.物体三刺激值的计算涉及人眼的颜色视觉、光源能量分布和物体表面反射性能3方面的特征参数.而对于照明光源而言,计算只涉及光源的相对光谱能量分布和人眼的颜色视觉两方面的特征参数,其光源三刺激值X,Y和Z分别为[3]:
为了表示蓝、绿、红三原色各自在蓝+绿+红总量中的相对比例,引入色度坐标,x,y和z即是该颜色在CIE1931色度图中的色度坐标:
2 算法设计与验证
2.1 算法的设计与实现
在计算机进行算术运算时,都要指出小数点的位置所在.根据小数点位置的固定与否,可以分为2种数据表示格式:定点表示和浮点表示.由于在定点表示中,数据的小数点位置都是固定不变的,这就决定了固定位数的整数部分和小数部分.所以,定点数表示法的缺点在于形式非常僵硬,不利于在运算中同时表达特别大和特别小的数.为了让计算机能够处理更大范围内的数据,并具有较高的精度,在定点表示的基础上依据科学记数法,引入了浮点表示,小数点位置可以浮动的数叫浮点数[4].
为了使色度学的基本理论公式在硬件语言设计上得到更好的实现,求得的照明光源的色度坐标在此选择以浮点数为基础来完成具体算法.首先,对色度学基本公式进行一定化简,以求得到更为简单的表达式,这样不但可以使要设计的程序更为简洁,省去不必要的工作量,更为重要的是可以节省硬件资源,节约产品成本.然后,按照自顶向下的系统设计流程,采用模块化设计方法,利用Verilog HDL语言进行硬件电路设计,对64位双精度浮点数的各个运算模块分别进行逻辑电路的设计,运算模块主要包括浮点数加法运算、浮点数乘法运算和浮点数除法运算3个部分.接着用目前业界较为流行的HDL仿真软件——Mentor公司的 Modelsim分别对这3个模块进行功能仿真,给出功能仿真图和仿真实数显示图.在通过仿真验证后,采取调用运算模块的方法将其组合起来进行系统的设计和仿真,并输入实验数据得出计算结果.
首先完成公式化简工作,由式(1)和式(2)可知,该色度方程求解过程可分以下几步:
图1 浮点数乘法-加法的功能仿真图Figure 1 Functional simulation of floating-point multiplication-addition
图2 浮点数乘法-加法的功能仿真实数显示图Figure 2 Functional simulation of floating-point multiplication-addition in transcript
第3步,做除法运算,求解x,y和z的值,即该颜色在CIE1931色度图中的色度坐标.除法计算后所得的在ModelSim下的功能仿真图和功能仿真实数显示图如图3和图4所示.
图3 浮点数除法的功能仿真图Figure 3 Functional simulation of floating-point division
图4 浮点数除法的功能仿真实数显示图Figure 4 Functional simulation of floating-point division in transcript
2.2 算法的验证
对算法的验证是为了保证设计所实现的运算结果是正确的,但事实上验证过程只能证明某些设计错误的存在或不存在,所以它是一个列举设计中可能存在错误的过程.而对某个设计的验证,应该采用什么样的验证方法也是一个非常复杂的决策过程.其中主要的验证手段可以大概划分为以下几种:功能仿真技术、静态时序分析技术和形式验证技术等[5].
本研究所采用应用功能仿真技术进行验证,整个验证过程是通过ModelSim和Matlab两个软件的结合使用完成的.Matlab是矩阵(Matrix)和实验室(Laboratory)的组合,在数值计算方面被广泛应用,效率也比较高.由于验证过程需要处理大量数据,而且涉及矩阵运算,所以在此使用Matlab进行计算,并对比两路输出结果.如果输出结果相同,则证明算法运算模块设计正确,验证结束;否则对模块进行修改后重新验证直到结果相符合.
Matlab运行结果如下:
最后,通过对比两者的程序输出结果发现,Modelsim程序的输出结果由于受到位数限制,其最终只能精确到小数点后第6位数,而Matlab可以精确到小数点后第14位,但两组结果在同时保留6位小数的情况下可以保证数值的一致性.因此,可以认为设计出的浮点数运算模块只有极小的误差,能够达到本设计的要求,具有较高的可行性和可靠性,适合在进一步设计中加以应用.
3 结语
本研究在设计过程中,主要采用Verilog HDL进行硬件电路的设计,利用浮点数加法、乘法和除法模块完成了对色度坐标的运算,使硬件描述语言在色度学上得到了很好的应用.本研究初步总结出了使用硬件描述语言进行模块设计的流程和方法.同时,利用Modelsim系统仿真得到了清晰而直观的仿真结果,并应用Matlab论证了所设计程序的有效性,为下一步研究和设计打下了良好的基础.
[1] 王安祥.目标涂层表面光谱BRDF和色度特性[D].西安:西安电子科技大学,2006:1-8.
[2] 党伟.基于颜色传感器的色度色差仪的开发与研究[D].武汉:华中科技大学,2007:6-17.
[3] 薛廉.基于Clamp模型的植被色度值计算机模拟表征[D].成都:成都理工大学,2009:25-35.
[4] 欧阳玉梅.“数的定点表示与浮点表示”问题分析[J].教学研究,2005,28(1):49-51.
[5] 王飞飞.视频中色度重采样算法的ASIC设计[D].天津:天津大学,2007:43-45.
Design of floating-point algorithm based on colorimetry
BAOMan1,ZHAOHongdong1,DONGZhiyong2
(1.College of Information Engineering,Hebei University of Technology,Tianjin 300401,China;
2.Institution Services Center,Hebei Provincial Bureau of Radio,Film and Television,Shijiazhuang 050031,China)
Based on the floating-point numbers,the basic formulas of colorimetry should be simplified,and it would make the expressions simpler.This would not only make the procedures more concise,but also save the hardware resources.Then based on top-down system design flow and modulization method,using Verilog hardware description language,the hardware circuit is designed.Each mathematical module designs their logic circuits with 64-bit double-precision floating-point numbers.Three operation modules are performed the functional simulation,the functional simulation in wave windows and the functional simulation in transcript are given.After the simulation,addition,multiplication and division would be applied for the method of invoking the operation module while systematic design and simulation is carried on.Matlab is used for verification of algorithm.Eventually,by comparing the outputs of the two procedures,the outputs of Modelsim software are restricted,and can be accurate to the sixth decimal,while the outputs of Matlab software can be accurate to the fourteenth decimal.However,the two groups of results will keep their numbers consistent in the same range.Consequently,the simulation results show that the designs of floating-point basic operations have small margin of error,remain high feasibility and reliability,and still can be widely used in the future.
colorimetry;algorithm;floating-point number;Verilog
TN47
A
1671-1114(2011)02-0051-04
2010-12-06
教育部高等学校博士学科点专项科研基金资助项目(20070080001)
鲍 曼(1986—),女,硕士研究生,主要从事光电集成设计及应用方面的研究.
赵红东(1968—),男,教授,主要从事半导体光电子、集成电路设计和半导体数值仿真等方面的研究.
(责任编校 纪翠荣)