久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 新型數據格式轉換的FPGA實現

新型數據格式轉換的FPGA實現

作者: 時間:2011-11-19 來源:網絡 收藏
2.2 關鍵代碼解析

本文引用地址:http://cqxgywz.com/article/150044.htm

  在的硬件描述語言中將整數的十進制為二進制比較簡單,可以調用ISE軟件自帶的程序包中的函數來,但如何將小數部分為二進制是能否順利完成從實數到單精度浮點數轉換的關鍵。考慮到要對小數部分進行舍入運算,所以將小數部分轉換28位的二進制。要用28位二進制表示小數部分,需利用VHDL語言中變量(variable)被賦值時立即生效的特性,結合FOR循環來。部分關鍵代碼如下:

  

  代碼中frac_part是小數部分的十進制表示(因為integer類型只能表示整數,所以將小數部分擴大了10 000倍,但不影響結果的正確性),frac_28是小數部分的二進制表示。信號frac_28(27)的權值是2-1,依次以1/2倍率遞減,frac_28(0)的權值是2-28。此進程由frac_part發生變化來啟動,完成轉換的時間是瞬時,也可以認為是一個時鐘周期。

  3 仿真結果及分析

  首先用ModelSim進行功能仿真,其結果如圖3所示。輸入的實數為125.763,輸出結果經Matlab逆向求值同輸入值進行比較,驗證了轉換結果的正確性。一個數的正確轉換并不能說明問題,下面將驗證此轉換方法的可行性。

  

  選取具有代表性的實數對轉換方法的性能進行驗證。主要驗證兩個方面:

  (1)是否在預定域內具有全覆蓋性;

  (2)是否能對此域中的最小值進行有效表示。

  結果如表1所示。

  

  根據轉換原理,最小值所轉換的誤差最大,但最大值的轉換誤差不一定最小(因為存在舍入)。這個最大的轉換誤差在10-5量級,當待轉換實數的絕對值大于整數1時,轉換的誤差將小于10-5量級,可達10-9量級。這樣的轉換誤差可以滿足大多數浮點運算環境下的精度需要。實驗驗證了此轉換方法的有效性和“全覆蓋性”。

  在完成仿真測試后,將程序進行綜合,布局布線,最后生成位流文件下載到芯片中進行驗證。在實際的芯片中將轉換結果和已仿真得到的結果進行比較,并輸出指示信號。從實際的電路輸出結果看,和仿真結果完全一致,證明了此方法在實際芯片中可行性。因為采用的是流水線操作,所以仿真所用的周期數和實際周期數是一致的。該實驗在50 MHz的時鐘下用時6個周期(即0.12μs)完成轉換操作。而在最常用的串口傳輸波特率9 600 b/s下,傳送1個碼元的時間為10-1ms量級。從而可以得出:完成從ASCII碼所表示的實數(-9 999.999 9~+9 999.999 9)到單精度浮點的轉換所用的時間將在10-1μs量級以下,具有較高的實時性。

  4 結語

  本文的向單精度浮點的轉換占用1 161個slice資源,在發展到今天,FPGA的容量和資源都有了很大提高的情況下,這樣的資源占用量在大多數應用中是可以承受的。本文的設計可以很容易地根據實際實數的范圍進行調整,并且可以推廣到其他浮點,可有效地為浮點IP核提供快速且具有高精度的源。


上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉