我无法通过端口映射了解的sintaxis错误

时间:2019-05-05 20:16:53

标签: vhdl vivado

我正在尝试从1位fulladder进行4位fulladder,但是我使用的平台vivado给出了语法错误,但我不知道为什么?  这是第一个模块(名称是HA2(Fulladder1bits(我必须更改FA的字母HA2,但我知道该怎么做)))

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity HA2 is
    Port ( a : in  STD_LOGIC;
           b : in  STD_LOGIC;
           s : out  STD_LOGIC;
           cin : in  STD_LOGIC;
           count : out  STD_LOGIC);
end HA2;

architecture Behavioral of HA2 is

begin

s <= a xor b xor cin;
count <= (a and b) or (cin and (a or b));

end Behavioral;

并且错误在下一个模块(名为“ fulladder4bits”)中:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity fulladder4bits is
    Port ( A : in STD_LOGIC_VECTOR (3 downto 0);
           B : in STD_LOGIC_VECTOR (3 downto 0);
           S : out STD_LOGIC_VECTOR (3 downto 0);
           C3 : out STD_LOGIC);
end fulladder4bits;

architecture Behavioral of fulladder4bits is

COMPONENT HA2
    Port ( a : in  STD_LOGIC;
           b : in  STD_LOGIC;
           s : out  STD_LOGIC;
           cin : in  STD_LOGIC;
           count : out  STD_LOGIC);
end COMPONENT;
signal C0,C1,C2 : std_logic ;
begin

fa1 : HA2 port map(A(0),B(0),'0',S(0),C0) ;**HERE the plataform vivado give me a syntaxis error but i don t know why 
fa2 : HA2 port map(A(1),B(1),'C0',S(1),C1) ;**HERE 
fa3 : HA2 port map(A(2),B(2),'C1',S(2),C2) ;**HERE 
fa4 : HA2 port map(A(3),B(3),'C2',S(3),C3) ;**HERE 

end Behavioral;

但是有错误和一切我可以做的综合和实现,所以我真的不知道是什么问题。

2 个答案:

答案 0 :(得分:1)

组件中端口的顺序很重要。实例化已与另一个命令一起使用。 rinExpr :: Either Int (Op,(Expr,Expr)) -> Expr inExpr (Left a) = Num a inExpr (Right (o, (l, r))) = Bop l o r的顺序不正确。因此,您可以使用解决问题的方法。

s

或(这种方式是更好的选择)

cin
  

您的代码的第二个问题是端口映射中的'C0'('C1','C2')。它   应该是C0(C1,C2)。

答案 1 :(得分:0)

这解决了我的问题,但我真的不知道为什么:

fa0:HA2 port map(a=>A(0),b=>B(0),cin=>'0',s=>S(0),count=>C0);
fa1:HA2 port map(a=>A(1),b=>B(1),cin=>C0,s=>S(1),count=>C1);
fa2:HA2 port map(a=>A(2),b=>B(2),cin=>C1,s=>S(2),count=>C2);
fa3:HA2 port map(a=>A(3),b=>B(3),cin=>C2,s=>S(3),count=>C3);