VHDL:正式端口';端口名';没有实际值或默认值

VHDL:正式端口';端口名';没有实际值或默认值,vhdl,vivado,Vhdl,Vivado,我在实例化VHDL模块PWM的VHDL测试台上收到一个编译错误:“正式端口‘占空比’没有实际值或默认值”。当站在“dev_to_test:PWM”代码行上时,会看到该错误。在实例化的PWM模块中,占空比stg逻辑向量被转换为无符号,然后分配给整数,但不要认为这可能会影响端口实例化。 我试图在端口映射中传递“00001111”向量值,这导致了相同的错误。 请帮助确定错误是什么 architecture test of test_pwm is component PWM Generic (

我在实例化VHDL模块PWM的VHDL测试台上收到一个编译错误:“正式端口‘占空比’没有实际值或默认值”。当站在“dev_to_test:PWM”代码行上时,会看到该错误。在实例化的PWM模块中,占空比stg逻辑向量被转换为无符号,然后分配给整数,但不要认为这可能会影响端口实例化。 我试图在端口映射中传递“00001111”向量值,这导致了相同的错误。 请帮助确定错误是什么

architecture test of test_pwm is
component PWM
    Generic (
        BIT_DEPTH   : integer;
        INPUT_CLK   : integer; -- 50MHz
        FREQ        : integer); -- 50Hz
    Port (
        Pwm_Out     : out std_logic;
        Duty_Cycle  : in std_logic_vector(BIT_DEPTH - 1 downto 0);
        Clk         : in std_logic;
        Enable      : in std_logic);
end component;

constant BIT_DEPTH  : integer := 8;
constant INPUT_CLK  : integer := 125000000; -- 50MHz
constant FREQ       : integer := 50; -- 50Hz

signal Enable      : std_logic := '0';
signal Duty_Cycle  : std_logic_vector(BIT_DEPTH - 1 downto 0) := "00001111";
signal Clk         : std_logic := '1';
signal Pwm_Out     : std_logic;   


begin
    dev_to_test: PWM
        generic map(BIT_DEPTH,INPUT_CLK,FREQ);
        port map(Pwm_Out,Duty_Cycle,Clk,Enable);
IEEE标准1076-2008

11.7组件实例化语句

组件实例化语句::=
实例化\u标签:
实例化单元
[通用地图方面]
[port_map_aspect];

generic\u map\u aspect::=
通用映射(通用关联列表)
通用映射(位深度、输入时钟、频率)的末尾分号过多,因此,它看不到端口的映射,并给出错误信息。
要解决此错误,请删除该分号:

dev_to_测试:PWM
通用映射(位深度、输入时钟、频率)
端口映射(Pwm输出、占空比、时钟、启用);

PS:为了降低设计错误的风险,最好在端口和通用映射中使用命名关联,而不是位置映射。

通过提供一个示例并尝试(此处分析或“编译”)该示例,可以检测到Giampietro Seu所示的简单印刷错误。这是一个与分号无关的语法错误,该分号本应产生错误,大意是
port
不会导致并发语句。该错误是由于组件实例化语句由必需元素(标签、组件名称)和两个可选元素(通用映射和端口映射方面)组成,它们是完整的,而不是并发语句。IEEE Std 1076-2008 11.7.1“组件实例化语句和相应的配置规范(如果有)结合在一起,意味着包含组件实例化的设计实体内的块层次结构将通过另一个设计实体定义的块的唯一副本进行扩展。组件实例化语句和配置规范绑定指示中的通用映射和端口映射方面确定了为完成扩展而进行的连接。“3.1”设计实体可以按照块的层次结构进行描述,每一个都代表了整个设计的一部分。这种层次结构中的顶层块是设计实体本身;此类块是驻留在库中的外部块,可以用作其他设计的组件。层次结构中的嵌套块是内部块,由块语句定义(见11.2)。“块不是模块。Vivado的哪个版本?在合成中,内部块语句在模拟时不能有端口或泛型子句。Vivado版本为2019.1。