包体中实体附近的语法错误

时间:2015-10-23 05:50:38

标签: syntax-error vhdl vivado

我正在尝试为VHDL项目创建一个小包装门和其他组件。我已经创建了我的包,并在我的测试平台中实例化了一个组件,但是我收到了这个编译错误:

  

错误:[VRFC 10-1412]实体附近的语法错误[/ home /<编辑名称> /Documents/school/ECE581/projects/project1/project_1/project_1.srcs/sources_1/new/components.vhdl:23]

问题
我的语法错误的原因是什么,我该如何解决?

套餐代码

.iloc

调试工作

我一直在引用一些标准库代码herehere来确保我的声明和语法是正确的,据我所知,它们是正确的。我还引用了其他几个在线资源,我发现我的包,组件和实体声明没有任何问题。

其他笔记

  1. 我正在使用Linux版本的Xilinx Vivado v2014.4(64位)进行编译。
  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 -------------------------------------------------------------------------- -- 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实施。

1 个答案:

答案 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;