VHDL: используйте длину целочисленного общего значения, чтобы определить количество строк выбора

Я пытаюсь создать многоразовый сменщик ствола; он берет входной массив битов и сдвигает их на определенное количество позиций (определяется другим входом). Я хочу параметризовать модуль так, чтобы он работал для любогоn.

Количество требуемых строк выбора определяетсяn - & GT; т.е.SHIFT_CNT = log2(NUMBITS-1)+1 в коде ниже. В моей организации (и я думаю в целом) считается плохой формой иметь порты, которые неstd_logic_vector или жеstd_logicЯ использовалstd_logic_vector для количества выбранных строк. Мне нужно отрегулировать длинуstd_logic_vector на основе входных данных. Есть ли способ сделать это без использования второго универсального? Я виделэтот опубликовать, но он не имеет отношения к генерикам.это сообщение полностью исключает обобщенные элементы или использует значение журнала в качестве обобщенного, что не является интуитивно понятным для будущих пользователей (и может вызвать проблемы, еслиINPUT это не степень двух).

ДекларацияSHIFT_CNT ниже, безусловно, неверно; Есть ли способ автоматически сгенерировать длину в объявлении объекта без использования второго универсального?

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;

Ответы на вопрос(5)

Ваш ответ на вопрос