Variables VHDL:类型不匹配错误(纹波进位加法器)

Variables VHDL:类型不匹配错误(纹波进位加法器),variables,vhdl,type-mismatch,Variables,Vhdl,Type Mismatch,我对VHDL比较陌生,所以我为这个问题的解决方案道歉,这个解决方案对你们大多数人来说可能是显而易见的。在这段代码中,我试图模拟一个4位纹波进位加法器。然而,当我检查代码a的语法时,我遇到了一些与类型不匹配有关的错误 相关代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed

我对VHDL比较陌生,所以我为这个问题的解决方案道歉,这个解决方案对你们大多数人来说可能是显而易见的。在这段代码中,我试图模拟一个4位纹波进位加法器。然而,当我检查代码a的语法时,我遇到了一些与类型不匹配有关的错误

相关代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity toplevel is
    Port ( x : in  STD_LOGIC_VECTOR (3 downto 0);
           y : in  STD_LOGIC_VECTOR (3 downto 0);
           sum : out  STD_LOGIC_VECTOR (3 downto 0);
           cin : in  STD_LOGIC;
           count : out  STD_LOGIC);
end toplevel;

40: architecture Structure of toplevel is

signal c1, c2, c3 : STD_LOGIC;
component mytutorial02 
    Port(
    x : in STD_LOGIC;
    y : in STD_LOGIC;
    cin : in STD_LOGIC;
    sum : out STD_LOGIC;
    count : out STD_LOGIC);
end component;

begin

54: Stage0: mytutorial02 port map(x=>x(0), y=>(0), cin=>cin, sum=>sum(0), count=>c1);
55: Stage1: mytutorial02 port map(x=>x(1), y=>(1), cin=>c1, sum=>sum(1), count=>c2);
56: Stage2: mytutorial02 port map(x=>x(2), y=>(2), cin=>c2, sum=>sum(2), count=>c3);
57: Stage3: mytutorial02 port map(x=>x(3), y=>(3), cin=>c3, sum=>sum(3), count=>count);

end Structure;
&

实体mytutorial02是
端口(x:STD_逻辑中的;
y:在标准逻辑中;
cin:标准逻辑;
sum:输出标准逻辑;
计数:输出标准(U逻辑);
结束我的教程02;
mytutorial02的体系结构是
开始

你会踢自己的…
y=>(0),
哈哈,该死。我肯定是在踢自己。非常感谢。如果你想直接把它作为一个答案,我会奖励你正确的答案。。。如果您对此感兴趣,请从开始。您也不能将
40
用作必须是标识符的标签(以字母开头的基本标识符或以反斜杠开头的扩展标识符)。此外,体系结构主体没有用标签装饰-它们是命名的,并且不能有两个标签,例如,
54:Stage0:
修复Brian的实际值(4个位置)、标签(5个具有体系结构的位置)和添加上下文子句(
库ieee;使用ieee.std_logic_1164.all;
来分析mytutorial02实体/架构和您的代码。^谢谢。事实上,我只是把它们放进去,以便更容易地识别错误代码引用的行。事后看来,我应该在我的原始帖子中提到这一点。请看-有些人可能已经准备好了广告部分,并实际尝试他们测试他们将要发布的答案。作为标签的行号只会再添加五个错误。你会踢自己…
y=>(0),
哈哈,见鬼。我肯定是在踢我自己。谢谢。如果你想直接将其作为答案发布,我会奖励你正确的答案…如果你感兴趣的话。你也不能使用
40
作为标签,必须是一个标识符(可以是以字母开头的基本标识符,也可以是以反斜杠开头的扩展标识符)。此外,体系结构主体没有用标签装饰——它们是命名的,并且不能有两个标签,例如,
54:Stage0:
修复Brian的实际值(4个位置)、标签(5个结构位置)和添加上下文子句(
库ieee;使用ieee.std_logic_1164.all;
来分析mytutorial02实体/架构和您的代码。^谢谢。事实上,我只是把它们放进去,以便更容易地识别错误代码引用的行。事后看来,我应该在我的原始帖子中提到这一点。请看-有些人可能已经准备好了广告的部分,并实际尝试他们测试的答案,他们将张贴。你的行号标签只是增加了五个错误。
entity mytutorial02 is
Port ( x : in  STD_LOGIC;
       y : in  STD_LOGIC;
       cin : in  STD_LOGIC;
       sum : out  STD_LOGIC;
       count : out  STD_LOGIC);

end mytutorial02;

architecture Behavioral of mytutorial02 is

begin

sum  <= (x xor y xor cin);
count <= (cin and x) or (x and y) or (cin and y);

end Behavioral;