第二章 CORDIC 原理與設計架構
2.3 IEEE754 浮點運算
IEEE 二進位浮點數算術標準是最廣泛使用的浮點數運算標準,為許多 CPU 與浮點 運算器所採用。這個標準定義了表示浮點數的格式與反常值,一些特殊數值如無窮與非 數值,以及這些數值的「浮點數運算子」;它也指明了四種數值修約規則和五種例外狀 況,如包括例外發生的時機與處理方式。
IEEE 754 規定了四種表示浮點數值的方式:半精度單精度、倍精度與延伸倍精度(79 位元以上,通常以80 位元實做),而現今許多電腦抑或計算機皆以單精度之格式做訂定,
大部分程式語言都有提供IEEE 格式與算術,但有些將其列為非必要的。
該標準的全稱為IEEE 二進位浮點數算術標準,又稱 IEC 60559:1989,微處理器系 統的二進位浮點數算術。
二進位浮點數是以符號數值表示法格式儲存,將最高效位元指定為符號位元(Sign bit),當 s = 0 時,表示此數列為正值; s = 1 時,表示此數列為負值。「指數部份」,即次 高效位元,指數 (Exponent, e)為浮點數中,經指數偏差處理過後的指數,根據所求得的 指數,再加上去各式精度之偏移值(Bias,b),便可求得。;「小數部份」,即剩下的位元,
即為有效位數(Significand,sign)減掉有效位數本身的最高效位元。 如表 2.3.1 所示:
表2.3.1 IEEE 二進位浮點數算術標準 x (1. + Significant) x
Sign Exponent 1.+Significand
以下小節中將對IEEE754 Converter 三種經度做概述,半精度、單精度與倍精度。
半精度總bit 數為 16bit,單精度為 32bit,而倍精度為 64bit。
2.3.1 半精度
一般來說,浮點數字的格式為: x (1. + Significant) x 。設計者 必須在有效數字欄位的寬度與指數欄位的寬度之間取得妥協,因為字組的長度是固定 的,從某一個欄位的減少一位元時,就表示另一個欄位多一個位元:增加有效數字欄位 的寬度,所能表示的有效數字的位數便提高,但增加指數欄位的寬度時,所能表示的數 字範圍便擴大。有時數字太大而無法表示時,就需要溢位中斷半段訊號,此處的溢位表 示指數太大,而無法以指數欄位表示。當然有時候可能所要表示的數字太小無法表示 時,電腦會以最低有效不足位來提醒輸入訊號之參數值。
MIPS浮點數字的表示法, S 是浮點數字的正負符號,指數放在5位元指數欄位,
有效數字是16位元的小數,此格式表示法稱為半精度,如表2.3.1.1所示。
表2.3.1.1 半精度浮點運算表示法
Sign Exponent 1.+Significand
15 14..10 9..0
以IEEE754半精度、單精度、倍精度,探討座標軸數位旋轉計算器。由Cordic模組 中,取其中一模組Rotation linear,作為精準度的比較。Rotation linear模組,在CORDIC 運 算 上 , 是 用 已 表 示 乘 法 的 動 作 。 半 精 度 設 定 一 輸 入 值 呈 現Xin = 39910 = 0-00111-1000111102,Zin = 0.5610 = 0-00101-00011110102,相乘結果為Yout = 222.7510 = 0-10111-10111101112,圖2.3.1.1所示。
圖2.3.1.1 半精度浮點運算之運算結果
2.3.2 單精度
MIPS 浮點數字的表示法, S 是浮點數字的正負符號,指數放在 8 位元指數欄位,
有效數字是23 位元的小數,這種表示法稱為符號與數值大小表示法,如表 2.3.2.1 所示。
表2.3.2.1 單精度浮點運算表示法
Sign Exponent 1.+Significand
31 30..23 22..0
由CORDIC模組中,取一模組Rotation linear,作為精準度的比較。Rotation linear模 組,在CORDIC運算上,是用以表示乘法的動作。設定一輸入值為Xin = 399(10) = 0-10000111-100011110000000000000002,另一輸入為Zin = 0.56(10) = 0-01111110-00011110 1011100001010012,其相乘結果為Yout = 222.8789(10)=0-10000110-10111101110000100000 00010,如圖所示2.3.2.1所示。.
圖2.3.2.1 單精度浮點運算之運算結果
2.3.3 倍精度
MIPS 浮點數字的表示法, S 是浮點數字的正負符號,指數放在 11 位元指數欄位,
有效數字是52 位元的小數,這種表示法稱為符號與數值大小表示法,如表 2.3.3.1 所示。
表2.3.3.1 倍精度浮點運算表示法
Sign Exponent 1.+Significand
63 62..52 51..0
倍精度Xin = 399(10) = 0-10000000110-10001111000000000000000000000000000000000000 000000(2),Zin = 0.56(10) = 0-01111111101-00011110101110000101001000000000000000000 00000000000(2),相乘結果Yout = 223.25(10) = 0-10000000101-101111101000000000000000 0000000000000000000000000000(2)為,圖2.3.3.1所示。
圖2.3.3.1 倍精度浮點運算之運算結果
經由以上三種精度比較可知,應用倍精度於CORDIC 模組中,其精準度較高,運算 結果之誤差值較低,但以現階段應用於CORDIC 比較,則選擇單精度為較廣泛使用。其 原因在於,倍精度所使用的位元數較多,導致硬體成本較高,且運算時間有過長之情形,
對於需求高速運算與低功耗之要求,而許多CORDIC 應用上,兩種精度表示法,誤差值 皆低於0.1%,所以相對比較上,倍精度使用上實用性較低,故選擇單精度作為 CORDIC 演算法建置之應用原因於此。
第三章 室內無線感測定位之設計