首页 文章

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

提问于
浏览
5

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

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

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

Tahnks提前

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

2 回答

  • 3

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

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

  • 7
    use ieee.numeric_std.all;
    

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

    signal mynum : unsigned(234 downto 0)
    

相关问题