Я не Verilogger, но похоже, что вы просите код вызвать края двух разных сигналов. По моему опыту, это невозможно синтезировать, но синтезатор, возможно, пытался что-то и предупреждал вас (среди множества других предупреждений), что он сделал что-то другое, чем вы на самом деле имели в виду.
РЕДАКТИРОВАТЬ: Следующее не относится к упомянутой плате, так как на ней установлено оборудование для устранения неполадок (спасибо NathanFarrington за указание на это), но я оставляю это здесь на случай, если оно пригодится другим читателям:
Даже если синтезатор преуспел, запуск по фронту на входе переключателя является ужасной идеей: переключатель будет несколько раз отскакивать при нажатии, и FPGA достаточно быстро, чтобы увидеть все эти края .
То, что вам нужно, - это процесс, синхронизируемый от хорошего источника тактовых импульсов (без сомнения, на борту есть кристалл), который контролирует оба ваших сигнала переключения на каждом тактовом событии.
Сохраняйте счетчик для каждого сигнала, увеличивайте его каждый раз, когда сигнал равен 1
, уменьшайте его каждый раз, когда сигнал равен 0
. Зафиксируйте эти счетчики на 0
и какое-то максимальное время, которое дает достаточно времени для переключения коммутатора (вероятно, будет достаточно нескольких миллисекунд).
Как только счетчик достигнет любого конца своего «путешествия», только , затем вы предпринимаете какие-либо действия (например, сдвигаете LEDGValue
). Не забудьте подождать, пока выключатель не будет отпущен (ожидая, пока счетчик перейдет на другой «конец»).