Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Е20-10 и внешняя синхронизация

Вы не вошли.

 Поиск | Регистрация | Вход 

Максим
28.10.2008 16:42:09
#26

Гость

Е20-10 и внешняя синхронизация

Здравствуйте, уважаемые сотрудники поддержки. Проблема следующая. Плата Е20-10, рев. А, библиотека Lusbapi 3.2 (от 3.10.2008) с соответствующими драйверами. На первый канал подается синусоида от генератора, на DI16/START - синхронизирующий TTL-сигнал. Запускается пример SynchroInput из папки Borland C++ Builder 5.0 (exe - файл). При использовании внутренней синхронизации - все хорошо - поддергивающаяся синусоида. При включении внешней синхронизации становится страшно: в данных появляется мусор по всему диапазону, соответственно, картинка мигает разными цветами. Если все остальные каналы оставить незамкнутыми, то на четвертом иногда мелькает меандр, но сильно уменьшенный (порядка 100-200 разрядов). Аналогично, и в нашей программе: периодически в данных появляется случайный набор  кодов (иногда сильно искаженный исходный сигнал) при использовании внешней синхронизации. Без синхронизации все работает замечательно. Скажите, пожалуйста, в чем может быть причина? Железо или программа?

28.10.2008 18:26:04
#27

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Максим. Проблему постараемся решить.
Уточните пожалуйста:
1. C какой периодичностью Вы подаёте внешний старт?
2. Если внешний старт для примера SynchroInput подавать с периодом не менее 0,8-1 с, то всё работает нормально?

Максим
29.10.2008 07:08:28
#28

Гость

Re: Е20-10 и внешняя синхронизация

Спасибо за быстрый ответ, не ожидал, поэтому пишу уже сегодня smile.
1-2. В случае с вашим примером пробовал синусоиды 1 кГц и 10 кГц, старт - синхроимпульс генератора, т.е. с такой-же частотой. Моя программа работает так: запускается АЦП, вводится 4096 точек за 4.096 мс, останавливается АЦП, даные обрабатываются (200 - 300 мс), потом все повторяется. Ставил задержку до 2 сек между двумя стартами АЦП, все равно мусор проскальзывает. В случае моей программы, мусор попадается гораздо реже, но все равно есть. Может поможет такая информация: в предыдущей версии lusbapi синхронизация вообще толком не работала: старт по импульсу работал только при первом запуске, потом данные шли не синхронизированные.
2. Попробую поставить 1 Гц синусоиду на генераторе, доберусь до работы - скажу.

29.10.2008 09:18:46
#29

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Максим, для Е20-10, рев. "А" подобный эффект у нас подтвердился (в рев. "В" такого эффекта не обнаружено). Возможно потребуется перешивать контроллер в E20-10  и/или загружать новую прошивку ПЛИС для рев. "А"... Над этим сейчас работаем.

Если можно, сообщите параметры Вашей конечной задачи (чтобы нам знать, к чему стремиться), а именно:
-- какое количество сэмплов Вам нужно собирать после старта, c какой частотой АЦП, с каким минимальным временем от одного старта до другого?

Замечу, что от частот сигналов, поданных на входы каналов АЦП, этот эффект не может зависеть. И, в любом случае, на вход  DI16/START требуется подавать цифровой (TTL-совместимый) сигнал (с соответствующими уровнями и длительностями перепадов).

Максим
29.10.2008 10:20:53
#30

Гость

Re: Е20-10 и внешняя синхронизация

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

На данный момент моя задача следующая: имеется 50 кГц сигнал, сначала нужно посмотреть на его форму и определить начальную фазу, т.е. скорость должна быть максимальной - 10 МГц (200 точек на период вполне достаточно), потом скорость синхронизированного сигнала нужно опустить до 1 МГц, чтобы построить спектр Фурье, причем число точек хочется варьировать от 256, по крайней мере, до 8192 (в идеале - больше, оптимальное число точек еще требуется определить).

Про время между запусками АЦП. Сейчас у меня между запусками проходит от 100 мс до 1 с, в зависимости от размера выборки, в припципе, в этом диапазоне меня устроит любое время, но было бы здорово, чтобы оно составляло 100-200 мс.

Про частоту: если с генератора подать 1 Гц синусоиду, то TTL-синхроимпульс генератора будет приходить также с частотой 1 Гц. Я посмотрел работу Вашего примера SynchroInput: мусор появляется при частотах больших, примерно 2.4 Гц, т.е. если синхроимпульс приходит с частотой меньшей, чем  2.4 кГц все работает отлично: кусок синусоиды стоит и не дергается, при увеличении частоты иногда появляется мусор, при еще больших частотах мусор на графике имеется практически всегда. Может поможет.

Максим
29.10.2008 10:24:12
#31

Гость

Re: Е20-10 и внешняя синхронизация

Извините, опечатался в последней цифре: не 2.4 кГц, а 2.4 Гц.

Максим
29.10.2008 10:30:06
#32

Гость

Re: Е20-10 и внешняя синхронизация

И вдогонку вопрос. Как быстро можно ожидать новую прошивку? Я не тороплю Вас, просто хотелось бы спланировать свое время по оптимальнее.

29.10.2008 12:11:22
#33

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Выложим уже сегодня прошивки для пробного тестирования. Подождите чуток.

29.10.2008 14:17:58
#34

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: Е20-10 и внешняя синхронизация

1. Нужно перепрошить микроконтроллер модуля. Для этого следует воспользоваться утилитой, архив с которой можно скачать  с: ftp://ftp.lcard.ru/pub/users/e2010/e2010fw_18a_21b.zip
Прочитайте Readme-файл.
2. Следует использовать обновлённую библиотеку Lusbapi. Архив качать здесь: ftp://ftp.lcard.ru/pub/users/e2010/lusbapi3230.zip
3. Огромная просьба сообщить о результатах тестирования обновленного софта.

Максим
29.10.2008 15:40:10
#35

Гость

Re: Е20-10 и внешняя синхронизация

Спасибо за работу!

Скачал, перепрошил, dll сменил. Мусора больше нет, но "качество" синхронизации ухудшается при увеличении частоты.

Условия тестирования: с генератора подается синусоида на первый канал, остальные - закоротил. С генератора же на плату подаю TTL синхроимпульс. Изменяю частоту и смотрю, что будет.

Пример SynchroInput. К сожалению, я не использую Borland, поэтому поменять параметры ввода не могу, соответственно, большие частоты не могу протестировать на вашем примере. На 100 Гц синусоида стоит как влитая. На 200 - очень редко, но синусода поерзывает по экрану, причем при поерзывании кривая окрашивается в разные цвета, это непонятно, т.к. 3 остальных канала я закоротил. Увеличение частоты приводит к более частому поерзыванию. Поерзывание, видимо, следствие того, что ввод производится после небольшого времени после приход синхроимпульса, причем задержка меняется. К сожалению, бОльшие частоты на примере SynchroInput я посмотреть не могу - в экран влазит слишком много периодов - все сливается. Но при установке частоты в 50 кГц, картинка мелькает всеми 4 возможными цветами, хотя повторюсь каналы закорочены.

Моя программа. Картина подтверждается: на 1 кГц - редкие ерзанья, на 2 кГц - частые, на 50 кГц ерзанье достигает полпериода (визуально). Интересно, что при использовании числа точек 2048 и меньшего, сигнал - искажен, такое ощущение, что пока переписывается первая половина буфера в память, во вторую уже поступает следующая порция данных. Возможно это глюк моей программы, хотя ввод скопирован практически слово в слово из вашего примера. При размере 4096 - синусоида нормальная.

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

Максим
29.10.2008 15:44:13
#36

Гость

Re: Е20-10 и внешняя синхронизация

Вдогонку: при тестировании на моей программе, время задержки между стартами АЦП составляло более 1 сек.

Максим
29.10.2008 16:24:16
#37

Гость

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 мкс, понятно, что фаза становится случайной.

29.10.2008 16:43:33
#38

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Максим,
тогда мы будем воспроизводить именно Ваш эксперимент и добиваться устойчивой работы.
О результатах сообщим.

Максим
29.10.2008 16:49:11
#39

Гость

Re: Е20-10 и внешняя синхронизация

Спасибо большое, буду ждать.

01.11.2008 11:32:58
#40

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: Е20-10 и внешняя синхронизация

Повторяем процедуру:
1. Нужно перепрошить микроконтроллер модуля. Для этого следует воспользоваться утилитой, архив с которой можно скачать с: ftp://ftp.lcard.ru/pub/users/e2010/e2010fw_18a_21b.zip
Прочитайте Readme-файл.
2. Следует использовать обновлённую библиотеку Lusbapi. Архив качать здесь: ftp://ftp.lcard.ru/pub/users/e2010/lusbapi3230.zip
3. Огромная просьба сообщить о результатах тестирования обновленного софта.

Максим
01.11.2008 15:41:40
#41

Гость

Re: Е20-10 и внешняя синхронизация

Спасибо, огромное!

Стало гораздо лучше: синус практически не ерзает, но все-таки немного поерзывает... sad Я измерил фазу синхронизированного сигнала из Фурье для разных скоростей ввода и числа точек. Получается, что ерзанье происходит в пределах одной точки. Также начальная фаза зависит от числа точек и скорости ввода, причем если скорость меньше и, соответственно, число точек на период меньше, то разброс фазы становится больше. Меня это не совсем устраивает. Моя задача заключается в том, чтобы на скорости 10 МГц измерить начальную фазу сигнала, а затем использовать ее при измерениях на скорости 1 МГц, т.е. хотелось бы чтобы начальная фаза не зависела от скорости ввода и от количества точек. Это, в принципе, можно сделать? Или есть особенности работы платы, которые не позволяют реализовать более точную синхронизацию?

Еще заметил (для меня это не так критично), что при количестве точек меньшем 512, сигнал состоит из двух половинок. Как я понимаю, система считывает данные из половинки буфера медленнее, чем переписывается весь буфер платы (я считываю в два захода, без копирования).

01.11.2008 22:59:41
#42

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Максим, попытаемся разобраться по порядку:

1) "...ерзанье происходит в пределах одной точки"
-- На сколько я понял, Вы получили точность синхронизации относительно сигнала START в пределах одного периода установленной частоты преобразования АЦП (+-50 нс для 10 МГц и +-500 нс для 1 МГц). Это именно та точность синхронизации, которую мы и хотели обеспечить.

2) Если Вам необходима точность +-50 нс синхронизации относительно сигнала START для частоты сбора данных  1 МГц, то я предлагаю использовать механизм межкадровой задержки, заложенный в E20-10. Например, для одноканального режима, для размера 1 управляющей таблицы используйте межкадровую задержку, равную 9-ти. При этих настройках 9 сэмплов из 10-ти будут откинуты на частоте АЦП 10 МГц, обеспечивая частоту сбора данных 1 МГц и точность привязки первого сэмпла  +-50 нс относительно сигнала START. Короче говоря, если хотите максимальную точность синхронизации, то частоту АЦП загоняйте на максимум, а межкадровой задержкой регулируйте частоту сбора данных.

3) "Еще заметил (для меня это не так критично), что при количестве точек меньшем 512, сигнал состоит из двух половинок. Как я понимаю, система считывает данные из половинки буфера медленнее, чем переписывается весь буфер платы (я считываю в два захода, без копирования)."
-- Мы пытались понять это замечание, но нам так и не удалось. Просьба изложить это более подробно или выслать исходный код, который пояснил бы суть этого вопроса.

01.11.2008 23:18:39
#43

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Я уточню, что +-50 нс - это случайная составляющая погрешности привязки по времени, а есть ещё и систематическая, которую, в принципе, можно измерить и скомпенсировать при расчётах.

04.11.2008 11:32:12
#44

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

В вышеупомянутую систематическую погрешность вносят вклад: задержка канала синхронизации, задержка аналогового тракта. При полосе пропускания 1,2 МГц каналов АЦП температурная, долговременная нестабильность этой задержки (а также разброс между каналами) составляет десятки наносекунд. При этих условиях в E20-10 не имеет большого смысла повышать точность логической привязки фазы сигнала START лучше, чем +-50 нс.

05.11.2008 22:13:31
#45

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Максим, похоже, что у Вас остались только программные заморочки на верхнем программном уровне. У нас всё работает без странных эффектов, о которых Вы пишете: без сбоев, без ожиданий после прихода START, с независимой  от размера собираемых данных начальной фазой сигнала. Воспользуйтесь пожалуйста модифицированными программами SynchroInput для проверки E20-10 в Ваших условиях. Программные вопросы задавайте Сергею.

07.11.2008 15:32:25
#46

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: Е20-10 и внешняя синхронизация

Недопонял...
А пример SynchroInput_256, который "прекрасно работает", тоже выдаёт такую же ошибку?

10.11.2008 18:57:59
#47

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Е20-10 и внешняя синхронизация

Максим. Чтобы подвести итог проделанной работе, хотелось бы получить от Вас подтверждение, что случайная составляющая времени привязки сигнала START составляет теперь около +-50 нс для частоты 10 МГц АЦП и произвольной межкадровой задержки.

Если этот результат у Вас подтверждён (с нашей стороны обещанное решение проблемы найдено), то я не исключаю продолжение этого разговора.  Ответьте пожалуйста на вопросы:
1. Какая именно случайная составляющая времени привязки сигнала START необходима для Вашей задачи (если, конечно, +-50 нс Вас не устраивает)?
2. Какой физический смысл Вашей задачи и какая именно мотивация получения точности привязки сигнала START лучше +-50 нс?

Если Вы подробно ответите на эти вопросы, то, я не исключаю, что мы предложим какое-то другое техническое решение, в частности, с E20-10 рев."В" (где есть возможности для манёвра из-за наличия свободных ресурсов ПЛИС).

Максим
11.11.2008 17:20:26
#48

Гость

Re: Е20-10 и внешняя синхронизация

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

Кстати, основная причина совершения этой ошибки, конечно же моя собственная бестолковость, но с другой стороны... Я не профессиональный программист, а физик (ну, нет у нас ставок на программистов сечас, да и кто на 10 тыс. работать пойдет?), поэтому фраза про _обязательный_ вызов функции GET_MODULE_DESCRIPTION на практически последней странице описания меня привела в тихое помешательство... Такие вещи хотелось бы большими буквами на форзаце читать... Ну, и в целом интерфейс вашей библиотеки все-таки на профессионала расчитан, на мой взгляд. Хотя интерфейс - штука субъективная, и даже где-то религиозная, поэтому не поймите это как упрек, но если Вам интересно мое мнение об этом аспекте вашей продукциии, я могу это вынести в отдельную тему.

По вопросам:
1. пока не погоняю эксперимент, я Вам не смогу сказать точно - устраивает меня это время или нет; там еще есть чисто методические вопросы, метод только разрабатывается. В общем, подождите чуть (может недельку), и я обязательно сообщу результат.
2. в общем виде так: есть модулированный сигнал, состоящий из нескольких кратных гармоник, амплитуды которых несут информацию об объекте. К сожалению, в амплитуды замешивается вклад, связанный с неидеальностью модулятора, который как оказалось, можно легко компенсировать, если точно знать фазы гармоник. Метод достаточно точно оценивает амплитуды из спектра, хотелось бы, чтобы оценка фазы не портила эту точность, поэтому понятно, что чем меньше случайная составляющая времени привязки, тем точнее будет измерение фазы. С другой стороны на оценки амплитуды и фазы также влияет шум сигнала, поэтому до бесконечности уменьшать привязку особого смысла нет. В общем все упирается в цифры, которыми я пока не владею.

Это вкратце. Если Вам интересна более конкретная физическая постановка (объект, метод) - могу описать и с этой точки зрения, но, в теме про синхронизацию E20-10, наверное, это не очень уместно будет.

"...какое-то другое техническое решение..."
Спасибо за предложение, боюсь только, что если понадобиться приобретать Рев. "В", то всё отложится до лета, у нас все финансовые резервы на этот год уже исчерпаны, остается надеяться, что точности Рев. "А" хватит.