Vector 转换和调整向量大小

Vector 转换和调整向量大小,vector,type-conversion,vhdl,Vector,Type Conversion,Vhdl,我有以下代码(简化): IEEE库; 使用IEEE.std_logic_1164.all; 使用IEEE.numeric_std.all; 使用ieee.std_logic_arith.all; 实体foo是 终端实体; foo is的建筑风格 信号slv16:标准逻辑向量(15至0); 信号slv5:标准逻辑向量(7到0); 开始 slv16我想我发现了问题所在。我用了这两个图书馆: USE ieee.numeric_std.all; USE ieee.std_logic_arith.all;

我有以下代码(简化):

IEEE库;
使用IEEE.std_logic_1164.all;
使用IEEE.numeric_std.all;
使用ieee.std_logic_arith.all;
实体foo是
终端实体;
foo is的建筑风格
信号slv16:标准逻辑向量(15至0);
信号slv5:标准逻辑向量(7到0);
开始

slv16我想我发现了问题所在。我用了这两个图书馆:

USE ieee.numeric_std.all;
USE ieee.std_logic_arith.all;
而对于无符号,两者的实现方式相同,如下所示:

type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;
类型UNSIGNED是STD_逻辑的数组(自然范围);
删除概要库后,错误消息消失。虽然我理解这里的问题,但上面的错误消息给了我一个错误的方向


谢谢

我不知道。我看不出有什么问题。我在3个不同的模拟器上试过,他们也认为没问题。您使用的是什么模拟器?显示整个错误消息和任何也将指示该工具的警告`resize[unsigned,natural return unsigned]在package numeric_std中声明。GHDL(
GHDL-a--std=08--ieee=standard
)或Mentor Graphics Modelsim(
vcom-2008
)。For-1993等也没有错误。无符号和标准逻辑向量在类型转换中密切相关。它们具有相同的元素基类型。您问题中的代码没有
使用ieee.std\u logic\u arith.all;您可能需要对其进行编辑以显示此内容。错误消息是您所期望的,因为在VHDL中,当您对同一子程序有多个定义时,所有定义都将被忽略,以提醒您冲突。好的-这解释了为什么在这种情况下,当忽略所有LIB时,我会收到这样的错误消息。
type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;