В настоящее время я выполняю проект в VHDL, в котором у меня есть счетчик, который необходимо обновить в 100 мс или 1000 мс, если нажата клавиша.Временное разделение (период) Выбор в vhdl
Пример:
If Key3=0 then
c=c+1 (100ms)
elsif key3=1 then
c=c+1 (1000ms)
Я хотел бы знать, как сделать это в VHDL.
Я верю, что должен использовать процесс (часы, Key3), но я не уверен, как увеличить счетчик в зависимости от периода.
благодарит заранее!
Недавно мы столкнулись с проблемой Vivado относительно генерации констант и диапазонов, основанных на типах времени. Как вы описали выше, это полностью оптимизируется ни к чему. И Xilinx признает, что объекты типа 'time' не поддерживаются. См. AR57964 (http://www.xilinx.com/support/answers/57964.html) – PlayDough
@PlayДля того, что вы связали AR, указывает, что тип Time IS поддерживается в Vivado, но плохо. Таким образом, этот метод «не рекомендуется» пользователями Xilinx для Vivado (возможно, они используют 32-битную арифметику, когда другие используют 64-разрядный бит), а Synplicity - другие проблемы. Но наиболее явное выражение кода на самом высоком уровне должно быть обычной практикой; отклоняясь от него, где поддержка инструмента неадекватна. –
Достаточно честный. Время поддерживается - плохо. Но мы ограничены инструментами, которые мы используем, как вы указываете. Вместо этого мы делаем что-то вроде: 'constant Clock_Period: real: = 100.0e-9;' Реальные значения поддерживаются просто отлично. – PlayDough