VHDL整数定义VHDL-2019的范围是多少?

VHDL整数定义VHDL-2019的范围是多少?,vhdl,Vhdl,在使用VHDL-2019 IEEE规范时 节。5.2.3.1. 一般的 “但是,实现应允许声明任何整数 其范围完全包含在范围内的类型–(2**63)和 (2**63)–1个(含1个)。” (我添加了指数**) 这是否意味着–(2**63)=-9223372036854775808 在1993年的规范中,它规定了-(2**31)-1)和(2**31)-1) -2147483647和2147483647 新的VHDL规范在该定义中有错误吗 肯:这种改变是有意的。看见您可以注意到,这与编程语言中的64

在使用VHDL-2019 IEEE规范时 节。5.2.3.1. 一般的

“但是,实现应允许声明任何整数 其范围完全包含在范围内的类型–(2**63)和 (2**63)–1个(含1个)。”

(我添加了指数**)

这是否意味着–(2**63)=-9223372036854775808

在1993年的规范中,它规定了-(2**31)-1)和(2**31)-1) -2147483647和2147483647

新的VHDL规范在该定义中有错误吗


肯:这种改变是有意的。看见您可以注意到,这与编程语言中的64位整数具有相同的范围。非对称效应来自两个补码,它们是VHDL工具实现中整数类型的基础,大铁时代的十进制ALU早已褪色

以前的对称范围不是实现问题,VHDL算术语义要求运行时检测翻滚或下溢。此更改允许在执行大于64位通用整数的算术运算时,基于更改符号而不测试值的更简单检测

值范围的增加是为了迫使合成供应商支持超过标准先前版本中规定的最小范围。在未来的某个日期,这一过程的效果如何(以及在什么样的实施时间间隔内)将是一个历史问题。基于索引范围(IEEE Std 1076-2019 5.3.2.2索引约束和离散范围)和枚举类型的位置对应关系(5.2.2枚举类型,5.2.2.1概述),也存在二次效应。从堆栈大小问题开始,模拟(或合成)具有极端索引值范围的复合对象是不可行的。行业惯例尚未确定,可能会导致今天的HDL被淘汰


对标准语义描述准确性的关注可向IEEE SAs VASG小组委员会提出,该小组委员会鼓励相关方参与。您将在这里找到参与标准化过程的Stackoverflow标签居民。

那么,我是否应该针对文档提交错误报告?如果是,怎么做KenThe first comment是一个没有支持基础的意见。我认为旧标准有一个odity,因为如果您有一个十六进制值为0x8000000(-2147483648)的32位(C)整数,VHDL的整数范围将不包括在内。2019年之前,该范围允许基础计算机支持2的补码或1的补码运算。顺便说一句,目前没有一台1的补码运算计算机可以运行模拟器。因此,不需要继续考虑1的补码机器。如果实现只支持2的补码运算,那么也许有一天我们可以对integer类型做更多的操作,比如实现“and”运算符,因为A和16#FFFF#将始终返回相同的结果。