2016-03-31 26 views
4
A <= 3 * B; 

在上面的語句中是一個整數或一個自然數3。如果它是一個自然數,那麼如果我在那裏使用一個負數。 VHDL是否將其識別爲整數?一個數字在VHDL中有什麼數據類型

+2

像你的'3'這樣的整數文字是一個*通用整數*。 'integer'和'natural'是通用整數的子類型。 – Paebbels

回答

3

整數文字是匿名預定義類型universal_integer。它們被隱式轉換爲所需的(子)類型,例如, integernatural,爲您的運營商*。另見IEEE Std。 1076-2008,第5段。 5.2.3.1。

因此,如果指定的術語-3,這被解析爲字面3.減號-和摘要(十進制)數3將universal_integer類型組成的簡單表達式,以及將所述操作者標誌後,它仍然是同一類型。 (感謝@ user1155120的澄清。) 之後,如果您的運營商需要natural,則表達式-3的轉換將失敗。

同樣適用於浮點文字,它們是匿名預定義類型universal_real,另請參見段落。 5.2.5.1。

任何整數類型的操作數都可以轉換爲任何浮點類型,反之亦然。從浮點到整數的轉換使用舍入到最近的整數進行。小數部分爲0.5的浮點值或者向上舍入或向下舍入,另見上文。 9.3.6。

+0

謝謝你的澄清。 – ksaliya

+0

@ user1155120修復它,我希望。如果這一標準更爲清晰的話, 5.2.3.1將會有一個前向引用的段落。 15.5(如詞彙表)。對我來說一個_integer_也包含負數,但在這裏並不是這樣。 –

+0

@ user1155120是的,_integer type_可以覆蓋負數。但是,名爲_integer_的BNF規則可以不**,因爲它只擴展到數字和下劃線(15.5.2)。因此,整數文字是正數或零。這就是我在書面文字中發現的混亂。當然,正式的表示法是不明智的。 –

相關問題