0

数値をベクトルで乗算する VHDL でコードを書いています。しかし、それはエラーを出します。

Library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

entity multi is
 port (    clk   :  in std_logic;
          ipixel :  in std_logic_vector(15 downto 0);
          opixel  :  out std_logic_vector(15 downto 0)
      );

end entity multi;

architecture rtl of multi is
begin

process (clk) begin
  if rising_edge (clk) then

        opixel (15 downto 11) <=  std_logic_vector(unsigned(ipixel(15 downto 11))*3);
        opixel (10 downto 5)  <= std_logic_vector(unsigned(ipixel(10 downto 5))* 3);
        opixel (4 downto 0)   <= std_logic_vector(unsigned(ipixel(4 downto 0))* 3);

    end if;
end process;
end architecture rtl;

エラーは次のとおりです。

ターゲット スライス 5 要素; 値は 10 要素です

4

1 に答える 1

3

符号なしの値自然なで乗算すると、これは次のように定義さNUMERIC_STDれます。

function "*" (L: UNSIGNED; R: NATURAL) return UNSIGNED is
begin
    return L * TO_UNSIGNED(R, L'LENGTH);
end "*";

戻り値は2 * lengthunsigned factor になります!

于 2013-02-22T16:08:28.403 に答える