VHDL:正式端口“ portName”没有实际值或默认值

时间:2019-08-24 14:54:09

标签: vhdl vivado

我在实例化VHDL模块PWM的VHDL测试平台上收到编译错误:“正式端口'Duty_Cycle'没有实际值或默认值”。站在代码“ dev_to_test:PWM”行上时,会看到该错误。在实例化的PWM模块中,Duty_Cycle stg_logic_vector被强制转换为无符号,然后被分配为整数,但是不要认为这会影响端口实例化。 我试图在端口映射中传递“ 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);

1 个答案:

答案 0 :(得分:2)

  

IEEE Std 1076-2008

     

11.7组件实例化语句

     
component_instantiation_statement ::=
    instantiation_label :
        instantiated_unit
            [ generic_map_aspect ]
            [ port_map_aspect ] ; 
     

     
generic_map_aspect ::=     
   generic map (generic_association_list ) 

generic map(BIT_DEPTH,INPUT_CLK,FREQ);末尾的分号太多,因此,它看不到端口的映射并给您错误。 要解决该错误,只需删除该分号即可:

dev_to_test: PWM
        generic map(BIT_DEPTH,INPUT_CLK,FREQ)
        port map(Pwm_Out,Duty_Cycle,Clk,Enable);

PS:为减少设计错误的风险,优良作法是在端口和通用映射中使用命名关联而不是位置。