1

サイズ 3 の 32 ビット「std_logic_vector」の配列である型があり、次のように定義されています。

subtype scalar is std_logic_vector(31 downto 0);
type vector_nd is array (natural range <>) of scalar;
subtype vector_3d is vector_nd(2 downto 0);

タイプ「vector_3d」の信号があり、これを 2 で乗算し、結果をタイプ「スカラー」の信号に入れます。

signal v_normal_out_sig := vector_3d;
signal mult1_in1_sig    := scalar;
--...
mult1_in1_sig <= 2*signed(v_normal_out_sig(0)) when cau_state = st_cycle18;

コンパイルすると、次のエラーが発生します。

No feasible entries for infix operator "*".

私たちが望むものを実装する正しい方法は何ですか? 以下のライブラリを使用しています。

  • ieee.std_logic_1164.all
  • ieee.std_logic_arith.all
  • ieee.std_logic_unsigned.all
4

1 に答える 1

0

私たちが最終的に行ったことは、次のとおりです。

mult1_in1_sig <= v_normal_out_sig(0)(31) & v_normal_out_sig(0)(29 downto 0) & '0' when cau_state = st_cycle18;

テストでは、正の数と負の数の両方について正しい結果が得られました。

于 2012-08-24T13:30:23.247 に答える