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

 
 
> Корректный сброс при изменении задающей частоты
Fourier
сообщение Mar 7 2016, 21:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606



Здравствуйте!

Имеется плата с АЦП, ЦАПом и Spartan-6 на борту. Тактирование АЦП и ЦАП осуществляется синтезатором через дестрибьютер тактовых сигналов, частота дискретизации 125 МГц.
Дифф. тактовый сигнал от АЦП заводится в глобальную шину синхронизации и используется для синхронизации модулей ЦОС. Сигнал сброса на эти модули естесственно выдается с задержкой после включения.

Проводили испытания на климат и на морозе плата стала сбоить. Я сделал тестовую прошивку с возможность сброса части логики и оказалось, что сбоит логика тактируемая этим сигналом при прогреве платы во время работы.

Начал экспериментировать - замыкать входы синхронизации и действительно при кратковременном пропадании тактового сигнала логика перестает работать навечно.

Предполагаю, что при прогреве платы происходит кратковременное изменение фазы или частоты схемы тактирования. Однако, повторный сброс части логики ПЛИС решает все проблемы.

Подал клок АЦП на DCM и стал мониторить его сигналы LOCKED, STATUS, CLK_VALID, CLK_STOPPED. Сделал конечный автомат, отслеживающий их и формирующий сброс.
И снова стал замыкать дифф. пару. В 90 процентах случаев конечный автомат вырабатывает корректный сигнал сброса и работа логики восстанавливается.
Однако, иногда при кратковременном пропадании клока все сигналы DCM говорят о том, что все хорошо, а логика моя не работает, поскольку я ее не сбросил. (((( Ну об этом и UG382 говорит, как я понял, типа не рассчитывайте особа на сигналы состояний DCM. Вырабатывать сброс периодически не хочется.

Вопрос в следующем: как можно железно отследить кратковременные сбои тактирующего сигнал и сформировать сигнал сброса для логики тактируемой им?
Конечно, можно и с задающей схемой еще поковыряться, но мне не нравится такой расклад: клок пропал - все перестало работать на вечно, даже после его восстановления(((((

Заранее спасибо


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Timmy
сообщение Mar 9 2016, 07:08
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Можете показать файл с констрейнами? А то меня терзают смутные сомнения, что констрейны даже на частоту не заданы, не говоря уж про ввод-вывод.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Mar 9 2016, 08:59
Сообщение #3


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

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Timmy @ Mar 9 2016, 10:08) *
Можете показать файл с констрейнами? А то меня терзают смутные сомнения, что констрейны даже на частоту не заданы, не говоря уж про ввод-вывод.

Поддерживаю вопрос, с этого и следовало начать. Сам использую стандартный метод формирования асинхронного сброса по сигналу LOCKED модуля clocking wizard (откуда, кстати, DCM?) за пару лет на нескольких разных платах в этом месте глюков замечено не было.
Go to the top of the page
 
+Quote Post
Fourier
сообщение Mar 9 2016, 17:27
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606



Цитата(bogaev_roman @ Mar 9 2016, 11:59) *
Поддерживаю вопрос, с этого и следовало начать. Сам использую стандартный метод формирования асинхронного сброса по сигналу LOCKED модуля clocking wizard (откуда, кстати, DCM?) за пару лет на нескольких разных платах в этом месте глюков замечено не было.


Вот констрейны на частоту
Код
# ADC DCO
NET "ADC_DCO_P" TNM_NET = "ADC_DCO";
NET "ADC_DCO_N" TNM_NET = "ADC_DCO";
TIMESPEC TS_ADC_DCO = PERIOD "ADC_DCO" 120 MHz HIGH 50 %;


Вот на данные

Код
#PIN "ADC_D_*" TNM =  "GRP_ADC_DATA";
#TIMEGRP "GRP_ADC_DATA" OFFSET = IN 3 ns BEFORE "ADC_DCO" RISING;
#TIMEGRP "GRP_ADC_DATA" OFFSET = IN 3 ns BEFORE "ADC_DCO" FALLING;


Ошибок временных нет.

P.S. прошу прощения констрейны данных закомментированы оказались. Но вся логика без временных ошибок, включая тот дикий сумматор на 11 элементов, который надо бы переделать.

Все похоже оказалось несколько проще))) На борту стоит дистрибьютер AD9515. OUT0 - LVPECL тактирует ЦАП, а OUT1 сконфигурированный как LVDS - АЦП.
Так вот оказалось, что peak-to-peak OUT1 по одной линии диффпары порядка 2.5 В, а по второй - 1.4. Причем эти уровни изменяются при нагреве. Т.е. это совсем не дифф.пара и совсем не LVDS((((
Так пока и не разобрался в чем причина, вроде схема по даташитам сделана. На второй плате работает все норм во всем диапазоне температур.
Замена микросхемы эффекта не дала, хотя есть подозрение что монтажница повторно установила неисправную.

Вот собственно говоря схемы.

Дистрибьютер



АЦП





Сообщение отредактировал Fourier - Mar 9 2016, 17:46
Go to the top of the page
 
+Quote Post



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

 


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


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