Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синхронизация в FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Sidoroff
Имеется конструкция примерно такого типа (VHDL)
if rising_edge(CLK_100MHz) then
b<="a"; -- a синхронно по отношнию к CLK_100MHz
end if;

if rising_edge(CLK_200MHz) then
c<=b;
end if;

CLK_100MHz и CLK_200MHz - два внутрикристальных канала
ОДНОГО PLL, 100 мгц и 200 МГц
a,b,c - одноразрядные сигналы.
Можно ли гарантировать синхронизацию, чтобы между "a" и "c" была
одинаковая задержка (чтобы "c" не дергалось +- на такт 200 МГц)?
Если нужно, то какие опции задать в Assignment Editor у Quartus?
Если так не получится, есть ли другие способы?

Микросхема EP1C12Q240C6 ("Циклон")
sazh
Цитата(Sidoroff @ Sep 12 2007, 12:54) *
Имеется конструкция примерно такого типа (VHDL)
if rising_edge(CLK_100MHz) then
b<="a"; -- a синхронно по отношнию к CLK_100MHz
end if;

if rising_edge(CLK_200MHz) then
c<=b;
end if;

CLK_100MHz и CLK_200MHz - два внутрикристальных канала
ОДНОГО PLL, 100 мгц и 200 МГц
a,b,c - одноразрядные сигналы.
Можно ли гарантировать синхронизацию, чтобы между "a" и "c" была
одинаковая задержка (чтобы "c" не дергалось +- на такт 200 МГц)?
Если нужно, то какие опции задать в Assignment Editor у Quartus?
Если так не получится, есть ли другие способы?

Микросхема EP1C12Q240C6 ("Циклон")

По идее дергаться не должно. По фронтам clk совпадают. Если перезапись из регистра в регист укладывается в период 5нс
Поверить просто. "с" должно ловиться CLK_100 с одинаковой задержкой.
Может а не укладывается в период CLK_100.
Tod
На мой взгляд здесь все же возможна неопределенность, когда в текущий момент не успеет цепануть новое состояние и фактически обнавится только на следующий такт... Возможно ваш код более развернутый а здесь только его смысловая часть но:

if rising_edge(CLK_100MHz) then
b<="a"; -- a синхронно по отношнию к CLK_100MHz
end if;

if rising_edge(CLK_200MHz) then
c<="a";
end if;

т.е. а защелкивается на b и c одновременно а не паровозиком smile.gif
Sidoroff
1) "Поверить просто. "с" должно ловиться CLK_100 с одинаковой задержкой."

Оно ловится, но хотелось бы, чтобы своим сообщением (или тому подобными)
"Info: All timing requirements were met. See Report window for more details.
Quartus гарантировал это автоматически, также как он гарантирует работу полностью синхроной
системы по одному клоку, а опыты такой гарантии не дают, так как экземпляры
микросхем и температура работы могут меняться.
Он это и пишет, но непонятно, это относится к цепаям обоих клоков независимо, или к
системе в целом и учитывает "jitter" у разных клоков и т.п.?


2) "Может а не укладывается в период CLK_100.

Сигнал "a" является выходом внутренней защелки, работающей от того же 100MHz.
Rendom
В pll выставьте задержку между сигналами 100 и 200МГц в 1нс и будет у вас гарантированно стабильная работа.
alexadmin
Цитата(Sidoroff @ Sep 12 2007, 16:53) *
1) "Поверить просто. "с" должно ловиться CLK_100 с одинаковой задержкой."

Оно ловится, но хотелось бы, чтобы своим сообщением (или тому подобными)
"Info: All timing requirements were met. See Report window for more details.
Quartus гарантировал это автоматически, также как он гарантирует работу полностью синхроной
системы по одному клоку, а опыты такой гарантии не дают, так как экземпляры
микросхем и температура работы могут меняться.
Он это и пишет, но непонятно, это относится к цепаям обоих клоков независимо, или к
системе в целом и учитывает "jitter" у разных клоков и т.п.?
2) "Может а не укладывается в период CLK_100.

Сигнал "a" является выходом внутренней защелки, работающей от того же 100MHz.



Вообще говоря если сигналы синфазны, то все должно нормально работать если выставлены констрейны для каждого клока (возможно, что они сами генерятся из конфигурации PLL). С квартусом я общался меньше, а в xilinx с этим проблем не возникало. Если опираться на ваш пример то для пути a->b должен выдерживаться констрейн 100 Мгц, для b->c - 200 МГц. И все будет ок.
yura-w
Цитата(Sidoroff @ Sep 12 2007, 12:54) *
... гарантировать синхронизацию...Если так не получится, есть ли другие способы?

Еще способ: попробуйте сигнал b, завести на дополнительный тригер - с частотой CLK_200MHz.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.