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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подстроиться под входную частоту
zombi
сообщение Oct 4 2010, 15:12
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Есть проблемка.
В схеме юзаю альтеру EPM3256ATC144-7, на ее обе global_clk приходят 25MHz и 100MHz имеется внешний ресет (можно и програмный реализовать).
100MHz получены из 25 на внешнем PLL (ICS512B).
Проблема в том что фаза частоты 100MHz с PLL-ки случайна от включения к включению. Т.е. фазы частот либо совпадают либо они противоположны.
Можно ли както в альтере при включении питания (один раз) определить как пришла частота 100MHz относительно 25MHz.
И уже потом тактировать остальные блоки либо прямой либо инверсной частотой 100MHz.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Oct 4 2010, 15:46
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Вариантов два - заменить PLL, например, на рекомендованные в документации модели с фиксированной фазой, либо жертвовать драгоценные ресурсы cpld, а их может понадобится, на синхронизацию регистров 2-3, если не получится гарантировать соотношение фаз. И еще регистр, который будет помнить фазу, ну и регистр для сброса основной схемы.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 15:46
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



1. Странная у вас PLL, это точно PLL?
2. Не парить мозг, а получить 25МГц в ПЛИС.


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 15:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Shtirlits @ Oct 4 2010, 18:46) *
Вариантов два - заменить PLL, например, на рекомендованные в документации модели с фиксированной фазой,

В след. итерации обязательно заменю. А сейчас надо чтото с этой делать!
Цитата(Shtirlits @ Oct 4 2010, 18:46) *
жертвовать драгоценные ресурсы cpld, а их может понадобится, на синхронизацию регистров 2-3, если не получится гарантировать соотношение фаз. И еще регистр, который будет помнить фазу, ну и регистр для сброса основной схемы.

Согласен пожертвовать! Токо не знаю как unsure.gif

Цитата(des00 @ Oct 4 2010, 18:46) *
1. Странная у вас PLL, это точно PLL?
2. Не парить мозг, а получить 25МГц в ПЛИС.

1. Да точно PLL токо голимая.
2. Нет нужно обязательно от внешней синхронизироваться.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 16:01
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(zombi @ Oct 4 2010, 10:58) *
2. Нет нужно обязательно от внешней синхронизироваться.

что на этих 25 метрах? а если нарезать на 100 и детектор фронта использовать? smile.gif


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 16:04
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(des00 @ Oct 4 2010, 19:01) *
что на этих 25 метрах? а если нарезать на 100 и детектор фронта использовать? smile.gif

К сожалению не знаю что значит нарезать laughing.gif ! и про детектор фронта можно подробнее плиз unsure.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 16:08
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(zombi @ Oct 4 2010, 11:04) *
К сожалению не знаю что значит нарезать laughing.gif ! и про детектор фронта можно подробнее плиз unsure.gif

пропустить через 2-3 триггера на частоте 100МГц и используя схему выделения фронтов пропускаемого сигнала (в вашем случае 25МГц) построить всю логику. Выделение фронтов делается так
Код
always @(posedge clk_100MHz)
  {r[1], r[0]} <= {r[0], pipa};

assign pipa_posedge = ~r[1] &  r[0];
assign pipa_negedge =  r[1] & ~r[0];
assign pipa_anyedge =  r[1] ^  r[0];


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 16:20
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(des00 @ Oct 4 2010, 19:08) *
пропустить через 2-3 триггера на частоте 100МГц и используя схему выделения фронтов пропускаемого сигнала (в вашем случае 25МГц) построить всю логику. Выделение фронтов делается так
Код
always @(posedge clk_100MHz)
  {r[1], r[0]} <= {r[0], pipa};

assign pipa_posedge = ~r[1] &  r[0];
assign pipa_negedge =  r[1] & ~r[0];
assign pipa_anyedge =  r[1] ^  r[0];

Не силен я в языках описания аппаратуры. Токо в граф редакторе шупортаюсь crying.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 16:31
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(zombi @ Oct 4 2010, 10:20) *
Не силен я в языках описания аппаратуры. Токо в граф редакторе шупортаюсь crying.gif

тут ничем помочь не могу, т.к. не рисую, r это регистры, ~ инверсия, остальные символы как в си %) Ну или ждите когда кто нить из форумчан нарисует.


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 4 2010, 16:36
Сообщение #10


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

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



Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее.
Go to the top of the page
 
+Quote Post
sazh
сообщение Oct 4 2010, 17:07
Сообщение #11


Гуру
******

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



Цитата(zombi @ Oct 4 2010, 19:20) *
Не силен я в языках описания аппаратуры. Токо в граф редакторе шупортаюсь crying.gif

http://electronix.ru/forum/index.php?showt...mp;#entry819078

В 16 посте скачайте файлы. Там есть в графике переход из одного клокового домена в другой.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Oct 4 2010, 17:12
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



QUOTE (DmitryR @ Oct 4 2010, 20:36) *
Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее.

+1
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 17:15
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(DmitryR @ Oct 4 2010, 19:36) *
Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее.

Нет. Мне надо 100MHz либо инвертировать либо нет в зависомости от 25MHz.

Код
always @(posedge clk_100MHz)
  {r[1], r[0]} <= {r[0], pipa};

assign pipa_posedge = ~r[1] &  r[0];
assign pipa_negedge =  r[1] & ~r[0];
assign pipa_anyedge =  r[1] ^  r[0];

Намалевал схемку, токо не знаю что дальше делать с PosE,NegE,AnyE?
В идеале хотелось бы подать на вход SEL mux0 0/1 для выбора нужной частоты (если оно так работать будет?)

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
x736C
сообщение Oct 4 2010, 17:27
Сообщение #14


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

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(DmitryR @ Oct 4 2010, 20:36) *
Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее.

Интересно в плане энергопотребления ПЛИС.
Тактировать схему на Fclk = 100 МГц через enable Fclk/4 или на частоте Fclk = 25 МГц.
По идее ощутимо отличаться не должно.
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 4 2010, 17:31
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата(zombi @ Oct 4 2010, 21:15) *
Нет. Мне надо 100MHz либо инвертировать либо нет в зависомости от 25MHz.

А почему "нет"? Присоединяюсь к советующим использовать clock enable.


--------------------
...а Сила, Брат - она - в несиловых решениях.
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 - 20:04
Рейтинг@Mail.ru


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