新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 數字電路中小數的操作

        數字電路中小數的操作

        作者: 時間:2015-09-14 來源:網絡 收藏

          簡介:在的運算中,沒有小數點概念的,小數你知道在哪個位置,但是電路不知道小數點的位置,所以你要想法讓電路在不知道小數點的情況下仍然能夠運算出你想要的結果。這里就要進行小數點對齊。

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

          1,小數的運算

          在的運算中,沒有小數點概念的,小數你知道在哪個位置,但是電路不知道小數點的位置,所以你要想法讓電路在不知道小數點的情況下仍然能夠運算出你想要的結果。這里就要進行小數點對齊。

          舉例說明:

          兩個無符號小數:a3a2a1a0.a-1a-2

          b3b2b1b0.b-1b-2b-3

          其中a有6bits,其中4位為整數,2位為小數,而b有4bits整數,3bits小數,這個小數點是認為點的。

          比如說我要做兩者的乘法,那么應該怎么做呢?

          從理論上來說a*b的結果有13bits,其中8bits整數,5bits小數

          結果是:c7c6c5c4c3c2c1c0.c-1c-2c-3c-4c-5

          一個減數為d3d2d1d0.d-1d-2,要從c中減去,應該如何操作呢?

          f=a*b - c

          a*b的結果是8bits整數,5bits小數,而d為4bits整數,2bits小數,

          如果在rtl描述中,直接寫成

          f = c-d;

          那么結果就變成:

          c7c6c5c4c3c2c1c0.c-1c-2c-3c-4c-5

          - d3d2d1d0.d-1d-2

          很顯然得出的結果是錯誤的,正確的結果應該是:

          c7c6c5c4c3c2c1c0.c-1c-2c-3c-4c-5

          - d3d2d1d0.d-1d-2 00 0

          也就是(沒有小數點了)

          c7c6c5c4c3c2c1c0c-1c-2c-3c-4c-5

          - d3d2d1d0d-1d-2 00 0

          很明顯需要將減數左移3位將其小數點和被減數對齊。

          這樣得到的結果就是8bits整數,和5bits小數。

          當然也可以將c右移3位,這樣就損失了精度。得到結果是6bits整數和2bits小數。小數點的位置你自己是知道的。

          所以如果要RTL描述的話需要如下:

          wire [5:0] a;

          wire [6:0] b;

          wire [12:0] mul_result;

          assign mul_result = a *b;

          wire [13:0] result;

          assign result = mul_result - {5'b0,d,3'b0}

          這樣得到的結果就是9bits整數,和5bits小數。



        關鍵詞: 數字電路

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 德令哈市| 砚山县| 太湖县| 平乐县| 文水县| 富宁县| 诏安县| 佛冈县| 西贡区| 迁安市| 肥城市| 都兰县| 伊宁县| 黑山县| 太仓市| 长汀县| 修武县| 余江县| 锡林浩特市| 孟津县| 喀喇沁旗| 隆化县| 尼木县| 浏阳市| 诏安县| 凤冈县| 南汇区| 芮城县| 兴山县| 唐山市| 余干县| 泽普县| 桦南县| 小金县| 张家口市| 淳安县| 临沂市| 内黄县| 汶上县| 乐安县| 浦江县|