Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сквозное прохождение сигнала через два триггера
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
pav2051
Доброго времени суток.
Цифровой схемотехникой и темой ПЛИС занимаюсь не так давно, поэтому прошу знающих людей пояснить следующую ситуацию.
Имеем код, синтезируемый в два последовательно соединенных триггера:
Код
always @(posedge clk) begin
    z <= y;
    y <= x;end

может ли при разводке возникнуть ситуация, когда новые данные на вход второго триггера придут раньше, чем клок на второй триггер, т. е. новые данные появятся на выходе второго триггера не по второму фронту, как ожидаем, а по первому? Или же трассировщик не допустит такой ситуации?

Аналогичный вопрос для другого примера:
CODE
always @(posedge clk)
case (state)
...
1: begin
z <= in1 + in2;
state <= 2;
end

2: begin
z <= in1 - in2;
state <= 3;
end
...
endcase

Если этот код синтезируется в следующую конструкцию, то допустима ли ситуация, когда состояние автомата успеет измениться и пройти через логику на вход триггера до прихода того же самого фронта клока на этот триггер?
Alex_AZ
Трассировщик будет стараться сделать так, чтобы данные на выходе второго триггера появились по второму фронту тактового сигнала. От Вас требуется правильно задать временные ограничения (Timing Constraints). Стоит заметить, что если входной сигнал схемы тактируется не от clk и находится в другом частотном домене, то первый триггер может захватить не те данные, которые ожидаете Вы.
pav2051
Правильно ли я понимаю, если оба триггера тактируются от одного источника, достаточно будет задать только период для клока (create_clock -period 20.0 [get_ports clk])? Входной порт данных пока в расчет не беру, полагаем, что на первый триггер данные приходят во время.
Maverick
Цитата(pav2051 @ Apr 8 2015, 07:39) *
Правильно ли я понимаю, если оба триггера тактируются от одного источника, достаточно будет задать только период для клока (create_clock -period 20.0 [get_ports clk])? Входной порт данных пока в расчет не беру, полагаем, что на первый триггер данные приходят во время.

в принципе, да
pav2051
Ясно, всем спасибо за ответы.
Alex_vod
Если входные сигналы принадлежат другому клоку , может возникнуть метастабильность, поэтому
лучше удалить логику между 1 и 2 триггером
Нажмите для просмотра прикрепленного файла
quartusii_handbook 14.1 стр 810
А еще лучше "привести" сигналы к единой тактовой , и только затем добавлять логику
Если входные сигналы уже были "регистрированы" вашей clk и схема работает на clk , тогда всё должно быть нормально (конечно если тайминг анализ не ругается)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.