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

问题描述 投票:0回答:1

虽然使用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规范在该定义中是否有错误?

vhdl
1个回答
0
投票

更改是有意的。参见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 标签居民。

© www.soinside.com 2019 - 2024. All rights reserved.