vhdl中的结构体系结构代码

vhdl中的结构体系结构代码,vhdl,Vhdl,我是vhdl新手,我正在尝试使用结构模型编译代码。我有一个简单的例子,如下所示: ENTITY equiv IS PORT (a, b : IN BIT; c : OUT BIT); END equiv; ARCHITECTURE structure OF equiv IS SIGNAL tmp : BIT; COMPONENT xor2 PORT (x, y : IN BIT; z : OUT BIT); END

我是vhdl新手,我正在尝试使用结构模型编译代码。我有一个简单的例子,如下所示:

ENTITY equiv IS
    PORT (a, b : IN BIT; 
          c    : OUT BIT);
END equiv;

ARCHITECTURE structure OF equiv IS

    SIGNAL tmp : BIT;

    COMPONENT xor2
        PORT (x, y : IN BIT; z : OUT BIT);
    END COMPONENT;

    COMPONENT inv 
        PORT (x : IN BIT; z : OUT BIT); 
    END COMPONENT;

BEGIN

    u0: xor2 PORT MAP (a, b, tmp);
    u1: inv PORT MAP (tmp, c);

END structure;
当我试图编译这段代码时,我不断收到一个错误,上面说:

“选定范围中未定义的对象”

对于代码如何确定xor2是xor,我也感到困惑?该代码的内部工作原理是什么?我试着搜索,但什么也找不到。我不想把我的基本知识弄好


提前谢谢

您试图在这里实例化两个组件(xor2和inv2)。但是编译器对它们一无所知,所以它说是未定义的对象。你的问题是正确的,你需要定义这段代码的内部工作

您需要创建自己的名为xor2.vhd的文件,并为其定义实体/体系结构。根据组件定义,您已经知道它应该是什么样子: 组件xor2端口(x,y:输入位;z:输出位);端部元件


x和y是bit类型的输入,z是bit类型的输出。因此,编写内部工作,然后首先编译它们,然后将它们全部编译到同一个库中,它应该可以工作。

您试图在这里实例化两个组件(xor2和inv2)。但是编译器对它们一无所知,所以它说是未定义的对象。你的问题是正确的,你需要定义这段代码的内部工作

您需要创建自己的名为xor2.vhd的文件,并为其定义实体/体系结构。根据组件定义,您已经知道它应该是什么样子: 组件xor2端口(x,y:输入位;z:输出位);端部元件


x和y是bit类型的输入,z是bit类型的输出。因此,编写内部工作,然后先编译这些工作,然后将这些工作编译到同一个库中,它应该可以工作。

非常感谢。现在更有意义了!谢谢。现在更有意义了!