我试图在这样的结构描述中映射一些信号(此处为addS
类型的签名(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);
但编译器抱怨这不是静态映射。我该如何执行此映射?
答案 0 :(得分:0)
在VHDL-2008中,行b(63 downto 48) => (others => addS(32)),
有效,因此如果工具允许,请启用VHDL-2008。
对于VHDL-2002,如果表达式用作实际(端口映射中的右侧),则它必须是全局静态表达式(VHDL-2002 1.1.1.2端口),但(others => addS(32))
ain&#39 ; t,因为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
可能有些奇怪。