我有一个vivando项目,当我尝试在我的一个vhdl程序中创建端口映射时,我得到了我不知道的错误';我不知道如何解决

我有一个vivando项目,当我尝试在我的一个vhdl程序中创建端口映射时,我得到了我不知道的错误';我不知道如何解决,vhdl,Vhdl,我有一个vhdl文件,我正试图在vivando中为它创建端口映射,但是我不断地得到我不理解的错误。我对vhdl比较陌生,希望能得到任何帮助,帮助我找出需要更改的内容。 这是带有端口映射的程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DispAlu4 IS PORT( a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- Input SW[7..4]: a[3..0] b: IN STD_LOGIC_VECT

我有一个vhdl文件,我正试图在vivando中为它创建端口映射,但是我不断地得到我不理解的错误。我对vhdl比较陌生,希望能得到任何帮助,帮助我找出需要更改的内容。 这是带有端口映射的程序

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DispAlu4 IS
 PORT(
 a: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- Input SW[7..4]: a[3..0]
 b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- Input SW[3..0]: b[3..0]
 control: IN STD_LOGIC_VECTOR(1 DOWNTO 0); -- Input SW[15..14]: control[1..0]
 led15: OUT STD_LOGIC; -- Output LED[15]: overflow
 led17: OUT STD_LOGIC; -- Output LED[17]: zero
 led16: OUT STD_LOGIC; -- Output LED[16]: cOut
 an: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- Output AN[7..0]: '0' enabled
 hex: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) -- Output HEX[6..0]: result[3..0]
 );
END DispAlu4;
ARCHITECTURE behavioral OF DispAlu4 IS
 COMPONENT Alu4
 PORT(
 a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
 control: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
 overflow: OUT STD_LOGIC;
 zero: OUT STD_LOGIC;
 cOut: OUT STD_LOGIC;
 result: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
 );
 END COMPONENT;
 COMPONENT Bin2Hex
 PORT(
 bin: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
 hex: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
 );
 END COMPONENT;
 SIGNAL overflow_sig: STD_LOGIC;
 SIGNAL zero_sig: STD_LOGIC;
 SIGNAL carry_sig: STD_LOGIC;
 SIGNAL result_sig: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
U1: Alu4 PORT MAP (a, b, control_sig => control, overflow_sig, zero_sig, result_sig, carry_sig); #port map that has errors

END behavioral;
以下是其中引用的其他程序:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Alu4 IS
 GENERIC( CONSTANT N: INTEGER := 4; -- 4 bits ALU
 CONSTANT Z: STD_LOGIC_VECTOR(3 DOWNTO 1) := "000" -- 3 Zeros
 );
 PORT(
 a, b: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
 control: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
 overflow: OUT STD_LOGIC;
 zero: OUT STD_LOGIC;
 cOut: OUT STD_LOGIC;
 result: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)
 );
END Alu4;
ARCHITECTURE behavioral OF Alu4 IS
 COMPONENT Alu1
 PORT(
 a: IN STD_LOGIC;
 b: IN STD_LOGIC;
 cIn: IN STD_LOGIC;
 control: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
 cOut: OUT STD_LOGIC;
 result: OUT STD_LOGIC
 );
 END COMPONENT;

 SIGNAL carry_sig: STD_LOGIC_VECTOR(N DOWNTO 0); -- carry_sig(N) = MSB cOut
 SIGNAL result_sig: STD_LOGIC_VECTOR(N-1 DOWNTO 0);
BEGIN
process (a, b, control)
BEGIN
case control is
 WHEN "000" =>
 result_sig <= a AND b;
 WHEN "001" =>
 result_sig <= a OR b;
 WHEN "010" =>
 result_sig <= carry_sig;
 WHEN "011" =>
 result_sig <= carry_sig;
 WHEN "100" =>
 result_sig <= NOT a;
 WHEN "101" =>
 result_sig <= a XOR b;
 WHEN "110" =>
 result_sig <= carry_sig;
 WHEN "111" =>
 result_sig <= NOT b;
 WHEN others =>
 NULL;
 END case;
 END process;
END behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体Alu4是
通用(常数N:整数:=4;--4位ALU
常数Z:STD_逻辑_向量(3到1):=“000”--3个零
);
港口(
a、 b:标准逻辑向量(N-1到0);
控制:标准逻辑向量(1到0);
溢出:输出标准逻辑;
零:输出标准逻辑;
cOut:输出标准逻辑;
结果:输出标准逻辑向量(N-1到0)
);
末端Alu4;
Alu4的体系结构是
组分Alu1
港口(
答:标准逻辑;
b:标准逻辑;
cIn:标准逻辑;
控制:标准逻辑向量(1到0);
cOut:输出标准逻辑;
结果:输出STD_逻辑
);
端部元件;
信号进位信号:标准逻辑向量(N到0);--进位信号(N)=最高有效位
信号结果信号:标准逻辑向量(N-1到0);
开始
过程(a、b、控制)
开始
病例对照
当“000”=>
结果
结果
结果
结果
结果
结果
结果
结果
无效的
终例;
结束过程;
结束行为;
第二计划

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY Bin2Hex IS 
    PORT(
        bin:  IN STD_LOGIC_VECTOR(3 DOWNTO 0);   --4-bit binary inputs
        hex:  OUT STD_LOGIC_VECTOR(6 DOWNTO 0)    --7-segment hex display  
    );
END Bin2Hex;
ARCHITECTURE behavioral OF Bin2Hex IS 
BEGIN
    WITH bin SELECT
        hex <=  "1000000"   WHEN "0000", --0
          "1111001" when "0001", --1
          "0100100" when "0010", --2
          "0110000" WHEN "0011", --3
          "0011001" WHEN "0100", --4
          "0010010" WHEN "0101", --5
          "0000010" WHEN "0110", --6
          "1111000" WHEN "0111", --7
          "0000000" WHEN "1000", --8
          "0010000" WHEN "1001", --9
          "0001000" WHEN "1010", --A
          "0000011" WHEN "1011", --b
          "0100110" WHEN "1100", --C
          "0100001" WHEN "1101", --d
          "0000110" WHEN "1110", --E
          "0001110" WHEN "1111", --F
          "1111111" when others;        
    
                
END behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体Bin2Hex是
港口(
bin:标准逻辑向量(3到0);--4位二进制输入
十六进制:输出标准逻辑向量(6到0)--7段十六进制显示
);
端部Bin2Hex;
Bin2Hex的体系结构是
开始
使用bin SELECT

十六进制注释由“-”和行尾分隔,而不是您引入的另一个错误。端口映射关联列表可以具有位置关联或命名关联,将正式端口与实际表达式关联(此处为信号)。一旦切换到命名关联,就无法切换回位置关联,因为命名关联是无序的。在语法分析过程中,无法知道命名关联是否也是位置有序的,因此会出现错误。显示完整的错误消息。你是说(锡林克斯)维瓦多而不是维万多?(如果是这样,则添加它的标记。)您还可以将命名的关联转换为实际=>formal,而不是formal=>actual。您可以使用位置关联进行正式控制。实际控制信号未声明。实体alu在组件声明中为alu4。还有其他几个错误。是的,我的意思是XilinX合成错误消息类似于
error[Synth 8-2549]位置关联不能跟在命名关联之后。