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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Синхронизация в ПЛИС, Работа с несколькими частотами
Kenav
сообщение Apr 12 2007, 10:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839



Здравствуйте! smile.gif
При разработке проекта возникла такая проблема. Используем ПЛИС CyclonII, генератор на 16.384 Мгц. Фреймер DS21Q50. Тактовую частоту генератора завожу на глобальный клок Плис(использую четвертый банк). Там эта частота делится на 8 (получаем частоту 2048) и вывожу ее с ножки плис на MCLK фреймера. Для фреймера эта частота является опорной. С фреймера идет частота 16.384 Мгц тоже на глобальный клок ПЛИС (используем первый банк). Эта частота формируется самим фреймером. И она, возможно, может отличаться от частоты, которая идет с генератора. Так как в фреймере есть ФАПЧ и он подстраивает частоту под себя. На Плис реализуется FIFO. При такой организации сбиваются внутренние счетики. Получается рассинхронизация. Если подавать на фреймер частоту 2,048 МГц с генератора (т.е. с отдельного прибора) то все работает. При этом не используем делитель на ПЛИС. То есть получается что нельзя использовать делитель частоты или что то еще. Не могу разобраться в чем проблема. Прошу помощи, коллеги. help.gif
Сколько разных частот можно заводить на ПЛИС. Так чтобы не было влияния.
У нас получается, что мы подаем две разные частоты на ПЛИС.
Если подавать с прибора частоту 16.384 МГц и подавать на делитель ПЛИС. Эффект такой же. Не работает. help.gif На выходе все по честному. Частота делится. Не могу разобраться. angry.gif
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Apr 12 2007, 11:04
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Количество используемых частот в ПЛИС явно не ограничено.
Скажите, а почему нельзя сделать так - оставить в покое исходную частоту 2,048МГц, получаемую Вами делением исходной, и только подавайть её на фреймер. А вот частоту фреймера 16.384МГц завести на PLL CycloneII, где сдвинуть на нужную фазу (компенсировать длину линии связи), а уж потом поделить на 8 и пользоваться этой частотой 2,048МГц, котороя будет строго кратной и сфазированной с частотой фреймера.
Или всё гораздо сложнее? :-)


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
Kenav
сообщение Apr 12 2007, 11:32
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839



Цитата(Евгений Николаев @ Apr 12 2007, 12:04) *
Скажите, а почему нельзя сделать так - оставить в покое исходную частоту 2,048МГц, получаемую Вами делением исходной, и только подавайть её на фреймер.

Это я так и делаю.
Только если подавать частоту с генератора без делителя то все синхронно работает.
Если же подавать частоту с ПЛИС то происходит рассинхронизация.

"А вот частоту фреймера 16.384МГц завести на PLL CycloneII, где сдвинуть на нужную фазу (компенсировать длину линии связи), а уж потом поделить на 8 и пользоваться этой частотой 2,048МГц, котороя будет строго кратной и сфазированной с частотой фреймера.
"
Идея конечно хорошая, но 2048 для фреймера является опорной. Без нее она не сформирует свои 16.384 Мгц. angry.gif
Go to the top of the page
 
+Quote Post
-=Sergei=-
сообщение Apr 12 2007, 12:15
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 26-10-04
Пользователь №: 985



Цитата(Kenav @ Apr 12 2007, 12:32) *
Это я так и делаю.
Только если подавать частоту с генератора без делителя то все синхронно работает.
Если же подавать частоту с ПЛИС то происходит рассинхронизация.

"А вот частоту фреймера 16.384МГц завести на PLL CycloneII, где сдвинуть на нужную фазу (компенсировать длину линии связи), а уж потом поделить на 8 и пользоваться этой частотой 2,048МГц, котороя будет строго кратной и сфазированной с частотой фреймера.
"
Идея конечно хорошая, но 2048 для фреймера является опорной. Без нее она не сформирует свои 16.384 Мгц. angry.gif


Асинхронное ФИФО, Код Грея. Классика жанра.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Apr 12 2007, 12:19
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Кто-то из нас кого-то (опять-таки из нас :-) ) не понял.
Я предлагаю:
Частоту генератора Fген=16.384 поделить на 8 и получить Fген8=2.048, которую подать на фреймер и кроме как в этом фреймере нигде больше в ПЛИС её не использовать.
Получиться эффект:
Цитата
Если подавать на фреймер частоту 2,048 МГц с генератора (т.е. с отдельного прибора) то все работает.

С фреймера принимать в ПЛИС частоту Fфр=16.384 и именно её делить на 8, чтобы получать Fфр8=2.048, которую и использовать в ПЛИС.
Таким образом, основная прошивка ПЛИС и "знать не будет" о существовании Fген и Fген8, а будет работать синхронно и в фазе с частотами фреймера Fфр и Fфр8.
Или опять не то :-)
---
И ещё... Не знаю - применяете или нет, но прямое без строба декодирование кода счётчика для выполнения какой-либо функции - вещь опасная, т.к. счётчики идеально синхронно все разряды не переключают, ну и декодеры идеально (по таблице истинности) во времени не декодируют. В динамике не работает.

Сообщение отредактировал Евгений Николаев - Apr 12 2007, 12:24


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
Kenav
сообщение Apr 12 2007, 13:12
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839



Цитата(Евгений Николаев @ Apr 12 2007, 13:19) *
Кто-то из нас кого-то (опять-таки из нас :-) ) не понял.
Я предлагаю:
Частоту генератора Fген=16.384 поделить на 8 и получить Fген8=2.048, которую подать на фреймер и кроме как в этом фреймере нигде больше в ПЛИС её не использовать.
Получиться эффект:

С фреймера принимать в ПЛИС частоту Fфр=16.384 и именно её делить на 8, чтобы получать Fфр8=2.048, которую и использовать в ПЛИС.
Таким образом, основная прошивка ПЛИС и "знать не будет" о существовании Fген и Fген8, а будет работать синхронно и в фазе с частотами фреймера Fфр и Fфр8.
Или опять не то :-)
---
И ещё... Не знаю - применяете или нет, но прямое без строба декодирование кода счётчика для выполнения какой-либо функции - вещь опасная, т.к. счётчики идеально синхронно все разряды не переключают, ну и декодеры идеально (по таблице истинности) во времени не декодируют. В динамике не работает.

Скрее опять не то. smile.gif
Я все так и делаю. Я частоту генератора 16,384 делю на 8 в ПЛИС и подаю полученные 2048 на фреймер. Больше у меня эта частота (2048) кроме как на фреймер никуда не идет. С фреймера 16,384 я подаю на Плис.
Проблема в том, что если подавать на фреймер 2048 с Плис, то происходит рассинхронизация. А если на прямую с прибора, то все работает. Тое есть получается, что что то с делителем не то. Хотя сигналы выходят все по честному.
help.gif

Цитата(-=Sergei=- @ Apr 12 2007, 13:15) *
Асинхронное ФИФО, Код Грея. Классика жанра.


Да не, наверное не в этом деле. Все работает, если частоту с генератора брать, а не с ПЛИС.
Все проверил уже. Не знаю что еще придумать.
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 12 2007, 14:16
Сообщение #7


Гуру
******

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



Проблема в том, что если подавать на фреймер 2048 с Плис, то происходит рассинхронизация. А если на прямую с прибора, то все работает. Тое есть получается, что что то с делителем не то. Хотя сигналы выходят все по честному.
///////////////////////////////////////////////////////////////////
Надо полагать при двух вариантах подачи клока используется один и тот же проект. Значит дело в проекте, когда фактически используется две частоты. некорректный переход из одного клокового домена в другой. Странно, что фифо не помогло. По большому счету неограниченное число gate clk можно навесить на global clk.
Go to the top of the page
 
+Quote Post
Kenav
сообщение Apr 12 2007, 14:49
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839



Цитата(sazh @ Apr 12 2007, 15:16) *
Проблема в том, что если подавать на фреймер 2048 с Плис, то происходит рассинхронизация. А если на прямую с прибора, то все работает. Тое есть получается, что что то с делителем не то. Хотя сигналы выходят все по честному.
///////////////////////////////////////////////////////////////////
Надо полагать при двух вариантах подачи клока используется один и тот же проект. Значит дело в проекте, когда фактически используется две частоты. некорректный переход из одного клокового домена в другой. Странно, что фифо не помогло. По большому счету неограниченное число gate clk можно навесить на global clk.

Один клоковый домен имеется ввиду банк ввода ввывода? cranky.gif
Да у меня один проект. В нем одну частоту делим. И больше нигде не используем. А вторую частоту с фреймера используем для дальнейших преобразований. А что может быть с проектом? cranky.gif
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Apr 12 2007, 15:15
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Если не секрет - выложите проект, чтобы можно было взглянуть. А это больше похоже на стрельбу с закрытыми глазами и подсказками "мишень такая маленькая, круглая, с точкой посередине" и "эээ, опять не попал" :-)

Сообщение отредактировал Евгений Николаев - Apr 12 2007, 15:16


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
sazh
сообщение Apr 12 2007, 15:20
Сообщение #10


Гуру
******

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



Один клоковый домен имеется ввиду банк ввода ввывода?
///////////////////////////////////////////////////////////////////////
Можно и так сказать. У Вас два домена одной частоты, но не синхронны. И фифо как раз должно было помочь.
Вот пример посмотрите (представьте, что эти два регистра одноклоковое фифо)

module in_out_data
(
output reg [7:0] out_data,
output out_clk,
input global_clk,
input [7:0] input_data,
input in_clk_a,
input in_clk_b
);

reg [7:0] data_rg;
reg [2:0] sdvig_in_rg;
reg [2:0] sdvig_out_rg;

wire e_wr_rg;
wire e_rd_rg;

assign out_clk = in_clk_b;

always @ (posedge global_clk)
begin
sdvig_in_rg <= {sdvig_in_rg[1:0], in_clk_a};
sdvig_out_rg <= {sdvig_out_rg[1:0], in_clk_b};
if (e_wr_rg) data_rg <= input_data;
if (e_rd_rg) out_data <= data_rg;
end

assign e_wr_rg = sdvig_in_rg[1] & ~sdvig_in_rg[2];
assign e_rd_rg = ~sdvig_out_rg[1] & sdvig_out_rg[2];

endmodule
Go to the top of the page
 
+Quote Post
Kenav
сообщение Apr 13 2007, 08:36
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 19-10-05
Пользователь №: 9 839



Ну вот так в кратце. Вроде все просто, но не получается. angry.gif
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 13 2007, 09:11
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Kenav @ Apr 13 2007, 09:36) *
Ну вот так в кратце. Вроде все просто, но не получается. angry.gif
Прикрепленное изображение


Дело в том, что для PLL второго циклона 16 МГц - предельно низкая частота, а реализация делителя на счетчике думаю грязновата получается - все же фреймер требует 50 ppm. Поэтому мне кажется, что надо просто поставить на фреймер отдельный генератор, не пропуская его через ПЛИС. Если не удастся найти 2.048 - поставьте 16.384, ведь фреймер умеет сам делить опорную частоту на 2, 4 или 8.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 13 2007, 10:03
Сообщение #13


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(DmitryR @ Apr 13 2007, 10:11) *
Дело в том, что для PLL второго циклона 16 МГц - предельно низкая частота, а реализация делителя на счетчике думаю грязновата получается - все же фреймер требует 50 ppm. Поэтому мне кажется, что надо просто поставить на фреймер отдельный генератор, не пропуская его через ПЛИС. Если не удастся найти 2.048 - поставьте 16.384, ведь фреймер умеет сам делить опорную частоту на 2, 4 или 8.

1) предельно низкая не 16384 вообще то, для циклона2 смотрите в
Table 5–51. PLL Specifications (Part 1 of 2) - 10 Мгц

2)если у вас генератор 50 ppm то эти самые ppm не могут прибавится за счёт делителя
3) проблемы возможно как раз в самом генераторе который тактирует плис - ведь насколько стало ясно
"так работает" - это происходит при тактировании от внешнего источника


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 13 2007, 10:32
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Postoroniy_V @ Apr 13 2007, 11:03) *
1) предельно низкая не 16384 вообще то, для циклона2 смотрите в
Table 5–51. PLL Specifications (Part 1 of 2) - 10 Мгц


Хорошо, скажем точнее - минимальная выходная частота тоже 10 МГц, а пытаются получить 2. По поводу делителя на счетчике - разные там могут быть проблемы, предлагаю признать такую реализацию недопустимой не углубляясь.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Apr 13 2007, 10:55
Сообщение #15


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(DmitryR @ Apr 13 2007, 11:32) *
Хорошо, скажем точнее - минимальная выходная частота тоже 10 МГц, а пытаются получить 2. По поводу делителя на счетчике - разные там могут быть проблемы, предлагаю признать такую реализацию недопустимой не углубляясь.

Речь в моём посте шла про минимульную входную частоту так? а не про то что нельзя получить на выходе pll 2,048 МГц smile.gif .
а получить эти самые 2,048 за счёт деления - нормальное явление.
И уж будьте любезны привидите пжлста аргументы за то чтобы не применять делитель. и как он может изменить PPM?
Я не могу такую реализацию признать недопустимой совершенно не углубляясь в проблемы smile.gif
форум для того существует - обсудить-поделитсья проблемами-опытом
а если вы не желаете делиться - ваше право smile.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post

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

 


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


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