Рис. 1 — КДПВ
Рис. 1 — КДПВ

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

Предисловие

Для передачи электрического сигнала достаточно двух проводников, по которым электрический ток потечет в одном и, соответственно, противоположном направлениях. Электрически коаксиальный кабель (англ. coax, coaxial cable) [W1] представляет собой, как раз, два таких проводника, которыми конструктивно являются его центральная жила и экран вокруг разделяющего их изолятора. Такой вид кабеля, особенно в микроминиатюрном исполнении с оконцовкой типа U.FL [W2], оказывается очень удобным при взаимодействии на небольших, коротеньких расстояниях порядка 10…20 см, иными словами, на расстоянии ручки (англ. pen), карандаша (англ. pencil), щупа осциллографа (англ. probe), и т. д., что и дает неформальное название всем таким примерам — связь на расстоянии ручки-карандаша-щупа (англ. pen-reach communication, PRC), см. рис. 1 выше.

Таким образом, ОКК, или однокоаксиальная консоль (англ. one-coax console, OCC), о поиске решения для которой далее и пойдет речь, представляет собой одно из практических приложений PRC в области встраиваемых вычислительных систем, где для разработки, настройки и отладки ПО изделия требуется простое, дешевое соединение для преимущественно текстового обмена данными. ОКК, как правило, не используется во время работы изделия. Кроме того, конструкция ОКК предполагает, что простым и дешевым должно оставаться лишь ее исполнение на стороне тиражируемого, серийного изделия, в то время как адаптер на обратной стороне может быть сколь угодно сложным и дорогим, т. к. изготавливается в единичных количествах.

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

Подход первый = USB минус один провод

Шина USB [U1, U2], как подходящий способ связи, привлекла внимание первой, т. к., во-первых, широко распространена и, во-вторых, «из коробки» позволяет получить решение с раздельными, т. е. несмешивающимися или различимыми (англ. distinguishable), потоками ввода-вывода, см. рис. 2.

Рис. 2 — Процесс, потоки и дескрипторы потоков ввода-вывода
Рис. 2 — Процесс, потоки и дескрипторы потоков ввода-вывода

На практике очень удобно иметь раздельные потоки ввода-вывода, где данные каждого потока (англ. stream), отличающегося своим уникальным числовым дескриптором (англ. handle), не смешиваются между собой. Также удобно, когда кроме трех стандартных потоков StdIn, StdOut, StdErr (дескрипторы 0, 1, 2, соответственно) [W3], доступны и дополнительные, например, StdPrn/DosPrn (4) и StdAux/DosAux (3), менее стандартные [W4, w4]. Назначение раздельных потоков, как правило, традиционное. Например, если в StdErr процесс пишет ошибки как на «экран ЭВМ», т. е. более новые данные вытесняют более старые, то в StdPrn сообщения пишутся как на, соответственно, «принтер», т. е. никакие данные не теряются до тех пор, пока «есть бумага». И т. д.

Поиск решения на базе USB велся перебором пар доступных ИМС оконечных (USB device) и корневых (USB host) или промежуточных (USB hub) устройств, работающих в низкоскоростном (англ. low speed, LS) или полноскоростном (англ. full speed, FS) режимах, с подбором параметров обвязки, см. рис. 3 ниже, исходя из некоторых ожиданий, см. рис. 4 (скрыт), а также довольно оптимистичного допущения, см. рис. 5 (скрыт), что вдруг существует ИМС, детектирующая конец пакета в режимах LS/FS как в высокоскоростном (англ. high speed, HS) режиме, чего, конечно же, не произошло.

Рис. 3 — Эксперимент по однопроводному подключению USB в режимах LS/FS
Рис. 3 — Эксперимент по однопроводному подключению USB в режимах LS/FS
Нормативные «основания» поиска — рис. рис. 4 и 5 (скрыты).
Рис. 4 — Сигнальные уровни USB 1.1 в режимах LS/FS [U1, табл. 7.1; U2, табл. 7.2]
Рис. 4 — Сигнальные уровни USB 1.1 в режимах LS/FS [U1, табл. 7.1; U2, табл. 7.2]
Рис. 5 — Индикация конца пакета USB 2.0 в режиме HS [U2]
Рис. 5 — Индикация конца пакета USB 2.0 в режиме HS [U2]

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

Подход второй = UART + HYBRID

Оставаясь в рамках применения готовых ИМС, следующим после USB ожидаемо шел UART [W5], в связи с чем, поисковая задача соответствующе изменилась, см. рис. 6.

Рис. 6 — Постановка задачи
Рис. 6 — Постановка задачи

Здесь UART на стороне испытуемого изделия (англ. device under test, DUT, D.U.T.) связан двумя разнонаправленными симплексными каналами с неким черным ящиком (?), оптимальную конструкцию которого требуется далее найти, а сам ящик связан одним двунаправленным полнодуплексным каналом с таким же ящиком на стороне испытательного адаптера (англ. testing probe), благодаря чему схема и выглядит, и работает симметрично.

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

Рис. 7 — Логическая модель канала связи с т. з. испытуемого изделия
Рис. 7 — Логическая модель канала связи с т. з. испытуемого изделия

Состояния 1Х и 0Х, линия отключена (disconnected). Когда испытуемое изделие отключено от адаптера, на входе его приемника (RXD1) должна перманентно присутствовать логическая единица, не зависящая от выхода передатчика (TXD1) самого изделия.

Состояния 11, 10, 01, 00, линия подключена (connected). Когда испытуемое изделие подключено к адаптеру, вход приемника изделия должен соответствовать (только и только) выходу передатчика адаптера, т. е. RXD1 = TXD2. И, наоборот, в обратную сторону, вход приемника адаптера должен соответствовать (только и только) выходу передатчика изделия, т. е. RXD2 = TXD1.

Сконструировать такой канал с таким поведением, или предметно, искомый черный ящик, возможно на базе пассивного гибридного фильтра (англ. hybrid, hybrid filter), широко известного из полнодуплексных протоколов типа Ethernet [G1, G2], см. рис. 8 ниже, однако напрямую заимствовать здесь не выйдет, всп. рис. 7 и см. рис 9 (скрыт).

Рис. 8 — Симметричная схема на базе пассивного гибридного фильтра
Рис. 8 — Симметричная схема на базе пассивного гибридного фильтра
Почему симметричная схема плохо применима — рис. 9 (скрыт).
Рис. 7 (повтор)
Рис. 7 (повтор)
Рис. 9 — Статический анализ поведения симметричной схемы
Рис. 9 — Статический анализ поведения симметричной схемы

Такое ограничение вызвано тем, что напрямую заимствованной схеме будет присуща неоднозначность (англ. ambiguation) в восстановлении состояния входа приемника в зависимости от состояния полнодуплексного канала (линии связи), т. к. такая схема изначально рассчитана на биполярный сигнал, а UART использует однополярный сигнал с размахом на выходе передатчика от «земли» (нуля, 0) до напряжения питания (Vcc).

Однако, можно сделать такой однополярный сигнал псевдобиполярным, введя опорный потенциал в половину напряжения питания (½•Vcc) и выстроив (сместив) фильтр относительно него вместо «земли», см. рис. 10 ниже, что, впрочем, будет лишь необходимым, но не достаточным шагом, т. к. все также приводит к неприемлемой неоднозначности, снова всп. рис. 7 и см. рис. 11 (скрыт).

Рис. 10 — Улучшенная симметричная схема
Рис. 10 — Улучшенная симметричная схема
Почему улучшенная схема тоже неприменима — рис. 11 (скрыт).
Рис. 7 (повтор)
Рис. 7 (повтор)
Рис. 11 — Статический анализ поведения улучшенной схемы
Рис. 11 — Статический анализ поведения улучшенной схемы

Достаточным же шагом здесь будет рассимметрировать внешний делитель фильтра, фактически оставив в нем лишь одно конечное плечо (верхний резистор R), что увеличит размах сигнала в линии в два раза по сравнению с предыдущей схемой, т. е. с четверти до половины напряжения питания, что и самое по себе есть хорошо, т. к. более помехоустойчиво, а также явно обозначит два опорных потенциала, равных четверти (¼•Vcc) и без четверти (¾•Vcc) напряжению питания, теперь никогда не равные сигналу в линии, см. рис. 12.

Рис. 12 — Упрощенная симметричная схема и ее отличие от предыдущих
Рис. 12 — Упрощенная симметричная схема и ее отличие от предыдущих

Такая схема уже может стать основой для ОКК, см. рис. 13 ниже, хотя и отклоняется от желаемого (идеального, целевого) поведения, т. к. при отключенной линии вход приемника изделия оказывается логически «замкнут» на выход его передатчика (RXD1 = TXD1), что, однако, можно отследить и, соответственно, скомпенсировать программно, а также, например, вообще использовать для детектирования состояния линии (подключено или отключено), еще раз всп. рис. 7 и см. рис. 14 (скрыт).

Рис. 13 — Исполнение ОКК как развитие упрощенной схемы
Рис. 13 — Исполнение ОКК как развитие упрощенной схемы
Почему упрощенная схема применима с оговорками — рис. 14 (скрыт).
Рис. 7 (повтор)
Рис. 7 (повтор)
Рис. 14 — Статический анализ поведения ОКК или упрощенной схемы
Рис. 14 — Статический анализ поведения ОКК или упрощенной схемы

Дальнейшая оптимизация исключает из конструкции ОКК аналоговый мультиплексор (mux) с двумя неявными источниками опорных потенциалов, заменяя их на цепь из инвертора (inv) и двух резисторов в отношении 3 к 1, теперь динамически задающую опорный потенциал либо в четверть от напряжения питания (¼•Vcc, как и ранее), либо без четверти напряжение питания (¾•Vcc, как и ранее) на опорном входе компаратора (cmp), в зависимости от выхода передатчика, см. рис. 15.

Рис. 15 — Альтернативное исполнение ОКК без аналогового мультиплексора
Рис. 15 — Альтернативное исполнение ОКК без аналогового мультиплексора

Таким образом, такая конструкция ОКК требует, кроме трех пассивных компонентов — резисторов, что приемлемо, двух активных компонентов — ИМС компаратора и ИМС инвертора… что уже не приемлемо, как минимум, ни по цене, ни по занимаемой площади.

ИМС компаратора и ИМС инвертора можно заменить на одну ИМС трансивера RS-422 типа ADM3491 [C1], MAX3079 [C2], или аналогичных, содержащих раздельные по пинам дифференциальный драйвер и дифференциальный сенсор… что тоже будет неприемлемо по тем же показателям. Да, это можно использовать для межмодульной связи в модульном приборе, что есть побочный результат, своеобразный утешительный приз в нашем поиске… но опять не простое и дешевое решение для ОКК в изделиях, тиражируемых серийно и массово.

Т. е. опять, как и в случае с USB, исполнение ОКК на базе UART и симметричного соединения через гибриды привлекательно только для тех, кто производит свои ИМС и может их адаптировать под такую задачу, например, как минимум интегрировав компаратор в звено UART и сделав инверсный выход передатчика, см. рис. рис.16 и 17 (скрыты).

Поддержка упрощенной схемы со стороны ИМС — рис. рис. 16 и 17 (скрыты).
Рис. 16 — Пример ИМС с поддержкой ОКК
Рис. 16 — Пример ИМС с поддержкой ОКК
Рис. 17 — Пример удобной распиновки для такой ИМС
Рис. 17 — Пример удобной распиновки для такой ИМС

Оставляя же за скобками применимость именно в нашей задаче и рассматривая применимость симметричной схемы в общем, стоит отметить, что такая схема легко отображается на стандартный протокол UART, например, 8-N-1, где каждый четный символ содержит данные потока, а в каждом нечетном кодируются дескриптор этого потока и контрольная сумма, обеспечивающая как проверку целостности, так и самовыравнивание пар символов на приемнике за счет статистической сходимости, всп. рис. 2 (повт. ниже) и см. рис. 18.

Повтор рис. 2 (скрыт).
Рис. 2 (повтор)
Рис. 2 (повтор)
Рис. 18 — Протокол для передачи раздельных потоков через UART
Рис. 18 — Протокол для передачи раздельных потоков через UART

Снова немного мечтая о том, какой бы могла быть идеальная ИМС, очень странно подмечать, что до сих пор не существует ничего подобного вроде UART с длиной полезной нагрузки (англ. payload) в более чем 8 бит, хотя современные микроконтроллеры и микропроцессоры уже давно 32/64-битные, и поддержкой контрольных механизмов типа циклических кодов (англ. cyclic redundancy check, CRC) и упреждающей коррекции ошибок (англ. forward error correction, FEC), более совершенного фреймирования, и пр., см. рис. 19 (скрыт).

(Да и вообще, очень странно, что UART до сих пор не может работать с нулевым, а не единичным логическим уровнем по умолчанию, хотя технология NMOS уже давно канула в лету и найти не-CMOS ИМС нереально.)

Возможное расширение протокола UART — рис. 19 (скрыт).
Рис. 19 — Так бы мог выглядеть протокол UART, (пере)изобретенный сегодня
Рис. 19 — Так бы мог выглядеть протокол UART, (пере)изобретенный сегодня

Что ж, победа стала ближе, но все же вновь не была достигнута. Применимость симметричной схемы в других задачах дала некоторое инженерное утешение, что все еще не есть успех для тех, кто воплощает ОКК на готовых ИМС.

Подход третий = UART + два резистора

Путем проб и ошибок поиск пришел к асимметричной схеме, «донельзя» упрощающей часть на стороне изделия, в чем собственно и была цель, и пропорционально этому усложняющей часть на стороне адаптера, см. рис. 20 ниже, при этом схеме логически совершенной, всп. рис. 7 (повт. ниже) и см. рис. 21 (скрыт).

Рис. 20 — Асимметричная схема ОКК
Рис. 20 — Асимметричная схема ОКК
Повтор рис. 7 (скрыт).
Рис. 7 (повтор)
Рис. 7 (повтор)
Рис. 21 (скрыт).
Рис. 21 — Статический анализ поведения асимметричной схемы
Рис. 21 — Статический анализ поведения асимметричной схемы

Таким образом, конструкция ОКК на стороне изделия вырождается до двух резисторов, подтягивающего (R1) и последовательного (R2), и одного разъема, который, при дальнейшем удешевлении, заменяется на просто пятно-площадку (англ. test point, test spot), электрическое сочленение с которой во время испытаний происходит при помощи подпружиненного иглового контакта (англ. spring contact) типа как в щупе осциллографа [C3], или другого аналогичного механизма, обеспечивающего одиночный точечный контакт, т. е. одиночную электрическую цепь (англ. circuit), чем, кроме всего прочего, обеспечивает, что ОКК остается ОКК даже по аббревиатуре: однокоаксиальная консоль становится одноконтактной (англ. one-contact console, one-circuit console, и т. д., т. е. снова OCC). В таком случае, неявно подразумевается что вторая необходимая для электрического взаимодействия цепь, «земля», ранее создаваемая экраном коаксила, подана через общую цепь внешнего питания испытуемого изделия.

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

Рис. 22 — Конструкция адаптера без аналогового мультиплексора, но с возможностью детектирования соединения
Рис. 22 — Конструкция адаптера без аналогового мультиплексора, но с возможностью детектирования соединения

Параметры такой схемы находятся подбором подходящего соотношения трех резисторов (R1, R2, R3) исходя из стандарта ввода-вывода и учитывают, как правило, напряжение питания выходного каскада и внутренние пределы значений входного каскада CMOS, см. рис. 23.

Рис. 23 — Параметры асимметричной схемы ОКК
Рис. 23 — Параметры асимметричной схемы ОКК

По сравнению с симметричной схемой, имеющей регулярные уровни сигнала в половину и половину плюс-минус половину напряжения питания, регулярные опорные уровни (пороги квантования сигнала компаратором) в половину плюс-минус четверть напряжения питания, но при этом применимой с оговорками, асимметричная схема имеет крайне нерегулярные, хотя и достаточные (зазор не менее 200 мВ между сигналом и порогом квантования при напряжении питания 3,3 В и не менее 100 мВ для 1,8 В) для уверенной, безошибочной работы на целевых расстояниях «в один карандаш», характеристики, но работает без каких-либо логических оговорок, см. рис. 24.

Рис. 24 — Сравнение симметричной и асимметричных схем
Рис. 24 — Сравнение симметричной и асимметричных схем

Близко к очевидному, что для того, кто в своих изделиях применят готовые ИМС процессоров и микроконтроллеров, конструкция ОКК вряд ли сможет быть еще более оптимальной.

Послесловие

Давайте обобщим, к чему же привел поиск. Итак…

Подход первый = USB минус один провод. Очень привлекателен, но на сегодня чисто гипотетичен. Можно только мечтать и надеяться, что когда-нибудь кто-нибудь из разработчиков-производителей ИМС воплотит такое в жизнь.

Подход второй = UART + HYBRID. Технически осуществим на уровне готовых ИМС, несколько необычен, даже прекрасен, применим за рамками, однако неприменим в рамках задачи ОКК, т. к. и не прост, и не дешев при тираже, но, опять же, лишь пока не воплощен именно в кремнии ИМС.

Подход третий = UART + два резистора. Ад перфекциониста. Технически тривиален. Прост. Дешев. Поэтому решает задачу ОКК полностью. Итого, на сегодня это идеальное решение в духе здорового минимализма (но не более).

Что ж, на сегодня выбор очевиден. А вот будет ли он очевиден в будущем, будем надеяться, покажет время.


Рис. 25 — Сайтама одобряет :-)
Рис. 25 — Сайтама одобряет :-)
Ссылки на все источники, упомянутые в тексте, собранные в одном месте
Ссылки на весь графический материал, собранные в одном месте // CC-BY

Рис. 1 на [Habra Storage] и на [imgur], PNG, 370 кБ

Рис. 2 на [Habra Storage] и на [imgur], PNG, 15 кБ

Рис. 3 на [Habra Storage] и на [imgur], PNG, 27 кБ

Рис. 4 на [Habra Storage] и на [imgur], PNG, 236 кБ

Рис. 5 на [Habra Storage] и на [imgur], PNG, 34 кБ

Рис. 6 на [Habra Storage] и на [imgur], PNG, 20 кБ

Рис. 7 на [Habra Storage] и на [imgur], PNG, 30 кБ

Рис. 8 на [Habra Storage] и на [imgur], PNG, 22 кБ

Рис. 9 на [Habra Storage] и на [imgur], PNG, 82 кБ

Рис. 10 на [Habra Storage] и на [imgur], PNG, 17 кБ

Рис. 11 на [Habra Storage] и на [imgur], PNG, 93 кБ

Рис. 12 на [Habra Storage] и на [imgur], PNG, 33 кБ

Рис. 13 на [Habra Storage] и на [imgur], PNG, 19 кБ

Рис. 14 на [Habra Storage] и на [imgur], PNG, 97 кБ

Рис. 15 на [Habra Storage] и на [imgur], PNG, 20 кБ

Рис. 16 на [Habra Storage] и на [imgur], PNG, 23 кБ

Рис. 17 на [Habra Storage] и на [imgur], PNG, 14 кБ

Рис. 18 на [Habra Storage] и на [imgur], PNG, 29 кБ

Рис. 19 на [Habra Storage] и на [imgur], PNG, 36 кБ

Рис. 20 на [Habra Storage] и на [imgur], PNG, 25 кБ

Рис. 21 на [Habra Storage] и на [imgur], PNG, 72 кБ

Рис. 22 на [Habra Storage] и на [imgur], PNG, 35 кБ

Рис. 23 на [Habra Storage] и на [imgur], PNG, 16 кБ

Рис. 24 на [Habra Storage] и на [imgur], PNG, 28 кБ

Рис. 25 на [Habra Storage] и на [imgur], PNG, 167 кБ

Весь пост на imgur - https://imgur.com/a/wk43rzj

Комментарии (1)


  1. nipper
    20.04.2026 16:25

    Чем не устроил например rs485 по двухпроводной схеме?