реклама на сайте
подробности

 
 
> Синхронизация в FPGA
Sidoroff
сообщение Sep 12 2007, 08:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 3-07-06
Пользователь №: 18 536



Имеется конструкция примерно такого типа (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 ("Циклон")
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
sazh
сообщение Sep 12 2007, 10:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(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.
Go to the top of the page
 
+Quote Post
Tod
сообщение Sep 12 2007, 12:24
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 3-09-07
Из: Москва
Пользователь №: 30 241



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

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
Go to the top of the page
 
+Quote Post
Sidoroff
сообщение Sep 12 2007, 12:53
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 3-07-06
Пользователь №: 18 536



1) "Поверить просто. "с" должно ловиться CLK_100 с одинаковой задержкой."

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


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

Сигнал "a" является выходом внутренней защелки, работающей от того же 100MHz.
Go to the top of the page
 
+Quote Post
Rendom
сообщение Sep 12 2007, 16:48
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-05-07
Пользователь №: 27 538



В pll выставьте задержку между сигналами 100 и 200МГц в 1нс и будет у вас гарантированно стабильная работа.
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Sep 13 2007, 15:15
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(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 МГц. И все будет ок.
Go to the top of the page
 
+Quote Post
yura-w
сообщение Sep 20 2007, 11:42
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617



Цитата(Sidoroff @ Sep 12 2007, 12:54) *
... гарантировать синхронизацию...Если так не получится, есть ли другие способы?

Еще способ: попробуйте сигнал b, завести на дополнительный тригер - с частотой CLK_200MHz.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016