VHDL错误 - 标识符类型不一致

时间:2012-08-13 00:17:16

标签: vhdl

我是VHDL的新手,当我尝试编译代码时出现此错误:

错误(10476):adder42.vhd上的VHDL错误(23):标识符“Cout”的类型与std_logic_vector类型的用法不一致

我不确定在这里要改变什么,我们已经在这里给了几乎所有的代码,所以我不确定我是否在遵循指示时犯了错误,或者说有什么问题我们得到的代码。

这是来源:

LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY work;
USE work.fulladd_package.all;

ENTITY adder42 IS
    PORT( SW    : IN    STD_LOGIC_VECTOR(8 DOWNTO 0);
          LEDG  : OUT   STD_LOGIC_VECTOR(3 DOWNTO 0);
          LEDR  : OUT   STD_LOGIC_VECTOR(1 DOWNTO 0));
END adder42;

ARCHITECTURE Structure OF adder42 IS
    SIGNAL c    : STD_LOGIC_VECTOR(1 TO 3);
    SIGNAL x, y : STD_LOGIC_VECTOR(3 DOWNTO 0);
    SIGNAL s    : STD_LOGIC_VECTOR(3 DOWNTO 0);
    SIGNAL Cin, Cout: STD_LOGIC;
BEGIN
    Cin <= SW(8);
    x <= SW(3 DOWNTO 0);
    y <= SW(7 DOWNTO 4);
    LEDG <= s;
    LEDR <= Cout;

    stage0: fulladd PORT MAP( Cin, x(0), y(0), s(0), c(1));
    stage1: fulladd PORT MAP( c(1), x(1), y(1), s(1), c(2));
    stage2: fulladd PORT MAP( c(2), x(2), y(2), s(2), c(3));
    stage3: fulladd PORT MAP( c(3), x(3), y(3), s(3), Cout);
END Structure;

1 个答案:

答案 0 :(得分:1)

正如Stark在评论中所说,您正在为STD_LOGIC分配STD_LOGIC_VECTOR

你可以这样做:

LEDR <= Cout & Cout

但这一切都取决于你想要的东西。