У меня есть объект, который имеет общий целочисленный параметр fs_in_khz
, который может быть 5, 10 или 2:Могу ли я иметь условные константы в VHDL?
entity test_control_source is
generic(
-- This should only be 5, 10 or 20
fs_in_khz : integer := 20
);
Было бы хорошо, если бы я мог воспользоваться функциями VHDL и просто ограничивают тип до тех значений, возможно, используя что-то вроде:
type control_source_freq is (F5_KHZ, F10_KHZ, F20_KHZ);
...
entity test_control_source is
generic(
-- This should only be 5, 10 or 20
fs_in_khz : control_source_freq := F20_KHZ
);
Однако, позже в архитектуре этого объекта, у меня есть
architecture source_behaviour of test_control_source is
constant cs_period : integer := 5000 * clock_rate/fs_in_khz;
begin
...
Я предпочитаю, чтобы этот параметр вычислялся вне процессов, которые его используют, вместо того, чтобы повторять вычисления везде, где это необходимо. Могу ли я ограничить допустимые значения моего общего параметра fs_in_khz
и сохранить постоянную константу cs_period
из тех процессов, в которых она используется?
Создал небольшой пакет с 'enum' и функцией, отлично работает и закладывает основу для факторизации других аппаратных настроек для тестирования! – detly