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

L-502. Частота синхронного цифрового вывода

Вы не вошли.

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

29.10.2021 10:12:59
#1

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

L-502. Частота синхронного цифрового вывода

На базе платы L-502 (прошивка ПЛИС -0, прошивка BlackFin -0.10 )
мы разрабатываем систему синхронного цифрового вывода.
В качестве синхронизации используется внешний источник X502_SYNC_DI_SYN2_FALL.
Однако, согласно Руководству пользователя, п.3.4.4 (Каналы цифрового вывода и ЦАП) и
п. 3.8.8 (Относительные задержки каналов АЦП, ЦАП и каналов ввода-
вывода) цифровой вывод DO производится только с периодом 2*tref, в отличие от
цифрового ввода и ввода АЦП, где период ввода tref.

Для реализации нашей системы необходимо, чтобы цифровой вывод осуществлялся
на каждом импульсе опорного синхросигнала CONV_OUT, т.е. с периодом tref.

Вопрос1.
Можно ли реализовать синхронный цифровой вывод данных с периодом tref,
используя штатную прошивку платы?

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

29.10.2021 11:14:09
#2

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

Re: L-502. Частота синхронного цифрового вывода

А какая максимальная частота вывода при этом Вам нужна?

29.10.2021 11:22:07
#3

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

Re: L-502. Частота синхронного цифрового вывода

Где-то 262 тыс отсчетов в секунду

29.10.2021 19:48:19
#4

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

По всей видимости, реализация такого режима является предметом разработки в рамках заказной работы, поскольку это связано с отвлечением наших специалистов.
Но, с другой стороны, если вы сами разрабатываете систему синхронного цифрового вывода, то просматривается простое решение:
- Внешним счётным триггером поделить частоту CONV_OUT на 2  (с установкой счётного триггера в начальное состояние от сигнала цифрового выхода L-502 перед стартом основного сбора-выдачи данных).

29.10.2021 21:08:24
#5

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

Re: L-502. Частота синхронного цифрового вывода

Вообще, если не ошибаюсь, изначально такой режим предполагался для внешней частоты ниже 700 КГц, но не помню, чтобы его когда-то использовали, возможно он и не был реализован, но на всякий случай попробую проверить на следующей неделе.

29.10.2021 21:46:18
#6

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

Да, такой режим (равенства частот ввода и вывода) в начале разработки предполагался, и в FPGA заложена такая возможность. Почему он не был реализован в штатном варианте? - сами разработчики уже не помнят, простите. Если у Алексея он сходу заработает, то ОК. В любом случае, как минимум, потребуется его тестирование в многочисленных сочетаниях режимов и частот ввода и вывода, а также документирование. Как максимум, коррекция логики FPGA. Эти отвлечения специалистов я подразумевал выше. Но с сегодняшней точки зрения объём работы оценить непросто... Это ровно тот случай, когда объём работы станет понятен во время её выполнения.

29.10.2021 22:19:51
#7

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

Re: L-502. Частота синхронного цифрового вывода

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

30.10.2021 00:06:22
#8

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

В рамках обычной техподдержки уникальная прошивка модуля общего применения проблематична, поскольку непонятно, каким образом (и за чей счёт) производителю поддерживать-развивать-документировать многочисленные боковые ветвления проекта по запросам пользователей. Если мы рассматриваем этот вопрос в рамках техподдержки, то всё-таки предполагается естественное (линейное, без боковых веток) развитие новых версий штатных прошивок, которые будет поддерживать и развивать компания. В данном случае, если у Алексея данный режим заработает, то речь пойдёт о новом релизе штатного ПО и описания нового режима в эксплуатационных документах - по мере возможности по срокам выполнения. 
При этом вывод на ЦАП и ввод с АЦП и DI мы должны будем протестировать для полноценности решения, поскольку это будет интересовать пользователей.
Но, если же этот вопрос мы рассматриваем в рамках заказной работы, то уникальные прошивки и частные решения задачи Заказчика возможны, и вышеупомянутые  вопросы, включая сроки выполнения работ, обычно оговариваются договором.
Замечу также, что сигнал Conv_out является выходом частоты преобразования АЦП и цифрового ввода, согласно описанной архитектуре L-502, поэтому каналы ввода даже в Вашей задаче используются, даже если не будете принимать от них данные.

30.10.2021 11:35:18
#9

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

А сколько синхронных линий данных на вывод требуется? Если менее 16-ти, то одну из линий данных можно использовать как сигнал синхронизации, обновляя состояние этой линии кратно более чаще, чем остальные линии данных. Это позволит организовать синхронный вывод на шине данных до 500 кГц, если данные будут, например, обновляться, по фронту сигнала синхронизации, а дублировать предыдущие значения - по спаду.

30.10.2021 12:10:04
#10

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

И ещё по поводу возможных вариантов. Я выше рассуждал из предположения, что ведь L-502 не продаётся на условиях "как есть".  Т.е, то, что поставляется клиентам под названием "L-502" должно относиться к штатным решениям компании, т.е, документироваться, поддерживаться, ремонтироваться, развиваться. Если же Заказчик согласен на условия поставки "как есть", то в, данном случае, поставляемое изделие (наподобие L-502) должно называться  по-другому, например, "L-502-1" (без документирования и дальнейшей поддержки). И тогда в этом случае будет возможно обсуждать быстрые технические решения - как на уровне специальных прошивок, так и эксклюзивных аппаратных или программных доработок по принципу "отгрузили и забыли навсегда".  Но я так понял, что в постановке задачи речь шла не об этом...

01.11.2021 10:20:09
#11

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

Re: L-502. Частота синхронного цифрового вывода

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

01.11.2021 10:22:59
#12

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

Re: L-502. Частота синхронного цифрового вывода

Инженер пишет:

А сколько синхронных линий данных на вывод требуется? Если менее 16-ти, то одну из линий данных можно использовать как сигнал синхронизации, обновляя состояние этой линии кратно более чаще, чем остальные линии данных. Это позволит организовать синхронный вывод на шине данных до 500 кГц, если данные будут, например, обновляться, по фронту сигнала синхронизации, а дублировать предыдущие значения - по спаду.

Непонятно, как это сделать штатными средствами L-502 API

01.11.2021 11:23:27
#13

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

Voleg пишет:
Инженер пишет:

А сколько синхронных линий данных на вывод требуется? Если менее 16-ти, то одну из линий данных можно использовать как сигнал синхронизации, обновляя состояние этой линии кратно более чаще, чем остальные линии данных. Это позволит организовать синхронный вывод на шине данных до 500 кГц, если данные будут, например, обновляться, по фронту сигнала синхронизации, а дублировать предыдущие значения - по спаду.

Непонятно, как это сделать штатными средствами L-502 API

На синхронных выходах штатными средствами L-502 API можно воспроизводить любую синхронную диаграмму с периодом отсчетов 1 мкс, в том числе, диаграмму, где один из выходов воспроизводит сигнал выходного клока, если соответствующим образом ПО верхнего уровня будет формировать поток данных на вывод.

01.11.2021 12:07:01
#14

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

Re: L-502. Частота синхронного цифрового вывода

Ну это может помочь, если требуется создавать диаграмму с сигналом синхронизации на выходе, по фронту которого внешняя схема может фиксировать данные, но при этом нет требования привязки к входному для E-502 синхросигналу. Тогда если DO16 использовать как выходной синхросигнал, то каждое слово можно выводить два раза, один раз с DO16 = 0, один раз с DO16 = 1, тогда фронт DO можно использовать для как синхросигнал для внешней схемы.

Но если требуется, чтобы все это было привязано к входному синхросигналу (т.е. в первом сообщении имелся ввиду входной сигнал CONV_IN, а не выходной сигнал CONV_OUT, т.е. задача не решается понижением частоты выходного сигнала CONV_OUT), то этот вариант не поможет, наоборот он потребует даже 4-х импульсов CONV_IN для одного вывода вместо двух.

01.11.2021 14:32:11
#15

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

Re: L-502. Частота синхронного цифрового вывода

Давайте сначала...
У меня есть внешний источник синхроимпульсов, подключенный к выводу DI_SYN2 внешнего сигнального разъема.
Он может поступать с разной частотой и длительностью.
По падению уровня этого сигнала я должен вывести на выводы DO один отсчет из своего
буфера.  По первому импульсу   DI_SYN2 выводится первый отсчет, по второму импульсу DI_SYN2 следующий
отсчет из буфера не выводится, третий отсчет выводится и т.д. Таким образом я не могу реализовать
необходимый протокол обмена с внешним устройством.
Вы хотите сказать, что как-то можно удвоить частоту синхроимпульса?
Мне нужно простое решение - по каждому синхроимпульсу должен выводится один отсчет DO из буфера

01.11.2021 18:22:16
#16

Сотрудник "Л Кард"
Здесь с 05.04.2019
Сообщений: 571

Re: L-502. Частота синхронного цифрового вывода

Voleg пишет:

Давайте сначала...
У меня есть внешний источник синхроимпульсов, подключенный к выводу DI_SYN2 внешнего сигнального разъема.
Он может поступать с разной частотой и длительностью.
По падению уровня этого сигнала я должен вывести на выводы DO один отсчет из своего
буфера...

Тогда это - асинхронный вывод данных, согласно распространённой терминологии https://www.lcard.ru/lexicon/sync_async_io,  и "системой синхронного цифрового вывода" это нельзя называть. И в этом случае см. https://www.lcard.ru/download/l-502_users_guide.pdf  "3.3.4.1. Ограничения текущей реализации асинхронного вывода при внешней синхронизации."

01.11.2021 19:25:01
#17

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

Re: L-502. Частота синхронного цифрового вывода

Нет, это синхронный вывод!
Вод код инициализации (кратко- без обработки ошибок):
X502_SetSyncMode(hnd,X502_SYNC_DI_SYN2_FALL);
X502_SetSyncStartMode(hnd,X502_SYNC_DI_SYN2_FALL);
X502_StreamsEnable(hnd,X502_STREAM_DOUT);
X502_PreloadStart(hnd);
X502_Configure(hnd, 0);
X502_StreamsStart(hnd);

Вывод данных делается по таймеру:
    uint32_t    BufToSend[65535];
    uint32_t    out_buf[65535];
// Заполняем BufToSend:
          ....
      X502_PrepareData(hnd, NULL,NULL, BufToSend,m_SendSize , 0, out_buf);
      X502_Send (hnd, out_buf,m_SendSize, 0);

01.11.2021 19:50:16
#18

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

Re: L-502. Частота синхронного цифрового вывода

По той ситуации, как работает сейчас (сам режим работает, но есть одна проблема вначале):

Во-первых, сейчас библиотека не разрешала установить делитель равный 1. Сейчас я сделал, что делитель 1 можно установить вручную для опорной частоты не выше 700 КГц.
Чтобы это сделать, Вам нужно обновить библиотеки x502api из последней SDK (https://lcard.ru/download/lpcie_setup.exe), далее после X502_SetSyncMode() и до X502_Configure() добавить:

X502_SetExtRefFreqValue(hnd, 250000); /* устанавливаем значение внешней опорной частоты 250 КГц (можно любое значение ниже 700 КГц), чтобы было разрешено установить делитель 1 */
X502_SetOutFreqDivider(hnd, 1); /* устанавливаем делитель вывода равным 1 вместо 2, которое идет по умолчанию */

Во-вторых, сам режим я проверил (правда на E-502, сейчас L-502 нет возможности, могу позже, но как я понимаю модуль у Вас есть, поэтому Вы можете сами проверить уже на вашем случае, логика у них должна быть одинаковая). Тут есть одна особенность - а именно в начале вывода модулю нужно 2 такта внешней частоты, т.е. первая точка устанавливается только по второму спаду, вторая по третьему, третья по четвертому, четвертая по пятому и т.д., далее все корректно работает. Вот пример диаграммы с начала генерации сигнала на SYN2 (на верхнем графике сигнал на входе SYN2, на нижнем -  c выхода E502 для которого записана последовательность 1 0 1 0 1 0 1 0 ....
Изначально на выходе 1:
e502_out_div1.jpg
Изначально на выходе 0:
e502_out_div1_v0.jpg

В общем если пропуск первого спада не так критичен и Вы можете как-то обойти, то можете пробовать режим, как он будет работать, иначе видимо только если договариваться о исправлении этого в прошивке ПЛИС.

Отредактировано Алексей L Card (01.11.2021 20:05:12)

01.11.2021 20:33:54
#19

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

Re: L-502. Частота синхронного цифрового вывода

Да по поводу приведенного куска кода, PreloadStart вообще по идее должен делаться уже после Configure().
Также лучше сделать загрузку первого блока данных на вывод после Preload но до StreamsStart, в этом случае при запуске потоковой генерации модуля данные уже будут загружены в его буфер, и не будет некой зависимости от неопределенной ситуации - что первым придет на модуль после старта - импульс на SYN2 или данные из ПК.
И "Вывод данных делается по таймеру" не до конца понятно, как устанавливаете таймер, ведь Вы до конца не знаете частоту, с которой будут выводиться слова.

01.11.2021 21:35:16
#20

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

Re: L-502. Частота синхронного цифрового вывода

Не совсем понял зачем устанавливать сигнал опорной частоты, если используется внешняя синхронизация.
Будет ли работать такой код инициализации:
X502_SetSyncMode(hnd,X502_SYNC_DI_SYN2_FALL);
X502_SetSyncStartMode(hnd,X502_SYNC_DI_SYN2_FALL);
X502_SetExtRefFreqValue(hnd, 250000);
X502_SetOutFreqDivider(hnd, 1);
X502_StreamsEnable(hnd,X502_STREAM_DOUT);
X502_PreloadStart(hnd);
X502_Configure(hnd, 0);
X502_StreamsStart(hnd);

Вывод данных делаем по таймеру:
    uint32_t    BufToSend[65535];
    uint32_t    out_buf[65535];
// Заполняем BufToSend своими данными:
          ....
// Готовим
      X502_PrepareData(hnd, NULL,NULL, BufToSend,m_SendSize , 0, out_buf);
// Посылаем
      X502_Send (hnd, out_buf,m_SendSize, 0);

01.11.2021 21:44:20
#21

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

Re: L-502. Частота синхронного цифрового вывода

Алексей L Card пишет:

Да по поводу приведенного куска кода, PreloadStart вообще по идее должен делаться уже после Configure().
Также лучше сделать загрузку первого блока данных на вывод после Preload но до StreamsStart, в этом случае при запуске потоковой генерации модуля данные уже будут загружены в его буфер, и не будет некой зависимости от неопределенной ситуации - что первым придет на модуль после старта - импульс на SYN2 или данные из ПК.
И "Вывод данных делается по таймеру" не до конца понятно, как устанавливаете таймер, ведь Вы до конца не знаете частоту, с которой будут выводиться слова.

Хорошо, я сделаю загрузку первого блока данных.

Насчет отправляемых данных - блоки данных поступают по таймеру, период которого может меняться.
Каждому байту данных добавляются биты достоверности.
После каждого блока данных устанавливаются соответствующие биты  - данные недостоверны.
Эти биты "висят"  на выходном порту и забираются устройством сбора, пока не придет новый  блок.
Для него будут установлены биты - данные достоверны.

02.11.2021 00:54:48
#22

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

Re: L-502. Частота синхронного цифрового вывода

В Вашем случае X502_SetExtRefFreqValue() служит только для того, чтобы сказать библиотеке, что Вы работаете на частотах до 700 КГц и установка делителя 1 допустима, в общем больше это не влияет на работу.
Так вроде должно работать. В принципе X502_SetSyncStartMode() не обязательна (хотя мешать по идее тоже не должна), в любом случае у Вас выдача идет по спаду SYNC2 и старт может быть и внутренним, все равно без спада на SYN2 выдачи не будет, это больше нужно в случае когда используется отдельных сигнал запуска, до которого сигнал опорной частоты игнорируется.

02.11.2021 10:24:21
#23

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

Re: L-502. Частота синхронного цифрового вывода

Проверили выдачу с новым SDK и установили X502_SetExtRefFreqValue и X502_SetOutFreqDivider.
Для теста выдаем буфер байт в котором каждый следующий отсчет больше предыдущего на 1.
Теперь данные выдаются с частотой синхроимпульсов, но буфер выбирается через один синхроимпульс.
По картинке видно, что на выдачу пропускаются каждые четные отсчеты
Skhema-vydachi-na-DO.jpg

02.11.2021 21:18:04
#24

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

Re: L-502. Частота синхронного цифрового вывода

В x502api.pdf (пункт 4.3.4.8) в описании функции X502_SetOutFreqDivider написано:
Для модуля L-502, чтобы была возможность установить делитель, отличный
от X502_OUT_FREQ_DIV_DEFAULT, необходимо обновить прошивку ПЛИС до вер-
сии 0.5 или выше.

У нас прошивка версии 0.
Может ли это быть причиной пропуска передачи отсчетов из буфера?

03.11.2021 21:43:40
#25

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

Re: L-502. Частота синхронного цифрового вывода

Попробовал на L-502, похоже на ней действительно отличается, все также как у Вас, вне зависимости от версии прошивки (только версии все же у Вас видимо PLD - 0, а FPGA - 0.10).
Так что сейчас работает только на E-502 как описал выше.

Контакты

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

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

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

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