bash.im ithappens.me zadolba.li
11976

Поток скруглённых квадратов

5 марта 2014, 07:15

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

В те времена локальные сети мало того что делались на коаксиале, так ещё и найти сетевые карты с кабелем, коннекторами и терминаторами было довольно сложно. В нашем случае их не было совсем — сейчас трудно такое представить, но как-то обходились. Но для игры нужна сеть! К счастью, в Doom была поддержка соединения по COM-портам, оставалось только найти кабель.

Разумеется, магазинные кабели не подошли: между комнатами было метров 50. Нашли бухту какого-то силового провода с довольно толстыми жилами, которую и использовали для распайки нуль-модемного кабеля. Заработало. Правда, иногда персонажи в игре исчезали и возникали в другом месте, иногда застывали неподвижно. Лучше всего работало ночью, в темноте. Могло совсем перестать работать, если согнуть кабель под слишком большим углом.

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

Прямоугольный сигнал с выхода COM-порта после прохождения по длинному кабелю теряет форму, превращаясь в подобие синусоиды, и обрастает по пути наводками от сети 220 В. Включение света в коридоре приводит к подаче напряжения в осветительную сеть и увеличении наводок. Изгиб кабеля меняет его расположение в пространстве и тем самым оказывает влияние на индуктивность, а она приводит к усилению или уменьшению искажений. На это же может влиять близость к стене с арматурными прутьями в ней. Электрическое сопротивление провода, надёжность контакта, плотность изоляции — влияет всё. В результате компаратор на входе принимающей стороны видит вовсе не тот же самый сигнал, который передавался. Разумеется, что и декодируется он с большим количеством ошибок. В подобных устройствах уже используются встроенные системы автоматической коррекции, за счёт чего большая часть ошибок исправляется, но приводит к торможению связи и её обрывам.

Всё это относится и к современным USB-кабелям, даже в большей степени: частоты-то гораздо выше, а чем выше частота, тем существеннее влияние ёмкостей и индуктивностей. Длинный кабель — сильные искажения, тонкий кабель — падение напряжения и опять искажения, окислы на контактах разъёма тоже качества не добавляют. А ещё у разных устройств немного разные выходные токи, немного разные по качеству входные цепи усиления и преобразования сигналов.

И что потом удивительного в глючащем кабеле? Никакие драйверы и новейшие ОС тут никак не влияют, они выше этого.
И никакой мистики, как обычно…