我正在尝试为VHDL项目创建一个小包装门和其他组件。我已经创建了我的包,并在我的测试平台中实例化了一个组件,但是我收到了这个编译错误:
错误:[VRFC 10-1412]实体附近的语法错误[/ home /<编辑名称> /Documents/school/ECE581/projects/project1/project_1/project_1.srcs/sources_1/new/components.vhdl:23]
问题
我的语法错误的原因是什么,我该如何解决?
套餐代码
.iloc
调试工作
我一直在引用一些标准库代码here和here来确保我的声明和语法是正确的,据我所知,它们是正确的。我还引用了其他几个在线资源,我发现我的包,组件和实体声明没有任何问题。
其他笔记
package p1_components is
component cNAND
port ( inA, inB : in bit;
output : out bit);
end component;
end p1_components;
package body p1_components is
--------------------------------------------------------------------------
-- NAND implementation
--------------------------------------------------------------------------
entity cNAND is -- *** line 23 - error is reported here ***
port ( inA, inB : in bit;
output : out bit);
end cNAND;
architecture def of cNAND is
begin
def_proc : process(inA, inB)
begin
if (inA and inB) then
output <= transport '0' after 5 ns;
else
output <= transport '1' after 5 ns;
end if;
end def_proc;
end def;
end p1_components;
这样的VHDL关键字,在实际设计中会使我的实现变得多余。但我正在研究的项目是针对学校的,并且要求我们为这部分项目推出自己的NAND实施。答案 0 :(得分:2)
通常情况下,我不会将实体放在包装内但在外面。试试这个:
package p1_components is
component cNAND
port ( inA, inB : in bit;
output : out bit);
end component;
end p1_components;
package body p1_components is
end p1_components;
--------------------------------------------------------------------------
-- NAND implementation
--------------------------------------------------------------------------
entity cNAND is
port ( inA, inB : in bit;
output : out bit);
end cNAND;
architecture def of cNAND is
begin
def_proc : process(inA, inB)
begin
if (inA = '1' and inB = '1') then
output <= transport '0' after 5 ns;
else
output <= transport '1' after 5 ns;
end if;
end process def_proc;
end def;