VHDL でシフト レジスタを実装しました。「BITS」をパラメーターとして使用して、ユーザー定義の数値を右にシフトできるようにします。意図したとおりに動作しますが、Quartus II の Compilation Report によると、164 個のロジック エレメントを必要とします。なぜ私のコードがひどいのか、それを最適化するためのヒントを教えてもらえますか? :) 前もって感謝します。
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity ssi_data_align is
port
(
DATA_IN : in std_logic_vector(31 downto 0);
BITS : in std_logic_vector(4 downto 0);
DATA_OUT : out std_logic_vector(31 downto 0));
end entity;
architecture Behavioral of ssi_data_align is
begin
DATA_OUT <= std_logic_vector(SHIFT_RIGHT(unsigned(not DATA_IN), natural(32-(to_integer(unsigned(BITS))))));
end Behavioral;