新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 一種新的基于FPGA的數(shù)據(jù)格式轉換方法

        一種新的基于FPGA的數(shù)據(jù)格式轉換方法

        作者: 時間:2011-11-16 來源:網(wǎng)絡 收藏

        2 在中實現(xiàn)實數(shù)到單精度浮點數(shù)的流程
        2.1 流程
        在實際工程應用中,所處理的數(shù)據(jù)都有一個或大或小的范圍,在這個范圍內(nèi)將實數(shù)為單精度浮點數(shù)會節(jié)約芯片資源和降低功耗。故選擇在-9 999.999 9~9 999.999 9的范圍內(nèi)完成實數(shù)到單精度浮點數(shù)的轉換,如圖2所示。考慮到實際,數(shù)值在很多情況下是通過串口獲取的,并表現(xiàn)為ASCII形式。故本文中所提到的實數(shù)皆為ASCII表示。

        本文引用地址:http://www.104case.com/article/190975.htm

        c.JPG


        轉換過程采用流水線操作,用計數(shù)器控制轉換進程。ASCII碼轉換為單精度浮點的如下:
        (1)將8位ASCII碼所代表的數(shù)字字符轉為十進制數(shù)字(由于硬件電路對數(shù)字的表示只有0和1的組合,所以將實數(shù)的整數(shù)和小數(shù)分開表示);
        (2)利用程序包里的數(shù)據(jù)類型轉換函數(shù)將十進制數(shù)轉換為二進制數(shù),但小數(shù)部分的轉換需要單獨實現(xiàn);
        (3)對二進制表示的實數(shù)進行規(guī)格化;
        (4)根據(jù)符號位ASCII碼值確定符號位s,根據(jù)規(guī)格化移動的位數(shù)確定階碼e,將規(guī)格化中的小數(shù)部分f保留28位;
        (5)根據(jù)就近舍入原則對保留的28位小數(shù)部分的后5位進行判斷和舍入。
        2.2 關鍵代碼解析
        的硬件描述語言中將整數(shù)的十進制轉換為二進制比較簡單,可以調用ISE軟件自帶的程序包中的轉換函數(shù)來實現(xiàn),但如何將小數(shù)部分轉換為二進制是能否順利完成從實數(shù)到單精度浮點數(shù)轉換的關鍵。考慮到要對小數(shù)部分進行舍入運算,所以將小數(shù)部分轉換28位的二進制。要用28位二進制表示小數(shù)部分,需利用VHDL語言中變量(variable)被賦值時立即生效的特性,結合FOR循環(huán)來實現(xiàn)。部分關鍵代碼如下:
        d.JPG
        代碼中frac_part是小數(shù)部分的十進制表示(因為integer類型只能表示整數(shù),所以將小數(shù)部分擴大了10 000倍,但不影響結果的正確性),frac_28是小數(shù)部分的二進制表示。信號frac_28(27)的權值是2-1,依次以1/2倍率遞減,frac_28(0)的權值是2-28。此進程由frac_part發(fā)生變化來啟動,完成轉換的時間是瞬時,也可以認為是一個時鐘周期。



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 怀远县| 石屏县| 安阳县| 新余市| 万荣县| 商南县| 安图县| 临朐县| 湖南省| 卓资县| 常熟市| 陵川县| 永昌县| 于田县| 江安县| 安陆市| 项城市| 中超| 潞西市| 望江县| 涿州市| 桃源县| 蚌埠市| 尼木县| 芜湖市| 云浮市| 沿河| 灌云县| 万盛区| 吴旗县| 集安市| 定南县| 昭平县| 陆良县| 肃宁县| 本溪| 清徐县| 赞皇县| 高邑县| 彭阳县| 乌恰县|