我是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?这段代码的内部工作是什么?我试着搜索,但找不到任何东西。我不想让我的基础知识正确。
提前致谢!
答案 0 :(得分:1)
您正尝试在此处实例化2个组件(xor2和inv2)。但是编译器对它们一无所知,因此它表示未定义的对象。您的问题是现场,您需要定义此代码的内部工作。
您需要创建一个名为xor2.vhd的文件,并为其定义实体/体系结构。根据组件定义,您已经知道它应该是什么样子: COMPONENT xor2 PORT(x,y:IN BIT; z:OUT BIT);结束组件;
x和y是类型位的输入,z是类型位的输出。所以编写内部工作,然后先编译它们,然后将它们全部编译到同一个库中,它应该可以工作。