VHDLと乗算

メモ。
というか、最近書いてなかったのですっかり頭から抜けていたので。


VHDL記述において、乗算は

c <= a * b

と書ける訳だが*1、冒頭のパッケージ呼び出しで

library IEEE;
use IEEE.std_logic_1164.alluse IEEE.std_logic_unsigned.ALL; -- ココが下と違う

としてしまうと1つの乗算に対してFPGA内の3つの乗算機を使用する様に論理合成される。
一方、

library IEEE;
use IEEE.std_logic_1164.alluse IEEE.std_logic_signed.ALL; -- ココが上と違う

とすると1つの乗算機が利用される。
std_logic_vectorを符号付きのバスとみるか否かで分かれる。ということ。

*1:FPGAの中にDPSや乗算機はいるが...