pav2051 0 7 апреля, 2015 Опубликовано 7 апреля, 2015 (изменено) · Жалоба Доброго времени суток. Цифровой схемотехникой и темой ПЛИС занимаюсь не так давно, поэтому прошу знающих людей пояснить следующую ситуацию. Имеем код, синтезируемый в два последовательно соединенных триггера: always @(posedge clk) begin z <= y; y <= x;end может ли при разводке возникнуть ситуация, когда новые данные на вход второго триггера придут раньше, чем клок на второй триггер, т. е. новые данные появятся на выходе второго триггера не по второму фронту, как ожидаем, а по первому? Или же трассировщик не допустит такой ситуации? Аналогичный вопрос для другого примера: always @(posedge clk) case (state) ... 1: begin z <= in1 + in2; state <= 2; end 2: begin z <= in1 - in2; state <= 3; end ... endcase Если этот код синтезируется в следующую конструкцию, то допустима ли ситуация, когда состояние автомата успеет измениться и пройти через логику на вход триггера до прихода того же самого фронта клока на этот триггер? Изменено 7 апреля, 2015 пользователем des00 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_AZ 0 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба Трассировщик будет стараться сделать так, чтобы данные на выходе второго триггера появились по второму фронту тактового сигнала. От Вас требуется правильно задать временные ограничения (Timing Constraints). Стоит заметить, что если входной сигнал схемы тактируется не от clk и находится в другом частотном домене, то первый триггер может захватить не те данные, которые ожидаете Вы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pav2051 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Правильно ли я понимаю, если оба триггера тактируются от одного источника, достаточно будет задать только период для клока (create_clock -period 20.0 [get_ports clk])? Входной порт данных пока в расчет не беру, полагаем, что на первый триггер данные приходят во время. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Правильно ли я понимаю, если оба триггера тактируются от одного источника, достаточно будет задать только период для клока (create_clock -period 20.0 [get_ports clk])? Входной порт данных пока в расчет не беру, полагаем, что на первый триггер данные приходят во время. в принципе, да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pav2051 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Ясно, всем спасибо за ответы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_vod 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Если входные сигналы принадлежат другому клоку , может возникнуть метастабильность, поэтому лучше удалить логику между 1 и 2 триггером quartusii_handbook 14.1 стр 810 А еще лучше "привести" сигналы к единой тактовой , и только затем добавлять логику Если входные сигналы уже были "регистрированы" вашей clk и схема работает на clk , тогда всё должно быть нормально (конечно если тайминг анализ не ругается) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться