Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Принципы обработки в DSO
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
InvisibleFed
Здравствуйте. Делаю девайсину, так, хобби. Вот возникли сомнения в двух вопросах. Точнее сомнения и незнания.

1. Как реально происходит синхронизация в DSO. Т. е., например есть некий буфер с пачкой сэмплов, есть значение уровня срабатывания триггера, имеется окно отображения. В этом окне отображения есть такой параметр как положение (т. е. положение точки срабатывания триггера в пределах окна, по горизонтали). Буфер имеет конечную длину. Как правильно заполнять буфер (по срабатыванию триггера или постоянно?)? И как в таком случае учесть положение точки срабатываиня триггера синхронизации при отображении в окне? И вообще, общий принцип.
2. И отсюда, собственно второй вопрос. Об организации буфера сэмплов: циклический или двойной (в одну часть пишем новые сэмплы, вторую часть в это время отрисовываем)? Что предпочтительней и что реально используется? В случае циклического буфера интересен также алгоритм извлечения сэмплов для отрисовки.
InvisibleFed
Может некорректно или непонятно задал вопрос? Я уверен, что масса людей знает механизмы синхронизации в цифровом осциллографе (основные) и методы работы с памятью.
slog
Цитата(InvisibleFed @ Sep 1 2008, 13:28) *
1. Как реально происходит синхронизация в DSO. Т. е., например есть некий буфер с пачкой сэмплов, есть значение уровня срабатывания триггера, имеется окно отображения. В этом окне отображения есть такой параметр как положение (т. е. положение точки срабатывания триггера в пределах окна, по горизонтали). Буфер имеет конечную длину. Как правильно заполнять буфер (по срабатыванию триггера или постоянно?)? И как в таком случае учесть положение точки срабатываиня триггера синхронизации при отображении в окне? И вообще, общий принцип.

IMHO в разных по разному сделано. Логично было бы писать в кольцевой буфер непрерывный поток. Как сработатет триггер, после этого ещё дописываем допустим 2/3 длины буфера и стоп. Иначе не увидим момент срабатывания триггера. А вот в каком месте на экране будет момент срабатывания триггера - должен юзер выбрать. Может ему интересны события до триггера, может после.

Цитата
2. И отсюда, собственно второй вопрос. Об организации буфера сэмплов: циклический или двойной (в одну часть пишем новые сэмплы, вторую часть в это время отрисовываем)? Что предпочтительней и что реально используется? В случае циклического буфера интересен также алгоритм извлечения сэмплов для отрисовки.

IMHO Предпочтительнее двухпортовая память. Что реально используется - тайна за семью печатями и наверно у разных производителей по разному. Tek например в дешевых моделях до сих пор использует память на ПЗС.

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

Да собственно ничего не изобретаю - делаю все тот же скоп, просто специального назначения. Нужны невысокие частоты и каналов так 8. Для исследования работы электродвигателей и снятия их характеристик. Может через годики прийду к полноценной платформе (я же говорю, - хобби).

Цитата
Вообще, информации об устройстве и тем более схемотехнике цифровых скопов в свободном доступе практически нет.

Это я заметил =). Но меня сейчас не столько интересует схемотехника (частоты как я уже говорил не большие). Меня интересует, если так можно сказать, алгоритмическая часть.

Цитата
Логично было бы писать в кольцевой буфер непрерывный поток. Как сработатет триггер, после этого ещё дописываем допустим 2/3 длины буфера и стоп. Иначе не увидим момент срабатывания триггера. А вот в каком месте на экране будет момент срабатывания триггера - должен юзер выбрать. Может ему интересны события до триггера, может после.

А вот тут уже по сути вопроса. Все понятно как реализовать снятие и отображение сигнала после срабатывания триггера (даже в очень далекой перспективе). В некий регистр/переменную V заносим значение номера семпла (такта синхронизации АЦП) после срабатывания триггера (откуда мы хотим наблюдать картинку). Тогда как только сработал триггер, начинаем счетчиком считать такты (сэмплы). Пока ничего никуда не пишем. Как только значение счетчика станет равно значение в регистре/переменной V - пишем в память (хоть с самого ее начала), и выводим на экран. Чтобы избежать переполнения памяти ограничиваем число записываемых сэмплов длиной кольцевого буфера. Это все вроде тип-топ.
Но вот вопрос - как поймать сигнал до срабатывания триггера? Т.е. как записать его? Прибор не умеет заглядывать в будущее (через сколько же там тактов прийдет синхроимпульс?). В Теках (в тех, которые я держал в руках) время наблюдения (если так можно выразиться) сигнала ДО триггера ограничено одним экраном при любом коэффециенте развертки. Время же ПОСЛЕ триггера... вообщем, я устал крутить ручку "Положение" - так и не нашел конца. Какие есть знания или догадки?
Ledmaster
Цитата(InvisibleFed @ Sep 4 2008, 06:53) *
Но вот вопрос - как поймать сигнал до срабатывания триггера? Т.е. как записать его? Прибор не умеет заглядывать в будущее (через сколько же там тактов прийдет синхроимпульс?). В Теках (в тех, которые я держал в руках) время наблюдения (если так можно выразиться) сигнала ДО триггера ограничено одним экраном при любом коэффециенте развертки. Время же ПОСЛЕ триггера... вообщем, я устал крутить ручку "Положение" - так и не нашел конца. Какие есть знания или догадки?
Заглянуть в будущее легко, если смотреть из прошлого в настоящее wink.gif
Буфер состоит из двух частей: FIFO длиной m, в который сигнал пишется постоянно, и линейного основного буфера длиной N, в который запись с выхода FIFO начинается по триггеру и заканчивается при его заполнении. Таким образом, мы имеем m выборок до триггера и N-m после.
slog
Не понял, в чем проблема? Постоянно пишем в один кольцевой буфер. Он же память выборок. Из него же вывод на экран. Подразумевается что до срабатывания триггера буфер уже заполнен новыми данными. После срабатывания триггера продолжаем писать, но только определённое кол-во выборок, которое хотим сохранить после триггера, остальная часть буфера будет содержать данные до триггера. Сколько там будет экранов - зависит от длины буфера и размера экрана. Нужны будут две переменные - длина записи после триггера и адрес сэмпла на котором сработал триггер. И можно всю память заполнить выборками хоть до, хоть после триггера, хоть в любых пропорциях, как хочешь.
Вот тут немного есть по теме http://www.fpga4fun.com/digitalscope.html
InvisibleFed
Цитата
Постоянно пишем в один кольцевой буфер. Он же память выборок. Из него же вывод на экран. Подразумевается что до срабатывания триггера буфер уже заполнен новыми данными.


Странно, и что меня так клинит... Эх, хорошо видать отдохнул =)... Спасибо.
Ledmaster
Цитата(InvisibleFed @ Sep 4 2008, 18:23) *
Странно, и что меня так клинит... Эх, хорошо видать отдохнул =)... Спасибо.
А Вы еще подумайте wink.gif Я про два раздельных буфера не зря говорю.
Во-первых, когда вы останавливаете запись в кольцевой буфер, теряется возможность обработать следующий импульс синхронизации так же, как первый, т.е. таким образом можно реализовать только режим однократного запуска. Во-вторых, для одновременной визуализации содержимого буфера требуется удвоенная скорость доступа к нему или двухпортовое ЗУ, а то и двойной буфер.
InvisibleFed
Цитата
А Вы еще подумайте wink.gif Я про два раздельных буфера не зря говорю.


Я уже подумал. Да, действительно, сопутствующие проблемы имеются. Буду мозгом искать лучший вариант (рассматриваю Ваш, читаю то что дал slog). А Вы делали что-то подобное? Откуда соображения (или просто сходу вариант предложили)?
Syberian
На мой взгляд, схема синхронизации в DSO такая:

Непрерывно поступающие "в никуда" выборки сигнала проходят через две/три дополнительные ячейки задержки на один такт. Значения в них сравниваются на предмет "пересечения" установленного порога срабатывания синхро.
Если в первой было меньше уровня, во второй/третьей - больше, и задан положительный фронт, выдается синхроимпульс.

Далее подача синхро блокируется, и определенное число выборок надо вывалить, начиная с нулевого адреса, в память для экрана DSO, чтобы его заполнить. После этого, разрешается новая выдача синхроимпульса. Процесс повторяется.
Очень удобно делать хоть на ПЛИС, хоть на DSP.
По поводу буфера экрана. Для плавности отображения, функции "стоп-кадр" с увеличением и прочих наворотов, используется oversampling - фактически, высота очередного отсчета на экране при обновлении берется через N отсчетов в памяти. При использовании "zoom" число N просто уменьшается.
Но для простенького самодельного осцила и так сойдет smile.gif

Примерно, так.

И этта... Забудьте о "сдвигании" всего массива выборок вперед или назад, кольцевых буфернях и проч требухе! В "правильных" DSO заполнение только инкрементом в Static memory. Далее - с нуля, ага yeah.gif
slog
Цитата(Syberian @ Sep 5 2008, 07:40) *
На мой взгляд, схема синхронизации в DSO такая:
Непрерывно поступающие "в никуда" выборки сигнала проходят через две/три дополнительные ячейки задержки на один такт.

Ну и как в таком случае увидеть то что было ДО срабатывания триггера?
Syberian
Цитата(slog @ Sep 5 2008, 07:45) *
Ну и как в таком случае увидеть то что было ДО срабатывания триггера?


В начальный момент запуска осцилла ты не увидишь ничего.
Во все остальные моменты в буфере экрана будет валяться предыдущий сигнал, от предыдущего получения синхро и до конца выборки.
Если "синхро" нет какое-то время (обычно в течение 1-2 кадров дисплея), проводится наполнение буфера самостоятельно.

В более навороченных осциллах выборка делается сразу в память постоянно, от начала до конца, а буфер экрана отдельный. При его наполнении из середины сигнального буфера+ смещение (ага, регулятор shift на осциллографах Agilent) , ищется перепад уровней, и с учетом его проводится еще и небольшой сдвиг "окна" отображения, чтобы пойманный "edge" был посередине (под указателем на экране), а "до" и "после" - соответственно остальной сигнал.
Используя мощный сигнальник, все происходит гораздо быстрее, чем отрисовывается на экране один кадр.

Добавлю, что реальное обновление экрана, по причине выше, в цифровых осциллографах, даже при измерении сотен МГц, редко бывает выше 30 FPS
slog
Цитата(Syberian @ Sep 5 2008, 09:01) *
В начальный момент запуска осцилла ты не увидишь ничего.
Во все остальные моменты в буфере экрана будет валяться предыдущий сигнал, от предыдущего получения синхро и до конца выборки.
Если "синхро" нет какое-то время (обычно в течение 1-2 кадров дисплея), проводится наполнение буфера самостоятельно.

И нет овета на вопрос "как в таком случае увидеть то что было ДО срабатывания триггера?"

Цитата
В более навороченных осциллах выборка делается сразу в память постоянно, от начала до конца,

Ну это и есть кольцевой буфер.
Syberian
Цитата(slog @ Sep 5 2008, 08:14) *
И нет овета на вопрос "как в таком случае увидеть то что было ДО срабатывания триггера?"

Ответ был дан ниже по тексту. Или просто отключить триггер и подбирать частоту развертки ручкой, плавненько lol.gif
InvisibleFed
Первый пост Syberian мне более менее понятен, хотя он действительно не дает ответа на мой вопрос (тут я солидарен с slog).

Цитата
Непрерывно поступающие "в никуда" выборки сигнала проходят через две/три дополнительные ячейки задержки на один такт. Значения в них сравниваются на предмет "пересечения" установленного порога срабатывания синхро.
Если в первой было меньше уровня, во второй/третьей - больше, и задан положительный фронт, выдается синхроимпульс.

Ну, собственно, это первое что приходит в голову для синхронизации по фронтам, все ясно и понятно.

Цитата
По поводу буфера экрана. Для плавности отображения, функции "стоп-кадр" с увеличением и прочих наворотов, используется oversampling - фактически, высота очередного отсчета на экране при обновлении берется через N отсчетов в памяти. При использовании "zoom" число N просто уменьшается.


Вот здесь мне не все ясно. Что означает "...высота очередного отсчета на экране при обновлении берется через N отсчетов в памяти"? Работая с Теками, я заметил, что отображение сигнала на экране происходит с некоторым накоплением (само по себе, это слово должно разъеснить тот бред который я пишу ниже). По крайней мере, создалось такое впечатление. Что я имею ввиду. На экране осцилла постоянно присутствую, скажем, пять отображений сигнала. Четыре - те что отрисовывались ранее, и пятое - то что только что нарисовалось. Причем при отрисовки нового "свежего" сигнала из обновенного буфера, с экрана удаляется самая "старая" версия сигнала. И так далее, по очереди. Если мое предположение верно, то буфер экрана в теках имеет N одинаковых по размеру областей, содержащих историю N версий наблюдаемого сигнала.

Цитата
Забудьте о "сдвигании" всего массива выборок вперед или назад, кольцевых буфернях и проч требухе! В "правильных" DSO заполнение только инкрементом в Static memory. Далее - с нуля, ага

Это почему, и что значит "правильных" (с примерами =))?

На данный момент позиция и предложение slog и Ledmaster мне более понятны, что-ли. Если я правильно понял идею Syberian, то мне видится очень неоптимальное использование памяти скопа. Фактически, в своем предпоследнем посте, Syberian предложил использовать бОльший буфер (на вскидку - он должен быть в 2 раза больше), сымплы из которого отнюдь не все отображаются на экране. Т.е. реально, будет оттображаться только половина всего буфера, а вторая половина служит лишь для того чтобы гарантировано отобразить сигнал до триггера (не потерять его). Такой варинт (или похожий) приходил мне в голову, но был быстро отвергнут всилу неоптимальности и неказистости...
slog
Цитата(InvisibleFed @ Sep 5 2008, 15:24) *
Работая с Теками, я заметил, что отображение сигнала на экране происходит с некоторым накоплением По крайней мере, создалось такое впечатление. Что я имею ввиду. На экране осцилла постоянно присутствую, скажем, пять отображений сигнала. Четыре - те что отрисовывались ранее, и пятое - то что только что нарисовалось. Причем при отрисовки нового "свежего" сигнала из обновенного буфера, с экрана удаляется самая "старая" версия сигнала. И так далее, по очереди. Если мое предположение верно, то буфер экрана в теках имеет N одинаковых по размеру областей, содержащих историю N версий наблюдаемого сигнала.

А может это последствия Тековской технологии? У них в дешевых скопах память на ПЗС. И вроде как должен быть какой-то аналог обычной ЭЛТрубки, которая проецирует картинку на ПЗС матрицу. ПЗС - вещь инерционная, и с неё сигнал считывает уже медленный АЦП. А так чтоб на экране было сразу несколько проходов луча, да с разной яркостью, как в аналоговом скопе, - это мечта всех дешевых DSO. "Цифровой фосфор" начинается с нескольких тыщ $$.
И вообще, записать данные в буфер дело не хитрое. Самое интересное потом. Чтобы иметь возможность растянуть интересный участок сигнала на экране, надо иметь буфер гораздо длиннее экрана, и надо уметь натягивать короткий экран на длинный буфер. Просто выкинуть лишние выборки это не правильный вариант. И наоборот, короткий буфер растягивать на длинный экран, добавляя отсутствующие точки с помощью апроксимации. И делать это надо очень быстро, бысрее чем юзер успеет выматериться по поводу тормознутости скопа. Минимум 20 раз в сек.
ReAl
Цитата(slog @ Sep 5 2008, 14:53) *
А может это последствия Тековской технологии? У них в дешевых скопах память на ПЗС. И вроде как должен быть какой-то аналог обычной ЭЛТрубки, которая проецирует картинку на ПЗС матрицу. ПЗС - вещь инерционная, и с неё сигнал считывает уже медленный АЦП.
Кто проецирует? Куда проецирует?
ПЗС (Прибор с Зарядовой Связью) aka ППЗ (Прибор с Переносом Заряда) - это не технология приёма "картинки", а "дискретно-аналоговая" технология работы с сигналом в виде зарядовых пакетов. По этой технологии могут быть сделаны регистры считывания сигнала с массива фотодиодов (так устроены, например, ПЗС-матрицы и линейки Sony), порождённые светом заряды могут накапливаться прямо в этих аналоговых сдвиговых регистрах (full-frame CCD), но с тем же успехом корпус может быть непрозрачным а зарядовые пакеты в сдвиговые регистры могут вноситься электрическим способом, таким образом можно получить аналоговый сдвиговый регистр (см, например, микросхему 528БР1) и даже заодно в них могут быть организованы фильтры. В цветных телевизорах такие линии задержки радостно задерживают аналоговый сигнал на строку.
Меняя скорость тактирования можно менять время задержки, построить ревербератор.
Записывая аналоговый сигнал в ПЗС-регистр на высокой скорости и считывая на низкой можно учинить "лупу времени".
Но никакие "картинки" при этом никуда не проецируются.
InvisibleFed
Цитата
Чтобы иметь возможность растянуть интересный участок сигнала на экране, надо иметь буфер гораздо длиннее экрана, и надо уметь натягивать короткий экран на длинный буфер. Просто выкинуть лишние выборки это не правильный вариант. И наоборот, короткий буфер растягивать на длинный экран, добавляя отсутствующие точки с помощью апроксимации. И делать это надо очень быстро, бысрее чем юзер успеет выматериться по поводу тормознутости скопа. Минимум 20 раз в сек.


Если не вдаваться в подробности скорости обработки (пока не считал и не мерил), то описанные Вами проблемы я более или менее решил. Что касается случая "большой экран - маленький буфер", то тут без интерполяции по опорным сэмплам не обойтись. На данном этапе, я ее не реализовывал, а просто буду отрисовывать "разряженную" из-за малого количества сэмплов версию сигнала. В будущем - возможно. В ином случае ("большой буфер - маленький экран") применяю алгоритм сжатия, принцип которого описан в одной из статей на сайте prist.ru ("Уплотнение дисплея и длина памяти"). В этом алгоритме весь буфер разбивается на участки, в каждом из которых ищется максимальный и минимальный сымплы. Они то и попадают в итоговое отображение, все остальные сымплы отбрасываются. Что касается скорости всего этого дела, то я стараюсь все писать оптимально: продумываю алгоритмы, выношу все возможные расчеты, которые дольше чем обращение к памяти, за пределы основного цикла с целью минимизации времени "слепоты" скопа (т.е. того времени, которое уходит на обработку буфера сэмплов и отрисовку сигнала).

А что означает "дешевый скоп"? 4-х канальный Тек на 200 (ил 250? не помню) МГц считается дешевым? Ну, да не Лекрой на ГГц, но все же. В моих краях и за эти деньги неплохой автомобиль взять можно =).

Ну независимо, мне кажется от технологии скопа (ПЗС или нет), это не объясняет явление (или фичу) накопления. Ведь на ПЗС основан только буфер сэмплов как я понимаю. Экранный буфер более совершенен =). И вот в Теках они именно с ним, как мне показалось работают хитро - не обновляют полностью при каждой отрисовки, а "дописывают туда новуя версию сигнала, и удаляют (может даже попиксельно) - самую старую.
Ledmaster
Цитата(InvisibleFed @ Sep 6 2008, 07:33) *
Ну независимо, мне кажется от технологии скопа (ПЗС или нет), это не объясняет явление (или фичу) накопления. Ведь на ПЗС основан только буфер сэмплов как я понимаю. Экранный буфер более совершенен =). И вот в Теках они именно с ним, как мне показалось работают хитро - не обновляют полностью при каждой отрисовки, а "дописывают туда новуя версию сигнала, и удаляют (может даже попиксельно) - самую старую.
Может, не во всех (хотя сомнительно), но в моем Теке эффект "аналогового" послесвечения задается параметром Persist во вкладке Display (Off, 1s, 2s, 5s, Infinite).
InvisibleFed
Спасибо за информацию. Посмотрю на работе. Вот интересно как оно реализовано?..
Ledmaster
Цитата(InvisibleFed @ Sep 6 2008, 13:09) *
Вот интересно как оно реализовано?..
Это явно работа с экранным буфером: перед записью новых сэмплов он не просто обнуляется, а например, из яркости каждого пикселя вычитается некая константа ( связанная с временем послесвечения), если результат меньше 0, записывается 0. Соответственно, новые пиксели записываются с полной яркостью.
khach
Цитата(ReAl @ Sep 5 2008, 21:36) *
Кто проецирует? Куда проецирует?
ПЗС (Прибор с Зарядовой Связью) aka ППЗ (Прибор с Переносом Заряда) - это не технология
<skip>
Но никакие "картинки" при этом никуда не проецируются.

Проецируется, но не у тесктроникса. Есть устройства с субпикосекундным разрешением, называются streak camera. Но у них не электрический, а оптический вход. В последних версиях электронный луч рисует по поверхности ПЗС (технология DEB- direct electron bombardment ). Выпускает в основном Хамамацу. Хотя был и скоп с подобным устройством- высоковольтная трубка с мелким экрнаом в качестве люминофора имела DEB CCD. Но это было давно, и имело малое время жизни- портилися пиксели CCD. Короче технология в массы непошла. Но 10 ГГц для непериодического сигнала получалось легко.
А текстроникс сделал аналоговый сдвиговый регистр на ПЗС, где зарядовые пакеты записывались коммутатором на всю боковую сторону матрицы с последующим сдвигом столбцов, а вычитывались по одной ячейке обычным АЦП.
Но в современных скопах это все неприменяется - стоит 4-8 АЦП в интерливе (фазовый сдвиг клока и рассчитанные задержки сигнала на входах АЦП)
По поводу обработки сигнала- кольцевой буфер с запоминанием адреса момента триггера и вторым счетчиком на остановку сбора данных когда "голова" приблизится к "хвосту" на заданное расстояние (загружен длиной "хвоста", начинает счиатать в момент триггера, при достижении нуля останавливает сбор данных). Так проще организовывать счетчик адресов и заранее переключать страницы динамического ОЗУ при сборе данных.
Момент триггера обычно определяют аналоговым триггером (асинхронным относительно клока АЦП) и с помощью временного интерполятора (TDC) определяют задержку между моментом триггера и ближайшим клоком АЦП. Это позволяет сделать эквивалентную выборку у повторяющихся сигналов до десятков гигасемплов (определяется разрешающей способностью интерполятора, джиттером тактового генератора и компаратора).
InvisibleFed
Вот и Перцы подтянулись (khach, это я про Вас - знаю, что в скопах Вы шарите a14.gif ).

Цитата
Но в современных скопах это все неприменяется - стоит 4-8 АЦП в интерливе (фазовый сдвиг клока и рассчитанные задержки сигнала на входах АЦП)

Поподробней, если возможно (и что значит 4-8 АЦП =)?..).

Цитата
Момент триггера обычно определяют аналоговым триггером (асинхронным относительно клока АЦП) и с помощью временного интерполятора (TDC) определяют задержку между моментом триггера и ближайшим клоком АЦП. Это позволяет сделать эквивалентную выборку у повторяющихся сигналов до десятков гигасемплов (определяется разрешающей способностью интерполятора, джиттером тактового генератора и компаратора).


Пошел пока искать что такое временной интерполятор (TDC). Но не могли бы Вы объяснить как это работает и как это позволяет поднять эквивалентную частоту выборки? Т. е. я представляю что такое эквивалентная частота дискретизации (выборка со сдвигом для повторяющихся сигналов, позволяющая "уточнить" форму сигнала, имея несколько сдвинутых по фазе выборок повторяющегося сигнала), но не знаю как это можно реализовать. Несмотря на то, что в моем случае это не требуется, очень интересно все-же. И всегда интересовало, откуда такие познания (в книжках такого точно не пишут): большой опыт ремонта\наладки\сертификации\разработки / работа в Теке\ЛеКрое\Агиленте / другое =) (нужное подчеркнуть)?
ReAl
Цитата(khach @ Sep 6 2008, 12:00) *
Проецируется, но не у тесктроникса.
...
Но 10 ГГц для непериодического сигнала получалось легко.
Ну в фоторегистрирующих гробах заменить приёмник на ПЗС даже логично, но это речь о совершенно другом классе приборов.

Цитата(khach @ Sep 6 2008, 12:00) *
А текстроникс сделал аналоговый сдвиговый регистр на ПЗС
О чём я и толкую.
Причём для длины регистра в несколько тысяч отсчётов не нужно даже матрицу делать, линейного регистра хватит. Более того, если они для сотни тысяч отсчётов сделали "матричную" организацию сдвигового регистра, то как они побороли неизбежные задержки на перелив строки, строки просто не могут двигаться так быстро, как одиночные пикселы в линейном регистре ввода в матрицу/вывода из неё (просто за счёт в сотни-тысячи раз большей ёмкости). Впрочем, никто не мешает два буфера поставить и интерливом работать.

Цитата(InvisibleFed @ Sep 6 2008, 14:03) *
Т. е. я представляю что такое эквивалентная частота дискретизации (выборка со сдвигом для повторяющихся сигналов, позволяющая "уточнить" форму сигнала, имея несколько сдвинутых по фазе выборок повторяющегося сигнала), но не знаю как это можно реализовать.
А оно само реализовывается за счёт асинхронности такта осциллографа и входного сигнала. А дальше в каждой записи нужно измерить и запомнить на какой доле периода такта сработал независимый аналоговый компаратор синхронизации, о чём khach и сказал.
Как это измерить - ну как вариант в момент сработки аналогового компаратора начать заряд какой-то ёмкости заданным током а в момент следующего фронта такта АЦП остановить заряд. Померив напряжение на конденсаторе можно вычислить задержку такта АЦП от момента сработки аналоговго компаратора.



...... ага, дошло зачем матрица и куда девать неизбежные остановки регистра на перелив содержимого в матричную секцию - один регистр/одна строка матрицы это один набор данных? Потом набор переносится в матрицу, ожидается следующий момент синхронизации и в регистре накапливается следующий набор?
При большом желании в один из столбцов матрицы можно даже писать значение, снятое с конденсатора определения задержки такта от момента синхронизации.
Любопытно.
InvisibleFed
Теперь и я понял, что "4-8 АЦП" это их количество. А синхронизируются они сдвинутым по фазе клоком, чтобы получить большее количество выборок. А что до использования для этих целей асинхронного триггера, то тут надо еще много кумекать. Например, встает вопрос о разбросе (с точки зрения вероятности) времени между асинхронным срабатыванием и тактом синхронизации. Ну, это уже лирика. Правильно ли я полагаю, что в самом просто случае эфеективно использовать минимум два кольцевых буфера для накопления сэмплов. И использовать их поочередно (в режиме двойной буфферизации - в один пишем, второй обрабатываем и отрисовываем). (???)
slog
Цитата(InvisibleFed @ Sep 7 2008, 05:30) *
Правильно ли я полагаю, что в самом просто случае эфеективно использовать минимум два кольцевых буфера для накопления сэмплов. И использовать их поочередно (в режиме двойной буфферизации - в один пишем, второй обрабатываем и отрисовываем). (???)

Если быстрой памяти не жалко - можно и 2 буфера по очереди. Или переписывать из одного быстрого в другой - медленный видео буфер. Или двухпортовую память использовать. Хозяин - барин.
khach
Цитата(InvisibleFed @ Sep 7 2008, 03:30) *
Правильно ли я полагаю, что в самом просто случае эфеективно использовать минимум два кольцевых буфера для накопления сэмплов. И использовать их поочередно (в режиме двойной буфферизации - в один пишем, второй обрабатываем и отрисовываем). (???)

Зачем два? Все равно отрисовать неуспеете и неувидете этого на экране. Поймите, осциллограф это не цифровой приемник или даталоггер, который не имеет права терять куски данных- аналоговый осцилл их постоянно теряет, показывая только статистику сигнала (яркостью) в районе момента запуска триггера.

В самом простом случае (например китайские USB осциллографы DSO2150) вообще используется только внутреннее USB fifo буффер cy7c68013a. И этого иногда хватает с головой- 8 кбайт со скоростью записи 100 МГц. Конечно нет претриггера вообще, но зато и контроллера ОЗУ и самого ОЗУ ненадо.
А организация и число буферов в более продвинутых скопах определяется типом ОЗУ. Если оно статическое SSRAM- то там все достаточно тривиально. Но зато макисамльный обем ограничен и скорость записи маловата.
Если применяется DDR, то нужен второй короткий буфер, часто внутри ПЛИС, для сохранения потока данных с АЦП в то время, пока происходит переключение страниц памяти DDR (а это до 20 тактов клока)
Если же делается скоп с цифровым фосфором, то там еще сложнее, т.к на массиве памяти выполняются операции чтение-модификация-запись и потери на переключения режимов еще больше.
При быстрых АЦП, когда приходится распараллеливать поток данных на большее число бит данных (наприме собираем 8бит на 1 Гсемпл, а пишем в память два банка по 32 бит на 125 МГЦ в интерливе) все еще сложнее.
InvisibleFed
Цитата
Зачем два? Все равно отрисовать неуспеете и неувидете этого на экране. Поймите, осциллограф это не цифровой приемник или даталоггер, который не имеет права терять куски данных- аналоговый осцилл их постоянно теряет, показывая только статистику сигнала (яркостью) в районе момента запуска триггера.


Согласен, что отрисовывается все это дело медленно. Однако, я не раз читал (и сам вижу в этом логику), что желательно как можно сильнее минимизировать время "слепоты" скопа. Другое дело, что двойной буфер, действительно расточительно. Двухпортовая память в таком случае была бы предпочтительнее (но пока не планировал ее использование, пока лишь бы хоть как-то заработало).

И, khach, где-то Вы все-таки работаете... a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.