Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
|
||||
|
Е20-10 и внешняя синхронизацияЗдравствуйте, уважаемые сотрудники поддержки. Проблема следующая. Плата Е20-10, рев. А, библиотека Lusbapi 3.2 (от 3.10.2008) с соответствующими драйверами. На первый канал подается синусоида от генератора, на DI16/START - синхронизирующий TTL-сигнал. Запускается пример SynchroInput из папки Borland C++ Builder 5.0 (exe - файл). При использовании внутренней синхронизации - все хорошо - поддергивающаяся синусоида. При включении внешней синхронизации становится страшно: в данных появляется мусор по всему диапазону, соответственно, картинка мигает разными цветами. Если все остальные каналы оставить незамкнутыми, то на четвертом иногда мелькает меандр, но сильно уменьшенный (порядка 100-200 разрядов). Аналогично, и в нашей программе: периодически в данных появляется случайный набор кодов (иногда сильно искаженный исходный сигнал) при использовании внешней синхронизации. Без синхронизации все работает замечательно. Скажите, пожалуйста, в чем может быть причина? Железо или программа? |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияМаксим. Проблему постараемся решить.
|
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияСпасибо за быстрый ответ, не ожидал, поэтому пишу уже сегодня |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияМаксим, для Е20-10, рев. "А" подобный эффект у нас подтвердился (в рев. "В" такого эффекта не обнаружено). Возможно потребуется перешивать контроллер в E20-10 и/или загружать новую прошивку ПЛИС для рев. "А"... Над этим сейчас работаем. Если можно, сообщите параметры Вашей конечной задачи (чтобы нам знать, к чему стремиться), а именно:
Замечу, что от частот сигналов, поданных на входы каналов АЦП, этот эффект не может зависеть. И, в любом случае, на вход DI16/START требуется подавать цифровой (TTL-совместимый) сигнал (с соответствующими уровнями и длительностями перепадов). |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияСпасибо огромное за оперативность, жалко, что я год назад к Вам не обратился, сэкономил бы кучу времени. На данный момент моя задача следующая: имеется 50 кГц сигнал, сначала нужно посмотреть на его форму и определить начальную фазу, т.е. скорость должна быть максимальной - 10 МГц (200 точек на период вполне достаточно), потом скорость синхронизированного сигнала нужно опустить до 1 МГц, чтобы построить спектр Фурье, причем число точек хочется варьировать от 256, по крайней мере, до 8192 (в идеале - больше, оптимальное число точек еще требуется определить). Про время между запусками АЦП. Сейчас у меня между запусками проходит от 100 мс до 1 с, в зависимости от размера выборки, в припципе, в этом диапазоне меня устроит любое время, но было бы здорово, чтобы оно составляло 100-200 мс. Про частоту: если с генератора подать 1 Гц синусоиду, то TTL-синхроимпульс генератора будет приходить также с частотой 1 Гц. Я посмотрел работу Вашего примера SynchroInput: мусор появляется при частотах больших, примерно 2.4 Гц, т.е. если синхроимпульс приходит с частотой меньшей, чем 2.4 кГц все работает отлично: кусок синусоиды стоит и не дергается, при увеличении частоты иногда появляется мусор, при еще больших частотах мусор на графике имеется практически всегда. Может поможет. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияИзвините, опечатался в последней цифре: не 2.4 кГц, а 2.4 Гц. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияИ вдогонку вопрос. Как быстро можно ожидать новую прошивку? Я не тороплю Вас, просто хотелось бы спланировать свое время по оптимальнее. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияВыложим уже сегодня прошивки для пробного тестирования. Подождите чуток. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизация1. Нужно перепрошить микроконтроллер модуля. Для этого следует воспользоваться утилитой, архив с которой можно скачать с: ftp://ftp.lcard.ru/pub/users/e2010/e2010fw_18a_21b.zip
|
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияСпасибо за работу! Скачал, перепрошил, dll сменил. Мусора больше нет, но "качество" синхронизации ухудшается при увеличении частоты. Условия тестирования: с генератора подается синусоида на первый канал, остальные - закоротил. С генератора же на плату подаю TTL синхроимпульс. Изменяю частоту и смотрю, что будет. Пример SynchroInput. К сожалению, я не использую Borland, поэтому поменять параметры ввода не могу, соответственно, большие частоты не могу протестировать на вашем примере. На 100 Гц синусоида стоит как влитая. На 200 - очень редко, но синусода поерзывает по экрану, причем при поерзывании кривая окрашивается в разные цвета, это непонятно, т.к. 3 остальных канала я закоротил. Увеличение частоты приводит к более частому поерзыванию. Поерзывание, видимо, следствие того, что ввод производится после небольшого времени после приход синхроимпульса, причем задержка меняется. К сожалению, бОльшие частоты на примере SynchroInput я посмотреть не могу - в экран влазит слишком много периодов - все сливается. Но при установке частоты в 50 кГц, картинка мелькает всеми 4 возможными цветами, хотя повторюсь каналы закорочены. Моя программа. Картина подтверждается: на 1 кГц - редкие ерзанья, на 2 кГц - частые, на 50 кГц ерзанье достигает полпериода (визуально). Интересно, что при использовании числа точек 2048 и меньшего, сигнал - искажен, такое ощущение, что пока переписывается первая половина буфера в память, во вторую уже поступает следующая порция данных. Возможно это глюк моей программы, хотя ввод скопирован практически слово в слово из вашего примера. При размере 4096 - синусоида нормальная. В общем, ощущение такое, что после прихода синхроимпульса на больших частотах ввод стартует не сразу, а с небольшой задержкой, причем задержка все время разная, что и приводит к ерзанью синусоиды по экрану. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияВдогонку: при тестировании на моей программе, время задержки между стартами АЦП составляло более 1 сек. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияНе знаю, может поможет: на сигнале в 1 кГц (ввод: 8192 точки, скорость 1 МГц, задержка между стартами АЦП > 1 сек) из Фурье оценил фазу синхронизированного сигнала. Из 70 измерений: 61 имеет фазу 1.205 рад, 18 - 1.195, по одному - 1.165, 1.155, 1.135, 1.125, 0.805, 0.795, 0.745, по два - 0.655, 0.615. Разброс среди 61 точки около среднего 1.202 составляет 0.005 рад. При этой скорости ввода на период приходится 1000 точек, что соответствует 1 точка = 0.00628 рад, разница 1.205 - 0.615 = 0.590, откуда в максимуме, ввод данных после прихода синхроимпульса идет после 93 точки (93 мкс), для фазы 1.165, соответственно, после 6 точек (6 мкс). Разброс в 0.005 рад около 1.202 соответствует 1 точке. Если частота сигнала 50 кГц, а период - 20 мкс, понятно, что фаза становится случайной. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияМаксим,
|
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияСпасибо большое, буду ждать. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияПовторяем процедуру:
|
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияСпасибо, огромное! Стало гораздо лучше: синус практически не ерзает, но все-таки немного поерзывает... Еще заметил (для меня это не так критично), что при количестве точек меньшем 512, сигнал состоит из двух половинок. Как я понимаю, система считывает данные из половинки буфера медленнее, чем переписывается весь буфер платы (я считываю в два захода, без копирования). |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияМаксим, попытаемся разобраться по порядку: 1) "...ерзанье происходит в пределах одной точки"
2) Если Вам необходима точность +-50 нс синхронизации относительно сигнала START для частоты сбора данных 1 МГц, то я предлагаю использовать механизм межкадровой задержки, заложенный в E20-10. Например, для одноканального режима, для размера 1 управляющей таблицы используйте межкадровую задержку, равную 9-ти. При этих настройках 9 сэмплов из 10-ти будут откинуты на частоте АЦП 10 МГц, обеспечивая частоту сбора данных 1 МГц и точность привязки первого сэмпла +-50 нс относительно сигнала START. Короче говоря, если хотите максимальную точность синхронизации, то частоту АЦП загоняйте на максимум, а межкадровой задержкой регулируйте частоту сбора данных. 3) "Еще заметил (для меня это не так критично), что при количестве точек меньшем 512, сигнал состоит из двух половинок. Как я понимаю, система считывает данные из половинки буфера медленнее, чем переписывается весь буфер платы (я считываю в два захода, без копирования)."
|
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияЯ уточню, что +-50 нс - это случайная составляющая погрешности привязки по времени, а есть ещё и систематическая, которую, в принципе, можно измерить и скомпенсировать при расчётах. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияВ вышеупомянутую систематическую погрешность вносят вклад: задержка канала синхронизации, задержка аналогового тракта. При полосе пропускания 1,2 МГц каналов АЦП температурная, долговременная нестабильность этой задержки (а также разброс между каналами) составляет десятки наносекунд. При этих условиях в E20-10 не имеет большого смысла повышать точность логической привязки фазы сигнала START лучше, чем +-50 нс. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияМаксим, похоже, что у Вас остались только программные заморочки на верхнем программном уровне. У нас всё работает без странных эффектов, о которых Вы пишете: без сбоев, без ожиданий после прихода START, с независимой от размера собираемых данных начальной фазой сигнала. Воспользуйтесь пожалуйста модифицированными программами SynchroInput для проверки E20-10 в Ваших условиях. Программные вопросы задавайте Сергею. |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияНедопонял...
|
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияМаксим. Чтобы подвести итог проделанной работе, хотелось бы получить от Вас подтверждение, что случайная составляющая времени привязки сигнала START составляет теперь около +-50 нс для частоты 10 МГц АЦП и произвольной межкадровой задержки. Если этот результат у Вас подтверждён (с нашей стороны обещанное решение проблемы найдено), то я не исключаю продолжение этого разговора. Ответьте пожалуйста на вопросы:
Если Вы подробно ответите на эти вопросы, то, я не исключаю, что мы предложим какое-то другое техническое решение, в частности, с E20-10 рев."В" (где есть возможности для манёвра из-за наличия свободных ресурсов ПЛИС). |
|||
|
||||
|
Re: Е20-10 и внешняя синхронизацияАлександр, извините за молчание. Я вроде нашел проблему в своей программе, которая приводила к зависимости фазы сигнала от числа точек. Сейчас пытаюсь привести все в божеский вид, чтобы погонять свою задачу. Кстати, основная причина совершения этой ошибки, конечно же моя собственная бестолковость, но с другой стороны... Я не профессиональный программист, а физик (ну, нет у нас ставок на программистов сечас, да и кто на 10 тыс. работать пойдет?), поэтому фраза про _обязательный_ вызов функции GET_MODULE_DESCRIPTION на практически последней странице описания меня привела в тихое помешательство... Такие вещи хотелось бы большими буквами на форзаце читать... Ну, и в целом интерфейс вашей библиотеки все-таки на профессионала расчитан, на мой взгляд. Хотя интерфейс - штука субъективная, и даже где-то религиозная, поэтому не поймите это как упрек, но если Вам интересно мое мнение об этом аспекте вашей продукциии, я могу это вынести в отдельную тему. По вопросам:
Это вкратце. Если Вам интересна более конкретная физическая постановка (объект, метод) - могу описать и с этой точки зрения, но, в теме про синхронизацию E20-10, наверное, это не очень уместно будет. "...какое-то другое техническое решение..."
|