我们可以从端口映射语句中写入两个信号吗?

问题描述 投票:1回答:1

这可能是更多假想的VHDL问题,而不是现实生活/案例研究问题。

说我有如下的组件声明...

component my_comp is
    port (
    A : in std_logic;

    --...other input/outputs

    B : out std_logic_vector(9 downto 0)
);
end component my_comp;

并且在包含my_comp的同一实体中,我有信号

signal my_comp_full_scale_output : std_logic_vector(9 downto 0);
signal my_comp_8_scale_output    : std_logic_vector(7 downto 0);

是否可以在组件实例的port map语句中为这两个信号分配B的值?可能是这样的...

my_comp_isnt : my_comp
    port map (
    A => some_signal,

    -- other signal assignments

    B => my_comp_full_scale_output,
    B(9 downto 2) => my_comp_8_scale_output
);

再次强调,这完全符合VHDL的逻辑,在任何设计中我都不会使用它!!!我确实知道,可以通过在组件实例化之外(例如下面)将my_comp_full_scale_output分配给my_comp_8_scale_output来轻松完成此操作,这仅仅是出于代码的缘故。

my_comp_isnt : my_comp
    port map (
    A => some_signal,

    -- other signal assignments

    B => my_comp_full_scale_output
);

my_comp_8_scale_output <= my_comp_full_scale_output(9 downto 2);
vhdl
1个回答
3
投票

没有

1076-2008 - IEEE Standard VHDL Language Reference Manual状态:

关联列表中的每个关联元素都会关联一个实际的指示符以及子程序声明的接口列表,组件声明,实体声明,块语句或包。

所以您只能映射一次

© www.soinside.com 2019 - 2024. All rights reserved.