首页 > 解决方案 > VHDL“期望类型 ieee.std_logic_1164.STD_LOGIC_VECTOR”当这是我给出的类型时

问题描述

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 并且没有任何问题。

标签: vhdlmodelsim

解决方案


您的实体名称是:vector_scalar_multiplier
但您的架构声明是:vector_adder

因此,您在架构中引用的信号只能是在vector_adder实体声明中定义的信号以及您使用关键字定义的任何内部信号signal(在此示例中我没有看到)

您是否打算为 定义架构vector_scalar_multiplier?如果不是,您能否包括实体声明vector_adder


推荐阅读