2016-03-28 331 views
-1

我正在寫一個程序,需要爲簽名和無符號數字工作。你需要一個32位輸入,前24位是一個整數,後8位是一個分數。取決於你是什麼分數是你上下舍入。非常簡單,但是如何編寫一個無論輸入是帶符號還是無符號的程序?你是否僅僅根據數字是否是無符號來執行兩個獨立的代碼塊?如何處理VHDL中的有符號和無符號數字?

+0

你真正的意思是什麼_signed_數字?有簽名的號碼可以有符號,但不需要。要區分有符號和無符號數字,您需要一個單獨的控制信號。 –

+0

這聽起來像是固定點,而不是有符號或無符號。我會看這個VHDL-2008定點包。 –

+0

當你說「有符號或無符號」時,你的意思是「正面還是負面」(不是分別)? – fru1tbat

回答

0

如果數據以及來自該信息的數據是否被簽名,則您的程序需要知道源。否則,你的程序如何知道一個位矢量是否(未)被簽名?標牌是人類用來構造數據的慣例。你實現的硬件只看到一個位矢量。

0

具有8個小數位的32位無符號數可以表示0到((2^32)-1)/ 256範圍內的數字。

帶8個小數位的32位有符號數可以表示範圍 - (2^31)/ 256到((2^31)-1)/ 256中的數字。那麼,如何將32位輸入(有符號或無符號)轉換爲33位有符號,這將能夠表示範圍 - (2^32)/ 256到((2^32))範圍內的數字。 -1)/ 256,這將涵蓋您的整個輸入範圍。 (你沒有給出任何代碼,除了你的32位輸入外,還必須有其他輸入來表明這些32位代表的是一個無符號數還是有符號數,你需要測試這個輸入和根據其狀態進行適當的轉換。)

相關問題