Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Формирование частот
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Loser
Такой вопрос, товарищи! Необходимо создать 2 синхронные частоты на Virtex 4. Причём, одна порядка 100МГц, а вторая - десятки-сотни килогерц. Обычный DCM не выдает частоты ниже 1МГц, а потому пришлось вручную делить до необходимых килогерцовых. Но при этом, соответственно частоты оказываются не синхронными и система начинает работать некорректно. Подскажите, пожалуйста, есть ли способ сделать их синхронными
Mc_off
Как это у вас получилось, что частота полученная делением из другой частоты - несинхронна первой ?
Loser
Так деление то производилось вручную, т.е. на основе счетчика и т.д. Это привело к тому, что деленая частота получила задержку на распространение в этом элементе цепи. И при больших коэффициентах деления она получается довольно существенной.
Mc_off
Т.е. частоты синхронные, но между фронтами существует неприемлемо большая задержка ?

Если так, то простробируй низкую частоту высокой.

Можно простробировать обе частоты... более высокой

Однако, в любом случае абсолютно точно фронты совпадать не будут.

Необходимо применять такие схемы, в которых несовпадение фронтов не критично.
Bad0512
Цитата(Loser @ Mar 22 2008, 18:14) *
Такой вопрос, товарищи! Необходимо создать 2 синхронные частоты на Virtex 4. Причём, одна порядка 100МГц, а вторая - десятки-сотни килогерц. Обычный DCM не выдает частоты ниже 1МГц, а потому пришлось вручную делить до необходимых килогерцовых. Но при этом, соответственно частоты оказываются не синхронными и система начинает работать некорректно. Подскажите, пожалуйста, есть ли способ сделать их синхронными


Вижу два варианта решения проблемы :
1. Входную частоту (100 МГц) делите делителем DCM до минимально возможной (допустим получилось поделить до 1МГц). При этом эта частота при правильных настройках DCM будет по фронтам синхронна со входной. Потом эту промежуточную частоту маленьким счётчиком делите до необходимой. За счёт того, что счётчик получается маленьким - задержки выхода будут минимальны. Не забывайте прпо использование constraints - это позволяет существенно уменьшить задержки в нужных местах.
2. Используем DCM в режиме классического phase locked loop (PLL). Для этого входные 100 Мгц заводим на вход CLK_IN, на вход CLK_FB заводим низкочастотные клоки. Выходные CLK_OUT при правильном включении атрибутов DCM должны быть синхронными с низкочастотными клоками. Их и используем далее в своей логике.
DmitryR
Поставьте на высокую частоту еще одну DCM и с ее помощью задержите высокую частоту настолько, чтобы ее фронты совпали с низкой. Но вообще правильно вам сказали - надо делать так, чтобы соотношение фаз частот не играло роли, так как они будут плыть он напряжения и температуры как ни крути, и работать станет нестабильно.
dvladim
Цитата(Loser @ Mar 22 2008, 21:03) *
Так деление то производилось вручную, т.е. на основе счетчика и т.д. Это привело к тому, что деленая частота получила задержку на распространение в этом элементе цепи. И при больших коэффициентах деления она получается довольно существенной.

На синхронном делителе задержка не будет зависеть от разрядности.

Цитата(Mc_off @ Mar 22 2008, 21:28) *
Т.е. частоты синхронные, но между фронтами существует неприемлемо большая задержка ?

Если так, то простробируй низкую частоту высокой.

Равноценно использованию синхронного делителя. (Задержка = задержке триггера)

Цитата(Mc_off @ Mar 22 2008, 21:28) *
Можно простробировать обе частоты... более высокой

Однако, в любом случае абсолютно точно фронты совпадать не будут.

Присоединяюсь.

Каков допустимый skew между клоками?
Loser
Со стробированием то и так понятно! Система так и работала в моем случае потом. Просто были надежды, что это всё можно сделать как-то более просто - потому и решил спросить. А-ля какие нить встроеные блоки или IP. Всем пасибо smile.gif
bms
Цитата(Loser @ Mar 22 2008, 15:14) *
Такой вопрос, товарищи! Необходимо создать 2 синхронные частоты на Virtex 4. Причём, одна порядка 100МГц, а вторая - десятки-сотни килогерц. Обычный DCM не выдает частоты ниже 1МГц, а потому пришлось вручную делить до необходимых килогерцовых. Но при этом, соответственно частоты оказываются не синхронными и система начинает работать некорректно. Подскажите, пожалуйста, есть ли способ сделать их синхронными


Проблема выеденого яйца не стоит, особенно для Virtex-4, у которого есть встроенные 48-битные DSP-блоки, на которых без труда собирается синтезатор частоты (DDS). Там и корка такая должна быть... Хотя тут и без корки все ясно - почему-то никто не вспомнил про старый добрый NCO (по сути своей - накапливающий сумматор). На них обычно делаются такие вещи, посмотрите хотя бы даташит на микросхемку AD9952...

И главное - судя по всему эту килогерцовую частоту Вы пытаетесь использовать как клок для части своих схем. Это не правильный поход и проблему синхронности таким способом не решить. Кроме того под это дело съедается дополнительная глобальная лиия (что Вас видимо не очень беспокоит). Об этом пишут в соответствующих документах. Правильнее использовать эту низкую частоту не как клок, а как "clock enable", при этом клок остается тем же - Ваши 100МГц, просто он сопровождается синтезированным "clock enable" нужной частоты. Что позволяет забыть о проблемах синхронности, да и лишняя глобальная линия не тратится, а она на дороге не всегда валяется.

Успехов!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.