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;