Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной
показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
- __techs (2:5015/42) ----------------------------------------------- __techs - Msg : 791 of 1000 Scn From : George Shepelev 2:461/124 09 Feb 99 01:08:00 To : All 09 Feb 99 22:32:24 Subj : FidoLink. Размышления по поводу... ------------------------------------------------------------------------------- @AREA:SU.HARDW.SCHEMES All, ты ещё здесь сидишь? 7 февраля 1999 в 17:08 Sergey Kovalev кинул сюда сообщение под Subj "FidoLink. Часть 1." Вот некоторые соображения по предложенному и альтернативному методам кодирования информации... Автор выбрал нехитрый алгоритм, при котором каждому переходу из одного состояния линии в другое соответствует короткий импульс в линии передачи. Выглядит это так: ┌---┐ ┌---┐ ┌------┐ исходный сигнал │ │ │ │ │ │ -┘ └---┘ └------┘ └--- ┌-┐ ┌-┐ ┌-┐ ┌-┐ ┌-┐ ┌-┐ передаваемый сигнал │ │ │ │ │ │ │ │ │ │ │ │ --┘ └-┘ └-┘ └-┘ └----┘ └----┘ └- Основные достоинства такого кодирования - простота аппаратной реализации и относительная независимость от кода исходного сигнала. Hекоторый интерес представляет пропорциональная зависимость мощности передаваемого сигнала от скорости передачи (если бы передатчик имел мощность десятки ватт, это могло бы быть полезно). Рассмотрим недостатки, которые к сожалению присущи такому виду кодирования: 1) Существенное снижение быстродействия канала передачи по сравнению с максимально возможным. В случае, если исходный сигнал имеет макси- мальную частоту (а он наиболее интересен для Subj), передаваемый сигнал должен иметь _вдвое_ бОльшую частоту. Такие же соотношения характерны для "Манчестерского" кодирования :((( 2) Возможность работы канала в "реверсном" режиме приводит к необходи- мости вводить "синхронизующие" паузы в канале передачи, что дополнительно снижает пропускную способность, а также затрудняет пользование сигналом BREAK :( 3) Линия совершенно не защищена от коротких помех (вспышка света от постороннего источника или кратковременное пропадание сигнала при перекрытии луча). Единичная помеха приводит к потере информации вплоть до следующего "синхронизующего" перерыва. 4) В случае длительного нахождения линии в "пассивном" состоянии (данные не передаются) сигнала в физическом канале нет; это не позволяет контроли- ровать наличие связи, проводить коррекцию АРУ и позиционирование по максимуму сигнала и т.д. Учитывая достаточно большую стоимость приёмно-передающей аппаратуры (оптические линзы, линии связи к приёмо-передающим блокам и т.п.) пред- ставляется целесообразным применить значительно более мощный и гибкий программный алгоритм кодирования/декодирования, заменив пару CMOS мик- росхем одним дешёвым микроконтроллером (что-нибудь из AVR или Scenix) и кварцем, обеспечивающим точность временнЫх характеристик. В таком случае проблемы снимаются введением протокола обмена MFM (применяемому в дисководах) или MMFM... Сейчас покажу, что это такое... ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ опорная ││││││││││││││││││││││││││││││││││││││││││││││││││││││││ частота -┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ цифровой │ 0 │ 1 │ 1 │ 0 │ 1 │ 0 │ 0 │ 0 │ 0 │ 1 │ 1 │ 1 │ 1 │ 1 поток ┌-------┐ ┌---┐ ┌------------------- исходный │ │ │ │ │ сигнал -----┘ └---┘ └---------------┘ ┌┐┌┐┌┐┌┐┌┐ ┌┐┌┐┌┐ ┌┐ ┌┐ ┌┐ ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ FM ││││││││││ ││││││ ││ ││ ││ ││││││││││││││││││││ ----------┘└┘└┘└┘└┘└--┘└┘└┘└--┘└--┘└--┘└--┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ MFM ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ------------┘└--┘└------┘└----┘└--┘└--┘└----┘└--┘└--┘└--┘└--┘└ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ ┌┐ MMFM ││ ││ ││ ││ ││ ││ ││ ││ ││ ││ ------------┘└--┘└------┘└----┘└------┘└----┘└--┘└--┘└--┘└--┘└ ┌---┐ ┌-----┐ ┌-----┐ ┌---┐ ┌---┐ dMMFM │ │ │ │ │ │ │ │ │ │ ------------┘ └-------┘ └-------┘ └---┘ └---┘ └ С сигналом FM всё просто. Это частотная модуляция, на каждый бит приходится обязательный синхроимпульс, на единичные биты добавляются информационные импульсы. Таким образом каждый нулевой бит данных кодируется одним импульсом, каждая единица - двумя. Достоинства кода - очень надёжная синхронизация, очень простое декодирование. Hедостатки - необходима высокая частота передачи, повышенный расход мощности. Модуляция MFM (модифицированная частотная модуляция) хитрее. Она предназначена для того, чтобы снизить вдвое скорость в канале передачи. Сигнал отличается тем, что синхроимпульсы передаются только тогда, когда значения текущего и предыдущего бита равны 0. Легко видеть, что скорость передачи снижается вдвое и мощность расходуется равномернее. Также сразу видно, что побитовая синхронизация данных сохраняется и в канале всегда есть сигнал. Это позволяет обходиться без передачи опорного сигнала, синтезируя его на приёмной стороне. Возникает вопрос, а как обстоят дела с помехозащищённостью? Гораздо лучше, чем в первоначально предложенном случае: 1) Легко реализуется временнАя селекция импульсов в линии связи. Рассто- яние между импульсами могут быть равны только 2, 3 или 4 тактам опорной частоты. 2) Благодаря кварцевой стабилизации частоты даже длительная потеря связи не приводит к реверсной работе канала, поскольку опорные частоты приёмника и передатчика практически синхронны. Медленный дрейф частоты приёмника должен компенсироваться периодической программной подстройкой фазы синтезированного опорного сигнала при наличии правильных данных. 3) При начальном включении, или после длительного перерыва в работе декодер легко входит в синхронизм пользуясь тем фактом, что расстояние между импульсами 4 такта возможно _только_ при комбинации бит 101 в потоке данных. Это следует учитывать при организации надёжной связи - в начале обмена следует передать байт с соответствующим набором бит. Это потенциальная проблема при низкой скорости исходных данных! Модифицированная MFM (MMFM) отличается тем, что синхроимпульсы пере- даются _только_ в случае, когда текущий и предыдущий биты равны 0 и в предыдущем бите не был передан синхроимпульс. Это позволяет при той-же максимальной скорости обмена снизить передаваемую мощность и обеспечивает вход в синхронизм по цепочке (5 или больше) нулевых бит, что гораздо удобнее, если скорость входного потока бит неизвестна. Hе только предложенные паузы в передаче обеспечивают синхронизацию, но и часто встречающиеся значения передаваемых данных. Прикидочный расчёт - при передаче архивированного файла по асинхронному протоколу, значения байт данных в котором равновероятны, вероятность синхронизации на _каждом_ байте равна 5/256. Это практически гарантирует восстанов- ление синхронизации после запуска на первой же сотне байт. Тот же эффект даёт пауза длиной всего лишь 5 бит (на пониженной скорости ис- ходных данных ещё меньше)... Вот этот метод MMFM кодирования и представляется наиболее целесообраз- ным для Subj'а... Особо тщательно следует продумать формат заголовка пе- редачи, для упрощения входа в синхронизм, процедуры восстановления синхронизации после сбоев и периодической коррекции фазы "опорной" час- тоты в принимающем контроллере. Так как весь ряд частот COM порта формируется из максимальной частоты 115200 Гц, разумно выбрать "опорной" частоту 230400 Гц. При кварце 11,0592 имеем 48 тактов на период "опорной" частоты. Вроде достаточно... Длительность передаваемого импульса должна быть порядка 1...1,5 периодов "опорной" частоты, т.е. 4,34...6,51 мкс (слишком короткий импульс повы- шает требования к полосе тракта и затрудняет декодирование), желательно формировать сигнал такой длительности в приёмном усилителе (восстанов- ление формы сигнала). Ха, - скажете вы. - а ведь требования к полосе пропускания для канала MMFM такие-же, как и для первоначального варианта! Действительно, так и получается. Hо обратите внимание на следующий вид кодирования, который я назвал dMMFM. После MMFM-кодирования сигнал обрабатывается методом, строго противоположным первоначально предложенному ;). Понятно, что "реверс" получившегося сигнала абсолютно ни на что не влияет, моменты перепадов, которые нужны для правиль- ного декодирования, при этом не изменятся... Какие же особенности получивше- гося кода? 1) Занимаемая полоса частот вдвое меньше первоначального варианта. Попробуйте сделать её ещё меньше! ;) 2) Передаваемый сигнал состоит из участков с "нулевым" и "единичным" уровнями, каждый из которых может иметь длительность 2, 3 или 4 периода "опорной" частоты; этот сигнал имеет приблизительно постоянную среднюю мощность, что облегчает контроль прохождения сигнала, работу АРУ и коррекцию позиционирования. Он поддаётся очистке от посторонних помех методами временнОй селекции. Сравнительно небольшой разброс длительностей импуль- сов в основном сохраняет рабочий режим светодиодного излучателя... 3) Hарушения прохождения сигнала оказывают малое влияние на синхронность приёма относительно передаваемого сигнала; с восстановлением связи сразу начинается правильное декодирование данных. Мощные помехи, исказившие группу бит данных, не приводят к дальнейшему размножению ошибок. Канал легко синхронизуется при начале работы передатчика или после перезапуска приёмника (как и в случае MMFM). 4) Сигнал получился достаточно "хитрым", любители подслушивать, не полу- чившие вышеизложенных сведений, с наскоку его не раскодируют ;) Этих сведений в принципе достаточно, чтобы иметь возможность разработать приёмник и передатчик с нуля (не обязательно на контроллере, возможна и схема на жёсткой логике, хотя она будет достаточно громоздкой). Структурная схема канала передачи выглядит так: ┌--┤·├--┐ ┌--┴-------┴-┐ ┌---------┐ ┌--------------┐ ┌----------┐ TxD ---┤ Контроллер ├-->│Буферный ├-->│Светодиод или ├->│Фокусирую-├--> ┐ │ "кодер" │ │усилитель│ │др. излучатель│ │ щая линза│ │ MMFM/dMMFM │ └---------┘ └--------------┘ └----------┘ │ └------------┘ ┌ < - - - - - - - - - - - - - - - - ┘ │ ┌--------------┐ ┌<---АРУ--┐ ┌--┤·├--┐ │ Оптический │ ┌--------┐ ┌-┴---------┴-┐ ┌--┴-------┴-┐ └ │ концентратор ├>│Фотодиод├->┤ Усилитель- ├->│ Контроллер ├---> RxD │ (линза или │ └--------┘ │формирователь│ │ "декодер" │ │ зеркало) │ └---┬---------┘ │ MMFM/dMMFM │ └--------------┘ │ └---┬--------┘ └ - - <- - - - - ┘ Пунктиром показан сигнал стробирования, который можно ввести в приёмник для дополнительной временнОй селекции. При двунаправленом обмене данными можно сэкономить один кварц, "заведя" от него оба контроллера. Контрол- лер-декодер для простоты можно сделать однорежимным, только для сигнала MMFM, сделав двухрежимный усилитель-формирователь... В принципе возможно и другое решение, когда кодер и декодер выполняются на одном кристалле программируемой логики, но это усложняет проектирование для тех, кто с ней не имел раньше дела. Будет кто эту тему продолжать? Или переключимся на спутниковое под- ключение к Internet? ;) [МУРКА Team] the name you know... --- GoldED 2.50.Beta6+ * Origin: В денежном обороте нет места для инженера. (2:461/124)