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

上記の文では、整数または自然数である3です。それが自然数であれば、そこに負の数を使用するとどうなりますか? VHDLはそれを整数として認識しますか?数値はVHDLで数値を表します

+2

あなたの '3'のような整数リテラルは*ユニバーサル整数*です。 'integer'と' natural'はユニバーサル整数のサブタイプです。 – Paebbels

答えて

3

整数リテラルは、あらかじめ定義された匿名のタイプuniversal_integerです。これらは暗黙的に必要な(サブ)タイプに変換されます。 integerまたはnatural、オペレーター*です。 IEEE Std。も参照のこと。 1076-2008、para。 5.2.3.1。

もし用語-3を指定した場合従って、これはマイナス記号-及び要約(10進数)で構成される単純な式として解析されたリテラル3.番号3種類universal_integerであろう、と符号演算子を適用した後それはまだ同じタイプです。 (説明のために@ user1155120に感謝します) その後、演算子がnaturalであれば、式-3の変換は失敗します。

同じことが匿名事前定義型の浮動小数点リテラルに適用されますuniversal_real、paraも参照してください。 5.2.5.1。

任意の整数型のオペランドは、任意の浮動小数点型に変換できます。逆もまた同様です。浮動小数点から整数への変換は、最も近い整数への丸めを使用して行われます。 0.5の小数部を持つ浮動小数点値は、切り上げまたは切り捨てのいずれかです(paraも参照)。 9.3.6。

+0

説明していただきありがとうございます。 – ksaliya

+0

@ user1155120それを修正しました。もしそれが標準であれば、はるかに明確になるだろう。 5.2.3.1は、パラへの前方参照を有する。 15.5(用語集のように)。私にとって_integer_には負の数も含まれていますが、ここでは真ではありません。 –

+0

@ user1155120はい、_integer型_は負の数をカバーできます。しかし、_integer_という名前のBNFルールは、数字と下線(15.5.2)にしか展開されないため** **できません。したがって、整数リテラルは正またはゼロのいずれかです。そして、これは私が書かれた文章で混乱していることがわかったものです。もちろん、正式な記法は曖昧ではありません。 –

関連する問題