0

我试图addS在这样的结构描述中映射一点信号(这里的类型为signed(32 downto 0)):

add2 : entity work.adderSigned(behavioral) 
  generic map(N => 64)
    port map(a(63 downto 32) => mulssS, --concat 
        a(31 downto 0) => signed(muluuS), --concat
     -- b(63 downto 48) => addS(32 downto 32),
        b(63 downto 48) => (others => addS(32)), --the critical line
        b(47 downto 16) => addS(31 downto 0),
        b(15 downto 0) => (others => '0'),
        std_logic_vector(y) => y);

但编译器抱怨这不是静态映射。如何执行此映射?

4

1 回答 1

1

在 VHDL-2008 中,该行b(63 downto 48) => (others => addS(32)),有效,因此如果工具允许,请启用 VHDL-2008。

对于 VHDL-2002,如果将表达式用作实际表达式(端口映射中的右侧),则它必须是全局静态表达式(VHDL-2002 1.1.1.2 端口),但(others => addS(32))不是,因为addS(32)它不是静态的。解决方法可以是:

signal b_63_dt_48 : std_logic_vector(63 downto 48);
...
b(63 downto 48) => b_63_dt_48,
...
b_63_dt_48 <= (others => addS(32));

顺便提一句。看起来这条线可能有些奇怪std_logic_vector(y) => y

于 2015-11-29T19:13:04.147 回答