vhdl:块的实际值太多…只有0个形式值

vhdl:块的实际值太多…只有0个形式值,vhdl,Vhdl,最后一天,在我们给出项目前的最后3个小时,我们刚刚意识到我们有这个错误! 我不是很擅长vhdl,所以我不能理解问题是什么 错误(10588):addsub16处的VHDL通用映射方面错误。vhd(31):块“fulladder16”的实际值太多,只有0个形式 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY addsub16 IS PORT(X, Y :IN STD_LOGIC_VECTOR(15 DOWNTO 0)

最后一天,在我们给出项目前的最后3个小时,我们刚刚意识到我们有这个错误! 我不是很擅长vhdl,所以我不能理解问题是什么

错误(10588):addsub16处的VHDL通用映射方面错误。vhd(31):块“fulladder16”的实际值太多,只有0个形式

LIBRARY ieee;   
USE ieee.std_logic_1164.all;   

ENTITY addsub16 IS    
 PORT(X, Y    :IN STD_LOGIC_VECTOR(15 DOWNTO 0);    
     Add_Sub  :IN STD_LOGIC;    
     Result   :OUT STD_LOGIC_VECTOR(15 DOWNTO 0);    
     Cout     :OUT STD_LOGIC;   
     Overflow :OUT STD_LOGIC);   
END addsub16;   

ARCHITECTURE Structure OF addsub16 IS    
    COMPONENT fulladder16   
        PORT(Cin      :IN STD_LOGIC;    
             X, Y     :IN STD_LOGIC_VECTOR(15 DOWNTO 0);    
             Sum      :OUT STD_LOGIC_VECTOR(15 DOWNTO 0);     
             Cout     :OUT STD_LOGIC;    
             Overflow :OUT STD_LOGIC);    
    END COMPONENT;    
    SIGNAL y_mod :STD_LOGIC_VECTOR(15 DOWNTO 0);    
    BEGIN

    gen_XOR:    
    FOR i IN 0 TO 15 GENERATE    
        y_mod(i) <= Y(i) XOR Add_Sub;     
    END GENERATE;     

    adder:fulladder16 GENERIC MAP(16)     
                 PORT MAP(Add_Sub, X, y_mod, Result, Cout, Overflow);    
  END Structure;     
ieee库;
使用ieee.std_logic_1164.all;
实体addsub16是
端口(X,Y:标准逻辑向量(15到0);
在STD_逻辑中添加_Sub:;
结果:输出标准逻辑向量(15到0);
Cout:输出标准逻辑;
溢出:输出标准(U逻辑);
结束addsub16;
addsub16的体系结构是
组件全加法器16
端口(Cin:标准_逻辑中;
十、 Y:标准逻辑向量(15到0);
求和:输出标准逻辑向量(15到0);
Cout:输出标准逻辑;
溢出:输出标准(U逻辑);
端部元件;
信号y_mod:STD_逻辑_向量(15到0);
开始
第二代:
对于0到15中的i,生成

y_mod(i)问题在于线路:

adder:fulladder16 GENERIC MAP(16)
“formal”是在原型中为组件(或其他任何组件)声明的端口、泛型等。“实际”是映射到它的内容


您正在将1个实际值映射到一个组件(
fulladder16
),该组件的声明(就在代码中的声明上方)显示0个形式泛型。

您可以用一行替换生成块
gen\u XOR
,这可能更可读:
y\u mod