鮑 曼,趙紅東,董志勇
(1.河北工業(yè)大學(xué) 信息工程學(xué)院,天津 300401;2.河北省廣播電影電視局 機(jī)關(guān)服務(wù)中心,石家莊 050031)
基于色度學(xué)的浮點(diǎn)數(shù)算法設(shè)計(jì)
鮑 曼1,趙紅東1,董志勇2
(1.河北工業(yè)大學(xué) 信息工程學(xué)院,天津 300401;2.河北省廣播電影電視局 機(jī)關(guān)服務(wù)中心,石家莊 050031)
以浮點(diǎn)數(shù)為基礎(chǔ),首先對色度學(xué)基本公式進(jìn)行化簡,使程序更為簡潔,并節(jié)省硬件資源.隨后按照自頂向下的系統(tǒng)設(shè)計(jì)流程,采用模塊化設(shè)計(jì)方法,利用Verilog HDL語言設(shè)計(jì)硬件電路,對64位雙精度浮點(diǎn)數(shù)運(yùn)算模塊進(jìn)行設(shè)計(jì).利用仿真軟件對3個(gè)模塊分別進(jìn)行功能仿真,給出功能仿真圖和仿真實(shí)數(shù)顯示圖.在通過仿真驗(yàn)證之后,采取調(diào)用運(yùn)算模塊的方法將各個(gè)模塊組合起來進(jìn)行系統(tǒng)的設(shè)計(jì)和仿真.為了驗(yàn)證程序的正確性,選用Matlab軟件進(jìn)行算法驗(yàn)證.通過對比兩組結(jié)果發(fā)現(xiàn):Modelsim程序的輸出結(jié)果由于受到位數(shù)的限制,最終只能精確到小數(shù)點(diǎn)后第6位,而Matlab的輸出結(jié)果位數(shù)可以精確到小數(shù)點(diǎn)后第14位,但兩組結(jié)果在同時(shí)保留6位小數(shù)的情況下可以保證數(shù)值的一致性.因此,浮點(diǎn)數(shù)運(yùn)算模塊誤差較小,具有較高的可行性和可靠性,適合在進(jìn)一步設(shè)計(jì)中加以應(yīng)用.
色度學(xué);算法;浮點(diǎn)數(shù);Verilog
色度學(xué)屬于物理學(xué)的范疇,是一門復(fù)雜而且交叉性很強(qiáng)的邊緣學(xué)科.它以人類的平均感覺為基礎(chǔ),以色光對人眼的刺激強(qiáng)度來度量,主要涉及光學(xué)、物理學(xué)、計(jì)量學(xué)和視覺心理等學(xué)科,是一門以大量實(shí)驗(yàn)為基礎(chǔ)的實(shí)驗(yàn)性綜合性科學(xué).在現(xiàn)代建筑環(huán)境和城市色彩規(guī)劃產(chǎn)業(yè)、紡織服裝與服飾產(chǎn)業(yè)、新聞出版與印刷傳媒產(chǎn)業(yè)、文藝演出與文化載體產(chǎn)業(yè)以及動(dòng)畫與游戲制作產(chǎn)業(yè)等諸多領(lǐng)域都有著廣泛的應(yīng)用,并對這些產(chǎn)業(yè)的發(fā)展產(chǎn)生重大的影響[1].因此,從色度學(xué)基本公式出發(fā),設(shè)計(jì)了一種以Verilog硬件描述語言為基礎(chǔ),用以計(jì)算照明光源色度坐標(biāo),同時(shí)具有較高精確度的浮點(diǎn)數(shù)算法就顯得尤為重要且必要.
人們周圍存在的各種物體所表現(xiàn)出來的各種色彩都是由藍(lán)色、綠色和紅色3種光線按適當(dāng)比例混合起來組成的,即作用不同的吸收或反射而呈現(xiàn)在人們眼中的.所以,藍(lán)色、綠色和紅色是組成各種色彩的基本單元,因此,也把這3種顏色單元稱為三原色.CIE(國際照明委員會(huì))在1931年制定標(biāo)準(zhǔn)時(shí),選取了三原色的特定波長值為主原色,其中藍(lán)光為435.8nm,綠光為546.1nm,紅光為700nm.選取這3個(gè)特定波長的單色光為主原色是因?yàn)榭梢姽庾V的紅色末端是700nm,而546.1nm和435.8 nm是相對而言比較明顯的汞譜線,這樣三者都能較為精確地產(chǎn)生出來[2].
同樣的物體在不同的照明光源下會(huì)表現(xiàn)不同的顏色,因此,物體的顏色與照明光源存在著密切關(guān)系.物體色彩感覺形成的四要素分別為:人的大腦、眼睛、光源和顏色物體.物體三刺激值的計(jì)算涉及人眼的顏色視覺、光源能量分布和物體表面反射性能3方面的特征參數(shù).而對于照明光源而言,計(jì)算只涉及光源的相對光譜能量分布和人眼的顏色視覺兩方面的特征參數(shù),其光源三刺激值X,Y和Z分別為[3]:
為了表示藍(lán)、綠、紅三原色各自在藍(lán)+綠+紅總量中的相對比例,引入色度坐標(biāo),x,y和z即是該顏色在CIE1931色度圖中的色度坐標(biāo):
在計(jì)算機(jī)進(jìn)行算術(shù)運(yùn)算時(shí),都要指出小數(shù)點(diǎn)的位置所在.根據(jù)小數(shù)點(diǎn)位置的固定與否,可以分為2種數(shù)據(jù)表示格式:定點(diǎn)表示和浮點(diǎn)表示.由于在定點(diǎn)表示中,數(shù)據(jù)的小數(shù)點(diǎn)位置都是固定不變的,這就決定了固定位數(shù)的整數(shù)部分和小數(shù)部分.所以,定點(diǎn)數(shù)表示法的缺點(diǎn)在于形式非常僵硬,不利于在運(yùn)算中同時(shí)表達(dá)特別大和特別小的數(shù).為了讓計(jì)算機(jī)能夠處理更大范圍內(nèi)的數(shù)據(jù),并具有較高的精度,在定點(diǎn)表示的基礎(chǔ)上依據(jù)科學(xué)記數(shù)法,引入了浮點(diǎn)表示,小數(shù)點(diǎn)位置可以浮動(dòng)的數(shù)叫浮點(diǎn)數(shù)[4].
為了使色度學(xué)的基本理論公式在硬件語言設(shè)計(jì)上得到更好的實(shí)現(xiàn),求得的照明光源的色度坐標(biāo)在此選擇以浮點(diǎn)數(shù)為基礎(chǔ)來完成具體算法.首先,對色度學(xué)基本公式進(jìn)行一定化簡,以求得到更為簡單的表達(dá)式,這樣不但可以使要設(shè)計(jì)的程序更為簡潔,省去不必要的工作量,更為重要的是可以節(jié)省硬件資源,節(jié)約產(chǎn)品成本.然后,按照自頂向下的系統(tǒng)設(shè)計(jì)流程,采用模塊化設(shè)計(jì)方法,利用Verilog HDL語言進(jìn)行硬件電路設(shè)計(jì),對64位雙精度浮點(diǎn)數(shù)的各個(gè)運(yùn)算模塊分別進(jìn)行邏輯電路的設(shè)計(jì),運(yùn)算模塊主要包括浮點(diǎn)數(shù)加法運(yùn)算、浮點(diǎn)數(shù)乘法運(yùn)算和浮點(diǎn)數(shù)除法運(yùn)算3個(gè)部分.接著用目前業(yè)界較為流行的HDL仿真軟件——Mentor公司的 Modelsim分別對這3個(gè)模塊進(jìn)行功能仿真,給出功能仿真圖和仿真實(shí)數(shù)顯示圖.在通過仿真驗(yàn)證后,采取調(diào)用運(yùn)算模塊的方法將其組合起來進(jìn)行系統(tǒng)的設(shè)計(jì)和仿真,并輸入實(shí)驗(yàn)數(shù)據(jù)得出計(jì)算結(jié)果.
首先完成公式化簡工作,由式(1)和式(2)可知,該色度方程求解過程可分以下幾步:
圖1 浮點(diǎn)數(shù)乘法-加法的功能仿真圖Figure 1 Functional simulation of floating-point multiplication-addition
圖2 浮點(diǎn)數(shù)乘法-加法的功能仿真實(shí)數(shù)顯示圖Figure 2 Functional simulation of floating-point multiplication-addition in transcript
第3步,做除法運(yùn)算,求解x,y和z的值,即該顏色在CIE1931色度圖中的色度坐標(biāo).除法計(jì)算后所得的在ModelSim下的功能仿真圖和功能仿真實(shí)數(shù)顯示圖如圖3和圖4所示.
圖3 浮點(diǎn)數(shù)除法的功能仿真圖Figure 3 Functional simulation of floating-point division
圖4 浮點(diǎn)數(shù)除法的功能仿真實(shí)數(shù)顯示圖Figure 4 Functional simulation of floating-point division in transcript
對算法的驗(yàn)證是為了保證設(shè)計(jì)所實(shí)現(xiàn)的運(yùn)算結(jié)果是正確的,但事實(shí)上驗(yàn)證過程只能證明某些設(shè)計(jì)錯(cuò)誤的存在或不存在,所以它是一個(gè)列舉設(shè)計(jì)中可能存在錯(cuò)誤的過程.而對某個(gè)設(shè)計(jì)的驗(yàn)證,應(yīng)該采用什么樣的驗(yàn)證方法也是一個(gè)非常復(fù)雜的決策過程.其中主要的驗(yàn)證手段可以大概劃分為以下幾種:功能仿真技術(shù)、靜態(tài)時(shí)序分析技術(shù)和形式驗(yàn)證技術(shù)等[5].
本研究所采用應(yīng)用功能仿真技術(shù)進(jìn)行驗(yàn)證,整個(gè)驗(yàn)證過程是通過ModelSim和Matlab兩個(gè)軟件的結(jié)合使用完成的.Matlab是矩陣(Matrix)和實(shí)驗(yàn)室(Laboratory)的組合,在數(shù)值計(jì)算方面被廣泛應(yīng)用,效率也比較高.由于驗(yàn)證過程需要處理大量數(shù)據(jù),而且涉及矩陣運(yùn)算,所以在此使用Matlab進(jìn)行計(jì)算,并對比兩路輸出結(jié)果.如果輸出結(jié)果相同,則證明算法運(yùn)算模塊設(shè)計(jì)正確,驗(yàn)證結(jié)束;否則對模塊進(jìn)行修改后重新驗(yàn)證直到結(jié)果相符合.
Matlab運(yùn)行結(jié)果如下:
最后,通過對比兩者的程序輸出結(jié)果發(fā)現(xiàn),Modelsim程序的輸出結(jié)果由于受到位數(shù)限制,其最終只能精確到小數(shù)點(diǎn)后第6位數(shù),而Matlab可以精確到小數(shù)點(diǎn)后第14位,但兩組結(jié)果在同時(shí)保留6位小數(shù)的情況下可以保證數(shù)值的一致性.因此,可以認(rèn)為設(shè)計(jì)出的浮點(diǎn)數(shù)運(yùn)算模塊只有極小的誤差,能夠達(dá)到本設(shè)計(jì)的要求,具有較高的可行性和可靠性,適合在進(jìn)一步設(shè)計(jì)中加以應(yīng)用.
本研究在設(shè)計(jì)過程中,主要采用Verilog HDL進(jìn)行硬件電路的設(shè)計(jì),利用浮點(diǎn)數(shù)加法、乘法和除法模塊完成了對色度坐標(biāo)的運(yùn)算,使硬件描述語言在色度學(xué)上得到了很好的應(yīng)用.本研究初步總結(jié)出了使用硬件描述語言進(jìn)行模塊設(shè)計(jì)的流程和方法.同時(shí),利用Modelsim系統(tǒng)仿真得到了清晰而直觀的仿真結(jié)果,并應(yīng)用Matlab論證了所設(shè)計(jì)程序的有效性,為下一步研究和設(shè)計(jì)打下了良好的基礎(chǔ).
[1] 王安祥.目標(biāo)涂層表面光譜BRDF和色度特性[D].西安:西安電子科技大學(xué),2006:1-8.
[2] 黨偉.基于顏色傳感器的色度色差儀的開發(fā)與研究[D].武漢:華中科技大學(xué),2007:6-17.
[3] 薛廉.基于Clamp模型的植被色度值計(jì)算機(jī)模擬表征[D].成都:成都理工大學(xué),2009:25-35.
[4] 歐陽玉梅.“數(shù)的定點(diǎn)表示與浮點(diǎn)表示”問題分析[J].教學(xué)研究,2005,28(1):49-51.
[5] 王飛飛.視頻中色度重采樣算法的ASIC設(shè)計(jì)[D].天津:天津大學(xué),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,F(xiàn)ilm 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
教育部高等學(xué)校博士學(xué)科點(diǎn)專項(xiàng)科研基金資助項(xiàng)目(20070080001)
鮑 曼(1986—),女,碩士研究生,主要從事光電集成設(shè)計(jì)及應(yīng)用方面的研究.
趙紅東(1968—),男,教授,主要從事半導(dǎo)體光電子、集成電路設(shè)計(jì)和半導(dǎo)體數(shù)值仿真等方面的研究.
(責(zé)任編校 紀(jì)翠榮)