我有一个顶级VHDL模块,其中包含一个我声明为无符号数组的信号。我在这个顶级模块中有一个实例化组件,我想将顶层模块中的数组路由到这个组件。发表同样的声明
type array_type is array(5 downto 0) of unsigned (15 downto 0);
组件中的似乎不起作用。我已经知道如何将输入连接到包含数组的输出,但我不知道如何将信号连接到输入/输出。
示例顶级模块
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity top_level is
end top_level;
architecture str_arch of top_level is
type array_type is array (5 downto 0) of unsigned (15 downto 0);
signal example_array: array_type;
begin
instantiated_component: entity work.component(Behavioral)
port map(array=>example_array);
end str_arch;
答案 0 :(得分:1)
1)在某处宣布:
type array_type is array(5 downto 0) of unsigned (15 downto 0);
在另一个地方:
type array_type is array(5 downto 0) of unsigned (15 downto 0);
声明两种不同类型!即使它们具有相同的名称(它们将具有完整的扩展名:somewhere.array_type和another.array_type)
2)VHDL是一种强类型语言,即使是两种不同的"类型"你声明的具有相同的定义,你可以将一个定义到另一个。
一个简单的解决方案是使用相同类型(来自包):
package pkg is
type array_type is array(5 downto 0) of unsigned (15 downto 0);
end package pkg;
在子模块和级别模块中:
use work.pkg.all; --if pkg is in the same library