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

 
 
> Подстроиться под входную частоту
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
 
Start new topic
Ответов
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
zombi
сообщение Oct 4 2010, 15:58
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #4


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

Группа: Модераторы
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #6


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

Группа: Модераторы
Сообщений: 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
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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
DmitryR
сообщение Oct 4 2010, 16:36
Сообщение #8


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

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



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


Гуру
******

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- zombi   Подстроиться под входную частоту   Oct 4 2010, 15:12
|- - des00   Цитата(zombi @ Oct 4 2010, 10:20) Не силе...   Oct 4 2010, 16:31
||- - Shtirlits   QUOTE (DmitryR @ Oct 4 2010, 20:36) Как т...   Oct 4 2010, 17:12
|||- - Intekus   Цитата(zombi @ Oct 4 2010, 21:15) Нет. Мн...   Oct 4 2010, 17:31
|||- - zombi   Цитата(Intekus @ Oct 4 2010, 20:31) А поч...   Oct 4 2010, 17:35
|||- - Maverick   Цитата(zombi @ Oct 4 2010, 20:35) И всета...   Oct 4 2010, 18:02
|||- - zombi   Цитата(Maverick @ Oct 4 2010, 21:02) Возь...   Oct 4 2010, 18:53
|||- - sazh   Цитата(zombi @ Oct 4 2010, 21:53) Как DFF...   Oct 4 2010, 19:10
|||- - zombi   Цитата(sazh @ Oct 4 2010, 22:10) Значит м...   Oct 4 2010, 19:40
|||- - vadimuzzz   Цитата(zombi @ Oct 5 2010, 02:40) Вы прав...   Oct 4 2010, 22:47
||- - x736C   Цитата(DmitryR @ Oct 4 2010, 20:36) Как т...   Oct 4 2010, 17:27
|- - sazh   Цитата(zombi @ Oct 4 2010, 19:20) Не силе...   Oct 4 2010, 17:07
- - des00   1. Странная у вас PLL, это точно PLL? 2. Не парить...   Oct 4 2010, 15:46
- - Shtirlits   страница 6 и 7 http://www.altera.com/literature/ds...   Oct 4 2010, 18:20
- - Shtirlits   Был совет не использовать внешний 25MHz-овый клок ...   Oct 4 2010, 19:12
- - Shtirlits   частота чего-то полезного 126.6MHz Так скажите, в...   Oct 4 2010, 20:33
- - zombi   Все оказалось банально просто когда я вместо ICS51...   Oct 4 2010, 23:02


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

 


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


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