【发布时间】:2022-01-23 20:21:11
【问题描述】:
我更喜欢在包中声明枚举类型,以便可以在多个实体中使用它。这是我的简化代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_SIGNED.ALL;
use work.polar_package;
entity Decoder is
port (
clk : in std_logic;
reset : in std_logic
);
end entity Decoder;
architecture behavioral of Decoder is
signal state : polar_package.state_type;
begin
top_modul : process (clk)
begin
if clk = '1' and clk'event then
if reset = '1' then
state <= p0;
else
end if;
end if;
end process top_modul;
end architecture behavioral;
并且我已经在包“polar_package”中声明并定义了“state_type”,如下所示:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
package polar_package is
type state_type is (p0 , p1 , p2);
end package polar_package;
package body polar_package is
end package body polar_package;
但是,我看到以下编译错误: 未知标识符“p0”
有什么解决办法吗?
【问题讨论】:
-
您有一个不需要的使用子句,使 Synospsys 包 STD_LOGIC_UNSIGNED、STD_LOGIC_SIGNED 以及 IEEE 包 NUMERIC_STD 声明可见。您使用 polar_package 子句仅使该名称可见,如 Travis Bassano 所示。该 use 子句的保留字 all 前缀也使带有匿名参数的子程序用于预定义的运算符(例如“=”)和在类型声明之后立即隐式声明的操作直接可见。