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 に答える