有没有办法使用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 回答
使用Integer类型,你不能(至少不能移植;可能有一些VHDL工具超出最小值并提供64位整数)
使用IEEE.numeric_std,您可以声明一个具有完整32位范围的Unsigned(如果您愿意,可以声明为53位),它应该执行您想要的所有操作 . 除非我误解您的要求 .
然后使用
unsigned
数据类型 - 它作为位向量运行,并为其定义数学运算 . 您可以选择您想要的位数 . 例如: