VHDL: użyj długości ogólnej liczby całkowitej do określenia liczby wybranych linii

Próbuję stworzyć zmiennokształtny przesuwnik beczki; pobiera tablicę wejściową bitów i przesuwa je o pewną liczbę pozycji (określonych przez inne wejście). Chcę sparametryzować moduł tak, aby działał dla każdegon.

Wymagana liczba wybranych linii jest określona przezn -> tj.SHIFT_CNT = log2(NUMBITS-1)+1 w poniższym kodzie. Uważa się, że w mojej organizacji jest źle (i myślę, że ogólnie), że nie ma portówstd_logic_vector lubstd_logic, więc użyłemstd_logic_vector dla liczby wybranych linii. Muszę dostosować długośćstd_logic_vector na podstawie danych ogólnych. Czy można to zrobić bez użycia drugiego generycznego? widziałemto post, ale nie dotyczy generycznych.To post całkowicie eliminuje generics lub wykorzystuje wartość logu jako rodzajową, która nie jest tak intuicyjna dla przyszłych użytkowników (i może powodować problemy, jeśliINPUT nie jest potęgą dwóch).

DeklaracjaSHIFT_CNT poniżej jest zdecydowanie błędne; czy istnieje sposób automatycznego generowania długości w deklaracji encji bez użycia drugiego generycznego?

entity BarrelShifter is

generic ( NUMBITS : integer :=8);                                                   
Port    ( INPUT     : in   std_logic_vector (NUMBITS-1 downto 0);                
          OUTPUT    : out  std_logic_vector (NUMBITS-1 downto 0);                
          SHIFT_CNT : in   std_logic_vector ((NUMBITS-1)'length downto 0)                 
        );                                                               
end BarrelShifter;

questionAnswers(5)

yourAnswerToTheQuestion