VHDL "expecting type ieee.std_logic_1164.STD_LOGIC_VECTOR" 当那是我给出的类型时
VHDL "expecting type ieee.std_logic_1164.STD_LOGIC_VECTOR" when that is the type I'm giving
library IEEE;
use work.vec9Arr.all;
use IEEE.STD_LOGIC_1164.all;
entity vector_scalar_multiplier is
port(
in_a : in vec9arr;
in_b : in std_logic_vector(15 downto 0);
out_vec : out vec9arr);
end vector_scalar_multiplier;
architecture structure of vector_adder is
component multiplier is
generic (
O_width : integer := 8;
P_width : integer := 8
);
port (
in_O : in std_logic_vector(O_width - 1 downto 0);
in_P : in std_logic_vector(P_width - 1 downto 0);
out_F : out std_logic_vector((O_width + P_width) - 1 downto 0)
);
end component;
begin
GEN_MULT : for i in 0 to 8 generate
MULT : multiplier
generic map(O_width => 16, P_width => 8)
port map(
in_O => in_b,
in_P => in_a(i),
out_F => out_vec(i));
end generate;
end structure;
一个非常简单的实体,它将向量的每个元素乘以标量。编译时出现以下错误:
我一直在寻找可能导致此问题的语法错误,但我一定遗漏了什么。什么可能导致这样的错误?
我认为这不是由自定义 vec9arr 引起的,因为我在同一目录中有另一个 VHDL 文件也使用 vec9arr 并且没有任何问题。
您的实体名称是:vector_scalar_multiplier
但是你的架构声明是:vector_adder
因此,您在体系结构中引用的信号只能是 vector_adder
实体声明中定义的信号以及您使用 signal
关键字定义的任何内部信号(其中我看到本例中的 none)
您是否打算为 vector_scalar_multiplier
定义架构?如果不能,请附上 vector_adder
的实体声明?
library IEEE;
use work.vec9Arr.all;
use IEEE.STD_LOGIC_1164.all;
entity vector_scalar_multiplier is
port(
in_a : in vec9arr;
in_b : in std_logic_vector(15 downto 0);
out_vec : out vec9arr);
end vector_scalar_multiplier;
architecture structure of vector_adder is
component multiplier is
generic (
O_width : integer := 8;
P_width : integer := 8
);
port (
in_O : in std_logic_vector(O_width - 1 downto 0);
in_P : in std_logic_vector(P_width - 1 downto 0);
out_F : out std_logic_vector((O_width + P_width) - 1 downto 0)
);
end component;
begin
GEN_MULT : for i in 0 to 8 generate
MULT : multiplier
generic map(O_width => 16, P_width => 8)
port map(
in_O => in_b,
in_P => in_a(i),
out_F => out_vec(i));
end generate;
end structure;
一个非常简单的实体,它将向量的每个元素乘以标量。编译时出现以下错误:
我一直在寻找可能导致此问题的语法错误,但我一定遗漏了什么。什么可能导致这样的错误?
我认为这不是由自定义 vec9arr 引起的,因为我在同一目录中有另一个 VHDL 文件也使用 vec9arr 并且没有任何问题。
您的实体名称是:vector_scalar_multiplier
但是你的架构声明是:vector_adder
因此,您在体系结构中引用的信号只能是 vector_adder
实体声明中定义的信号以及您使用 signal
关键字定义的任何内部信号(其中我看到本例中的 none)
您是否打算为 vector_scalar_multiplier
定义架构?如果不能,请附上 vector_adder
的实体声明?