Rigol ds1054 инструкция на русском

Эта модель осциллографа не новая и уже несколько лет назад обозревалась здесь. Но тот обзор был «взглядом снаружи» и лишь поверхностно касался внутренностей. Мой обзор будет ориентирован именно на внутренности устройства и его программное обеспечение. Предупреждение: Много букв и картинок. Заранее приношу извинения за многословность — некоторые вещи не получается изложить кратко.

С 2009 года я имел в хозяйстве более старую модель Rigol — DS1052E. К тому времени он уже успел отхватить в США награду «Продукт года» и был заметной вехой в развитии осциллографов с точки зрения цена/качество. В принципе, модель не сильно устарела и сейчас, только экран маловат и разрешение всего 320х200. Но в последнее время часто приходилось работать с SPI и желание трех-четырех каналов становилось все сильнее. Последним толчком послужила просьба друга найти ему нормальный недорогой осциллограф. После уточнения, что двухканального более чем достаточно, а 4 канала не требуется даже в теории, я расстался с DS1052E и заказал себе DS1054Z.

Некоторые моменты, связанные с публикацией обзора

Этот обзор мог появиться еще в прошлом году, но я покупал осциллограф в «неправильном» месте. Про конкретное место покупки писать не буду, скажу только, что покупал у местных «спекулянтов». Это чуть дороже, но немного быстрее и, главное, гарантирует отсутствие таможенных проблем и наличие (теоретически) гарантии.
Что хуже — я увидел место своей покупки в списке магазинов, но не дочитал правила до пункта 1. В силу этого, обзор более полугода валялся в отклоненных — стирать жалко, а причин для запроса перемодерации нет. Но в конце марта я, наконец, довел измененную прошивку до состояния, когда можно публиковать и решил изменить обзор с переносом его в другую категорию.
Все-таки большинство обзоров внутренностей DS1054Z на английском, да еще и в виде ютубовских роликов. Если долгое текстовое изложение не заинтересует — на всякий случай заранее приношу извинения за отнятое время.

Мои критерии выбора осциллографа

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

Первый свой критерий я уже озвучил — 4 канала. Собственно, суть замены и состояла в переходе от двух к большему числу каналов. Т.к. более чем четырехканальные широкополосные осциллографы — большая редкость (и стоимость!), выбора по сути и нет. Остается только четырехканальный вариант.

Второй критерий — относительная широкополосность и частота сэмплирования не менее 1Гс/с. Собственно, одно с другим пересекается. При работе с импульсными сигналами, все красивые меандры на частотах, близких к полосе пропускания, превратятся в синусоиды, а о наблюдении выбросов на фронтах/спадах можно и не мечтать. В этом смысле 50-100-200 МГц — оптимальная полоса.
Выше 200 устройства обычно становятся дорогими (причем все устройства — и осциллограф, и кабели к нему, об активных пробниках и не говорю), а их влияние на схему чрезмерным. 7-10пф собственной емкости кабеля — это очень немало на 100 МГц.
Ниже 50 МГц уже сложно наблюдать даже сигналы на 10-20 МГц, а это вполне распространенные скорости передачи. В этом случае, сигнал очень распространенного генератора на 24 МГц будет уже почти синусоидой.
Относительно высокая частота сэмплирования тоже нужна. Мой личный эмпирический критерий — не менее 10 точек на период. Для четкого наблюдения формы сигнала — ближе к 50-100. На 4-5 точках можно лишь понять, что по проводу что-то идет. Поэтому, если брать модель менее чем на 1 ГГц (например — 500 МГц), сигналы выше 50 МГц могут выглядеть непонятными дергающимися кривульками. Сразу оговорюсь, что это не касается строго повторяющихся периодических сигналов. Для тех сигналов есть всякие полу-честные стробоскопические режимы (то, что в документации на многие осциллографы обозвано «Эквивалентная частота дискретизации» и указаны бешеные гигагерцы).
При этом я готов мириться с разделением частоты сэмплирования по каналам (т.е. на 2х — 500 МГц, на 4 — 250 МГц). Нет, разумеется, если бы модели с отдельным честным АЦП на каждый канал стоили, как и с «нечестным» — выбор однозначен. Но таковых как-то не просматривается. Аналогично — и с более высокой частотой (2ГГЦ). Стоимость таких устройств растет в разы.

Третий критерий — устройство должно быть не новым и уже тестированным другими людьми. Хотя бы полгода/год. Как показывает практика, обещания в стиле «сейчас ошибки есть, но мы вот-вот их всех исправим» срабатывает менее чем в половине случаев. И ждать исправления год-другой (или вечно) — не хочется. В этом смысле DS1054Z тоже отметился — ОЧЕНЬ неприятную ошибку с джиттером сигнала при изменении режима синхронизации исправили только спустя пару лет с момента выхода. Поэтому свежие устройства или устройства, не накопившие заметного количества отзывов пользователей, я принципиально не рассматриваю.

И последний по списку (но не по важности) — цена. Осциллограф для меня не является фетишем или прибором для непосредственного зарабатывания денег. Поэтому брать профессиональное (и недешевое) устройство — неразумно, достаточно любительского или полупрофессионального уровня. Технически, я и так при необходимости имею доступ к устройствам, имеющим на порядок (десятичный) более высокие характеристики. Но они не под рукой и, скажем так, их можно назвать переносными весьма условно. Но и дома возникает желание/необходимость проверить внезапно возникшие идеи. Не говоря уже о чисто хоббийном применении или «посмотреть, почему БП не работает».
Если говорить о конкретных цифрах, то мое ограничение было $500, включая все затраты.

Отдельным бонусом Rigol’у идет то, что с Rigol’ом я уже давно работал и привык к его

глюкам

фичам. Помнится, что попытка посмотреть на очень недешевом Тектрониксе (но без большой памяти в стиле DS1052E) один хитрый длинный сигнал привела к тому, что я просто не смог сделать это. А дома на втрое (если не вчетверо) более дешевом китайце сие делалось совершенно элементарно. Это не к тому, что Тектроникс — хлам, просто тогда у них не было такой нужной фичи даже на моделях среднего уровня.

И, разумеется, при выборе я учитывал возможность/легкость раскрытия дополнительных возможностей какими-либо средствами. Что также дает бонус Rigol’у.

В результате поисков согласно вышеуказанным критериям, ничего лучше DS1054Z я не нашел. Да, у него есть некоторое количество недостатков и багов, но идеальных аппаратов нет, и тем более — нет за такие деньги.

По разным причинам мне не понравился OWON XDS3104E, а всякие KEYSIGH, Tektronix, да и Siglent явно не вписываются в бюджет. GDS-71054B идет чуть выше бюджета, и не вполне понятно, можно ли его «дотянуть» до 71104 (это модель на честные 100 МГц, которая совсем не вписывается в бюджет).

Комплект поставки

Комплект прибора минимально-достаточный:
1) Провод питания
2) Четыре щупа на 150 МГц
3) Кабель USB
4) Бумажки и мини-описание

Провод питания угловой, и (на мой взгляд) с неправильным углом — разъем питания установлен сбоку, но комплектный провод направлен не к центру прибора, а наружу. Вид сзади:
Это особенно обидно, поскольку входные и выходные вентиляционные отверстия сильно утоплены в боковинки корпуса, и прибор можно ставить вплотную к стенкам полки не боясь перекрыть поток воздуха. Уточню — справа можно, слева угловой провод питания будет выходить за габарит на 3-4 сантиметра. В этом случае прямой провод получается удобнее, но будет большой зазор сзади. Пока углового провода, развернутого на 180 градусов, найти не удалось.

Щупы — стандартные для Rigol’а, PVP2150. Если их и выпускает другой производитель, то специально для Rigol’а, даже на коаксиальном кабеле нет никакого текста, кроме «RIGOL» и «MADE IN CHINA». Еще хочется отметить, что аксессуары у Rigol’а не дешевые. Есть приблуды для DS1000Z, которые стоят в 10 (десять!) раз дороже самого прибора. Пассивный щуп на 500 МГц (RP3500A) стоит $231. Причем примерно за эту цену он реально и продается. Железка для монтажа в стойку обойдется в $144 (набор обычных крашеных железок на 4U и два десятка стандартных винтов к ним). Доставка в стоимость не входит.
Комплектный PVP2150 стоит $35.

В связи с этим, позволю себе маленькое отступление о соотношении цен на старую и новую модели. По сайту DS1052E дешевле DS1054Z на $53, в продаже разница будет несколько больше (по rurigol — около $60). Но к DS1054Z в комплекте идет на два кабеля больше. $35 * 2 = $70. Если исходить из формально-математического расчета, стоимость самих тушек получается практически одинаковой, а то и с перевесом в сторону DS1052E. Вот такой он, маркетинг…

USB кабель — 28AWG/2C+28AWG/1P, ферриты на концах имеются. Маркировки Rigol’а не имеется ;)

Один шнур и USB:

Комплектные бумажки особого интереса не представляют. Описание очень краткое, полное лучше взять с сайта. Лично я сразу засунул их в секцию шкафа, где хранятся подобные описания из категории «выбросить жалко, но не потребуются никогда».

Возможные альтернативы DS1054Z у Rigol’a.

Когда я выбирал обновку, то, разумеется, посмотрел — нет ли другого варианта Rigol’а, отвечающего исходному критерию «недорогой на 4 канала». Далее изложены краткие результаты сравнения линеек Rigol.

Итак, по сериям:

Простая (не Z) 1000-я серия несколько устарела (ей уж лет 10), экран меньше, а о разнице в стоимости с учетом комплекта щупов я уже писал. Каких-то существенных преимуществ у этой серии нет. Ранее у Rigol’a на сайте было разделение на 1000В/1000D/1000E/1000CA (там заметные отличия в аппаратуре), сейчас часть моделей перестали выпускать, а оставшиеся условно свели в одну серию. Видимо, назвать получившуюся серию «старье» показалось не политкорректным, поэтому назвали «1000 Series».

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

2000-я серия не имеет четырехканальных моделей, да и заметно дороже серии 1000Z. Модели 2000E можно относить к этой серии весьма условно — частота АЦП у них 1Г/с (как и у 1000z), а даже младшие модели «честных» двухтысячников (с 2Гс/с) сразу минимум вдвое дороже. Если брать модель на 200 МГц — более чем втрое дороже (и всего два канала!). Это довольно старая (почти как и 1000) серия. Доступен хакерский апдейт, подобно 1000 и 1000z.

На серии 4000 возвращаются модели на 4 канала, но цена становится не совсем для личного использования — они от $2000 и выше (самая старшая модель — более $8000). Что там с возможностью взлома на большие частоты — вопрос открытый, но весьма вероятный. По крайней мере, официальная опция софтового обновления с 200 до 500 МГц на сайте Rigol’а есть. Всего за $6064.

Про серию 6000 промолчу по понятным причинам.

Если вернуться к 1000z, то, несмотря на внешнюю многочисленность моделей, по факту все они — это DS1054Z с добавлениями. Есть следующие опции:
1) Доступные частоты (1054/1074/1104)
2) Генератор сигналов (постфикс S)
3) Возможность (разъем) подключения логического анализатора (постфикс Plus)
4) Логический анализатор (префикс MSO вместо DS)

Есть еще всякие опции декодеров, триггеров и т.п., но они не зависят от модели и едины для всех тушек. Если просуммировать официальную стоимость всех опций и частот, разрешаемых программным апгрейдом, то получится около $1000. Впрочем, сейчас Rigol зачастую дает бесплатно эти опции при покупке нового аппарата.

Хотя все 13 моделей в линейке получены путем добавления функций к базовой модели DS1054Z, у самого DS1054Z опции официально недоступны — считается младшей моделью со всеми вытекающими.

По ценам опций раскладка получается следующая (они немного зависят от других опций):
50->70 МГЦ: +$70
70->100 МГц: +$50..$100
Разъем для логического анализатора: +$40..60
Полный логический анализатор: +$180..230
Генератор: +$180..200

Про опцию частот написано неоднократно — это программное ограничение, никакой дополнительной аппаратуры не требующее. Элементная база идентична, подозрения о разбраковке по частотам пока ничем не подтверждены, а по тестам отличия между моделью на 100 МГц и разблокированной 50 МГц получаются такого же порядка, как между разными оригинальными на 100 МГц.
По поводу легкости разблокировки ходит относительно достоверная конспирологическая теория, что ситуация выгодна самому Rigol’у. Вставить в прошивку стойкий криптоалгорим, не позволяющий разблокировку без модификации прошивки, довольно несложно даже студенту. Вместо этого, уже более 10 лет Rigol для проверки валидности ключа используются слабые, легко реверсируемые алгоритмы. Понятно, что серьезные организации не будут заниматься взломом прошивок. Rigol’ы есть в реестре СИ, и не думаю, что взломанному аппарату дадут свидетельство о поверке. В то же время, возможность легкого апгрейда будет работать более чем хорошо как реклама марки. Осциллограф с набором опций, обошедшийся домашнему пользователю в $400, при официальной покупке организацией потянет на более чем $1300.

Остальные опции включают в себя аппаратные добавки и недоступны для владельцев DS1054Z.
Аппаратные добавки включают в себя две кнопки на передней панели, два разъема сзади, разъем спереди и отдельные блоки генератора и логического анализатора.

Вот передняя панель моего аппарата:

Вот полнофункциональный MSO1104Z:

Видно отсутствие двух кнопок под CH4.

Фрагмент моей передней панели крупнее:

А теперь тот же фрагмент в момент включения аппарата и теста светодиодов:

Хорошо видно, что есть не только проемы в пластмассе, но даже светодиоды индикации выбора кнопок припаяны на плате и управляются. Всё отличие моего осциллографа — это другая наклейка и нет кнопок-резинок.

Опция Plus включает в себя разъем на передней панели и уже упомянутую кнопку. Стоимость по комплектующим — явно не более $5. Вот этот разъем с кабелем:
Rigol хочет за него от $40 и выше. Были ревизии основной платы Rigol с местом для установки дополнительного чипа, но реально он никогда туда не ставился. Сейчас вся электроника логического анализатора установлена во внешнем модуле RPL1116. Если потом покупать отдельно, RPL1116 обойдется в $293. В сумме с опцией Plus — порядка $350. Поэтому если нужен логический анализатор от Rigol, лучше купить его сразу в версии MSO (там полный комплект: и разъем, и RPL1116 вместе) — будет почти вдвое дешевле.

Вообще, опция логического анализатора обходится дорого. Разница между DS1054Z и MSO1074Z — $300. За эти деньги можно взять более чем неплохую приставку к компьютеру. Из своего личного опыта могу сказать, что в большинстве случаев достаточно либо пятибаксового анализатора на 68013, либо 4х каналов осциллографа. Логический анализатор Rigol целесообразен в довольно узкой области, когда:
1) Число сигналов более четырех и не более 16.
2) Частота больше 50 МГц (короткий отрезок 68013 может захватить и на 48 МГц, если с доработками)
3) Частота меньше 100-150 МГц
4) На плате есть выводы для подключения тест-клипс.

Добавлю, что при отладке FPGA проще и удобнее использовать функцию встроенного логического анализатора. Для Альтеры она поддерживается для всех сколь-нибудь серьезных чипов (основной критерий — наличие блоков памяти), у Xilinx тоже что-то такое имеется.

По поводу частот. Несмотря на анонсируемые частоты захвата в 500 МГц и выше, на частотах выше 100 МГц клипсы логического анализатора вносят такое влияние в схему, что ее поведение становится совершенно непохожим на состояние без клипс. Но даже если и это не учитывать, позволю себе привести выдержку из описания логического анализатора серии 1000z:
Peak Detect Digital channel: 4 ns
Minimum Detect Pulse Width digital channel: 10 ns
Т.е. пики менее 4 ns анализатор имеет право вообще не заметить, а полнофункционально он может работать с частотами менее 100 МГц. Также нужно учесть, что при использовании 8 каналов ЛА остается только 3 канала осциллографа, при 16 — только два.

На мой взгляд, проще и выгоднее взять приставку к компьютеру типа LA5016, к которому есть SDK для написания своих анализаторов. По скорости захвата близко, а стоит менее $200. Или hantek на 32 канала… или еще много вариантов, в зависимости от потребностей и кошелька.

Генератор представляет собой небольшую дочернюю плату, устанавливаемую на разъем основной платы осциллографа:

К ней подключены два отдельно монтируемых BNC-разъема, выходящие на заднюю часть прибора (рядом с существующим разъемом).
Выглядит это так:

Дополнительно, на передней панели имеется еще кнопка (Source, ниже предыдущей). Теоретически, генератор полезен и, на первый взгляд, соответствует Rigol-овскому DS1022z. Совпадают частота сэмплирования (200 МГц), число каналов (2), разрядность ЦАП (14) и максимальная частота сигнала (25 МГц). Но, если присмотреться, то отличия есть. Во-первых, точность частоты. Для DS1022z это 1-2 ppm, для встроенного — 50-100 ppm. 50 ppm — это обычная точность кварца среднего уровня. Видимо, именно такой и стоит на дочерней плате. Шаг выставления частоты также отличается (1 мкГц против 0.1Гц). С длиной памяти сэмплов отличия еще больше — 2Mpts против 16Kpts. Причем в отдельном генераторе память можно раскрыть до 16Mpts (без аппаратных доработок, софтовым ключом). Аналогичные отличия есть и в скорости нарастания, точности амплитуды, джиттере, THD. Это все можно было бы и простить, если бы модуль стоил порядка $50-100. Но отдельно плата не продается и в DS1054Z не устанавливается. Т.е. разница по стоимости между DS1054Z (без генератора) и DS1074Z-S (самая дешевая модель с генератором) будет $260. Учитывая, что за $359 можно купить целый отдельный генератор DG1022Z, имеющий свой экран, цифровую клавиатуру для ввода частоты, значительно большую память точек, локальную сеть, больше выходов BNC и лучшие параметры, получается не так интересно.

А простенький отдельный китайский генератор с 100ppm частоты обойдется существенно дешевле.

Итак, если оставить только «знаковые» модели, получается:
$400 — DS1054Z (без генератора и ЛА)
$660 — DS1074Z-S (с генератором)
$700 — MSO1074Z (с ЛА)
$900 — MSO1074Z-S (с генератором и ЛА)

На мой взгляд, если нет требований к компактности, лучше взять DS1054Z, программно раскрыть его до DS1104Z и (при необходимости) докупить отдельный внешний генератор и логический анализатор-приставку к компьютеру. Как-нибудь «сэкономить» с аппаратными опциями, используя хакерские методы, невозможно — добавить кнопки и разъем на переднюю панель не сложно, но потребуется еще блок логического анализатора, стоящий примерно те же $300, а модуля генератора и вовсе нет в свободной продаже.

Отличия от DS1052E.

Если сравнивать с предыдущей моделью, то (кроме увеличения количества каналов), принципиальных отличий не очень много. Экран стал более четким, стало вдвое больше контекстных кнопок. Правая часть передней панели несколько сжалась (отдавая место экрану). Самое непривычное отличие — другое расположение кнопки включения, первое время рука на автомате тянулась к верхней крышке.
В отзывах некоторые владельцы жаловались на сильный шум вентилятора. Да, шум есть, но по моим ощущениям совершенно такой же, как и в DS1052E. Как по силе, так и по тональности. По сути, это даже не столько шум вентилятора, сколько шум воздуха, проходящего через все дырки и извилины внутри осциллографа. Уменьшать его за счет большего нагрева внутренности — не самая лучшая идея.
Отличия в менюшках для меня оказались не существенными — чуть больше пунктов, чуть иначе расположены.
Габариты прибора остались практически прежними, на столе он встал точно на место прежней модели.

Подводя итог, я могу сказать, что результат достигнут — я получил привычный для меня аппарат на нужное мне число каналов.

Что внутри

Обзор был бы совсем неинтересен без «вскрытия». Вскрытие будет производиться по двум направлениям — аппаратура и анализ прошивки.

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

Первый блок осциллографа, куда приходят сигналы — входные усилители. В DS1054Z их четыре штуки, все каналы одинаковы. В отличие от многих других, тут нет отдельного канала запуска. В классическом осциллографе канал запуска подключался к компаратору, определяющему момент начала развертки. Для нормального отображения сигнала в аналоговых осциллографах приходилось применять специальные линии задержки, обычно представляющие собой моток (или отрезок) коаксиального кабеля. В цифровых для этого используется память.
В DS1054Z источником запуска можно выбрать любой из каналов. Никакого отдельного компаратора тоже нет, сигналы сравниваются после оцифровки. Это дает возможность введения сложных триггеров, сильно упрощает схему и работу синхронизации, но имеет и свои минусы.
С правой стороны сзади расположен один BNC-разъем. У него две выбираемые функции. Через него может выдаваться сигнал соответствия/несоответствия осциллограммы и задаваемого шаблона. Для домашнего использования это практически бесполезная функция.
Также этот BNC может быть выходом срабатывания триггера. Вот тут и проявляются подводные грабли. Сигнал триггера запуска формируется программно, путем обработки отсчетов АЦП уже в цифровом виде. Как следствие — огромная задержка относительно входного сигнала, обусловленная задержками внутри АЦП (до 128 тактов) и при дальнейшей передаче. Суммарно получаются сотни наносекунд. Сюда еще добавляем имеющийся джиттер относительно исходного сигнала в единицы наносекунд (обусловлен частотой сэмплирования АЦП и частотами обработки в цифровой части). Получившийся в результате сигнал запуска становится употребим с большими оговорками. Вот скриншот с примером:

В канал 2 подан исходный сигнал. Выход триггера соединен кабелем с входом 3. Курсор А установлен на момент срабатывания триггера (-4нс, но это не принципиально). Курсор B установлен в самое начало фронта выхода триггера. Результат — задержка в 350нс. Если менять уровень триггера (пометка «T» справа), то задержка совершенно не меняется.
Впрочем, если нужно синхронизировать внешний логический анализатор, имеющий буфер и настраиваемое положение триггера запуска, все не так и плохо. Но иметь в виду эту задержку нужно, т.к. выход аппаратного триггера запуска у более дорогих аппаратов дает задержку в сотню раз меньше.

Каждый из каналов входных усилителей выполняет несколько функций:
1) Усиление/ослабление входного сигнала для приведения его в диапазон работы АЦП.
2) Управление полосой сигнала (аналоговый фильтр низких частот)
3) Переключение между открытым и закрытым входом. Если несколько упростить, то в режиме закрытого входа в цепь подключен конденсатор, отсекающий постоянную составляющую сигнала.
4) Согласование с входом АЦП. В большинстве современных скоростных АЦП используется дифференциальный вход. Входной усилитель получает сигнал через один провод (коаксиальный), а выдает в АЦП два сигнала (взаимно инверсных). Дифференциальная линия повышает устойчивость к помехам.

Входные схемы с передней стороны:

Хорошо видно, что два канала имеют не только идентичную схему, но даже расположение компонентов совпадает. Кроме дискретных компонентов, в схеме присутствует сдвоенный низкошумящий усилитель TL072С, трехканальный коммутатор HC4053 (третий канал которого явно заземлен и не используется), 8-битный сдвиговый регистр 595 (SN74AHC595) и цифровой сдвоенный потенциометр AD5207. HC4053, TL072C и AD5207 поделены пополам между каналами.

Задняя часть:

С обратной стороны все каналы одинаковы, микросхемы не делятся. Кроме дискретных элементов имеется вспомогательный усилитель TLC274 (маркировка P274), коммутатор HC4053 (на нем собран эрзац-ЦАП), реле FTR-B3-GA4.5Z (smd, standard type, напряжение — 4.5В, покрытие — золото по никелю) и твердотельное реле cosmo y214s.
Если кого-то интересуют подробности, то на eevblog были рукописные картинки с фрагментами схем входных цепей.
Пока же отмечу только тот факт, что ВЧ-цепочка входного усилителя собрана целиком на дискретных элементах. Все микросхемы обеспечивают только управление уровнем, компенсацию постоянного смещения и другие вспомогательные функции. Кстати, набор этих микросхем (и релюшек) практически не изменился по сравнению с DS1052E. В DS1052E использовалась дополнительная ВЧ-микросхема (AD8370?), которая в DS1054Z заменена на несколько транзисторов.

Далее все каналы сходятся к АЦП:

Маркировка Rigol не должна смущать, энтузиасты давно докопались, что это фактически HMCAD1511 от AD. В старом DS1052E стояли пять двухканальных AD9288 (причем есть подозрения, что в слегка «разогнанном» варианте).

Внутри HMCAD1511 находится четырехканальный переконфигурируемый АЦП, обеспечивающий суммарную скорость по всем каналам в 1 ГС/с. Соответственно, при двух каналах — по 500, при четырех — по 250.
Выходные каналы — последовательные (LVDS). Микросхема стоит на сайте AD $47.
На картинке хорошо видно, как сверху подходят 4 дифференциальные линии от входных усилителей.
Справа от АЦП на картинке расположен синтезатор частоты ADF4360-7. Тоже от AD. Он заметно дешевле — $3.3.

Если поверхностно прочитать документацию, может возникнуть вопрос — как прибор обеспечивает 12 бит при 8-битном АЦП? Ответ довольно прост — суммированием отсчетов. В 12-битном режима сумма 16-ти последовательных отсчетов даст дополнительные четыре бита, при этом пропорционально уменьшая частоту. И это не Rigol такие «жулики» — подобный механизм есть в приборах многих фирм. К сожалению, скоростные АЦП на 12-14 бит дороже, а схемотехника осциллографа становится сложнее. Осциллографы с более чем 14 аппаратными битами нужно очень поискать (и запастись чемоданом денег) — это одна из причин, почему обычным цифровым осциллографом невозможно протестировать качественный аудиотракт. Его восьми бит разрешения попросту не хватит для вылавливания искажений на уровне 16-24-битного звука.

Общая схема функционирования следующая:
1) Процессор настраивает синтезатор частоты и АЦП
2) Синтезатор выдает нужную частоту на АЦП.
3) АЦП преобразует входные сигналы и выдает по LVDS (там несколько линий данных и синхронизации) в сторону FPGA.

Что такое FPGA и зачем она в осциллографе

FPGA (Field-Programmable Gate Array) или по-нашему — программируемая логическая интегральная схема (ПЛИС). Как часто бывает, расшифровка аббревиатуры не дает четкого понимания, чем ПЛИС отличается от микроконтроллера. Если несколько упростить, то ПЛИС — это такая большая макетка с набором 155ЛА3 и 155ТМ2, к которой прилагается большой моток МГТФ. Еще нужен «паяльник» от производителя ПЛИС, причем в большинстве случаев сколько-нибудь хороший «паяльник» не бесплатен.
Первые ПЛИС были очень небольшие — на единицы-десятки логических элементов (бывало даже без триггеров — только чистые логические функции) и брали скорее компактностью корпуса и гибкостью в работе, чем стоимостью. Сейчас за пару десятков $ на том же Ali вполне можно купить тестовую плату с ПЛИС на несколько тысяч логических элементов, причем под словосочетанием «логический элемент» понимается не 155ЛА3, а существенно более сложная схема. Например, для дешевых серий Altera (Cyclone) логический элемент состоит из блока вычисления логической функции (из четырех входных параметров получается один выходной) и D-триггера. 5000 таких произвольно соединенных элементов с произвольными функциями в каждом элементе могут заменить очень большую макетку. А из-за компактности все это может легко (ну, почти легко) работать на тактовой частоте в 200-300 МГц (и даже выше), что для стандартных печатных плат такого размера практически недостижимо. Развитие ПЛИС шло не только экстенсивным путем — по дороге они обзавелись специализированными модулями (блоки памяти, перемножители, синтезаторы частот, специальные скоростные интерфейсы и т.п.). Лет 10-15 назад началась мода делать прямо внутри ПЛИС процессор на логических элементах. Сейчас история завершила очередной виток и производители стали встраивать уже готовое процессорное ядро прямо в кристалл ПЛИС. На эту тему можно говорить долго, остановимся на принципиальном отличии ПЛИС от микроконтроллера.
Если отбросить дополнительные аппаратные блоки (видеоконтроллер, последовательные порты, сеть и т.п.), то процессор ориентирован на выполнение последовательности команд. ПЛИС же оперирует переходами из одного состояния в другое, причем за один такт тысячи триггеров могут поменять свое состояние. В микроконтроллере в каждый момент времени выполняется одна команда (если микроконтроллер большой, с несколькими ядрами — две, четыре, пусть 8, но немного), а скорость выполнения последовательности команд не совсем стабильна (в силу переключения задач, конкуренции доступа к памяти и т.п.). В ПЛИС в каждый момент времени одновременно будут выполняться тысячи операций. И, главное, точность их выполнения зависит только от точности тактовой частоты. Если обычный микроконтроллер будет «дергать» ножкой, то он сможет обеспечить частоту в мегагерцы, может — десятки мегагерц. И только на одной ножке, независимое управление несколькими выводами сразу понизит частоту. ПЛИС же может независимо управлять всеми своими ножками с частотами в сотни мегагерц. Ограничением для ПЛИС обычно является электрическая мощность выходного буфера и его способность «раскачать» емкость линии на высокой частоте.
Основной недостаток ПЛИС в том, что она работает медленнее, чем готовый спроектированный блок жесткой (не перепрограммируемой) логики и обойдется дороже. Но, увы, стоимость разработки и запуска в производство микросхемы с жесткой логикой окупится только при очень больших тиражах. А если рассмотреть совсем даже не гипотетический вариант с ошибкой при разработке, незамеченной до начала продаж — то ситуация совсем печальна. В случае с ПЛИС проблему обычно можно решить простой заменой прошивки.

В осциллографе ПЛИС обеспечивает стыковку АЦП с процессором и предобработку данных. У большинства дешевых процессоров общего назначения просто нет встроенного интерфейса для подключения используемого АЦП. Через обычный порт ввода-вывода физически невозможно протащить гигабайт постоянно приходящих данных. Да и обработать непросто. А применение ПЛИС позволяет переложить на ее плечи «непрофильную» для процессора работу, требующую быстрого выполнения множества простых операций, и «склеить» АПЦ и процессор. Процессору достаточно будет выводить на экран изображение со скоростью частоты смены кадров экрана, можно даже ниже. Даже при передаче данных в локальную сеть (чем занимается процессор) поток ограничен скоростью локальной сети — т.е. где-то в 100 раз ниже исходной.
Используемая связка (ПЛИС+процессор) очень популярна во многих сложных устройствах. Использовать только ПЛИС — дорого, только процессор — не успевает.

В осциллографе процесс получения данных с АЦП работает постоянно, до смены режима. Что пропустить, а с какого места захватить сигнал — определяют настройки FPGA. Она является логическим центром осциллографа. В DS1052E стояла Altera (EP3C5, Cyclone 3), в DS1054Z поставили Xilinx XC6SLX25 в BGA корпусе на 488 выводов. Стоит около $50. Несколько новее и мощнее, чем Cyclione 3. Самая младшая в таком корпусе из всей линейки Spartan 6. На плате закрыта радиатором, который добрые люди уже снимали:

Непосредственно к FPGA подключены две микросхемы памяти — H5PS5162GFR (64МБ 667MHz DDR2 с организацией 16*32М) и CY7C1360C-200AXC (256K*36 200MHz Pipelined SRAM).

Суммарно оба чипа обойдутся примерно в $10.
Чип памяти DDR2 по теоретической пропускной способности даже немножко превышает требуемый гигабайт в секунду. При обмене безусловно имеются задержки и накладные затраты (в том числе — на динамическую регенерацию), но внутри чипа FPGA тоже наберется под сотню килобайт модулей памяти и писать по одному байту никто не будет. Каким образом используется синхронная память мне неизвестно. В DS1052E стояла только она.
К сожалению, какие-то конкретные детали работы с памятью выяснить сложно, практически невозможно. Прошивка хоть и открыта, но IDA для FPGA не существует ;)

Кроме основной FPGA, в приборе имеется еще Actel ProASIC3 A3P030 VQG100 на 30000 вентилей.

По всей вероятности, выполняет вспомогательные функции и используется для подключения всяких кнопок и прочего. Основное отличие от главной — прошивка сидит у нее внутри (XC6SLX25 загружается извне и сразу после включения прибора не может работать). Также вполне возможно, что это защита от тиражирования — прошивку из Актеля просто так не вытащить и не скопировать. Это единственный не копируемый элемент осциллографа — остальные прошивки можно либо считать, либо они открыто лежат в памяти. Чип стоит менее $10.

Последним важным элементом является главный мозг осциллографа — микроконтроллер MCIMX283DVM4B. Это процессор с ядром ARM926EJ-S семейства i.MX28 от nxp/freescale. Работает на 450 МГц и внутри содержит много всего:
— Ethernet контроллер
— Два USB контроллера
— Контроллер LCD (видеокарта-лайт)
— стандартная кучка PWM/последовательных каналов/низкоскоростных ЦАП/АЦП и т.п.
Стоимость чипа — около $10. Отнюдь не самый производительный процессор, однако его вполне хватает даже на относительно тяжелые задачи, типа преобразование Фурье и вывода результата в реальном времени.
Возвращаясь к сравнению FPGA vs CPU можно сказать, что даже на в пять раз более дорогой XC6SLX25 не получится создать аналог этого процессора — просто не хватит логических ячеек на реализацию всех встроенных аппаратных функций.

К микроконтроллеру подцеплена DRAM (H5PS5162GFR, как и у FPGA)

и flash H27U1G8F2BTA на 128М.

В продаже именно такой не нашел, но дорогой она не может быть.
Эта память разделена на два раздела: пользовательский раздел для хранения данных (внутри прибора монтируется в /user) и системную область (монтируется в /sys). На пользовательский раздел отведено 90МБ, остальное — системе. Системный раздел для пользователя невидим, при выборе места для сохранения показывается только /user.

Для стыковки микроконтроллера с сетью используется чип Micrel KSZ8051RNL (Ethernet PHY, 100 М). Стоит около $2. Ничего интересного, обычный стык MII <-> Ethernet.

Также на плате имеется nvram winbond 25x40BVNIG (W25X40VNIG) — 4Mbit (256KB) с шиной SPI (там хранится первичный загрузчик и настройки). Прочую мелочевку (транзисторы, стабилизаторы и т.п.) я рассматривать не буду, там ничего особо интересного нет.

Осталось упомянуть о нескольких имеющихся интерфейсах.
USB host процессора выведен на переднюю панель — туда можно подключать флешки для сохранения данных. В DS1052E аналогичный вход располагался там же. Скорость записи зависит от флешки, но в целом пишет медленно.

Второй USB (OTG) выведен сзади, рядом с сетевым гнездом. Через него можно управлять осциллографом или распечатывать на принтере через pictbridge. В опциях еще имеется GPIB адаптер по доступной цене в $346. В чем ценность управления осциллографом через GPIB — «мне не понять, я не рыбак». Впрочем, для какой-то реальной производственной задачи это не такие большие деньги.

Вместо ранее имевшегося RS-232, установлено гнездо локальной сети. Подключение к сети обычное, без каких-то real-time расширений или специальных промышленных протоколов. О его возможностях разговор будет далее, при анализе прошивки.

Прошивка.

Далее будет только текст, картинки кончились. Вполне вероятно, текст покажется скучным, занудным или изобилующим непонятными терминами. Мое дело предупредить ;)

Еще до получения прибора я посмотрел его прошивку. Это у меня нечто среднее между хобби и навязчивой идеей. Кто-то вяжет носки, кто-то фигурки девушек собирает, кто-то в обед раскладывает пасьянс, а мне интересно разглядывать программные кишки чужих устройств. Без какой-то явной коммерческой выгоды (хотя и такое бывало, постфактум), «only for fun».
На сайте Rigol прошивка отдается свободно, без регистраций или долгих поисков. Но только последней версии. Возможно, что там где-то лежат и старые версии, но не настолько открыто. В сети можно найти еще пяток разных версий, особой пользы от которых нет — в последней прошивке пока не нашли (за полгода) новых глюков, зато исправлены некоторые (но не все) старые.
Все модели семейства DS1000Z имеют идентичное программное обеспечение. Отличия возникают уже после загрузки, когда прибор опрашивает внешние модули и проверяет лицензии (опции). Единство прошивки — это принципиальное отличие от нынешнего состояния серии 1000, где тип прошивки зависит как минимум от суффикса модели.

Вообще то, правильнее говорить не о прошивке, а о файле обновления. Почему? — этот файл не является монолитом, это архив, содержащим несколько независимых файлов, которые распаковываются в процессе обновления и записываются в разные места. Причем набор файлов в разных обновлениях отличается — один из предыдущих файлов включал в себя обновление загрузчика. Последние версии его (загрузчик) не обновляют. Я анализировал прошивку 04.04.03.02.
Формат GEL-файла достаточно прозрачен и хорошо реверсируется без какой-либо документации. Единственная небольшая помеха — некоторые файлы (в том числе исполняемая часть прошивки) сжаты. К счастью, в сети есть небольшая программа, предназначенная для распаковки GEL-файлов Rigol. Она в пару кликов вытаскивает из архива файлы, распаковывая запакованные. Дальнейший анализ прошивки показал, что там используется стандартный алгоритм, замечательно распаковываемый (и запаковываемый) исходниками 7zip.
В типичной прошивке имеются следующие файлы:
/sys/SparrowAPP.out — основное приложение
/sys/SparrowFPGA.hex — прошивка основной FPGA
/sys/SparrowDGFPGA.hex — прошивка FPGA дополнительной платы генератора
/sys/logo.hex — стандартная заставка при включенни (800 x 480)
/sys/guiResData.hex — разные ресурсы (менюшки, несколько шрифтов, справка)
/sys/guiPicData.hex — большие картинки (хранится упакованным)
/sys/SparrowConfig.hex — заставка при включенни для Plus-моделей
Еще пара файлов содержит всякие заготовки для калибровки и прочего:
/sys/SparrowWaveTable.hex
/sys/SparrowCalFile.hex

Исполняемым файлом является SparrowAPP.out. Технически это обычный файл в формате elf, который можно без проблем загрузить в IDA и там рассматривать. Механизмы защиты целостности довольно просты, используется огромное количество CRC32 — иногда 3 разных для одного файла (запакованный, распакованный + внутри elf). Для нормального рассматривания прошивки необходимо не забыть, что стандартный инициализатор перемещает инициализируемые данные при старте программы. Таких данных там много, отнюдь не только нулевых.

О коде прошивки

В приборе не используются «большие» операционные системы. Собственно, это было понятно уже по размеру файла обновления (менее 5МБ). В качестве ядра (для функций запуска процессов, синхронизации, выделения памяти и т.п.) используется не самая новая версия MQX (3.7 или 3.8 — точно не пытался определить). Ядро относительно небольшое, размер идет на десяток килобайт исполняемого кода, с драйверами может за сотню перевалит. Здесь о драйверах можно говорить смело, поскольку работа со многими устройствами идет в стиле open/write/read/ioctl/close. Даже если нужно прочитать пару байт по одной из внутренних шин SPI, никакого ожидания битов готовности, прерываний на каждый байт и т.п. нет. Подготавливается буфер, настраивается устройство и контроллер DMA, запускается процесс обмена. Далее совершенно не важно, будет ли передано 2 байта или 2 мегабайта. Аналогично и с сетью, и с обоими USB, и с i2c.

Язык написания — «C» с очень небольшим налетом плюсовости. Таблицы функций есть, но наследование и прочие подобные вещи не применяются (или настолько редки, что я их просто не заметил). По всей видимости, откомпилирован чем-то типа IAR, скорее всего без опций оптимизации. Вот типичный пример ассемблерного кода внутри прошивки:
ADD R1, R9, R9,LSL#2
LDR R2, =SRQ_SendData
STR R5, [R2,R1,LSL#3]
ADD R1, R9, R9,LSL#2
LDR R2, =SRQ_SendData
ADDS R1, R2, R1,LSL#3
STR R4, [R1,#SRQ_Struct.field_4]
ADD R1, R9, R9,LSL#2
LDR R2, =SRQ_SendData
ADDS R1, R2, R1,LSL#3
STRB R0, [R1,#SRQ_Struct.field_18]
ADD R0, R9, R9,LSL#2
LDR R1, =SRQ_SendData
ADDS R0, R1, R0,LSL#3
STR R6, [R0,#SRQ_Struct.field_8]

Т.е. для заполнения четырех соседних полей в массиве структур, компилятор каждый раз загружает адрес массива и умножает индекс в массиве на размер структуры. Минимальный оптимизатор просто выбросил бы повторные вычисления и выдал бы что-то вроде следующего:
ADD R1, R9, R9,LSL#2
LDR R2, =SRQ_SendData
ADDS R1, R2, R1,LSL#3
STR R5, [R1]
STR R4, [R1,#SRQ_Struct.field_4]
STRB R0, [R1,#SRQ_Struct.field_18]
STR R6, [R1,#SRQ_Struct.field_8]
С другой стороны, это очень упрощает анализ кода, реверсировать до C можно практически по шаблону.

В прошивке достаточно сильное разделение на модули, порождающее кучу вложенных вызовов. Но это еще полбеды. Несколько выбивается из «микроядерности» интерфейс между различными модулями. Модулем в данном случае я называю набор функций для какой-то отдельной задачи. Например — модуль работы с опциями, модуль параметров вертикальной развертки, модуль логического анализатора, модуль управления генератора и так далее.
Всем этим модулям часто требуется получать параметры от других или, наоборот, отдавать им команду. Для этого каждый модуль регистрирует свое имя в некотором пространстве имен и таблицу-массив с идентификаторами запросов и ссылками на подпрограммы, реализующие эти запросы. У каждого идентификатора обычно есть до трех методов: получить параметр, задать параметр и проверить доступность параметра.
Пример такой таблицы:
ConfDescr <0xA00, sub_402609B0, NULL, NULL, NULL, 0>
ConfDescr <0xA02, sub_402609F4, sub_40260B7C, NULL, NULL, 0>
ConfDescr <0xA01, sub_40260A7C, sub_40260AEC, NULL, NULL, 0>
ConfDescr <0xA05, sub_40260F18, NULL, NULL, NULL, 0>
ConfDescr <0x100000E, sub_402611D4, NULL, NULL, NULL, 0>
ConfDescr <0x1000004, sub_402609F4, NULL, NULL, NULL, 0>

Вызов для получения данных (параметра) выглядит следующим образом:
MOVS R2, SP; Buffer
MOV R1, 0x601
LDR R0, =aMeasure_1
BL GetSettings

Если перевести на «C»: GetSettings(«Measure», 0x601, Buffer);

Несколько упрощая, GetSettings сначала находит модуль с указанным именем (простым тупым поиском по списку), потом пытается найти в таблице строку с заданным идентификатором (тоже последовательным поиском). Если нашла — ставит в системную очередь запрос на вызов подпрограммы. Сначала я не понял, зачем такой хитрый вызов в монолитном приложении. На первый взгляд, заголовочный файл с именами функций вида Name_of_module__GetSome ничуть не хуже, чем заголовочник с кучей define-идентификаторов. В первом случае вызов функции потребует в тысячи раз (это не преувеличение!) меньше времени, да и при компиляции будет явно видно, если какую-то функцию забыли или неправильно вызвали. Например, если в применяемом варианте указать имя одного модуля, а идентификатор от другого, то на этапе компиляции проблема найдена не будет.
Но при дальнейшем анализе выяснилось, что этими функциями пользуются не только подпрограммы внутри исполняемого файла. Файл описания меню тоже содержит ссылки для обращения к данным модулям. Видимо, Rigol решил создать свою версию чего-то типа activeX. Для менюшек — понятно. Но они в этот же интерфейс завернули обработку запросов по USB и сети. Боюсь, такое решение не ускорило работу этих функций…

В силу использования микроядра, имеющихся 64 Мегабайт оперативной памяти более чем достаточно, особенно учитывая, что для хранения/захвата сигналов у FPGA есть собственные 64 МБ. Немного забегая вперед скажу, что у осциллографа практически всегда свободно более 20 МБ памяти для malloc. Никакой особой оптимизации использования памяти не производится. Например, когда осциллограф обновляет прошивку (а он это делает не выходя в какое-то специальное состояние), то он просто резервирует память под образ прошивки (5 мегабайт), потом резервирует память под распакованные файлы (еще около 4 МБ) и запускает распаковку.

Кроме самого ядра и драйверов устройств, внутри имеются еще многочисленные библиотеки:
lwip — для сетевого стека
libpng — работа с картинками в формате png
zlib — для png
libjpeg — для сохранения в jpeg
что-то не идентифицируемое (практически без текстовых сообщений) для tiff и bmp
uffs — поддержка файловых систем на внутренней флешке
Есть куски криптографических библиотек для RC5, XXTEA и т.п.

Часть библиотек легко идентифицируются по именам файлов в assert, например:
E:SparrowVersionReleaseVersionGit0.04.04.00.00_20160126CodeVendorMQXusbhostsourceclassesmsdusb_host_msd_bo.c
или:
E:PragramDP800lxilwipcoredhcp.c

Авторское название каталога (во втором случае) оставлено как есть.

Есть следы еще нескольких мелких библиотек, но надежно идентифицировать их затруднительно. Библиотеки с названиями типа «minixml» пишет каждый второй студент-программист. Да и смысла особого нет, никакой полезной информации эта идентификация не принесет.

Очень много места занимают шрифты и картинки-иконки. Шрифты растровые, с поддержкой большой таблицы символов (часть строк — ascii, часть — unicode на два байта). Картинки хранятся в виде 16-битных образов RGB565 с заголовком из полей ширины и высоты.
Для таблиц символов используется что-то типа 16-битного юникода, хотя практически все текстовые сообщения в elf восьмибитные. Используются два уровня локализации — системные сообщения могут быть английские и китайские (и в паре мест — только китайские), а интерфейс пользователя многоязычный (10 языков). Но русификация мне как-то не понравилась, надежнее использовать английскую версию. Минимум половина русских сокращений настолько непонятны, что без документации не догадаться. Вероятно, китайскую еще надежнее (фирменная опечатка Rigol — pulses/pluses), но я еще не настолько пессимист из анекдота. Встроенная справка есть только на английском и китайском. Справка не очень полезная, скорее из разряда «чтоб было».

Сеть и порты, используемые в осциллографе

Сетевой стек обеспечивает возможность подключения к осциллографу по сети, но функций самостоятельного подключения к внешним ресурсам не имеет (и хорошо, а то эта повсеместно внедряемая облачная идеология уже переходит в извращения). Даже функция connect из lwip не вкомпилировалась в приложение. Максимум — рассылка broadcast/udp внутри локальной сети.
На задней части осциллографа можно видеть «рекламу» LXI протокола. Практически все порты так или иначе относятся к реализации этого стандарта. Там реализовано достаточно много функций — 1117 (тысяча сто семнадцать!). Один из популярных вариантов первого использования SCPI — ввод опций, не ломая пальцы на встроенном редакторе кода опции, командой :SYSTem:OPTion:INSTall . Таким же образом можно их и снести («SYSTem: OPTion: UNINSTall»), вернув аппарат к исходному состоянию. Методы совершенно официальные, документированные Rigol. Если не учитывать того, откуда получена строка лицензии ;)

TCP/80 — http, web сервер. Для пользователя ничего особо полезного нет. Включен для обеспечения требований lxi и выдает несколько xml-страничек описания устройства.

UDP/111, TCP/111 — VXI-11 Sun-RPC и port-mapper. Для LXI.
TCP/617 — часть VXI-11
TCP/618 — часть VXI-11
TCP/619 — часть VXI-11

TCP/943 — При некоторых настройках может выдавать текстовую строчку и сразу отключаться. Внутреннее имя «silverlight».

TCP/4530 — недокументированная альтернатива 5555. Внутреннее имя «silver server».

UDP/5353 — mDNS (Multicast DNS) Это такой локальный DNS без выделенного сервера. Читать по ключевым словам zeroconf, bonjour, avahi. Часть стандарта LXI.

TCP/5555 — SCPI интерфейс. Если кратко, то удаленное управление осциллографом. Почти полностью описан в «RIGOL Programming Guide» для DS1000Z. Там 260 страниц. Часть функций не описано или описано в аналогичном документе на другие модели. Не думаю, что как-то секретят, скорее имеет место быть легкое разгильдяйство — функции пишут одни, документацию — другие. Этот интерфейс доступен и через USB с идентичным синтаксисом команд. Часть LXI.

TCP/5566 — недокументированная альтернатива 5555

UDP/6000 — В ответ на пакет с «?» выдает информацию об устройстве (модель, серийный номер). Внутреннее имя «seek resource». Я его тоже использовал для определения IP-адреса осциллографа в локальной сети.

TCP/6666 — Текстовый интерфейс, куда можно послать команды «KILL SOCKET:5555» и «KILL SOCKET:5566» — вызывает отключение всех клиентов по указанным портам. Внутреннее имя «socketControl».

Как можно заметить, никаких telnet/ssh нет.

Обновление ПО

Когда прибор обнаруживает вставленную usb-флешку (при запуске загрузчика или при вставке в процессе работы), он проверяет наличие файла с именем DS1000ZUpdate.GEL и, при его наличии, выдает сообщение пользователю. Далее происходит следующее:
1) Пользователь подтверждает обновление (или не подтверждает — тогда все заканчивается)
2) Прибор загружает файл в оперативную память (все несколько мегабайт), проверяет его корректность и переносит в системный раздел флеш-памяти.
3) Старые файлы стираются
4) Новые файлы распаковываются из GEL и записывается.

Прошивка пишется не в какой-то определенный адрес флеша, а как обычный файл на диск. Единственное исключение — прошивки с встроенным первичным загрузчиком. В этом случае образ загрузчика записывается в SPI NVRAM.
Первичный загрузчик находит прошивку только по имени. Если при обновлении возникла ошибка, есть шанс выжить — загрузчик умеет дораспаковывать GEL-файл, если не находит распакованной версии. Впрочем, лучше не проверять надежность этого алгоритма.
Возможности обновления по сети нет.
После завершения обновления нужно перезагрузить устройство. До перезагрузки можно работать как обычно.

Также в осциллографе есть скрытая функция — если в резервных секторах FAT32 на usb-флешке обнаруживается сектор со специальной сигнатурой, в прошивке раскрываются дополнительные возможности, позволяющие легко «окирпичить» осциллограф. Из полезных функций — возможность просмотреть системный раздел и возможность загрузить предыдущую версию прошивки. Механизм независим от обновлений (т.е. флешка может иметь прошивку и не иметь сигнатуры, иметь сигнатуру и не иметь прошивки и так далее..)

Запуск

Загрузка прибора производится в две стадии. Сначала в адрес 0x41000000 загружается относительно небольшой первичный загрузчик (сотни килобайт) из SPI nvram. Это штатная функция процессора. Загрузчик меняется достаточно редко, последнее его обновление вышло несколько лет назад. Является сильно урезанным вариантом основной прошивки, включает в себя только системные функции и файловые библиотеки. Сети нет. Основные функции — загружать основную прошивку в формате elf и обновлять ее с флешки.

После загрузки основного приложения SparrowAPP.out (стартовый адрес — 0x40000000, начало памяти), управление передается ему и первичный загрузчик более не используется. Приложение производит стандартную инициализация MQX (стеки, приоритеты и прочие моменты, одинаковые для всех приложений), потом запускается настройка самого прибора.
Упрощенная последовательность запуска:
1) Первичная инициализация (DMA, IO, …)
2) Монтируем /sys (3 повтора при ошибках)
3) Загружаем в память /sys/SparrowFPGA.hex — прошивка основной FPGA
4) Загружаем в память /sys/SparrowDGFPGA.hex — прошивка FPGA генератора
5) Загружаем основную FPGA (10 попыток)
6) Получаем ревизию платы
7) Если есть, загружаем FPGA генератора (10 попыток)
8) Загружаем /sys/guiResData.hex — картинки
9) Регистрируем модули, запускаем процессы.

Далее в приборе работает несколько независимых процессов, переключаемых по таймеру ядром. Есть системный процесс (обозванный framework), который ожидает сообщений в своей очереди сообщений и обрабатывает их, вызывая вспомогательные модули.

Ошибки в ПО и их устранение

Последняя официальная прошивка вышла примерно год назад. Сразу хочу отметить, что каких-то заметных проблемных мест в ней немного. Есть несколько опечаток в интерфейсе и командах, пара ошибок в обработчике протокола запросов, легкое несоответствие стандарта обмена через USB (но не в самом протоколе). И, разумеется, есть относительно много моментов, которые хоть и не являются ошибками, но интересны с точки зрения доработки и улучшения.

Что касается опечаток, то их исправление обычно не является сложным. К сожалению — не в этот раз. Фирма Rigol приложила определенные усилия, чтобы исправить прошивку было не просто. В файле прошивки имеется специальный фрагмент, содержимое которого специальным образом преобразуется и сверяется с прошивкой. Причем, можно менять все файлы, кроме исполняемого. Код, занимающийся этой проверкой в загрузчике, удалось найти довольно быстро, но он занимал чуть менее 10 килобайт. Понять, что делают 10 килобайт неизвестного кода (ничего похожего я не видел), выполняющего какие-то хитрые манипуляции со сверхдлинными целыми числами возможно, но… лень. Впрочем eevblog есть инициативная группа из пары людей, занимающаяся процессом анализа этого кода, которые обещают, что вот-вот решат проблему. В прошлом году близкого решения не было, и я решил поискать обходные пути. Если в горе сложно пробить туннель, то ее можно обойти. И только я начал анализировать, как именно проверяется прошивка, меня ждало удивительно открытие. Оказывается, сверяется только текстовая строчка версии прошивки и значение ее CRC32. Строчку версии менять вообще никакого резона нет, а подделать CRC — элементарная задача. Тем более, что проверяется контрольная сумма запакованного потока, к концу которого можно легко добавить 4 байта. Таким образом, и загрузчик был удовлетворен, и в образ (после распаковки) не нужно вносить изменений. Пожалуй, в этом весь Rigol — накрутить сложных алгоритмов, и оставить рядом потенциальную дыру. Что мешало воспользоваться каким-нибудь более-менее стойким алгоритм ЭЦП — совершенно непонятно.

Когда программа для разборки и сборки прошивки была готова, а пара известных опечаток устранены, встал вопрос — как устранять и отлаживать ошибки, чуть более сложные, чем опечатки? Все-таки, сам процесс загрузки новой прошивки занимает несколько минут и не совсем безопасен даже для оригинальной прошивки. И пусть даже зависание при загрузке можно устранить заливкой оригинальной прошивки через загрузчик, так работать неудобно.
Первоначально, я подумывал о внедрении своего относительно большого фрагмента кода с запуском дополнительной задачи, обслуживающей какой-нибудь порт UDP или TCP. Но подумав еще, я решил не плодить лишние сущности — есть ранее упомянутый порт 6000/UDP с практически нулевым функционалом, отвечающим на всего одну команду. К нему был дописан фрагмент, выполняющий три дополнительные команды:
1) читать блок памяти
2) писать двойное слово
3) вызвать подпрограмму
Плюс такого решения — пока нет пакетов на порт 6000, мое дополнение не запускается и мои потенциальные ошибки никак не приведут осциллограф к зависанию при запуске.

Все эти простые действия растянулись почти на полгода. На текущий момент имеется прошивка для DS1000Z и утилита к ней со следующим функционалом:
1) Возможность прочитать память осциллографа. Рекордов скорости нет, но сотни килобайт в секунду обеспечиваются. Т.е. скачать даже всю память осциллографа (в чем обычно нет никакой необходимости) можно менее чем за 10 минут. Прошивка из памяти (3.5 МБ) скачивается менее чем за 10 секунд.
2) Возможность записать память осциллографа. Тут несколько медленнее, но загружать больше десятка килобайт требуется редко, а это занимает секунды.
3) Возможность выполнить вызов функции с не более чем двумя параметрами и получить ответ

Эти три функции позволяют загружать небольшие программы в память осциллографа и выполнять их там.

Последовательность обычно следующая:
1) Вызвать функцию malloc прошивки для получения блока памяти под программу (адрес malloc мне известен).
2) Записать в выделенный блок программу. Т.к. блок выделен стандартным образом, не нужно беспокоиться, что кто-то его перетрет или он перетрет что-то
3) Запустить загруженную программу.
Для удобства, эта последовательность реализована в программе по отдельному ключу.

Далее есть два варианта:
— если программа простая/быстрая, то можно просто ее выполнить и вернуть управление обработчику, освободив память.
— если программа долгая или постоянно работающая, то можно запустить новую задачу, а после запуска вернуть управление обработчику (и не освобождать память).

Пока удалось устранить некоторые мелкие ошибки и перенести отлаженные исправления в прошивку. Но у меня вечно не хватает времени, поэтому результаты моих «исследований» выложены на eevblog в надежде, что коллективный разум будет быстрее.

Там лежит измененная прошивка, набор утилит, библиотека и примеры загружаемых модулей. Все (включая патч) в исходных текстах. Примеры модулей простенькие — мигания светодиодами.
Исключительно для шутки (как раз на 1 апреля) добавлен модуль, заставляющий осциллограф играть марш из Star Wars на встроенном динамике. Функциональность осциллографа при работе этого модуля полностью сохраняется. Переделка со старой досовской программы заняла всего минут 15.

Откомпилировать свой модуль несложного — достаточно иметь IAR, примеры модулей есть. Существенно больше времени требует разборки с «внутренними кишками» осциллографа. Но мое дело дать удочку — за рыбу я не в ответе.
На этом заканчиваю, т.к. более 150К букв не дают. К счастью.

На всякий случай, сама рыба:


Он не умер, просто любит стоять на голове.

  1. Manuals
  2. Brands
  3. Rigol Manuals
  4. Test Equipment
  5. DS1054Z

Manuals and User Guides for Rigol DS1054Z. We have 4 Rigol DS1054Z manuals available for free PDF download: User Manual, Programming Manual, Quick Manual

Rigol DS1054Z Programming Manual

Rigol DS1054Z Programming Manual (260 pages)

Digital Oscilloscope

Brand: Rigol
|
Category: Test Equipment
|
Size: 3.92 MB

Table of Contents
  • Guaranty and Declaration

    3

  • Document Overview

    4

    • Table of Contents

      5

  • Chapter 1 Programming Overview

    11

    • To Build Remote Communication

      12

    • Remote Control Methods

      14

    • SCPI Command Overview

      15

      • Syntax

        15

      • Symbol Description

        15

      • Parameter Type

        15

      • Command Abbreviation

        16

  • Chapter 2 Command System

    17

    • Autoscale

      18

    • Clear

      18

    • Run

      18

    • Stop

      18

    • Single

      19

    • Tforce

      19

    • Acquire Commands

      20

      • Acquire:averages

        20

      • Acquire:mdepth

        21

      • Acquire:type

        22

      • Acquire:srate

        23

    • Calibrate Commands

      24

      • Calibrate:quit

        24

      • Calibrate:start

        24

    • Channel<N> Commands

      25

      • Channel<N>:Bwlimit

        25

      • Channel<N>:Coupling

        26

      • Channel<N>:Display

        26

      • Channel<N>:Invert

        27

      • Channel<N>:Offset

        27

      • Channel<N>:Range

        28

      • Channel<N>:Tcal

        29

      • Channel<N>:Scale

        30

      • Channel<N>:Probe

        30

      • Channel<N>:Units

        31

      • Channel<N>:Vernier

        31

    • Cursor Commands

      32

      • Cursor:mode

        32

      • Cursor:manual

        33

      • Cursor:track

        40

      • Cursor:auto

        45

      • Cursor:xy

        49

    • Decoder Commands

      53

      • Decoder<N>:Mode

        53

      • Decoder<N>:Display

        54

      • Decoder<N>:Format

        54

      • Decoder<N>:Position

        55

      • Decoder<N>:Threshold:channel1

        56

      • Decoder<N>:Threshold:channel2

        56

      • Decoder<N>:Threshold:channel3

        56

      • Decoder<N>:Threshold:channel4

        56

      • Decoder<N>:Threshold:auto

        57

      • Decoder<N>:Config:label

        57

    • Decoder<N>:Config:line

      58

    • Decoder<N>:Config:format

      58

    • Decoder<N>:Config:endian

      59

    • Decoder<N>:Config:width

      59

    • Decoder<N>:Config:srate

      59

    • Decoder<N>:Uart

      60

    • Decoder<N>:IIC

      64

    • Decoder<N>:Spi

      66

    • Decoder<N>:Parallel

      72

    • Display Commands

      78

      • Display:clear

        78

      • Display:data

        79

      • Display:type

        80

      • Display:grading:time

        81

      • Display:wbrightness

        81

      • Display:grid

        82

      • Display:gbrightness

        82

    • Etable Commands

      83

      • Etable<N>:Disp

        83

      • Etable<N>:Format

        83

      • Etable<N>:View

        84

      • Etable<N>:Column

        84

      • Etable<N>:Row

        85

      • Etable<N>:Sort

        85

      • Etable<N>:Data

        86

    • Function Commands

      87

      • Function:wrecord:fend

        87

      • Function:wrecord:fmax

        88

      • Function:wrecord:finterval

        88

      • Function:wrecord:prompt

        88

      • Function:wrecord:operate

        89

      • Function:wrecord:enable

        89

      • Function:wreplay:fstart

        90

      • Function:wreplay:fend

        91

      • Function:wreplay:fmax

        91

      • Function:wreplay:finterval

        92

      • Function:wreplay:mode

        92

      • Function:wreplay:direction

        93

      • Function:wreplay:operate

        93

      • Function:wreplay:fcurrent

        94

    • IEEE488.2 Common Commands

      95

      • Cls

        95

      • Ese

        95

      • Esr

        96

      • Idn

        96

      • Opc

        96

      • Rst

        96

      • Sre

        97

      • Stb

        97

      • Tst

        97

      • Wai

        97

    • LA Commands

      98

      • La:active

        98

      • La:autosort

        99

      • La:digital<N>:Display

        99

      • La:digital<N>:Position

        100

      • La:digital<N>:Label

        100

      • La:display

        101

        • La:pod<N>:Display

          102

        • La:pod<N>:Threshold

          102

        • La:size

          103

        • La:state

          103

        • La:tcalibrate

          104

      • MATH Commands

        105

        • Math:display

          106

        • Math:operator

          106

        • Math:source1

          107

        • Math:source2

          108

        • Math:lsource1

          108

        • Math:lsource2

          109

        • Math:scale

          109

        • Math:offset

          110

        • Math:invert

          110

        • Math:reset

          111

        • Math:fft:source

          111

        • Math:fft:window

          111

        • Math:fft:split

          112

        • Math:fft:unit

          112

        • Math:fft:hscale

          113

        • Math:fft:hcenter

          114

        • Math:fft:mode

          114

        • Math:filter:type

          115

        • Math:filter:w1

          116

        • Math:filter:w2

          117

        • Math:option:start

          117

        • Math:option:end

          118

        • Math:option:invert

          118

        • Math:option:sensitivity

          119

        • Math:option:distance

          119

        • Math:option:ascale

          120

        • Math:option:threshold1

          120

        • Math:option:threshold2

          121

        • Math:option:fx:source1

          121

        • Math:option:fx:source2

          122

        • Math:option:fx:operator

          122

      • MASK Commands

        123

        • Mask:enable

          123

        • Mask:source

          124

        • Mask:operate

          124

        • Mask:mdisplay

          125

        • Mask:sooutput

          125

        • Mask:output

          126

        • Mask:X

          126

        • Mask:y

          126

        • Mask:create

          127

        • Mask:passed

          127

        • Mask:failed

          127

        • Mask:total

          127

        • Mask:reset

          127

      • Measure Commands

        128

        • Measure:source

          132

        • Measure:counter:source

          132

        • Measure:counter:value

          133

        • Measure:clear

          133

        • Measure:recover

          133

        • Measure:adisplay

          134

      • Measure:amsource

        134

      • Measure:setup:max

        135

      • Measure:setup:MID

        135

      • Measure:setup:min

        136

      • Measure:setup:psa

        136

      • Measure:setup:psb

        137

      • Measure:setup:dsa

        137

      • Measure:setup:dsb

        138

      • Measure:statistic:display

        138

      • Measure:statistic:mode

        139

      • Measure:statistic:reset

        139

      • Measure:statistic:item

        140

      • Measure:item

        141

    • Reference Commands

      142

      • Reference:display

        142

      • Reference<N>:Enable

        142

      • Reference<N>:Source

        143

      • Reference<N>:Vscale

        143

      • Reference<N>:Voffset

        144

      • Reference<N>:Reset

        144

      • Reference<N>:Current

        144

      • Reference<N>:Save

        145

      • Reference<N>:Color

        145

    • [:Source[<N>]] Commands

      146

      • [:Source[<N>]]:Output[<N>][:State]

        147

      • [:Source[<N>]]:Output[<N>]:Impedance

        147

      • [:Source[<N>]]:Frequency[:Fixed]

        148

      • [:Source[<N>]]:Phase[:Adjust]

        148

      • [:Source[<N>]]:Phase:initiate

        149

      • [:Source[<N>]]:Function[:Shape]

        149

      • [:Source[<N>]]:Function:ramp:symmetry

        150

      • [:Source[<N>]]:Voltage[:Level][:Immediate][:Amplitude]

        150

      • [:Source[<N>]]:Voltage[:Level][:Immediate]:Offset

        151

      • [:Source[<N>]]:Pulse:dcycle

        151

      • [:Source[<N>]]:Mod[:State]

        152

      • [:Source[<N>]]:Mod:type

        152

      • [:Source[<N>]]:Mod:am[:Depth]

        153

      • [:Source[<N>]]:Mod:am:internal:frequency

        153

      • [:Source[<N>]]:Mod:fm:internal:frequency

        153

      • [:Source[<N>]]:Mod:am:internal:function

        154

      • [:Source[<N>]]:Mod:fm:internal:function

        154

      • [:Source[<N>]]:Mod:fm[:Deviation]

        155

      • [:Source[<N>]]:Apply

        155

      • [:Source[<N>]]:Apply:noise

        156

      • [:Source[<N>]]:Apply:pulse

        156

      • [:Source[<N>]]:Apply:ramp

        156

      • [:Source[<N>]]:Apply:sinusoid

        156

      • [:Source[<N>]]:Apply:square

        156

      • [:Source[<N>]]:Apply:user

        156

    • Storage Commands

      158

      • Storage:image:type

        158

      • Storage:image:invert

        158

      • Storage:image:color

        159

    • System Commands

      160

      • System:autoscale

        160

      • System:beeper

        161

      • System:error[:Next]

        161

      • System:gam

        161

        • System:language

          161

        • System:locked

          162

        • System:pon

          162

        • System:option:install

          162

        • System:option:uninstall

          163

        • System:ram

          163

        • System:setup

          163

      • [:Trace[<N>]] Commands

        164

        • [:Trace[<N>]]:Data

          164

        • [:Trace[<N>]]:Data:dac16

          165

        • [:Trace[<N>]]:Data:dac

          166

        • [:Trace[<N>]]:Data:points

          167

        • [:Trace[<N>]]:Data:points:interpolate

          167

        • [:Trace[<N>]]:Data:value

          168

        • [:Trace[<N>]]:Data:load

          168

      • Timebase Commands

        169

        • Timebase:delay:enable

          169

        • Timebase:delay:offset

          170

        • Timebase:delay:scale

          171

        • Timebase[:Main]:Offset

          172

        • Timebase[:Main]:Scale

          173

        • Timebase:mode

          173

      • Trigger Commands

        174

        • Trigger:mode

          174

        • Trigger:coupling

          175

        • Trigger:status

          175

        • Trigger:sweep

          175

        • Trigger:holdoff

          176

        • Trigger:nreject

          176

        • Trigger:position

          177

        • Trigger:edge

          178

        • Trigger:pulse

          180

        • Trigger:slope

          184

        • Trigger:video

          189

        • Trigger:pattern

          192

        • Trigger:duration

          195

        • Trigger:timeout

          199

        • Trigger:runt

          201

        • Trigger:windows

          205

        • Trigger:delay

          208

        • Trigger:shold

          212

        • Trigger:nedge

          215

        • Trigger:rs232

          217

        • Trigger:IIC

          222

        • Trigger:spi

          226

      • Waveform Commands

        232

        • Waveform:source

          233

        • Waveform:mode

          234

        • Waveform:format

          234

        • Waveform:data

          235

        • Waveform:xincrement

          238

        • Waveform:xorigin

          238

        • Waveform:xreference

          239

        • Waveform:yincrement

          239

        • Waveform:yorigin

          239

        • Waveform:yreference

          240

        • Waveform:start

          240

        • Waveform:stop

          241

      • Waveform:preamble

        242

  • Chapter 3 Programming Demos

    243

    • Programming Preparations

      244

    • Excel Programming Demo

      245

    • Matlab Programming Demo

      249

    • Labview Programming Demo

      251

    • Visual Basic Programming Demo

      255

    • Visual C++ Programming Demo

      257

Advertisement

Rigol DS1054Z User Manual

Rigol DS1054Z User Manual (268 pages)

Digital

Brand: Rigol
|
Category: Test Equipment
|
Size: 4.34 MB

Table of Contents
  • Safety Requirement

    4

    • General Safety Summary

      4

    • Safety Notices and Symbols

      6

    • Allgemeine Sicherheits Informationen

      7

    • Sicherheits Begriffe und Symbole

      9

    • Measurement Category

      10

    • Ventilation Requirement

      11

    • Working Environment

      12

    • Care and Cleaning

      14

    • Environmental Considerations

      14

  • MSO1000Z/DS1000Z Series Overview

    16

  • Document Overview

    18

    • Table of Contents

      21

  • Chapter 1 Quick Start

    27

    • General Inspection

      28

    • Appearance and Dimensions

      29

    • To Prepare the Oscilloscope for Use

      30

      • To Adjust the Supporting Legs

        30

      • To Connect to Power Supply

        30

      • Power-On Inspection

        31

      • To Connect the Probe

        31

      • Function Inspection

        33

      • Probe Compensation

        34

    • Front Panel Overview

      35

    • Rear Panel Overview

      36

    • Front Panel Function Overview

      38

      • Vertical

        38

      • Logic Analyzer

        39

      • Signal Source

        39

      • Horizontal

        40

      • Trigger

        41

      • Clear

        41

      • Auto

        41

      • Run/Stop

        42

      • Single

        42

      • Multifunction Knob

        42

      • Function Menus

        43

      • Print

        44

    • User Interface

      45

    • Parameter Setting Method

      50

    • To Use the Security Lock

      51

    • To Use the Built-In Help System

      52

  • Chapter 2 To Set the Vertical System

    53

    • To Enable the Analog Channel

      54

    • Channel Coupling

      54

    • Bandwidth Limit

      55

    • Probe Ratio

      55

    • Waveform Invert

      56

    • Vertical Scale

      56

    • Amplitude Unit

      57

    • Channel Label

      57

    • Delay Calibration of the Analog Channel

      59

  • Chapter 3 To Set the Horizontal System

    61

    • Delayed Sweep

      62

    • Time Base Mode

      63

      • YT Mode

        63

      • XY Mode

        63

      • Roll Mode

        65

  • Chapter 4 To Set the Sample System

    67

    • Acquisition Mode

      68

      • Normal

        68

      • Peak Detect

        68

      • Average

        68

      • High Resolution

        69

    • Sin(X)/X

      70

    • Sample Rate

      70

    • Memory Depth

      72

    • Antialiasing

      73

  • Chapter 5 To Trigger the Oscilloscope

    75

    • Trigger Source

      76

    • Trigger Mode

      77

    • Trigger Coupling

      78

    • Trigger Holdoff

      79

    • Noise Rejection

      79

    • Trigger Type

      80

      • Edge Trigger

        81

      • Pulse Trigger

        82

      • Slope Trigger

        84

      • Time Setting

        85

      • Video Trigger

        87

      • Pattern Trigger

        89

      • Duration Trigger

        91

      • Timeout Trigger (Optional)

        93

      • Runt Trigger (Optional)

        95

      • Window Trigger (Optional)

        97

      • Delay Trigger (Optional)

        99

      • Setup/Hold Trigger (Optional)

        102

      • Nth Edge Trigger (Optional)

        104

      • RS232 Trigger (Optional)

        106

      • I2C Trigger (Optional)

        108

      • SPI Trigger (Optional)

        111

    • Trigger Output Connector

      113

  • Chapter 6 MATH and Measurement

    115

    • Math Operation

      116

      • Addition

        116

      • Subtraction

        117

      • Multiplication

        118

      • Division

        118

      • Fft

        120

      • AND» Operation

        125

      • OR» Operation

        126

      • XOR» Operation

        127

      • NOT» Operation

        128

      • Intg

        129

      • Diff

        130

      • Sqrt

        131

      • Lg (Use 10 as the Base)

        131

      • Exp

        133

      • Abs

        134

      • Filter

        135

      • Fx Operation

        136

      • Math Operation Label

        137

    • Auto Measurement

      138

      • Quick Measurement after AUTO

        138

      • One-Key Measurement of 37 Parameters

        139

      • Other Parameters

        144

      • Frequency Counter Measurement

        145

      • Measurement Setting

        145

      • To Clear the Measurement

        146

      • All Measurement

        148

      • Statistic Function

        148

      • Measurement History

        149

      • Measurement Result Display Type

        149

    • Cursor Measurement

      150

      • Manual Mode

        150

      • Track Mode

        154

      • Auto Mode

        156

      • XY Mode

        157

  • Chapter 7 Digital Channel

    161

    • To Select the Digital Channel

      162

    • To Turn On/Off the Digital Channel

      162

    • Group Set

      163

    • To Set the Waveform Display Size

      164

    • Reorder Setting

      164

    • Auto View

      164

    • To Set the Threshold

      164

    • To Set the Label

      165

    • Probe Calibration

      165

    • Digital Channel Delay Calibration

      165

  • Chapter 8 Protocol Decoding

    167

    • Parallel Decoding

      168

    • RS232 Decoding (Optional)

      173

    • I2C Decoding (Optional)

      178

    • SPI Decoding (Optional)

      181

  • Chapter 9 Reference Waveform

    185

    • To Enable REF Function

      186

    • To Select REF Source

      186

    • To Adjust REF Waveform Display

      186

    • To Save to Internal Memory

      186

    • To Set the Color

      187

    • To Reset the Reference Waveform

      187

    • To Export to Internal or External Memory

      187

    • To Import from Internal or External Memory

      187

  • Chapter 10 Pass/Fail Test

    189

    • To Enable Pass/Fail Test

      190

    • To Select Source

      190

    • Mask Range

      190

    • Test and Output

      191

    • To Save the Test Mask

      192

    • To Load the Test Mask

      192

  • Chapter 11 Waveform Record

    193

    • Common Settings

      194

    • Playback Option

      195

    • Record Option

      196

  • Chapter 12 Display Control

    197

    • To Select the Display Type

      198

    • To Set the Persistence Time

      198

    • To Set the Waveform Intensity

      199

    • To Set the Screen Grid

      199

    • To Set the Grid Brightness

      199

  • Chapter 13 Signal Source

    201

    • To Output Basic Waveform

      202

      • To Output Sine

        202

      • To Output Square

        203

      • To Output Ramp

        204

      • To Output Pulse

        205

      • To Output DC

        205

      • To Output Noise

        206

    • To Output Built-In Waveform

      206

    • To Output Arbitrary Waveform

      210

      • To Select Waveform

        211

      • To Create Waveform

        212

      • To Edit Waveform

        214

    • Modulation

      215

  • Chapter 14 Store and Recall

    219

    • Storage System

      220

    • Storage Type

      220

    • Internal Storage and Recall

      223

    • External Storage and Recall

      224

    • Disk Management

      225

      • To Select File Type

        225

      • To Create a New File or Folder

        226

      • To Delete a File or Folder

        229

      • To Rename a File or Folder

        229

      • To Clear the Local Memory

        229

    • Factory

      230

  • Chapter 15 Accessibility Setting

    237

    • Remote Interface Configuration

      238

      • LAN Configuration

        238

      • USB Device

        241

    • System-Related

      242

      • Sound

        242

      • Language

        242

      • System Information

        242

      • Vertical Reference

        242

      • Power-Off Recall

        243

      • Self-Calibration

        243

      • Print Setting

        244

      • Aux Output

        246

      • Option Management

        247

      • Auto Options

        248

  • Chapter 16 Remote Control

    249

    • Remote Control Via USB

      250

    • Remote Control Via LAN

      254

  • Chapter 17 Troubleshooting

    255

  • Chapter 18 Specifications

    257

    • General Specifications

      264

    • Calibration Interval

      264

  • Chapter 19 Appendix

    265

    • Appendix A: Accessories and Options

      265

    • Appendix B: Warranty

      266

  • Index

    267

Rigol DS1054Z Quick Manual

Rigol DS1054Z Quick Manual (38 pages)

Digital Oscilloscope

Brand: Rigol
|
Category: Test Equipment
|
Size: 1.29 MB

Table of Contents
  • Safety Requirement

    4

    • Safety Terms and Symbols

      6

    • Allgemeine Sicherheits Informationen

      7

    • Sicherheits Begriffe und Symbole

      9

    • Measurement Category

      10

    • Ventilation Requirement

      10

    • Working Environment

      11

    • General Care and Cleaning

      12

    • Environmental Considerations

      12

  • Document Overview

    13

    • Table of Contents

      14

  • Quick Start

    15

    • General Inspection

      15

    • Appearance and Dimensions

      16

    • To Prepare for Operation

      17

      • To Adjust the Supporting Legs

        17

      • To Connect to AC Power Supply

        17

      • Power-On Inspection

        18

      • To Connect the Probe

        18

      • Function Inspection

        20

      • Probe Compensation

        21

    • Front Panel Overview

      22

    • Rear Panel Overview

      23

    • Front Panel Function Overview

      25

      • Vertical

        25

      • Logic Analyzer

        26

      • Signal Source

        26

      • Horizontal

        27

      • Trigger

        27

      • Clear

        28

      • Auto

        28

      • Run/Stop

        28

      • Single

        28

      • Multifunction Knob

        29

      • Function Menus

        29

      • Print

        30

    • User Interface

      31

    • Parameter Setting Method

      35

    • To Use the Security Lock

      35

    • To Use the Built-In Help System

      36

  • Troubleshooting

    37

Advertisement

Rigol DS1054Z User Manual

Rigol DS1054Z User Manual (42 pages)

High Voltage Differential Probe

Brand: Rigol
|
Category: Measuring Instruments
|
Size: 0.49 MB

Table of Contents
  • 汉语

    7

    • 一般安全概要

      4

    • 安全术语和符号

      6

      • Table of Contents

        7

    • Rp1000D 系列高压差分探头简介

      9

    • 基本操作

      12

    • 清洁与保养

      13

    • 保修概要

      13

    • 技术参数

      14

    • 操作环境

      17

    • 一般技术规格

      17

    • Guaranty and Declaration

      23

    • General Safety Summary

      24

    • Safety Terms and Symbols

      26

  • English

    27

    • RP1000D Overview

      29

    • Basic Operations

      33

    • Cleaning and General Care

      35

    • Warranty

      35

    • Specifications

      36

    • Technical Specifications

      36

    • General Specifications

      39

    • Operation Environment

      39

    • Accessories

      40

Advertisement

Related Products

  • Rigol DS1052E

  • Rigol DS1052D

  • Rigol DS1054

  • Rigol DS1000E series

  • Rigol DS1000MD

  • Rigol DS1064B

  • Rigol DS1062/4B

  • Rigol DS1062CD

  • Rigol DS1042M

  • Rigol DS1022CD

Rigol Categories

Test Equipment

Measuring Instruments

Power Supply
Power Supply

Inverter

Portable Generator

More Rigol Manuals

Здесь записываются основные действия, которые можно делать с оциллографом Rigol

Остановка осциллограммы (мгновенный снимок сигнала)

Одна из самых востребованных кнопок на осциллографе Rigol — это кнопка RUN/STOP, с помощью которой можно захватывать мгновенные снимки осциллограммы. Нажатие на эту кнопку приводит к тому, что кнопка подсвечивается красным светом, информируя о том, что осциллограф стоит на «паузе», при этом на экране отображается именно то состояние сигнала, которое было в момент нажатия кнопки.

Повторное нажатие кнопки RUN/STOP возвращает осциллограф в обычный режим замера, при этом кнопка приобретает зеленую подсветку.

Очень часто, вместо того, чтобы настраивать хитрые режимы замера по срабатыванию триггера, чтобы поймать какой-то ключевой моомент в осциллограмме, достаточно просто несколько раз попытаться «остановить» осциллограмму кнопкой RUN/STOP. Есть очень большая вероятность того, что нужная часть осциллограммы окажется на экране. Этот режим просмотра очень актуален в случаях, если исследуемое событие повторяется часто, но не со строго постоянной периодичностью (то есть, когда режим AUTO сработать не может).

Настройка режима срабатывания триггера измерения (синхронизация измерений)

В правом верхнем углу отображается текущий режим триггера. На картинке ниже видна желтая иконка срабатывания триггера по фронту сигнала и порог срабатывания 0В.

Если необходимо эти параметры изменить то в самой правой секции панели управления (секция TRIGGER) надо нажать кнопку MENU. Будут доступны следующие настройки:

  • Type — это тип алгоритма, по которому будет идти синхронизация. Edge — это синхронизация по фронту сигнала.
  • Source — выбор источника сигнала. Обычно должен быть выбран канал оциллографа
  • Slope — направление перепада сигнала — сверху-вниз или снизу-вверх, или в любую сторону

Как изменить порог срабатывания, значение которого написано в самом правом верхнем углу желтым цветом? Это делается просто вращением ручки LEVEL в секции панели управления TRIGGER. Никаких режимов настройки выбирать не нужно.

Как ловить единичные сигналы

Бывает, что нужно поймать какой-нибудь единичный сигнал, который испускается неравномерно. Например в каком-либо устройстве, при нажатии кнопки Сброс, по какой-либо линии испускается короткий сигнал. Надо его увидеть и определить его длинну. Как это сделать?

  • Во-первых, надо перевести режим замера в режим Peak (Кнопка Acquire, пункт меню Mode).
  • Далее щупом осциллографа дотронуться до линии, на которой надо поймать сигнал.
  • Далее нажать кнопку Single.
  • Нажать на устройстве кнопку Сброс.
  • Сигнал должен отловиться и должен быть показан на экране.

Если все сделано правильно, кнопка RUN/STOP загорится красным цветом. Это свидетельствует о том, что осциллограф находится в режиме «остановки», то есть он остановился и показывает замеренный сигнал.

Выйти из режима «остановки» можно кнопкой RUN/STOP. При ее нажатии цвет этой кнопки сменится с красного на зеленый, и осциллограф перейдет в обычный режим измерений.

Перед проведением замера сигнала рекомендуется выставить осциллограф так, чтобы он мог показать единичный сигнал на экране. То есть, вертикальную развертку надо выставить из предположения уровня сигнала, горизонтальную развертку из предположения о длительности сигнала. Если, например, выставить горизонтальную развертку на короткий временной промежуток, а сигнал окажется длиннее, то увидеть задний фронт сигнала не получится. Осциллограф «фиксирует» только то, что есть на экране.

Если же нужно разобраться с сигналом или последовательностью импульсов на длительном промежутке времени, надо воспользоваться режимами записи измерений.

Приветствую тебя читатель муськи. Хоть раньше народ не особо любил обзоры «ощутимых для бюджета» покупок, а теперь так вообще стрёмно обзор писать того гляди и заминусят с криками «Сколько? ты что мне на хлеб не хватает.С теперешним курсом это хреновая покупка и бла бла бла.Но чего не сделаешь ради

плюсов

читателей муськи.Обзоры безделушек приелись надо добавить чегонибудь необычного, К чему это я ))) в общем добро пожаловать под cut.
Обзор будет легкий я постараюсь не загружать излишней информацией.Фото будут и реальные и с сайтов, сам я не фотограф да и если мой фотоаппарат положить на раковину, то он вполне естественно на ней смотрится.

Первое что вы спросите почему не с Китая? Сам в шоке просматривал все варианты доставка одинаковая везде примерно, а на момент покупки в Китае за него 420 просили.

Я брал EMS пришло быстро, упаковка вообще бросает вызов почтовым службам: Плотная фирменная коробка, в ней ещё одна коробка плотно сидит, а в этой

матрёшке

коробке герой обзора.

Комплектация

Цифровой осциллограф RIGOL DS1054Z (1 шт.)
Кабель питания (1 шт.)
Пассивные щупы (4 шт.)
Кабель USB (1 шт.)
Краткое руководство пользователя (1 шт.)
CD (Программное обеспечение и руководство пользователя) (1 шт.)
+Куча различных бумажеки бонус в виде безделушексо стикерами ясно, порадовала открывашка в виде токовых клещей, а вот щётка озадачила, я не понимаю для чего она. (+ в карму авторам самых интересных версии применения)

В комплекте 4 щупа про щупы особо сказать нечего на X10 заявлено 150 МГц, Длинна примерно 1,5м.Единственное колпачки с крючками очен свободно одеваются и сваливаются почти постоянно делая применение крюков малонадёжным + что бы разжать крокодилы надо поднапрячься.
Перед началом работы проверяется индикация и идёт загрузкаПосле включения видим на экране окно говорящее о времени действия триальных фишек. В начале доступны все возможные функции, а далее

после того как подсели на возможности

надо покупать ключи, но есть фишка о которой чуть позже.
Вид шикарен нет намёка на китайщину.

Внешний вид

На тыльной стороне стандартный разъём для шнура питания, есть USB и LAN.Это выход который может применяться при режиме контроля сигнала (можно записать маску сигнала и если сигнал не будет соответствовать осциллограф „свистнет“.

У осциллографа фигова туча функций и измеренийНо для начала взглянем на заявленные характеристики.

Технические характеристики

Полоса пропускания 50 МГц (Но есть фишка)
Каналы 4 (нет входа синхронизации)
Частота дискретизации в реальном времени 1,0 Гвыб/с
Глубина памяти 12 МБ, 24 МБ (опц. ) (Но есть фишка)
Запись осциллограмм 30 000 осциллограмм/сек
Диапазон вертикальной чувствительности 1 мВ/дел – 10 В/дел
Диапазон смещения 1 мВ/дел — 499 мВ/дел: ± 2 В
500 мВ/дел — 10 В/дел: ± 100 В
Вертикальное разрешение 8 бит

Математические функции сложение, вычитание, умножение,
быстрое преобразование Фурье,
возможность настройки пользователем

Мощность 50 Вт (макс.)
Напряжение 100-120 В/50 Гц/60 Гц/400 Гц
100-240 В/50 Гц/60 Гц
Метод охлаждения активное
Дисплей 7-дюймовый цветной ЖК (800×480)
Вес 3,8 кг (± 0,2 кг)
Размеры 313,1 × 160,8 × 122,4 мм

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

У осциллографа куча тригеровОпционально есть расшифровка I2C,RS232,SPI,Parallel.Есть измерения и статистика
Кстати он отображает осциллограммы как аналоговый осциллограф (Оригинальная инновационная технология UltraVision отображение сигнала выполняется с изменяемой яркостью в зависимости от интенсивности сигнала.) Т.е. предыдущий рисунок это не „глюк такой“ а изображение нестабильного сигнала.Может строить глазковые диаграммы (есть и XY) и даже такие „красивости“ (верхняя 1кГц с генератора калибровки щупов, ниже нестабильный сигнал в 1МГц Есть куча математических функцийА ещё есть режим „Ну что тебе жалко что-ли“WTF спросите вы? Есть фишка.

Фишка

DS1000Z серии это бюджетные версии и разработка каждой отдельной модели в серии не выгодна, поэтому разработчики разработали одну платформу (по сути самую старшую модель, а далее просто урезают программно возможности(Хорошо видно на включении, что на местах кнопок присутствующих в более дорогих моделях на плате моего осциллографа есть 2 светодиода).Это значит что DS1054Z = DS1074Z = DS1104Z просто есть селектор выбирающий полосу пропускания, вот только 1054 стоит 399$, а 1104 -830$.Уже попахивает халявой. Rigol чётко продумали это дело и за ключи можно получить более старшую модель не покупать новый прибор к которому привык, а разблокировать все возможности старого.Возможно это такой вид демпинга, веть это очень привлекает получить более дорогое за более низкую цену (естественно хитрые радиолюбители крэкнут это дело), да привлечь организации так нельзя, но можно подсадить разработчиков или студентов так сказать приучить к своей продукции и получить пользователей более дорогих продуктов в будующем.В общем я нашёл крэк и поимел себе осциллограф ценой 830$ за цену 399$
Крэк gotroot.ca/rigol/riglol/ (крэки живут не долго, я сначала крэк нашёл, а потом заказ делал, но по приходу посылки сайт уже лежал пришлось искать новый.)

Настало время заглянуть в недра.

Расчленёнка

Сам я делать её не буду т.к. потеряю гарантию, одноко есть очень годное и кошерное видео.(Советую посмотреть после прочтения обзора)
Приятного просмотра

Плюсы
Технология UltraVision.
4 канала.
Глубина памяти: 24М на все каналы.
Куча функций.
Цена (особенно если крекнуть его).
7 дюймовый отличный дисплей.
USB.
Возможность прокачки простым введением ключа.
Минусы
Плоховатые щупы.
Некоторые элементы управления не сильно удобны.
Есть не критические баги (но это норма т.к. это очень сложный прибор, а цена его не велика).
Ну и охлаждение установлен не самый тихий вентилятор.

Вывод: Данный осциллограф явно хит, что говорить его не так просто купить мне пришлось предзаказ делать.При его цене он даёт невероятное количество возможностей.Если его крэкнуть, то это вообще почти подарок за такие деньги.Если у вас до этого был DSO203 (а у меня был) и вы с него „вырастите“ то данная модель стоит внимания.К покупке при наличии необходимости в хорошем и качественном осциллографе рекомендую.

Так-же рекомендую новичкам (если вы уверены что ваше хобби не баловство на 2-3 месяца и вы не бросите всё) т.к. купив скажем DSO203 вы можете поиметь ситуацию когда имеющийся осциллограф слабоват, а новый брать как-то денег жалко и не потому что курс фиговый, а потому что один уже есть.

Задавайте вопросы и я отвечу (естественно как доберусь до компа)

Обзор осциллографа Rigol DS1104Z-S 2х часовое видео

В плане идеи осциллограф является достаточно простым устройством. Осциллограф измеряет напряжение, часто сразу в нескольких точках цепи, и отображает результаты измерений в виде графиков. То есть, это что-то вроде очень навороченного вольтметра. Это что касается идеи, а вот внутреннее устройство осциллографа намного сложнее. В сущности, современные осциллографы являются специализированными компьютерами, и цены на них соответствующие. На сегодняшний день оптимальным в плане отношения цена / качество осциллографом начального уровня является Rigol DS1054Z.

Об осциллографе

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

Цена за Rigol DS1054Z колеблется в районе 400-450$, в зависимости от страны и магазина. Не такие уж маленькие деньги, но тут работает правило «скупой платит дважды». Если вообще брать осциллограф, то лучше сразу взять нормальный, который подойдет вам для большинства практических задач и прослужит много лет, чем взять подешевле, а затем все равно заплатить за DS1054Z.

Итак, основные характеристики Rigol DS1054Z:

  • Экран: цветной, 7″, 800x400;
  • Количество каналов: 4;
  • Полоса пропускания: 50 МГц, можно «разогнать» до 100 МГц;
  • Частота дискретизации: 1 GS/s;
  • Объем памяти: 24 млн точек;
  • Вертикальное разрешение: 8 бит;

Плюс к этому осциллограф обладает множеством интересных софтверных фичей — измерение максимума, минимума, peak-to-peak, частоты, скважности сигнала и так далее, математические операции над сигналами, декодирование RS-232, I2C и SPI, снятие скриншотов с сохранением на флешку, возможность печати на принтере, подключения к Ethernet-сети, и так далее.

Полоса пропускания — это такая частота входного сигнала, при которой осциллограф покажет не менее 0.707 от настоящей амплитуды сигнала (аттенюация ≤ 3 дБ). Если полоса пропускания осциллографа составляет, к примеру, 100 МГц, он все равно покажет вам сигнал с частотой 200 МГц, и даже 500 МГц, но амплитуда сигнала будет существенно меньше настоящей. Кроме того, если сигнал не является синусоидным, он может быть существенно искажен из-за аттенюации гармоник.

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

Здорово, конечно, но пока что все это выглядит больно похоже на четыре вольтметра в одном корпусе :) Так зачем же осциллограф может потребоваться на практике, и что он может такого, чего не может вольтметр? Чтобы ответить на эти вопросы, проведем несколько более-менее практических опытов.

Эксперимент 1. Определяем индуктивность катушки

Рассмотрим следующий сигнал:

Осциллограф Rigol DS1054Z и сигнал затухающих колебаний в LC-контуре

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

Собранный LC-контур

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

Емкость конденсатора обычно известна, во-первых, потому что на нем есть маркировка, а во-вторых, потому что функция измерения емкости конденсатора есть во многих мультиметрах. Осциллограф же оказался достаточно умным, чтобы автоматически определить период и частоту колебаний в контуре. На фото не особо видно, но они подписаны желтым цветом под сигналом. Период и частота составили 19.2 мкс и 52.1 КГц соответственно.

Зная емкость конденсатора и частоту колебаний, можно по формуле Томсона определить индуктивность катушки:

>>> from math import pow, pi
>>> # частота колебаний — 52.1 КГц
>>> f = 52.1 * pow(10, 3)
>>> # емкость конденсатора, согласно мультиметру — 94.3 нФ
>>> C = 94.3 * pow(10, -9)
>>> # вычисляем индуктивность через формулу Томсона
>>> L = 1 / (4 * pow(pi, 2) * pow(f, 2) * C)
>>> # индуктивность катушки в мкГн
>>> L * pow(10, 6)
98.95850461540098

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

Итак, если у вас есть осциллограф, RLC-метр можно не покупать. Все необходимое для измерения индуктивности катушек у вас уже есть.

Эксперимент 2. Наблюдение за колебательными процессами

Раз уж заговорили о колебаниях, вот еще пара примеров. С помощью осциллографа можно посмотреть, как именно меняется напряжение на светодиодах в мультивибраторе:

Сигнал мультивибратора на осциллографе

На следующем же скриншоте изображены прямоугольный сигнал от таймера 555:

Сигнал от таймера 555 на осциллографе

Горизонтальные и вертикальные линии, которые вы видите, называются курсорами. Их можно перемещать при помощи элементов управления осциллографа для измерения интересных свойств сигнала.

Эксперимент 3. Сравниваем шумы регуляторов напряжения

Говорят, что импульсные регуляторы напряжения имеют больший шум, чем линейные. Но насколько эта разница велика и имеет ли она значение на практике? Давайте выясним!

Шумы от линейного регулятора LM7805, который упоминался в заметке Интегральные схемы: чипы стандартной логики 74xx, выглядят следующим образом:

Шум от линейного регулятора на осциллографе

Сравним его с импульсным регулятором LM2596, шум от которого выглядит так:

Шум от линейного регулятора на осциллографе

Для чистоты эксперимента в качестве источника питания в обоих случаях использовалась одна и та же батарейка крона. Как видите, шум у импульсного регулятора действительно оказался больше, +/- 0.065 В против +/- 0.04 В у линейного регулятора. Однако я не думаю, что это имеет большое значение на практике.

Заключение

Само собой разумеется, применений осциллографу можно найти куда больше, чем определение индуктивности катушек и увлеченное наблюдение за таймерами 555. Выше была приведена лишь пара примеров, первых пришедших мне в голову. На практике же все ограничивается только вашими потребностями и фантазией. Вообще, лично мне нравится думать об осциллографе, как о GDB для железа. Быть может, с его помощью я наконец-то перестану панически бояться чисто аналоговых схем — всяких там генераторов, фильтров, и вот этого всего.

Несколько видео по теме:

  • Что находится внутри осциллографа Rigol DS1054Z;
  • Как за две минуты «разогнать» DS1054Z до возможностей DS1104Z;
  • Подробное видео по начальной настройке и использованию DS1104Z;

А есть ли у вас осциллограф и если да, то какой, и какие задачи с его помощью вы решаете?

Дополнение: Если вам понравилась заметка об осциллографе, вас могут заинтересовать статьи про Sigrok и логический анализатор DSLogic, анализатор спектра Rigol DSA815-TG, а также генератор сигналов и частотомер Rigol DG4162.

Метки: Девайсы, Электроника.

Понравилась статья? Поделить с друзьями:
  • Rigga ригга напольная вешалка инструкция по сборке
  • Riflescope 4x32 инструкция на русском
  • Rifaximini 200 mg инструкция по применению цена
  • Riello ups инструкция на русском
  • Riello 5000 инструкция на русском