|
синхронизировать тактовые частоты двух ПЛИС, два Xilinx Spartan 6 |
|
|
|
Mar 2 2013, 22:12
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Необходимо решить задачу синхронизации двух ПЛИС Spartan 6. Мне надо чтобы были синхронными импульсы 100 Гц, а уже расхождение в течение 10 мс в рамках допустимой погрешности будет при любом раскладе. Необходимо чтобы синхронность в пределах 1-2 мкс сохранялась в течение 5 минут. Казалось бы, требования простые, придумывая и тестируя различные методы на Verilog в симуляторе (имитируя расхождение частот в плюс и минус) мне удавалось решить задачу. А вот реальные испытания с осциллографом и двумя каналами (по триггеру смотрел расхождение) показали что решение никуда не годится...
У каждой ПЛИС свой внешний генератор на 50 МГц (KXO-V97, но не суть, там 50 ppm). Между собой они соединены по диф.-паре LVDS_33, помех нет.
Важный момент: после синхронизации ПЛИС должны быть разъединены, поэтому надо чтобы 5 минут потом сохранялось равенство тактовых частот, только вот установить еще надо их равными.
Я так понимаю что встроенный DCM решает такую задачу. Им я пользовался лишь для преобразования одной частоты в другую.
Вопрос: как пользоваться DCM для синхронизации двух тактовых частот? Как называется процесс или режим работы DCM? Есть ли статьи или туториалы?
Чтобы если одна базовая ПЛИС ушла по частота от 50 МГц на 752 Гц например, то чтобы вторая тоже имела такое же смещение (50000752 Гц).
--------------------
|
|
|
|
|
 |
Ответов
(15 - 29)
|
Mar 3 2013, 12:10
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(AVR @ Mar 3 2013, 05:51)  вот этот момент, если честно, не понял для работы фазового детектора нужна опорная частота 100Гц, ее можно получить двумя способами : 1. Подав с мастера 100Гц 2. Подав с мастера тактовую частоту и регенировать из нее 100Гц в слейве. Во втором случае между частотами мастера и слейва будет ошибка по фазе, определяемая начальной фазой регенаратора частоты в сейве.
--------------------
|
|
|
|
|
Mar 3 2013, 13:49
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(khach @ Mar 3 2013, 17:39)  Вместо KXO-V97 ставим подходящий VCXO, выделяем две ноги Спатрана под выход фазового детектора, операционник и ФНЧ на вход управления VCXO. В начале общения по протоколу договариваемся, кто будет ведущим, а кто ведомым. У ведущего отключаме ФД и устанавливаем PWM половину диапазона регулировки VCXO, ну или предустановленное при калибровках из епрома или откуда еще. А второй вводим в синхронизацию с первым. Или тупо подаем на ФД такотовые 100 Гц импульсы от внешней и от внутренней системы, или разность фаз определяем счетным методом- в последенем случае можно быстрее войти в синхронизм. Это уже потом будет, обязательно будет, увы не сейчас... Я не профи, для меня настолько безобразная разница в таких дешевеньких генераторах оказалась неожиданностью.
--------------------
|
|
|
|
|
Mar 3 2013, 15:22
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(des00 @ Mar 3 2013, 17:57)  2 AVR вы бы задачу описали, тогда можно было бы не гадать Задача: Есть две ПЛИС. У каждой свой генератор. Частоты различаются. На несколько секунд их можно соединить кабелем, затем 5 минут работы автономно. Необходимо сделать так, чтобы импульсы (пусть будет 1 КГц, не 100 Гц) в течение 5 минут на одной плате были как можно более синхронны к 1 КГц импульсам на второй плате. Цель: необходимо замерять время хода звука с высокой точностью (есть датчики к ПЛИС с соответствующей аналоговой схемой), поэтому хотя бы 5 минут должно быть более менее стабильно.
--------------------
|
|
|
|
|
Mar 3 2013, 15:55
|
Участник

Группа: Участник
Сообщений: 68
Регистрация: 23-12-04
Пользователь №: 1 636

|
Цитата(AVR @ Mar 3 2013, 02:12)  Необходимо решить задачу синхронизации двух ПЛИС Spartan 6. Мне надо чтобы были синхронными импульсы 100 Гц, а уже расхождение в течение 10 мс в рамках допустимой погрешности будет при любом раскладе. Необходимо чтобы синхронность в пределах 1-2 мкс сохранялась в течение 5 минут. Казалось бы, требования простые, придумывая и тестируя различные методы на Verilog в симуляторе (имитируя расхождение частот в плюс и минус) мне удавалось решить задачу. А вот реальные испытания с осциллографом и двумя каналами (по триггеру смотрел расхождение) показали что решение никуда не годится...
У каждой ПЛИС свой внешний генератор на 50 МГц (KXO-V97, но не суть, там 50 ppm). Между собой они соединены по диф.-паре LVDS_33, помех нет.
Важный момент: после синхронизации ПЛИС должны быть разъединены, поэтому надо чтобы 5 минут потом сохранялось равенство тактовых частот, только вот установить еще надо их равными.
Я так понимаю что встроенный DCM решает такую задачу. Им я пользовался лишь для преобразования одной частоты в другую.
Вопрос: как пользоваться DCM для синхронизации двух тактовых частот? Как называется процесс или режим работы DCM? Есть ли статьи или туториалы?
Чтобы если одна базовая ПЛИС ушла по частота от 50 МГц на 752 Гц например, то чтобы вторая тоже имела такое же смещение (50000752 Гц). Боюсь, что сделать "часы реалього времени" на дешевой комерческой базе, но с точностью атомных ччастов не получиться. Все зависит от точности опорного тактового генератора. Никакие синтезаторы не могут скомпенсировать неточность тактового генератора. Это не их задача. Они для этого не предназначены. Они лишь делят и умножают опорную частоту, чтобы получить требуемую. Сами посчитайте. При 50 ppm за 5 минут в худшем случае разбегутся на 30 мс. Чтобы обеспечить ваши требования нужно чтобы точность тактовых генераторов была 0,00х ppm. Лично я таких генераторов не встричал. Можно попробовать подобрать. Но нужно обязательно генератор с компенсацией температурного дрейфа. Иначе все усилия пойдут "коту под хвост" Цитата(AVR @ Mar 3 2013, 19:22)  Задача: Есть две ПЛИС. У каждой свой генератор. Частоты различаются. На несколько секунд их можно соединить кабелем, затем 5 минут работы автономно. Необходимо сделать так, чтобы импульсы (пусть будет 1 КГц, не 100 Гц) в течение 5 минут на одной плате были как можно более синхронны к 1 КГц импульсам на второй плате.
Цель: необходимо замерять время хода звука с высокой точностью (есть датчики к ПЛИС с соответствующей аналоговой схемой), поэтому хотя бы 5 минут должно быть более менее стабильно. Для этого не надо высокоточных генераторов. Задача решается калибровкой системы по эталонному звуковому сигналу. Грубо говоря, подбираете сколько тактов 50 МГ-цовой частоты укладывается в периоде эталонного 100 Г-цового сигнала
|
|
|
|
|
Mar 3 2013, 16:26
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(AVR @ Mar 3 2013, 09:22)  Необходимо сделать так, чтобы импульсы (пусть будет 1 КГц, не 100 Гц) в течение 5 минут на одной плате были как можно более синхронны к 1 КГц импульсам на второй плате. Что дальше происходит с этими импульсами ? они идут вне плис или используются в качестве стробов/сигналов для обработки внутри плис ? Как бы есть простая технология цифровой привязки "виртуальных тактовых частот" (т.е. частоты, на которой идет обработка сигнала, не путать с тактовой частотой), как раз на описанной выше ФАПЧ. Использую ее в связных модемах, в задачах когда нужно передавать/принимать синхронные потоки при использовании одного эталонного генератора. Но не знаю подойдет ли она вам, там есть определенные ограничения (например требование на тактовую частоту устройства Ft > Fsymb), в особенности что касается аналого-цифровых стыков. вот только генераторы надо будет подобрать получше, хотя бы 5ппм %) Цитата(khach @ Mar 3 2013, 07:39)  Вместо KXO-V97 ставим подходящий VCXO, выделяем две ноги Спатрана под выход фазового детектора, операционник и ФНЧ на вход управления VCXO. В начале общения по протоколу договариваемся, кто будет ведущим, а кто ведомым. У ведущего отключаме ФД и устанавливаем PWM половину диапазона регулировки VCXO, ну или предустановленное при калибровках из епрома или откуда еще. А второй вводим в синхронизацию с первым. Или тупо подаем на ФД такотовые 100 Гц импульсы от внешней и от внутренней системы, или разность фаз определяем счетным методом- в последенем случае можно быстрее войти в синхронизм. угу, а когда внешний клок пропадает, как будете фиксировать уровень управления гуном? генерировать требуемую последовательность фазового детектора? Петлевой фильтр в цифре делать надо. Ну и по управлению либо шумоподобный шим либо ЦАП ставить %)
--------------------
|
|
|
|
|
Mar 3 2013, 18:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936

|
Ну вот же. Цитата(AVR @ Mar 3 2013, 19:22)  Задача: Есть две ПЛИС. У каждой свой генератор. Частоты различаются. На несколько секунд их можно соединить кабелем, затем 5 минут работы автономно. Необходимо сделать так, чтобы импульсы (пусть будет 1 КГц, не 100 Гц) в течение 5 минут на одной плате были как можно более синхронны к 1 КГц импульсам на второй плате.
Цель: необходимо замерять время хода звука с высокой точностью (есть датчики к ПЛИС с соответствующей аналоговой схемой), поэтому хотя бы 5 минут должно быть более менее стабильно. Поэтому платы разнесенные на некоторое растояние. На этом растоянии измеряется скорость звука. Вообще может можно некую тактирующую частоту передовать, а ведомый будет работать от этой частоты. Или не? Хм. Опять непонятно наверное выразился. Для точного измерения некой велечины между двумя разнесенными устройствами, необходимо чтобы их генераторы точно работали синхронно, поэтому нужно раз в 5мин. синхронизировать эти устройства между собой, иначе синхронизация уплывает. Вот я и предлагаю синхронизироваться удаленно с помощью передатчика синхроимпульсов на ведущем устройстве и приемником на ведомом.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|