鮑 曼,趙紅東,董志勇
(1.河北工業大學 信息工程學院,天津 300401;2.河北省廣播電影電視局 機關服務中心,石家莊 050031)
基于色度學的浮點數算法設計
鮑 曼1,趙紅東1,董志勇2
(1.河北工業大學 信息工程學院,天津 300401;2.河北省廣播電影電視局 機關服務中心,石家莊 050031)
以浮點數為基礎,首先對色度學基本公式進行化簡,使程序更為簡潔,并節省硬件資源.隨后按照自頂向下的系統設計流程,采用模塊化設計方法,利用Verilog HDL語言設計硬件電路,對64位雙精度浮點數運算模塊進行設計.利用仿真軟件對3個模塊分別進行功能仿真,給出功能仿真圖和仿真實數顯示圖.在通過仿真驗證之后,采取調用運算模塊的方法將各個模塊組合起來進行系統的設計和仿真.為了驗證程序的正確性,選用Matlab軟件進行算法驗證.通過對比兩組結果發現:Modelsim程序的輸出結果由于受到位數的限制,最終只能精確到小數點后第6位,而Matlab的輸出結果位數可以精確到小數點后第14位,但兩組結果在同時保留6位小數的情況下可以保證數值的一致性.因此,浮點數運算模塊誤差較小,具有較高的可行性和可靠性,適合在進一步設計中加以應用.
色度學;算法;浮點數;Verilog
色度學屬于物理學的范疇,是一門復雜而且交叉性很強的邊緣學科.它以人類的平均感覺為基礎,以色光對人眼的刺激強度來度量,主要涉及光學、物理學、計量學和視覺心理等學科,是一門以大量實驗為基礎的實驗性綜合性科學.在現代建筑環境和城市色彩規劃產業、紡織服裝與服飾產業、新聞出版與印刷傳媒產業、文藝演出與文化載體產業以及動畫與游戲制作產業等諸多領域都有著廣泛的應用,并對這些產業的發展產生重大的影響[1].因此,從色度學基本公式出發,設計了一種以Verilog硬件描述語言為基礎,用以計算照明光源色度坐標,同時具有較高精確度的浮點數算法就顯得尤為重要且必要.
人們周圍存在的各種物體所表現出來的各種色彩都是由藍色、綠色和紅色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種數據表示格式:定點表示和浮點表示.由于在定點表示中,數據的小數點位置都是固定不變的,這就決定了固定位數的整數部分和小數部分.所以,定點數表示法的缺點在于形式非常僵硬,不利于在運算中同時表達特別大和特別小的數.為了讓計算機能夠處理更大范圍內的數據,并具有較高的精度,在定點表示的基礎上依據科學記數法,引入了浮點表示,小數點位置可以浮動的數叫浮點數[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
對算法的驗證是為了保證設計所實現的運算結果是正確的,但事實上驗證過程只能證明某些設計錯誤的存在或不存在,所以它是一個列舉設計中可能存在錯誤的過程.而對某個設計的驗證,應該采用什么樣的驗證方法也是一個非常復雜的決策過程.其中主要的驗證手段可以大概劃分為以下幾種:功能仿真技術、靜態時序分析技術和形式驗證技術等[5].
本研究所采用應用功能仿真技術進行驗證,整個驗證過程是通過ModelSim和Matlab兩個軟件的結合使用完成的.Matlab是矩陣(Matrix)和實驗室(Laboratory)的組合,在數值計算方面被廣泛應用,效率也比較高.由于驗證過程需要處理大量數據,而且涉及矩陣運算,所以在此使用Matlab進行計算,并對比兩路輸出結果.如果輸出結果相同,則證明算法運算模塊設計正確,驗證結束;否則對模塊進行修改后重新驗證直到結果相符合.
Matlab運行結果如下:

最后,通過對比兩者的程序輸出結果發現,Modelsim程序的輸出結果由于受到位數限制,其最終只能精確到小數點后第6位數,而Matlab可以精確到小數點后第14位,但兩組結果在同時保留6位小數的情況下可以保證數值的一致性.因此,可以認為設計出的浮點數運算模塊只有極小的誤差,能夠達到本設計的要求,具有較高的可行性和可靠性,適合在進一步設計中加以應用.
本研究在設計過程中,主要采用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—),男,教授,主要從事半導體光電子、集成電路設計和半導體數值仿真等方面的研究.
(責任編校 紀翠榮)