分配默认值

时间:2016-01-26 13:34:41

标签: vhdl

我想用VHDL制作一个2位比较器。我有以下架构:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity eq2 is
    Port ( a : in  STD_LOGIC_VECTOR (1 downto 0);
           b : in  STD_LOGIC_VECTOR (1 downto 0);
           aeqb : out  STD_LOGIC);
end eq2;


architecture struc_arch of eq2 is
signal e0,e1 : std_logic ; 

begin
eq_bit0_unit  : entity work.eq1(sop_arch); 
port map (i0=>a(0) , i1=> b(0) , eq=>e0);

eq_bit1_unit : entity work.eq1(sop_arch); 
port map (i0=>a(1),i1=>b(1),eq=>e1);
aeqb <= e0 and e1;
end struc_arch ;

这种架构显然取决于eq1实体。这是我的lab1实体和架构:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;


entity eq1 is
    Port ( i0 : in  STD_LOGIC  ;
           i1 : in  STD_LOGIC;
           eq : out  STD_LOGIC);
end eq1;


architecture sop_arch of eq1 is
signal p0,p1 : std_logic;
begin

p0<= (not i0) and (not i1);
p1<= not i0 and i1;
eq <= p0 and p1;

结束sop_arch;

我收到以下错误:

  • 列出项目 错误:HDLParsers:3324 - “C:/Users/user/Documents/tp_vhdl/studies/eq2.vhd”第16行.IN模式没有默认值的实体的正式i0必须与实际值相关联。
  • 列出项目 错误:HDLParsers:164 - “C:/Users/user/Documents/tp_vhdl/studies/eq2.vhd”第17行。解析错误,意外的PORT

我尝试了此链接上的解决方案,但它也不起作用: VHDL - Assigning Default Values

1 个答案:

答案 0 :(得分:1)

第二个错误为您提供了解决此问题的方法。

  

意外的港口

乍一看这条线看起来是正确的,但请仔细查看上一行:

eq_bit1_unit : entity work.eq1(sop_arch); -- extra semicolon, oops! 
port map (i0=>a(1),i1=>b(1),eq=>e1);

因此,您尝试实例化eq1,没有端口映射。它尝试使用默认分配进行实例化,但没有,因此第一个错误。 然后它到达第二行(第17行),它看到一个表达式以关键字port开头,这是无效的,因此是第二个错误。