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

е-502 работа с ЦАП

Вы не вошли.

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

29.01.2017 21:25:29
#1

Участник
Здесь с 20.10.2016
Сообщений: 15

е-502 работа с ЦАП

Добрый вечер.
В данный момент мной ведется работа  по разработке приложения с использование платы е-502. И при настройке и работы с ЦАП на данной плате возникают вопросы:
1. Если у меня работает один канал то максимальная частота ЦАП 1МГЦ или все же разгоница до 2МГц?
2. Могу ли сам задавать размер внутреннего буфера? Если да то какой минимальный и максимальный(если я правильно понял из документации что максимальный это 9М слов)?
3. Обязательно ли при синхронном вводе плата перед запуском ЦАП я должен в нее прогружать данные? если да то какое колличество данных(отсчетов) я должен прогрузить туда или это сразу должен быть целый внутренний буфер?
4. Я следуя вашей документации написал маленькое приложение и столкнулся с тем что сначала у меня была задерка в изменение вида сигнала 14 с, но потом чутка пошаманив в с буфером добился задержки в 3 с. И как в написано в документации что буфер заполняется 3 с. В моем случае это критичное время, надо еще его снижать.Как я понимаю пока я не заполню внутренний буфер то она не будет выдавать выход?
5. У вас написано что что при задание частоты плата выбирает размер буфера сама(оптимальный), т.е этот размер буфера будет заполнен за 3 сек?

30.01.2017 00:35:46
#2

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

Re: е-502 работа с ЦАП

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

Максимальная частота вывода каждого канала 1МГц и она не зависит от кол-во используемых ЦАП, вывод происходит параллельно. 2МГц на один канал получить нельзя.

По поводу буфера, то реально есть два буфера - в самом модуле и на ПК (второй можно настраивать размер, первый нет), но сами по себе эти два буфера не приводят к появлению задержки и в общем наличие именно 2-х буферов и их размер не так важен на верхнем уровне, скорее важна их общая заполненность (а точнее количество посланных в модуль но еще не выведенных модулем отсчетов). Буфер работает как очередь, т.е. с одной стороны в него влетают данные, которые Вы посылаете через Send, а с другой стороны они выдаются на ЦАП со строго заданной скоростью настроенного вывода (до 1МГц на канал). Т.е. если буфер пустой, то он не вносит задержку и данные будут выведены на ЦАП после Send() с задержкой только передачи по USB и внутри модуля. Но если Вы используете синхронный вывод непрерывного сигнала в потоковом режиме, то Вам необходимо, чтобы в буфере всегда были данные, иначе, если на момент вывода следующего отсчета его не будет в буфере, то будет повторен предыдущий и будет разрыв сигнала.

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

Если вывод идет не заранее известного сигнала, а он изменяется по каким-то внешним событиям, то тут могут быть несколько вариантов:
1. Если выводимый сигнал периодический и нужно по какому-то событию сменить сигнал на другой периодический (или поменять его параметры), то можно воспользоваться циклическим выводом (он поддерживает загрузку нового сигнала, пока выводится первый и потом переключение с первого на новый)
2. Если вывод меняющегося постоянного значения то тут можно использовать как асинхронный вывод, так и синхронный, в котором не нужно заботится об опустошении буфера, т.к. это приведет к повтору постоянного сигнала - достаточно выводить один отсчет при смене уровня.
3. Если первые два варианта не подходят, то можно использовать потоковый вывод, но контролировать заполненность буфера частотой вызова Send(). Скорость вывода при этом можно определять по количеству принятых данных, т.к. ввод и вывод идет от одного генератора.
В этом случае берется некое время T (из соображений, описанных далее). Перед стартом загружается сигнал на время 2*T в буфер вывода. После старта сбора при приеме каждого блока данных на входе за время T (на этот момент в буфере на вывод осталось отсчетов на время T минус время задержки приема) на вывод подается следующая порция сигнала на то же время T. Соответственно эта порция должна успеть дойти до ЦАП до того как буфер опустошится, т.е. T должно быть с запасом больше времени общей задержки "ввод + реакция + вывод". При этом заполненность буфера при таком алгоритме не превышает время 2*T. Увеличение времени T приводит к большей устойчивости к задержкам, но и к большему времени реакции. Проблема тут заключается в том, что это максимальное время задержки не гарантируется ОС общего назначения, такой как Windows (оно может гарантироваться при работе из сигнального процессора модуля или при работе с ПК с ОС реального времени), поэтому дать точное гарантированное время T нельзя. Но Вы можете получить экспериментально это время подходящее для Вашего случая. Порядок этого времени может быть сотни милисекунд.

По поводу предварительной загрузки буфера вывода. Если Вы ее не выполните, то на момент запуска сбора данных в буфере ЦАП не будет и соответственно будет на ЦАП повторяться начальное значения, пока не придет первый блок посланных через Send данных. Если момент начала вывода не нужно привязать к началу ввода, то в принципе предзагрузка данных может быть не обязательной.

30.01.2017 08:56:21
#3

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

Re: е-502 работа с ЦАП

На всякий случай уточню, что максимальная частота преобразования каждого канала ЦАП - 1 МГц (о которой идёт речь) соответствует максимальной частоте воспроизводимого сигнала 0,5 МГц.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск