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

Ken*_*ell 2 vhdl

使用 VHDL-2019 IEEE 规范部分时。5.2.3.1. 一般的

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

(我添加了指数**)

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

在 1993 年的规范中,它指出 -((2**31) - 1) 和 (2**31) - 1) -2147483647 & 2147483647

新的 VHDL 规范在该定义中是否有错误?

小智 5

这种变化是非常有意的。参见LCS2016_026c。您可能会注意到这与编程语言中的 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 标记居民。