1

我是 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 感到困惑?这段代码的内部工作是什么?我尝试搜索,但找不到任何东西。我不想让我的基础知识正确。

提前致谢!

4

1 回答 1

1

您正在尝试在此处实例化 2 个组件(xor2 和 inv2)。但是编译器对它们一无所知,所以它说的是未定义的对象。您的问题很明确,您需要定义此代码的内部工作。

您需要创建自己的名为 xor2.vhd 的文件并为其定义实体/架构。根据您的组件定义,您已经知道它应该是什么样子: COMPONENT xor2 PORT (x, y : IN BIT; z : OUT BIT); 结束组件;

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

于 2013-09-20T18:40:23.540 回答