如何表示整数大于整数的整数

时间:2012-11-18 17:51:47

标签: vhdl

有没有办法使用STD_LOGIC_1164或STD_NUMERIC中的预定义类型来表示0到2 ^ 32-1之间的整数? (考虑到默认的整数类型范围从-2 ^ 31-1到2 ^ 31-1)

我需要实现32位计数器,并且正在寻找一些使用整数类型而不是std_logic_vector来保存代码的方法。任何设计模式都适用于此?

或者,更好的问:什么是声明支持操作的32位(无符号)整数的最佳方式> /&lt ;, =,+ - /?

提前Tahnks

Edit1:我发现一个选项是将信号声明为std_logic_vector(31 downto 0),并在进行比较或+ - 操作时执行转换.ex:counter< = counter + std_logic_vector(unsigned(value)+ 1)..但仍然没有找到分区的方法(例如,如果需要1/4的计数器价值)

2 个答案:

答案 0 :(得分:7)

使用Integer类型,你不能(至少不能移植;可能有一些VHDL工具超出最小值并提供64位整数)

使用IEEE.numeric_std,您可以声明一个具有完整32位范围的Unsigned(如果您愿意,可以声明为53位),并且它应该执行您想要的所有操作。除非我误解您的要求,否则。

答案 1 :(得分:3)

use ieee.numeric_std.all;

然后使用unsigned数据类型 - 它作为位向量运行,并为其定义了数学运算。您可以选择您想要的位数。例如:

signal mynum : unsigned(234 downto 0)