分配默认值
Assigning Default Values
我想用 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;
我收到以下错误:
- 列表项
ERROR:HDLParsers:3324 - "C:/Users/user/Documents/tp_vhdl/studies/eq2.vhd" 第 16 行。IN 模式没有默认值的实体的形式 i0 必须与实际值相关联。
- 列表项
ERROR:HDLParsers:164 - "C:/Users/user/Documents/tp_vhdl/studies/eq2.vhd" 第 17 行。解析错误,意外的 PORT
我尝试了关于这个 link 的解决方案,但它也没有用:
VHDL - Assigning Default Values
第二个错误为您提供了解决此问题的方法。
Unexpected PORT
这一行乍一看是正确的,但仔细看上一行:
eq_bit1_unit : entity work.eq1(sop_arch); -- extra semicolon, oops!
port map (i0=>a(1),i1=>b(1),eq=>e1);
所以您正在尝试实例化一个没有端口映射的 eq1
。它尝试使用默认分配进行实例化,但是有 none,因此出现了第一个错误。
然后它到达第二行(第 17 行),它看到一个以关键字 port
开头的表达式,该关键字无效,因此出现第二个错误。
我想用 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;
我收到以下错误:
- 列表项 ERROR:HDLParsers:3324 - "C:/Users/user/Documents/tp_vhdl/studies/eq2.vhd" 第 16 行。IN 模式没有默认值的实体的形式 i0 必须与实际值相关联。
- 列表项 ERROR:HDLParsers:164 - "C:/Users/user/Documents/tp_vhdl/studies/eq2.vhd" 第 17 行。解析错误,意外的 PORT
我尝试了关于这个 link 的解决方案,但它也没有用: VHDL - Assigning Default Values
第二个错误为您提供了解决此问题的方法。
Unexpected PORT
这一行乍一看是正确的,但仔细看上一行:
eq_bit1_unit : entity work.eq1(sop_arch); -- extra semicolon, oops!
port map (i0=>a(1),i1=>b(1),eq=>e1);
所以您正在尝试实例化一个没有端口映射的 eq1
。它尝试使用默认分配进行实例化,但是有 none,因此出现了第一个错误。
然后它到达第二行(第 17 行),它看到一个以关键字 port
开头的表达式,该关键字无效,因此出现第二个错误。