我在代码中将向量输入转换为整数时遇到了问题。我是VHDL的新手,但下面的代码使用整数RANGE注释掉代码,但是当我尝试将向量值转换为整数时出现错误。这是我的代码和错误的副本:
UPDATE1: 我已尝试过您的修复程序并处理其中一个错误,但新的错误消息和代码如下所示:
答案 0 :(得分:1)
根据您在跟进行type mem is array (...) of std_logic_vector(...)
中的声明,您的记忆会在作业std_logic_vector
中等待unsigned
类型而不是RAMArray(unsigned(addr)) <= unsigned(din)
。
仅仅使用unsigned
的类型转换是不够的,但您必须在参数中添加类型转换函数to_integer
。换句话说
RAMArray(to_integer(unsigned(addr))) <= din
第二个错误出现在以下行qout <= RAMArray(addr)
中。在这里,您还应该使用类型转换为unsigned
以及类型转换函数to_integer
。 location参数将是整数类型。例如:
qout <= RAMArray(to_integer(unsigned(addr)))
尝试使用我的建议来修复您的代码,我认为它会起作用。