3 Схемотехнические решения

Материалы данного раздела охватывают довольно широкий круг технических проблем, которые приходилось решать начиная с 80-х годов и заканчивая сегодняшним временем. Некоторые схемотехнические решения (подразделы 3.7, 3.8) на сегодняшний день не актуальны в связи с невероятнным прогрессом в микроэлектронике. Например, в настоящее время, целевые функции процессора сопряжения "шутя" реализуются на одном-двух AVR-микроконтроллерах. А для построения сеточного параллельного процессора можно использовать функционально полные компьютеры, реализованные на кристаллах. Тем не менее, идеи, заложенные в этих разработках, представляются заслуживающими внимания и, возможно, помогут студентам в освоении вычислительной техники. В других подразделах приведены результаты работ, которые автор считает существенными и полезными для современных разработчиков.

	

	

3.1 Сигнализатор понижения сопротивления изоляции

3.1.1 Потребность в разработке современного многоканального устройства, регистрирующего повреждения изоляции многожильных кабелей, существует достаточно давно. К нам обращались заказчики с просьбой рассмотреть возможность создания такого устройства буквально с начала 2000-х годов. Требовалось регистрировать снижение сопротивления между отдельно взятой, контрольной жилой и "землей"(общим экраном кабеля) ниже ориентировочных пределов 5, 10, 20 ...150 МОм. Несколько разных исполнителей брались за эту работу, но их попытки оказались неудачными из-за отсутствия хорошей идеи создания дешевого и надежного регистрирующего узла. 3.1.2 Несколько лет назад возникла мысль опробывать схему трансформаторного модуля опроса состояния шлейфа охранной сигнализации, в качестве модуля опроса сопротивления изоляции мегаомного диапазона. Эту схему мы широко используем в своих изделиях для регистрации изменений сопротивления шлейфа охранной сигнализации в диапазоне нескольких кОм. Оказалось, что при больших периодах опроса (от сотен миллисекунд до нескольких секунд) схема отвечает на изменения значений контрольных сопротивлений достаточным изменением длительности выходных импульсов. На столе, с эталонными резисторами, схема работала вполне приемлемо. Поэтому сразу сконструировали и изготовили образец двухсторонней печатной платы контроллера на 32 канала. Была написана и программа опроса каналов. Однако при испытаниях на реальных объектовых кабелях и сравнении показаний схемы с показаниями штатных одноканальных измерительных приборов возникли вопросы. Во первых, схема оказалась "фазочувствительной" - при смене проводников "земли" и "жилы" показывала либо R, либо бесконечность. Кроме того, регистрируемое R в разы отличалось от показаний штатного прибора. А на столе, с эталонными R показания совпадали. Все это вызвало недоверие к схеме и у заказчиков и у нас самих. Пришлось смириться с тем, что это была очередная неудачная попытка создания устройства СПИ. 3.1.3 Посчитав виновником неудач развязывающий трансформатор, было решено создать на оптронах бестрансформаторную схему, работающую по тому же принципу. Был изготовлен макетный образец бестрансформаторной схемы. Новая проверка на объекте и снова неудача. Правда возникло теперь то уже очевидное убеждение, что сопротивление изоляции надо мерить не от нуля, как во всех наших предыдущих схемах, а от постоянной "подставки", пробивающей переходные сопротивления промежуточных разъемных соединений. В схеме на оптронах "подставка" реализуется достаточно просто. Несколько различных вариантов такой схемы были изготовлены и испытаны на реальных кабелях и все они дали удовлетворительные результаты. Выбор был остановлен на варианте с напряжением "подставки" U1=24В и напряжением опроса U2=5В (см. рисунок 3.1). Рисунок 3.1 3.1.4 "Ключевыми" элементами схемы являются диод VD (BAS45AL), отличающийся ничтожно малым обратным током, и емкость С (0,15 мкФ). В качестве элемента развязки используется сдвоенная транзисторная оптопара VK (TLP521). При включении оптопары выходной транзистор оптопары переходит из состояния отсечки в состояние насыщения, превращаясь в генератор напряжения 0,4 В. Условно полагаем, что в открытом состоянии на диоде VD падение напряжения является константой и составляет 0,8 В. В качестве порогового элемента используется транзистор VT. За порог срабатывания принимается напряжение Uбэ0 открытого транзистора VT (0,8 В). 3.1.5 Принятые допущения позволяют и качественно и аналитически оценить работу схемы. Временные диаграммы, представленные на рисунке 3.2, поясняют работу схемы. Рисунок 3.2 На рисунке 3.2 пары выходных сигналов OUT1(1), OUT2(1) и OUT1(2), OUT2(2) соответствуют двум различным номиналам измеряемого сопротивления Rи(1) и Rи(2), причем Rи(1) меньше чем Rи(2). В начале процесса измерения на емкости С напряжение Uc=0. Поэтому длительность первого выходного импульса не зависит от номинала Rи. А вот длительность всех последующих выходных импульсов определяется остаточным напряжением на емкости С, разряжающейся в паузе между импульсами сигналов IN1 и IN2 через измеряемое сопротивление Rи. Чем больше номинал Rи, тем больше остаточное напряжение на емкости С и соответственно меньше длительность выходного импульса. 3.1.6 В реальных устройствах, поставленных на объекты заказчика, используется формируемый микроконтроллером сигнал IN1, с длительностью имульса 270 мкс и периодом от 0,1 сек до 1,5 сек. Для регистрации порогов сопротивления изоляции от 5 до 150 МОм устанавливается соответствующее значение периода сигнала IN1. В качестве пороговой длительности выходного импульса сигнала OUT2 выбрано значение 50 мкс. Если выходной импульс по длительности превышает это значение, формируется сигнал тревоги. 3.1.7 Разумеется, указанные временные параметры, номинал "измеряющей" емкости С да и само напряжение опроса U2 могут быть изменены и подобраны более "оптимально". В ряде экспериментов на графиках зависимости длительности выходных импульсов от номинала Rи наблюдались достаточно широкие линейные диапазоны,что дает основание допускать возможность использования подобных схем в качестве инструментов измерения больших сопротивлений.

3.2 Декодер манчестерского сигнала

3.2.1 Вопрос о необходимости использовании отдельного синхросигнала при организации обмена параллельной информацией между регистрами цифровых устройств давно уже не вызывает сомнений. А вот при обмене последовательной информацией по отдельному каналу или линии связи, использовать дополнительный канал(линию связи) для синхросигнала является либо чрезмерно накладным, либо невозможным, хотя и принято в ряде интерфейсов, например РС/2, SPI. 3.2.2 До настоящего времени наиболее распространенным способом обмена последовательной информацией является так называемый "асинхронный" (более правильно старт-стопный) способ, согласно которому в последовательную информацию введены байтовые синхросигналы - отрицательная стартовая посылка и не менее одной положительной стоповой посылки. Фактически пара посылок "старт-стоп" определяет наличие перепада 1-0 в начале каждого нового байта последовательной информации. На приеме после идентификации стартовой посылки по ее переднему фронту (перепаду 1-0) и подтверждению на середине стартовой посылки, следующие 8 равных битовых интервалов,соответствующих скорости передачи, отсчитываются как бы "вслепую". "Генератор" 8-ми сигналов считывания значащих битов (битовых синхросигналов) перезапускается по каждому приему новой стартовой посылки. Важно отметить, что в промежутках между моментами считывания значащих битов допускаются помехи и искажения, отсекаемые битовыми синхросигналами. Отсечка помех на приеме является главной функцией любого синхросигнала и старт-стопный способ в полной мере обеспечивает возможность исполнения этой функции. 3.2.3 Более простым способом "встраивания" битового синхросигнала в последовательную информацию является манчестерское кодирование, согласно которому 1 кодируется перепадом 1-0, а 0 - перепадом 0-1. Тем самым каждый значащий перепад одновременно является битовым синхросигналом и позволяет приемнику отсчитать любое количество битовых интервалов для приема следующих значащих перепадов. Конечно отсчитывать нужно только один битовый интервал, точнее его большую часть, чтобы отсечь подготовительный, незначащий перепад. Схема, реализующая прием манчестерского сигнала, приведена на рисунке 3.3, а временные диаграммы ее работы - на рисунке 3.4.
Рисунок 3.3 Рисунок 3.4 3.2.4 В схеме, представленнлй на рисунке 3.3, в качестве основных элементов используются "легендарные" синхронные D-триггеры ТМ2 - функциональные аналоги микросхемы SN5474 фирмы TI. Эти триггеры иностранцы классифицируют как Edge Triggered, а у нас их раньше называли Edge-триггерами. Они переключаются по перепаду 0-1 на синхровходе С. При этом, любые изменения на информационном входе D, как в паузе между синхроимпульсами, так и во время действия синхроимпульса (на "полке"), игнорируются. Асинхронные входы этих триггеров (-S) и (-R) имеют приоритет над входами D и С. Подача 0 на вход (-S) принудительно устанавливает 1 на прямом выходе триггера. Собственно на этих свойствах триггеров TM2 и основана работа декодера. Одновибратор, срабатывающий по перепаду 0-1, формирует положительный импульс, длительность которого составляет 0,7 - 0,8 от длительности посылки (битового интервала). Инвертированная "полка" этого импульса блокирует все изменения входного сигнала IN, в том числе и подготовительные перепады. Как только импульс одновибратора заканчивается, разрешается прием значащего фронта. Принятое значение фиксируется на асинхронном RS-триггере. 3.2.5 На рисунке 3.4 дополнительно отражена сбойная ситуация, когда декодер ошибочно "цепляется" за подготовительный фронт вместо значащего.Как видно из временных диаграмм, правильный прием автоматически восстанавливается при смене значащего значения DATA с 1 на 0 или с 0 на 1. 3.2.6 Помимо манчестерского кодирования известно также разностное манчестерское кодирование
http://www.vanderboot.ru/ether/manch.php . Не знаю, кто был первооткрывателем такого способа кодирования последовательной информации, но как только я с ним ознакомился, то сразу увидел принципиальное сходство с кодированием сигналов в "нашем" стыке С1-И или С1-ФЛ-БИ(см. ГОСТ 27232-87). Единственное, что отличает сигнал стыка С1-И от сигнала разностного манчестерского кода так это инверсное кодирование исходной информации, то есть 0 в С1-И кодируется так же как 1 в разностном манчестере, и наоборот. 3.2.7 Декодер стыка С1-И был успешно реализован и испытан нами в конце 80-х годов при "стыковке" процессора сопряжения (см. подраздел 3.7) с аппаратурой передачи данных. Позволю маленькую предысторию создания декодера стыка С1-И. В ГОСТ 27232-87 приведено "потрясающее" определение способа кодирования сигнала стыка С1-И: 7. Алгоритм преобразования сигнала данных в биимпульсный сигнал должен происходить по следующим правилам: символы "0" и "1" сигнала данных передаются на тактовом интервале двумя импульсами равной длительности и противоположной полярности. Порядок чередования полярности импульсов по сравнению с предыдущим тактовым интервалом не изменяется при передаче символа "1" и изменяется при передаче символа "0". Невольно вспоминается фраза из миниатюры, которую исполняли Олейников и Стоянов: "Ты сам то хоть понял, что сказал?" Чувство недоумения по поводу определения из ГОСТ 27232-87 я испытываю сегодня также, как и почти 30 лет назад. Но тогда у меня не было другого выхода, кроме как осознать принцип кодирования и разработать реальный декодер. Итак, внимательно присмотревшись к временной диаграмме, приведенной в ГОСТ 27232-87(а тогда она похоже была приведена в ОСТ-е на С1-И), я заметил, что 1 данных кодируется последовательностью из двух однотипных значащих перепадов: 1-0, 1-0 или 0-1, 0-1. Логический 0 кодируется последовательностью из двух разнотипных значащих перепадов: 1-0, 0-1, или 0-1, 1-0. Очевидно, что такое определение вопросов не вызывает. Возвращаясь к разностному манчестерскому кодированию необходимо сказать, что там 1 данных можно определять точно также как 0 в стыке С1-И, а 0 как 1. 3.2.8 Принципиальная схема декодера стыка С1-И, который можно называть "инверсным разностным манчестером", приведена на рисунке 3.5, а временные диаграммы ее работы - на рисунке 3.6. Рисунок 3.5 Рисунок 3.6 3.2.9 Поскольку вся важная информация о принципах работы и назначении основных элементов схемы приведена в п. 3.2.4, описывать словами работу схемы не буду. К тому же, как известно, принципиальные схемы и временные диаграммы сами по себе - это специализированные графические языки описания принципов работы электрических схем. 3.2.10 В заключение данного подраздела хочу высказать свое личное мнение о том, что не вижу никаких преимуществ у разностного манчестерского кодирования по сравнению с манчестерским кодированием. Можно лишь отметить, что в при передаче непрерывной последовательности 1 (или 0 для стыка С1-И) исключается возможность ошибочного захвата подготовительного перепада, как было показано на рисунке 3.4. Но так ли это нужно судить не берусь.

3.3 Модули для организации интерфейсов RS-485 и RS-422

3.3.1 Разработкой и применением модулей приема/передачи сигналов интерфейсов RS-485 и RS-422, я занимаюсь уже около 20 лет, работая в фирме ВиТаИ. Сделана "туча" разных преобразователей сигналов интерфеса RS-232 в RS-485 и RS-422. И, как ни парадоксально, у меня до сих пор остается пара вопросов к физической реализации этих интерфейсов, в частности как правильно использовать экранированные витые пары и нужно ли вообще использовать экраны? Как при этом правильно подключать на выходы защитные диоды? Конечно, решения есть, они далее будут описаны, но признаюсь, полной убежденности в их идеальности нет. Оставляю возможность поиска наилучших решений молодыми разработчикам. 3.3.2 Основная логическая функция модуля приема/передачи сигналов интерфейса RS-485 - это надлежащее переключение из режима передачи информации в режим приема. В первом модуле, с которым мне пришлось столкнуться, так назаваемом NIM-е фирмы Octagon (Network Interface Module), это переключение осуществлялось с помощью внешнего сигнала RTS интерфейса RS-232 СОМ-порта PC-совместимого компьютера. То есть вся нагрузка, может и несущественная, но раздражающая в то время программистов, перекладывалась на драйвер СОМ-порта. Не могу не сказать о "жутких" емкостях, которые были включены в цепи согласования и создавали "устрашающую" форму сигнала на линиях RS-485. Пришлось эти емкости в панике выпаивать и кроме того, пришлось дорабатывать модули NIM с разрывом одной печатной связи и установкой дополнительного резистора. И это на платах, каждая из которых стоила 200$ ! Вы не поверите, но это "варварство" спасло дорогущую технологическую систему, которую мы сделали для Чусовского металлургического завода в 1998 г. Подробности этого эпизода в разделе 4.11. 3.3.3 Кроме NIM-a Octagon выпускала еще один преобразователь РС-485. Поскольку он не имел гальванической развязки цепей интерфейса RS-485 от цепей интерфейса RS-232, мы его не использовали. Но зато этот модуль использовали наши соисполнители из НИИТФА. Я слышал, что у них тоже были проблемы и они отказались от этого модуля. Кстати в нем тоже стояла емкость, включенная последовательно с согласующим резистором. Но оставив в покое тему емкостей, скажу главное: в модуле РС-485 осуществлялось автоматическое переключение приемо-передатчика RS-485 с передачи на прием. Это обеспечивал одновибратор 74НСТ123, который формировал передний фронт сигнала разрешения передачи и перезапускался по каждому переднему фронту стартового бита и информационному перепаду 1-0. Длительность выходного импульса одновибратора составляла 8 битовых интервалов, плюс стартовый и стоповый интервалы и плюс некоторая дельта, которую иногда называют таймаутом пакетизации. То есть, если до момента формирования заднего фронта выходного импульса одновибратора новый стартовый перепад не возникает, приемо-передатчик RS-485 автоматически переключается с передачи на прием. Во всех своих последующих разработках я использовал именно автоматическое переключение направления передачи, но правда эта функция была возложена на AVR-микроконтроллеры и реализовывалась иначе. 3.3.4 Основным недостатком принципа автоматического переключения направления передачи, использованного в модуле РС-485, является зависимость момента переключения от значения последнего передаваемого знака. Если этим знаком является 0х00, то переключение происходит через таймаут пакетизации после приема последнего значащего бита. Если же последним передаваемым знаком является 0х7Е, это время увеличивается почти на полную длительность передачи знака. В любом случае, ответ на принятый знак, необходимо передавать с задержкой, превышающей указанное максимальное время автоматического переключения. 3.3.5 Все это мне не очень нравилось и, к тому же появились замечательные AVR-микроконтроллеры 2313, в которых имелся аппаратный UART. Не скажу, что сразу, но довольно быстро, возникла мысль осуществлять буферизацию передаваемого из RS-232 байта в UART-е, а по завершению передачи байта, при пустом входном буфере UART-а, осуществлять немедленное переключение с передачи на прием. При этом ответную информацию из RS-485 в RS-232 было решено передавать "насквозь", без какой-либо буферизации, и обрабатывать микроконтроллером только для светодиодной индикации приема по RS-485. Сейчас мы уже делаем модули для обмена информационными пакетами, используя микроконтролеры ATmega 162, имеющие два USART-a, но простые преобразователи, с микросхемами ATtiny 2313, по прежнему широко используем как в виде отдельных модулей, так называемых СИМ-ов (Системных Интерфейсных Модулей), так и интегрируя их в специализированные контроллеры. 3.3.6 Важнейшим принципом построения интерфейсных модулей является гальваническая развязка сигналов интерфейсов. Модули без гальванразвязки мы используем только для обмена информацией между контроллерами, запитанными от общего источника питания. Чтобы прийти к этому, пришлось на этапе поиска оптимальных решений "сжечь" несколько СОМ-портов и преобразователей интерфейсов. Для построения модулей с гальванразвязкой мы используем либо транзисторные оптопары TLP521, позволяющие работать абсолютно надежно на скорости 19200 бит/с, либо дорогую микросхему МАХ1480, допускающую работу на любых скоростях. 3.3.7 На рисунке 3.7 представлен приемо-передатчик сигналов интерфейса RS-485, выполненный с использованием оптопар TLP521. Рисунок 3.7 Идентификаторами V и G на схеме обозначены гальванически развязанные (изолированные) потенциалы 5В и 0В соответственно, идентификаторами D+ и D- обозначены прямая и инверсная цепи интерфейса RS-485. Сигнал RX, формируемый схемой, подается непосредственно на вход формирователя сигнала (-RXD) интерфейса RS-232 (микросхема МАХ232). А вот сигналы TX и (-RTS) формируются микроконтроллером ATtiny 2313, который воспринимает от микросхемы МАХ232 по входу RX USART-a преобразованный в ТТЛ(КМОП) и инвертированный сигнал (-ТXD) интерфейса RS-232. Как было указано в п.3.3.5, USART микроконтроллера полностью принимает байт своим приемником, а затем передает его через свой передатчик, предварительно переключившись с приема на передачу. Следует отметить, что схема рис.3.7 преимущественно используется в отдельных специализированных контроллерах, подключаемых только к интерфейсу RS-485, поскольку она недорогая и надежно работает на скорости 19200 бит/с. Для этой скорости указаны и номиналы резисторов на рис.3.7. Обращаю внимание на делители напряжения, подключенные к анодам светодиодов оптронов, они повышают быстродействие схемы. Работает схема и на скорости 38400 бит/с, но с очень редкими ошибками, возникающими из-за завала фронтов выходных сигналов оптронов TLP521. В качестве приемо-передатчика сигналов интерфейса RS-485 выбрана микросхема MAX483. Может использоваться и MAX485, но она требует хотя бы частичного согласования цепей интерфейса (см.п.3.3.10). MAX483 имеет гарантированно пологие фронты выходных сигналов, что позволяет оставлять цепи интерфейса несогласованными, так как все отражения попадают на пологие фронты. Конечно можно использовать и аналоги этих микросхем, например ADM483,485. Для формирования изолированного напряжения V(5B) обычно используется микросхема TME 0505S или ее аналоги. В нескольких системах мы использовали общий для всего интерфейса RS-485 источник изолированного напряжения 12В, формируемый микросхемой TEN 5-0512. Эта микросхема установливалась в Master-модуле интерфейса, а в каждом Slave-модуле устанавливались стабилизаторы 7805, которые запитывались от напряжения 7...12 В из интерфейса и формировали необходимые локальные потенциалы V(5В) при общем потенциале G(0B). Для разводки линий интерфейса RS-485 использовался связной кабель с двумя витыми парами, по одной из которых передавался сигнал, а по другой - изолированное питание. 3.3.8 На рисунке 3.8 представлен приемо-передатчик сигналов интерфейса RS-485, выполненный на микросхеме МАХ1480BCPI. Рисунок 3.8 Не устану повторять, что принципиальная схема - это специализированный графический язык описания принципов работы электронных устройств. И в этом языке должны быть читаемые и понятные "лексемы". Ничего, кроме раздражения, не вызывают условные графические изображения современных микроконтроллеров или других БИС, либо представляющие "безликого жука", либо содержащие трудно читаемые обозначения как используемых, так и неиспользуемых сигналов. Фактически такие схемы представляют собой схемы соединений, пригодные лишь для разработки печатных плат, а не для описания принципов работы. Для изображения БИС МАХ1480 я посчитал необходимым использовать так называемый разнесенный способ изображения составных частей сложных элементов, пусть с некоторыми отступлениями от ГОСТ-а, но надеюсь вполне понятный. Кстати, нечто похожее сделано и в фирменном описании микросхемы МАХ1480.Там же приведена и рекомендуемая схема подключения микросхемы. Являясь убежденным сторонником использования микросхем только в тех режимах, которые рекомендуют разработчики, в данном случае вынужден отметить, что в таблице 1 описания (19-0259; Rev 5; 5/05) перепутаны номиналы резисторов R4 и R5 для микросхемы МАХ1480В. Номинал резистора R3 также пришлось изменить с 3к на 1к, поскольку на скорости 38400 бит/с и выше с номиналом R3=3к схема не работала. Кроме того, в отличие от рекомендаций разработчиков, выходную цепь сигнала RX пришлось формировать иным способом и блокировать через диод высоким уровнем сигнала RTS в режиме передачи, так как передаваемая информация заворачивается на прием. Отмечу очень существенное преимущество использования микроконтроллера в преобразователе сигналов интерфейсов. Оно состоит в том, что имеется возможность, и мы ее как правило используем, блокировать сигнал RX, а соответственно и (-RXD) на время порядка 40 сек после включения электропитания преобразователя. Дело в том, что ряд специализированных материнских плат после включения электропитания не определяют свой СОМ-порт, если в процессе загрузки ОС, на вход (-RXD) СОМ-порта поступает информация из интерфейса RS-485. Для такой блокировки сигнал RX подается на один из входов микроконтроллера, но в процессе загрузки ОС этот вход временно (на 40 сек) определяется как выход и устанавливается в 1. Выходная цепь сигнала RX, формируемая элементом "монтажное ИЛИ", позволяет легко это сделать. 3.3.9 Как и обещал в п.3.3.1, несколько слов об элементах защиты, показанных на рис.3.8. В качестве защитных предохранителей F1, F2 используются самовосстанавливающиеся предохранители 0805Р010TS. Два защитных диода VD1, VD2 (P4KE6,8CA) защищают цепи D+ и D- от попадания высокого напряжения, включая сетевое. Признаюсь, подавать сетевое напряжение я не рисковал - кто посмелее дерзайте! Как следует из описания МАХ1480, при использовании экранированной витой пары, экран должен подключаться к изолированному "нулю" через резистор 100 Ом. Но при этом возникает вопрос, куда подключать общую точку соединения защитных диодов? Я подключаю ее к экрану, чтобы защитить от возможного "выжигающего" тока не только микросхему, но и резистор 100 Ом. Если же экраны не используются, защитные диоды коммутируются сразу на изолированный "ноль". Для этого в преобразователе предусматривается трехштыревой разъем для установки джампера. 3.3.10 Основным назначением резисторов Rv и Rg является создание уровня стопа на линиях интерфейса RS-485 в период отсутствия передаваемого сигнала. Для надежной работы стандартных приемо-передатчиков подходит любое смещение от 0,5 до 5,0 В. Сейчас появились микросхемы, в которых смещение формируется внутренними элементами, но применять такие микросхемы я опасаюсь прежде всего из-за того, что величина зтого внутреннего смещения мне представляется недостаточной для надежной работы интерфейса вблизи источников сильных электромагнитных помех. И кроме того, использование двух цепей формирования стопового уровня, подключенных к различным изолированным источникам питания интерфейсных приемо-передатчиков, по не вполне понятным причинам приводит к сбоям в работе интерфейса. А с одной "подпоркой" интерфес всегда работает безотказно. Резистор Rt выполняет функцию согласования. Вообще то его номинал должен быть 120...150 Ом (волновое витой пары). Но при этом уменьшается уровень создаваемого смещения, что как бы снижает помехозащищенность. А вообще, на скоростях до 38400 бит/с и при длинах линий до нескольких километров полное согласование абсолютно не требуется. Достаточно поставить резистор Rt=200 Ом. К тому же, при использовании микросхемы МАХ1480В в большинстве случаев можно обойтись и без согласующего резистора, поскольку эта микросхема имеет гарантированно заваленные фронты выходных сигналов(см.п.3.3.7). 3.3.11 Мне предоставилась замечательная возможность проверить работу своих интерфейсных модулей на реальных витых парах различной длины от 1 до 18 км. Оказалось, что предельная длина витой пары 4000 футов (1200 м), рекомендуемая в документации фирмы MAXIM, соответствует скорости 115,2 кбит/с, а при более низких скоростях предельная длина может существенно увеличиваться. Например, на скорости 38400 бит/с я наблюдал безошибочную работу при длине витой пары 4444 м, а на скорости 9600 бит/с - при длине витой пары 6666 м. И это понятно, так как с увеличением длины витой пары фронты сигналов заваливаются, короткие импульсы сначала принимают треугольную форму, а затем их амплитуда снижается до нуля. А вот почему при передаче информации со стороны установки "подпорок" (см.п.3.3.10) предельная длина витой пары почти в 2 раза больше, чем при передаче по той же линии в обратную сторону (8888 м для 38400 и 15554 м для 9600), я так и не разобрался. 3.3.12 В одной из разработок мы использовали модули для преобразования сигналов интерфеса RS-232 в RS-422 с использованием микросхемы MAX1490. Следует обратить внимание, что в отличие от MAX1480 цепь RX гальванически развязывается с инверсией. Рабочая схема модуля преобразования сигналов интерфеса RS-232 в RS-422 приведена на рисунке 3.9. Рисунок 3.9 3.3.13 Несмотря на всю свою приверженность к буферизации байта информации, передаваемой по интерфейсу RS-485, в одной из схем мне пришлось опробывать "классический" метод переключения направления передачи, правда с использованием микроконтроллера ATtiny13 вместо двух одновибраторов 74HC123 (или наших АГ3). Это схема односторонней гальванической развязки интерфейса RS-485, представленная на рисунке 3.9(2). Рисунок 3.9(2) По первоначальному замыслу микроконтроллер должен был реагировать на любые изменения сигналов, принимаемых из интерфейсов RS-485, и запускать на своем счетчике TCNT0 отсчет задержки переключения направления передачи. Любое изменение, происходящее до завершения этого отсчета, должно было перезапускать TCNT0. Таким образом должны были выполняться функции одновибраторов 74HC123. Об этом методе я уже упоминал в пп. 3.3.3, 3.3.4. К сожалению, для наших систем этот метод оказался непригодным из-за того, что наши контроллеры - слэйвы отправляют ответы на запросы контроллера - мастера с задержкой, компенсирующей по своей величине только максимально возможную задержку переключения направления передачи в микросхеме МАХ1480В, которая по документации фирмы MAXIM составляет 100 мкс (типовая задержка 35 мкс). Понятно, что при опросе контроллеров - слэйвов со скоростью 19200 бит/с (длительность бита 52,1 мкс) первые байты ответов просто теряются. Пришлось использовать другой принцип переключения направления передачи - по регистрации двух стопов в принимаемых байтах. При этом микроконтроллер байты не буферизирует, но программно отслеживает их (фазируетсяся по байтам), определяя старты по прерываниям PCINT и отсчитывая биты с помощью счетчика TCNT0. Дополнительно, для направления Слэйв - Мастер при ожидании прерывания PCINT включается отсчет таймаута ответа слэйва, по которому при отсутствии ответа от слэйва восстанавливается направление Мастер - Слэйв. Схема, представленная на рисунке 3.9(2), надежно работает по указанному алгоритму на скоростях 19200 бит/с и 38400 бит/с. Для выбора скорости достаточно установить рабочую частоту внутреннего генератора микроконтроллера 4,8 МГц или 9,6 МГц соответственно. Связь с контроллером - мастером осуществляется по цепям D1+,D1-, а с контроллерами - слэйвами по цепям D2+,D2-. Это позволяет контроллеру - мастеру опрашивать контроллеры - слэйвы с максимально возможной периодичностью, без учета задержки переключения направления передачи в микросхеме МАХ1480В.

3.4 Модуль для приема сигналов интерфейса Weigand-26

3.4.1 На рисунке 3.10 представлена принципиальная схема декодера сигнала Wiegand 26, а на рисунке 3.11 временные диаграммы работы схемы. Этот интерфейс используется в считывателях радиокарт, широко применяемых в настоящее время. Рисунок 3.10 Рисунок 3.11 В интерфейсе Wiegand 26 используется еще один способ неявной синхронизации, состоящий в передаче значащих импульсов заданной длительности с фиксированной длительностью паузы ( 2000 мкс ). Синхросигнал как бы является неявным "двухфазным" синхросигналом. Первая фаза (D1)переносит информационные единицы, а вторая (D0) - информационные нули. Длительность импульсов зависит от типа считывателя радиокарт. Например, в считывателях отечественного производства PR-A05, она составляет 50 мкс. А вот в импортном считывателе ID 2009 08, который мы у кого-то приобрели и установили в одну из своих систем, длительность импульсов в 10 раз больше - 500 мкс, при той же паузе - 2000 мкс. Схема декодера, представленная на рис.3.10, работает при любой длительности значащих импульсов, если длительность выходного сигнала одновибратора обеспечивает фильтрацию заднего фронта значащего импульса. Прием информации OUT в микроконтроллер можно осуществлять по прерыванию, инициируемому перепадом 0-1 сигнала INT(0-1). В этом случае сигнал УПР формируется не одновибратором, а микроконтроллером. Можно также использовать опрос сигналов А и В с периодом, гарантирующим захват значащего импульса и пропуск его заднего фронта. Мы используем опрос сигналов А и В с периодом 640 мкс, что гарантирует безотказную работу как с отечественными, так и с импортными считывателями. Это самый экономичный способ, поскольку он позволяет отказаться и от одновибратора и от выходного асинхронного триггера, а также и от вентиля формирования сигнала прерывания INT(0-1). 3.4.2 Несколько слов о входных RC-фильтрах интерфейса Wiegand 26. Они подавляют помехи на "висящих" входах асинхронных RS-триггеров. Проводники, подключенные к этим входам, при отсутствии RC-фильтров являются хорошими "антеннами", улавливающими любые емкостные наводки, в частности взаимные наводки цепей D0 и D1. Такими RC-фильтрами в начале 70-х годов "спасали" опытный образец одной из отечественных вычислительных машин, в которой регистры были построены на асинхронных RS-триггерах, а информационные связи подводились к ним по проводникам, увязанным в жгуты. Спасали, спасали, лавировали, лавировали, но как мне помнится, так и не спасли - разработку закрыли. Ну а в схеме приема сигналов интерфеса Wiegand 26 такое решение работает хорошо.

3.5 Схема управления знакосинтезирующими индикаторами

3.5.1 На рисунках 3.12, 3.13 приведены типовые схемы подключения к микроконтроллеру ATmega 162 знакосинтезирующих ЖК-индикаторов DV-40400 (4 строки по 40 знаков) и DV-16110 (1 строка из 16 знаков). На схемах приведены наименования управляющих сигналов, используемые в текстах макросов, рассмотренных в подразделе 2.11. Эти наименования связаны с соответствующими выводами микроконтроллера. Временные диаграммы, представленные на рисунке 3.14, являются общими для обоих индикаторов, так как в них используется однотипные ЖКИ-контроллеры KS066U. Рисунок 3.12 Рисунок 3.13 Рисунок 3.14 3.5.2 На временных диаграммах рис. 3.14 время подготовки для управляющих сигналов и информации отсчитываются по разному. То есть, информацию (Данные/Команды) можно подавать на входы контроллера KS066U на 200 нс позже управляющих сигналов (D_C и R_W), причем даже во время действия синхроимпульса. Практической пользы от такой возможности как бы не видно - ведь все равно управляющие сигналы формируются по готовности информации к передаче в индикатор, а по сему и могут выдаваться на индикатор вместе с информацией. Но есть аргумент в пользу задержкки выдачи информации. Как я предполагаю, сигнал R_W делает выводы индикатора D0...D7 либо выходами, либо входами. Поэтому желательно на время отсутствия сигнала записи определять выводы микроконтроллера РА0...РА7 как входы, чтобы исключить возможность сквозных токов, возникающих при работе выходов на выходы. После подачи низкого уровня на вход индикатора R/W, переключение выводов индикатора D0...D7 с выходов на входы происходит с задержкой (полагаю не более 100 нс). Эту задержку и желательно "выбрать" задержкой переключения выводов микроконтроллера РА0...РА7 со входов на выходы. Понятно, что обратное переключение должно выполняться без задержки. Практичным решением представляется постоянное подключение вывода R/W к нулю. В этом случае не надо заморачиваться с задержками.

3.6 Беспроводные сети на радиочастотных модулях

3.6.1 Первыми радиочастотными модулями, с которых началось моё знакомство с беспроводной связью, были Bluethooth-модули южнокорейских фирм Sena и Initium. Они привлекли способностью работать в режиме "прозрачного" удлинителя сигналов интерфеса RS-232, а также тем, что выпускались в двух основных конструктивных вариантах - в виде адаптера Parani-SD100 (Promi-SD205), подключаемого к компьютеру через типовой внешний разъем СОМ-порта (так называемого донгла), и в виде встраиваемого модуля Parani-ESD100 (Promi-ESD01), размещенного на небольшой плате с разъемом для врубания в плату, содержащую управляющий микроконтроллер. Хочу уточнить, что в системах сбора и обработки информации, в разработке и внедрении которых я участвовал, используются локальные и глобальные сети с централизованным опросом узлов сбора информации, размещаемых на нескольких системных уровнях. Опрос выполняется по соответствующим протоколам, определяющим форматы кодограммы запросов и ответов. Инициатором обмена информацией (установления соединения) в наших системах всегда является центральный (опрашивающий) контроллер или узел, связанный с периферийными (опрашиваемыми) контроллерами или узлами. Применительно к таким проектам и рассматривалась возможность использования Bluethooth-модулей. Оказалось, что они позволяют полностью удовлетворять требования наших протоколов и могут заменить на некоторых звеньях наших систем проводные соединения на беспроводные. Для этого все периферийные Bluethooth-узлы должны быть установлены в режим Mode2 (Slave), а центральный узел - в режим Mode1 (Master). Кроме того, Slave-ы необходимо "зарядить" адресом Master-а. Это делается посредством установления соединения между каждым Slave-ом и Master-ом по инициативе Master-а. Все эти операции можно выполнить как на отдельном стенде, так и не отключая модули от системы. В рабочем режиме все Slave-ы должны находиться в состоянии ожидания обращения от своего Master-а (состояние Pending), а Master поочередно устанавливать соединение и опрашивать соответствующие Slave-ы по адресной команде ATD112233445566<cr>. Здесь 112233445566 - условное обозначение адреса узла, в котором каждый знак представляется 8-битным ASCII-значением одной из 16-х цифр от 0 до F. 3.6.2 Менее тривиальной можно считать систему, в которой реализуется протокол CSMA-CA (Carrier Sens Multiple Access - Collision Avoidance), согласно которому инициаторами установления соединения являются периферийные узлы, а центральный узел обслуживает их запросы по мере возможности. Для реализации этого протокола все периферийные узлы должны быть установлены в режим Mode1 (Master), а центральный узел - в режим Mode2 (Slave). Если несколько Master-ов одновременно пытаются найти своего центрального Slave-а по команде ATD<cr>, и один из них находит, то нашедшие друг друга узлы посылают в свои микроконтроллеры ответ: <cr><lf>CONNECT112233445566<cr><lf>, и обмениваются информацией. В это же время, "неудачники" формируют для своего микроконтроллера ответ: <cr><lf>ERROR<cr><lf>, и через некоторый таймаут повторяют попытку соединения со своим Slave-ом. В таких системах на центральном Slave-е требуется контроль времени "молчания" каждого Master-a. Если оно превысит заданный предел, необходимо фиксировать "потерю связи" с данным Master-ом и обеспечить выполннение соответствующих действий. В наших системах, с централизованным опросом, при отсутствии ответа от периферийного Slave-а делается несколько дополнительных запросов и при отсутствии ответов на них, регистрируется "потеря связи" ( рассматриваемая как "ТРЕВОГА"), - это гораздо проще и надежнее, чем отслеживание времени "молчания". 3.6.3 На рис.3.15 представлен фрагмент принципиальной схемы автономного оконечного узла охранной системы, в котором управление Bluethooth-модулем (D2) осуществляет микроконтроллер ATtiny2313 (D1). Рисунок 3.15 Для тех, кто заинтересуется Bluethooth-модулями фирм Sena и Initium и начнет знакомиться с соответствующей технической документацией (кстати неплохого качества и очень подробной) хочу сообщить некоторые мелкие, но принципиальные детали. Во-первых, фирмы Юго-Восточной Азии обычно используют "линейную" нумерацию контактов двухрядных штыревых разъемов, монтируемых на платах. Она отличается от принятой у них же "перекрестной" нумерации контактов в двухрядных IDC-разъемах. Во избежание путаницы, в условном графическом обозначении (УГО) Bluethooth-модуля на рис.3.15 обзначения контактов приведены к стандартным обозначениям IDC-разъемов. Во-вторых, в качестве идентификаторов цепей, подключаемых к Bluethooth-модулям, фирмы Sena и Initium используют стандартные идентификаторы цепей интерфейса RS-232, причем без учета "ассиметрии" интерфейса RS-232 (Data Terminal - Data Set). Точнее, они считают свои модули "терминалами", подключаемыми к подобным же терминалам (микроконтроллерам или РС-компьютерам), по аналогии с соединением двух РС-компьютеров по интерфейсу RS-232 через нуль-модемный адаптер. Конечно, такой подход вполне понятен и не вызывает вопросов в части перекрещивания цепей RxD и TxD. А вот обозначение выходных управляющих цепей модема как RTS и DTR вместо CTS и DSR, и входных управляющих цепей модема как CTS и DSR вместо RTS и DTR часто сбивает, так как Bluethooth-модуль воспринимается обычно как модем, а не как терминал. Кроме того, в документации то ли забыли, то ли умышленно не указали инверсность этих управляющих сигналов - это несколько раздражает. Принимаю возражения о том, что в УГО указываются идентификаторы контактов модуля, а не идентификаторы цепей связи. Но согласитесь, что если эти идентификаторы совпадают, и к тому же соответствуют общепринятым обозначениям, принципиальная схема становится более читаемой. Кроме того, на принципиальных схемах (по нашему ГОСТ-у) в стандартном обозначении контакта разъема в графе "Конт." указываются номер контакта, а в графе "Цепь" - идентификатор цепи, а не контакта. Идентификатор цепи одновременно мы используем и как идентификатор сигнала, передаваемого по этой цепи. Так что лучше уж рассматривать модем как модем, а микроконтроллер как терминал и использовать соответствующие стандартные обозначения цепей без перекрещиваний и с указанием полярности передаваемых сигналов. В заключение несколько слов о сигналах ST(Cостояние), RST(Сброс на заводские установки) и PAR(Pairing). Сигнал ST используется для подверждения установления соединения Bluethooth-модуля оконечного узла с Bluethooth-модулем центрального узла и формирования сигнала светодиодной индикации соединения - STATE. Сигнал RST может использоваться в аварийных ситуациях, например по срабатыванию сторожевого таймера микроконтроллера. Сигнал PAR совместно с сигналами ST и RST позволяет устанавливать фиксированное соединение между двумя Bluethooth-модулями посредством Pairing-процедуры. После выполнения Pairing-процедуры модули не реагируют на АТ-команды и обеспечивают режим беспроводной последовательной связи. Возврат в режим приема АТ-команд осуществляется только через сброс на заводские установки (RST). Pairing-процедура описана в руководстве на донглы Parani-SD100/200. 3.6.4 Более ответственно к обозначениям цепей и сигналов отнеслись разработчики ZiGBee-модулей XBee/XBee-PRO компании MaxStream (в 2006г. приобретена корпорацией Digi International). Даже для обозначения сигналов RxD и TxD они использовали более корректные идентификаторы DI и DO, не говоря уже о точной идентификации сигналов (-RTS) и (-CTS). На модулях XBee-PRO я сделал опытный образец системы охранной сигнализации для автомобилей. На рис.3.16 представлена принципиальная схема переносного блока этой системы. Переносной блок может запитываться как от встроенного аккумулятора G, так и от внешнего адаптера, формирующего напряжение питания 5В и осуществляющего одновременный подзаряд аккумулятора. Микросхема D3 (LTC4054), контролирует процесс заряда аккумулятора, в нужное время завершает этот процесс и сообщает об этом, формируя сигнал CHR. Микросхема D4 (MAX8885) формирует стабильное выходное напряжение 3В для питания модема D2 и микроконтроллера D1 и одновременно контролирует состояние аккумулятора, формируя сигнал POK, по которому микроконтроллер может корректно завершить работу блока. Базовый блок системы, запитывается от автомобильного аккумулятора и понятно не требует применения специализированных микросхем. Рисунок 3.16 Раз уж речь зашла о специализированных микросхемах, хочу упомянуть еще одну - MAX6436. Её желательно использовать в удаленных датчиках, запитываемых от 2-х пальчиковых батареек 1,5В или одной литиевой батарейки 3В ( см. рис. 3.17). При разряде батареек датчик может послать в центральный блок сигнал об аварии и корректно завершить свою работу. Рисунок 3.17 Модули XBee/XBee-PRO при изготовлении настроены на работу в режиме беспроводной последовательной связи. Этот режим назвали "прозрачным". По умолчанию, в модулях установлен режим индивидуального вещания (Unicast Mode) c подтверждением приема пакета и повторением передачи пакета до 3-х раз при отсутствии подтверждения. Адреса отправителя и получателя легко устанавливаются в модулях АТ-командами ATMY, ATDL, ATDH. Для настройки модулей желательо использовать отладочную плату XBIB-R (под RS-232) или XBIB-U (под USB) из штатного отладочного комплекта и программный терминал X-CTU. В состав отладочного комплекта входит очень полезный модуль - Loopback Adapter, позволяющий заворачивать принимаемую информацию на передачу и контролировать на удаленном компьютере качество связи, перемещаясь с платой из отладочного комплекта, запитанной от батарейки, по различным точкам контролируемой зоны. Правда мне пришлось чуть доработать схему этого адаптера, дополнив ее переключателем Работа ВКЛ/ОТКЛ для экономии заряда батарейки. Светодиод индикации рабочего режима тоже оказался полезным (см. рис. 3.18). Не в упрек разработчикам скажу, что в обозначениях сигналов интерфейса RS-232 им тоже не удалось избежать ошибок - в схемах интерфейсных адаптеров сигналы RXD и TXD указаны в прямой форме, хотя интерфейс требует инверсную, и эта инверсная форма фактически и обеспечивается отладочными платами, к которым адаптеры подключаются. Рисунок 3.18 В заключение - маленький "нюанс" по поводу включения резистора Rsleep в схемы, представленные на рис. 3.16 и 3.17. Этот резистор позволяет и устанавливать и сохранять спящий режим в модеме после перехода самого микроконтроллера в спящий режим. 3.6.5 Испытания опытных образцов систем, построенных на Bluethooth-модулях и модулях XBee/XBee-PRO, показали, что указанные модули не обеспечивают достаточно надежную связь при наличии электромагнитных помех и физических преград в контролируемых зонах. В связи с этим рассматривалась возможность использования блоков связи, построенных на радиочастотных модулях RC1240 компании Radiocrafts AS (Норвегия), работающих на частоте 433 МГц. На рис.3.19 представлена принципиальая схема одного из таких блоков, который подключается к РС-компьютеру по интерфейсу RS-232. Рисунок 3.19 Отмечу некоторые особенности модулей RC1240. Как указано в документации, если цепи (-RTS), (-CTS), и (-CFG) не используются, выводы 2, 3, 4 необходимо подключать к потенциалу VDD, формируемому модулем. Для настройки модулей RC1240 с помощью команд управления, и в том числе, для считывания байта цифрового сигнала RSSI, предусмотрен джампер J, позволяющий вручную коммутировать цепь (-CFG) на 0В с целью переключения модуля в режим конфигурации. Еще одна особенность состоит в том, что при использовании управления потребляемой мощностью (спящего режима) модули RC1240 требуют установки микросхем сброса MAX809T и LM3722, а также подключения выводов 5, 6, 12 через дополнительные резисторы к потенциалу VDD. Если переключать модуль в спящий режим с помощью сигнала (-OFF), необходимо еще и подавть сигнал сброса (0В) на вход (-RST) и сохранять его до перевода модуля в рабочий режим. Эти "сложности" не вызывают большого желания использовать спящий режим. 3.6.6 При разработке блоков беспроводной связи на модулях RC1240 решалась задача пакетной передачи достаточно большого объема накопленной информации, в частности - множества идентификационных номеров товаров, считанных кладовщиком на складе и передаваемых большим блоком на центральный пункт учета товаров. Протокол связи на пользовательском уровне (кодограммы из ASCII-знаков, передаваемые и получаемые через СОМ-порт) предусматривает посылку в периферийный блок из центрального блока кодограммы запроса на выдачу информационной кодограммы, имеющей ограниченную длину. Если ответ не поступает в центральный блок, запросы повторяются (как в радиоканале у модулей XBee/XBee-PRO). В свою очередь, периферийный блок, отправив ответ на запрос, должен знать, поступил или не поступил в центральный блок отправленный ответ. Это позволяет при поступлении нового запроса, либо отправлять новую информационную кодограмму в центральный блок, либо повторять передачу предыдущей кодограммы. Необходимость в таком алгоритме связи обусловлена возможной потерей связи в направлении от периферийного блока к центральному при сохранении связи от центрального блока к периферийному. Информация о поступлении ответа на запрос кодируется в специальном байте кодограммы запроса изменяющимся номером запрашиваемой информационной кодограммы. В принципе, достаточно чередовать значение этого номера (0-1-0-1...). Без этого никак нельзя! 3.6.7 Завершая подраздел хочу рассказать об инфракрасных модулях, которые использовались для построения блоков беспроводной связи на короткие расстояния (несколько метров). Как обычно на них создавались прозрачные беспроводные удлинители последовательных цепей интерфейса RS-232. Фрагмент принципиальной схемы инфракрасного удлинителя приведен на рис.3.20, а временные диаграммы ее работы - на рис.3.21. Рисунок 3.20 Рисунок 3.21 Микроконтроллер ATtiny13 работает от внутреннего емкостного генератора 1 МГц и обеспечивает программный прием UART-сигналов RXD и программное формирование UART-сигналов TXD, а также программное преобразование сигнала RXD в сигнал DI и сигнала (-DO) в сигнал TXD. Согласно стандарту IRDA логический 0 передается одиночным ИК-импульсом длительностью от 1,6 мкс до 3/16 длительности битовой посылки. Логической 1 соответствует отсутствие импульса. В микросхеме TFDU4100 приемник ИК-сигнала имеет два порога чувствительности, переключаемые с помощью джампера J. На рис.3.20 джампер J установлен в положение низкой чувствительности. В период разработки проектной документации на объекты при подготовке к олимпиаде в Сочи рассматривалась возможность использования схемы рис.3.20 для передачи ИК-сигнала на контролируемый объект и считывания отраженного сигнала. По результату считывания формировался сигнал о целостности контролируемого объекта. Предполагалось использовать данную схему для контроля открытия/закрытия крышек канализационных люков. Лабораторные испытания дали удовлетворительные результаты, но дальше дело почему-то не пошло (Может и к лучшему!).

3.7 Процессор сопряжения

3.7.1 Первые микропроцессоры Intel 4004 появились в 1974 году. До сих пор у меня перед глазами стоит обложка журнала "Электроника", на которой изображены 4 профиля разработчиков этого "чуда", поистине перевернувшего весь существующий мир. В то время в "науке" продолжалось безуспешное обсуждение вопроса о "функциональной полноте" систем логических элементов, искали такой набор элементов, на котором можно было бы создать любое цифровое устройство. В дальнейшем этот поиск привел к появлению так называемых БМК (базовых матричных кристаллов) и специализированных микросхем на их основе. Даже сейчас у этого направления есть множество сторонников. Несмотря на то, что я неплохо владел методами синтеза логических схем и увлекался теорией конечных автоматов, у меня не возникло ни малейшего сомнения с кем идти по пути - с "микропроцессорщиками" или с "БМК-шниками". Сразу стало ясно, что микропроцессорные комплекты являются теми универсальными наборами логических элементов, на которых можно создавать цифровые устройства любой сложности и любого назначения. Микропроцессоры заставили многих электронщиков, и меня в их числе, открыть для себя мир программирования, почувствовать "всесильность" программного метода создания конечных автоматов, каковыми по сути являются все цифровые устройства. 3.7.2 Процессор сопряжения - это своего рода первый результат моей работы в новом направлении, которое начало так бурно развиваться, что создаваемые устройства устаревали уже на стадиях технических проектов. Тем не менее, просматривая оставшиеся у меня технические материалы на процессор сопряжения, я не нахожу изъянов в принятых тогда, в конце 80-х годов, решениях, и даже можно сказать,- не стыжусь их, хотя к сожалению, эта работа завершилась в начале 90-х после создания опытного образца. Сама задача построения процессора сопряжения как бы назрела в стенах Научно-исследовательского института систем автоматизации (НИИСА), где я тогда работал. От разрабатываемых в НИИСА систем специального назначения заказчики требовали совместимости с множеством созданных и создаваемых разными институтами устройств обработки, отображения и передачи информации, имеющих различные внешние интерфейсы. Требовался некий универсальный подход к решению задач сопряжения этих устройств с нашими системами. Процессор сопряжения воплощал такой универсальный подход. Сначала мы сделали макет процессора, состыковали его с АПД по стыку С1-И, показали руководству и получили "добро" на разработку промышленного образца. 3.7.3 Структурная схема процессора сопряжения (далее ПС) приведена на рис. 3.22. Как видно из рис. 3.22, ПС имеет Принстонскую архитектуру, согласно которой хранение команд и данных осуществляется в общем адресном пространстве основной памяти (ОП). Обмен информацией между центральным процессором (ЦП), ОП и устройствами ввода/вывода (УВВ) осуществляется в ПС по единой 16-ти разрядной магистрали данных, команд и адресов (МД). Адресные пространства ОП и УВВ были разделены, что позволяло адресовать УВВ удобным позиционным кодом. На структурной схеме ПС показана цепь запросов на прерывание ЦП, построенная по принципу последовательного обхода УВВ, подобной дейзи цепи, и формирующая общий сигнал запроса на прерывание по схеме ИЛИ. В отличие от классической дейзи цепи в ПС отсутствовала цепь разрешения прерывания, последовательно обходящая УВВ в обратном порядке. В каждом УВВ предусматривался регистр для храненния адреса обработчика прерывания от данного УВВ. Этот адрес, называемый вектором прерывания, при инициализации ПС записывался в каждый УВВ через МД по адресному сигналу "Запись вектора прерывания", и выводился на МД с выставившего прерывание УВВ по общему сигналу "Чтение вектора прерывания", обеспечивая немедленный переход к обработке прерывания. Вектор прерывания выдавал тот УВВ, на входе которого значение сигнала запроса на прерывание, приходящего от других УВВ, имеющих более высокий приоритет, равнялось "0". Одновременно с выдачей вектора прерывания УВВ сбрасывал свой сигнал запроса на прерывание, разрешая тем самым другим, менее приоритетным УВВ, выдавать свои вектора прерывания в следующих рабочих циклах. Таким образом, УВВ, наиболее удаленный от ЦП, имел в отличие от классической дейзи цепи, наивысший приоритет. Данное решение позволяло экономить один машинный цикл при переходе к обработке прерывания. В состав набора УВВ был включен таймер, который вырабатывал сигнал прерывания ЗП(0) каждые 5 мс, по которому активизировалась специальная управляющая программа, называемая процессом временного контроля (ПВК). Эта программа отсчитывала временные интервалы для нескольких рабочих процессов (программ, хранящихся в ОП), исполняемых в псевдопараллельном режиме. Таймер ПВК совместно с ПВК заменял несколько аппаратных таймеров и имел наивысший приоритет по отношению ко всем УВВ. Рисунок 3.22 3.7.4 Уникальная особенность процессорных микросхем 1804ВС1, на которых строилось АЛУ ЦП, состоящая в наличии короткой цепи, позволяющей выдавать адрес чтения ОП с одного из 16-ти рабочих регистров в обход АЛУ, позволила организовать параллельную работу ЦП и ОП (в конвеерном режиме). Для организации конвеерной работы ЦП и ОП в ОП устанавливались два конвеерных регистра c выходными коммутаторами - регистр информации чтения (РИЧ) и регистр информации записи (РИЗ). В момент завершения каждого рабочего цикла ЦП (совпадающий с моментом начала нового рабочего цикла ЦП) в РИЗ копировалась информация с МД, независимо от того, будет ли в следующем цикле выполняться запись в ОП этой информации или нет. Для записи информации в ОП достаточно было в следующем цикле выдать по короткой цепи адрес записи и сформировать в ЦП сигнал записи в ОП. Одновременно с выдачей адреса по короткой цепи АЛУ могло выполнять необходимую операцию, например инкрементировать значение этого адреса. Если в начале рабочего цикла ЦП на МД формировалась какая-либо постоянная информация, что обеспечивалось при выдаче информации на МД по короткой цепи в обход АЛУ, а также при чтении РИЧ-а или констант из управляющей памяти ЦП, ОП по умолчанию воспринимала эту информацию как адрес чтения, считывала информацию по этому адресу и передавала считанную информацию на входы РИЧ-а для записи в РИЧ. По сигналу чтения ОП на МД коммутировалась информация считанная из ОП в предыдущем рабочем цикле и записанная в РИЧ. В текущем рабочем цикле эта информация могла обрабатываться в АЛУ, а также использоваться в качестве адреса чтения из ОП новой информации или в качестве информации перезаписи в ОП по новому адресу. 3.7.5 В состав ЦП входило устройство микропрограммного управления, реализованное с использованием микросхем 1804ВУ1. Эта микросхема формировала адрес чтения следующей микрокоманды из управляющего ПЗУ. В зависимости от значения управляющих сигналов на управляющих входах микросхемы 1804ВУ1 адрес чтения выбирался либо из счетчика микрокоманд, либо из адресного регистра, либо из четырехуровневого стека возврата. Стек возврата позволял использовать в микропрограммах микроподпрограммы и поднял классическое микропрограммирование на уровень традиционного программирования. Соответственно появилась возможность (а точнее необходимость) поднять на более высокий уровень и команды программ, записываемых в ОП, поскольку микропрограммы взяли на себя не только базовые арифметические и логические операции, но и достаточно сложные операции, требующие использования последовательностей микрокоманд и обращения к микроподпрограммам внутри этих последовательностей. Очень полезной функцией микросхемы 1804ВУ1 оказалась функция побитного ИЛИ выходных сигналов адресного регистра с сигналами маски, которые в ПС коммутировались с МД. Эта функция использовалась для вызова микроподпрограмм обработки прерываний (обработчиков прерываний), а также для обращения к микропрограммам, обеспечивающим исполнение команд программ, хранимых в ОП. 3.7.6 В конце 80-х задача экономии объемов постоянной памяти, хранящей микропрограммы, являлась достаточно актуальной, поэтому хотелось устранить избыточность в разрядности микрокоманд и сделать компактную управляющую память. Обычно микрокоманда содержала несколько десятков разрядов, по числу необходимых управляющих сигналов и не требовала промежуточных дешифраторов, но в каждом рабочем цикле использовалась лишь часть зтих сигналов. Последнее обстоятельство позволяло без ущерба производительности ПС разделить общий формат микрокоманды на несколько различных более коротких форматов и, дополнив устройство микропрограммного управления небольшим числом простейших дешифраторов полей микрокоманды, существенно уменьшить емкость управляющей памяти. Сейчас такое разделение называется вертикальным микропрограммированием. В ПС использовались 4 различных 24-х разрядных формата микрокоманд A, C, B и D, представленные на рис.3.23. Рисунок 3.23 Каждый двоичный код, записываемый в указанные на рис.3.23 поля микрокоманды, назывался микроприказом и имел собственное мнемоническое обозначение (абревиатуру). При разработке микропрограмм микроприказы записывалась в таблицы микропрограммных бланков (см.рис.3.24). Микроприказы и форма их записи образовывали язык микропрограммирования ПС. Выражения этого языка транслировались в двоичные коды, в соответствии с которыми на программаторе "прожигали" управляющее ПЗУ. На стадии отладки программ, использовали ОЗУ вместо ПЗУ. Рисунок 3.24 Думаю, что подробное описание форматов микрокоманд и микроприказов, содержащихся в полях микрокоманд, не представляет большого интереса, кроме пожалуй формата С, в котором из управляющей памяти (УП) считывалась константа и записывалась в регистр РВ. При этом следующая микрокоманда могла извлекаться из УП как по следующему адресу, так и по адресу возврата. Последнее позволяло обращаться к таблицам констант, хранящим в этом формате либо адреса ветвлений, либо тексты сообщений или наборы стандартных кодограмм. Тех, кто знаком с серией 1804 заинтересует таблица кодов управления АЛУ, которая благодаря своему исключительному удобству, заслужила одобрение наших программистов. Эта таблица приведена на рис.3.25. Она содержит мнемонические обозначения операндов и операций, которые записывались на микропрограммном бланке в графу R, F, V. Рисунок 3.25 3.7.7 В заключение хочу все же коротко рассказать о микрокомандах формата А, обеспечивавших условные переходы. Предусматривалось 32-х различных условия перехода как на ветку микропрограммы, так и на микроподпрограмму (с записью адреса возврата в стек микросхемы 1804ВУ1). Условия были разбиты на 4 группы по 8 условий в каждой. В первые 2 группы условий входили обычные байтовые и словарные условия - знак, перенос, ноль, переполнение. Две последующие группы образовывали 16 разрядов шины МД. В качестве одного из условий перехода основной, 1-й группы использовался сигнал запроса на прерывание ЗП от дейзи цепи. Среди условий перехода 1-й группы было также условие безусловного перехода БП, постоянное значение которого равнялось 1. Все условные переходы можно было выполнять, как по значению условия равному 1, так и равному 0. Для перехода по значению условия равному 0, условие записывалось в поле Y со знаком "-". Запись -БП означала безусловный переход по счетчику микрокоманд с пропуском рабочего цикла ЦП. Такая микрокоманда в некоторых случаях оказывалась удобной для "растяжки" цикла обращения к медленному УВВ. Для 1-й группы условий перехода адрес перехода можно было модифицировать значением сигналов на шине МД (см.п.3.7.5). Это позволяло ветвиться по множеству направлений, используя значения, выводимые на МД с регистра РА или из ОП, причем выполнять такое ветвление за один рабочий цикл (такт синхронизации). 3.7.8 До сих пор не пойму, почему в более поздней, усовершенствованной микросхеме 1804ВС2 отказались от выдачи содержимого РА на выходы по короткой цепи, в обход АЛУ, а в микросхеме 1804ВУ2 - от маскирования адресов по ИЛИ с целью их модификации. Возможно разработчики посчитали, что маскирование по ИЛИ не заменяет более универсальную и необходимую арифметику адресов, а короткой цепи не нашли достойного применения, посчитав ее использование для адресации ОП недостаточно полезным. Но именно эти особенности микросхем 1804ВС1 и 1804ВУ1, на мой взгляд, позволили создать эффективную и красивую архитектуру ПС.

3.8 Сеточный параллельный процессор

3.8.1 Разработка концепции сеточного параллельного процессора (СПП) выполнялась факультативно, причем одновременно с разработкой опытного образца процессора сопряжения. Возможно вполне закономерно, что эта работа так и закончилась на уровне концепции. Я вполне понимал, насколько более серьезными по сравнению с процессором сопряжения должны были быть усилия для воплощения этой разработки в жизнь, и тем не менее, со всей ответственностью относился к этой работе. Это было связано с тем, что основным идеологом СПП, был математик с мировым именем Валерий Павлович Ильин. У меня сложились с ним очень доверительные отношения и подводить его я не имел права. За любое из принятых тогда концептуальных программно-аппаратных решений я готов ответить и сегодня. Результаты этой работы опубликованы в брошюре - Академия наук СССР, Сибирское отделение, Вычислительный центр, Препринт 683, Новосибирск 1986. 3.8.2 В основу концепции СПП были положены математические методы решения сеточных уравнений высокого порядка, систем интегральных и дифференциальных уравнений, задач математического программирования и других задач, допускающие эффективное распараллеливание на вычислительных системах типа SIMD (Singl Instruction Multiple Data). Конечно, эти вопросы относились к компетенции Валерия Павловича. Моя же задача состояла в разработке предложений по созданию универсальной вычислительной системы, содержащей множество вычислительных блоков, способных работать параллельно и обмениваться результатами выполненных операций. Усилия были направлены на создание архитектуры, реально реализуемой на существующей быстродействующей элементной базе и типовых базовых конструкциях, конечно с широким использованием микропрограммного управления. 3.8.3 СПП предназначался для выполнения операций с данными, представленными в формате с плавающей запятой (40 разрядная мантисса, 8 разрядный порядок). Выбор разрядности мантиссы осуществлялся по принципу 24 - мало, 56 - много, 40 - в самый раз. Кроме того, именно такая разрядность мантиссы использовалась в нашей "гордости" (без иронии) - БЭСМ6. По поводу выбора элементной базы и базовой конструкции для СПП вопросов не возникало - у ЭCЛ-серий К1800, К500, и конструктива ЕС ЭВМ на тот момент альтернативы просто не было. Понятно, что элементная база и конструктив во многом определили и архитектуру СПП. 3.8.4 Для конкретизации описания СПП далее приведу структурные схемы как самого СПП, так и его составных частей. На всех связях между структурными блоками указана разрядность этих связей. На структурной схеме СПП, приведенной на рис.3.26, разрядность 48 соответствует разрядности обрабатываемых данных, пересылаемых по двунаправленным магистралям ближнего (МБО) и дальнего (МДО) обмена данными. Разрядности 20 и 40 соответствуют однонаправленным магистралям микропрограммного управления. Разрядность магистрали управления вычислениями (МУВ) - 40 определялась необходимым множеством входных управляющих сигналов элементарных процессоров (ЭП), реализуемых на микросхемах К1800ВС1 (АЛУ), К1800ВР1 (умножитель), К1800ВР8 (сдвигатель). Разрядность однонаправленной магистрали управления обменом данными (МУО) - 20 определялась необходимым множеством входных управляющих сигналов коммутаторов магистралей обмена данными МБО и МДО, реализуемых на ЭCЛ-вентилях и регистровых триггерах. Хотелось бы обратить внимание на замечательную особенность ЭСЛ-элементов - возможность объединения их выходов в магистрали и способность работать на линии связи без буферных передатчиков и приемников. Это позволяло экономично реализовывать двунаправленные и однонаправленные цепи обмена данными. Рисунок 3.26 На рисунке 3.27 представлена структурная схема элементарного процессора (ЭП). В отличие от классических процессоров, ЭП не содержит рабочих РОН-ов. Вместо них предлагалось использовать быстродействующее рабочее ОЗУ - вычислительные алгоритмы требовали использования исходного множества коэффициентов, которые должны были записываться в ОЗУ перед началом вычислительного процесса. Устройство обмена данными (УОД), входящее в состав ЭП, состояло из обычных вентильных коммутаторов и конвеерных регистров. А вот арифметическое устройство (АУ) представлялось по настоящему сложным, но несомненно реализуемым блоком. Рисунок 3.27 Структурная схема АУ приведена на рисунке 3.28. Конечно можно было бы "гнать зайца" и дальше, то есть приводить структурные и функциональные схемы достаточно сложных составных частей АУ - умножителя и сумматора данных с плавающей запятой (такие схемы мне пришлось прорисовывать на миллиметровке), но вряд ли их кто-либо будет изучать, да и ничего нового они даже тогда не представляли, так как я в основном руководствовался фирменными рекомендациями по применению микросхем серии M1800 (наш аналог К1800). Ограничусь перечислением основных функциональных узлов основных составных частей АУ. Рисунок 3.28 Умножитель данных (УМД) состоял из 40-разрядного умножителя мантисс и 8-разрядного сумматора порядков. Сумматор данных (СМД) состоял из выравнивающего сдвигателя, вычитателя порядков, анализатора разности порядков, 40-разрядного сумматора мантисс и нормализующего сумматора. СМД с плавающей запятой предполагалось реализовать по классической схеме, предложенной чуть ли не на заре вычислительной техники и использованной в машинах IBM360,370 и в наших ЕС ЭВМ. Думаю, что до сих пор никто ничего лучшего не придумал. Регистры как обычно строились на регистровых триггерах, допускающих однофазную синхронизацию и конвеерную работу функциональных узлов АУ. Мультиплексоры реализовывались на вентилях И-ИЛИ и практически не вносили лишних задержек в рабочий цикл ЭП. В АУ предполагалось совмещать во времени операции умножения и сложения. Порядки и мантиссы обрабатывались отдельными функциональными узлами, работающими при умножении параллельно, а при сложении - последовательно/параллельно. Признаюсь, что слегка подзабыл детали предполагаемой последовательно/параллельной работы, но не сомневаюсь, что это так и есть, поскольку такая формулировка вошла в текст брошюры (см.п.3.8.1). 3.8.5 В заключение о своем любимом микропрограммном управлении. Структурная схема устройства управления (УУ) представлена на рис.3.29. Рисунок 3.29 Предлагалось строить УУ в виде микропроцессорной системы с микропрограммным управлением как бы верхнего уровня, управляющего только составными частями самого УУ. Микропрограммное управление вычислительными операциями в СПП и обменом данными - управление нижнего уровня, возлагалось на контроллеры КВО и КДО, выполняющие функции устройств ввода-вывода и формирующие последовательности микрокоманд управления. Эти последовательности интерпретировали микроприказы микрокоманд верхнего уровня (команды). Всю же систему программирования СПП предполагалось реализовывать в трех уровнях: - макроуровень, представленный макропрограммой параллельных вычислений; - уровень программ (микропрограмм верхнего уровня), интерпретирующих макрокоманды макропрограммы; - уровень микропрограмм, интерпретирующих команды программ. Макропрограммы и исходные данные должны были подготавливаться на универсальной ЭВМ и пересылаться в ООП СПП через УВВ главной ЭВМ. Как и в процессоре сопряжения (см.подраздел 3.7), с целью оптимизации разрядности управляющей памяти, я хотел сделать несколько форматов микрокоманд верхнего и нижнего уровня. У меня получалось три различных 48-разрядных формата микрокоманд верхнего уровня - отдельный формат для КВО, отдельный для КДО и отдельный для связи с главной ЭВМ. На структурной схеме рис.3.29 управляющие сигналы Упр.1...Упр.4 представляют поля этих форматов. Микрокоманды нижнего уровня, формируемые контроллерами КВО и КДО, и посылаемые на управляющие магистрали МУВ (40 разрядов) и МУО (20 разрядов) соответственно, я предполагал делать двухформатными. О готовности к приему новой команды от ЦУП-а КВО и КДО сообщали ЦУП-у либо по прерываниям, либо через флаг состояния, опрашиваемый ЦУП-ом. Задача реализации микропрограммного управления как верхнего, так и нижнего уровня, упрощалась наличием в составе серии К1800 микросхемы микропрограммного управления К1800ВУ1, подобной 1804ВУ1 (см.п. 3.7.5). В качестве АЛУ, как и в элементарных процессорах (ЭП) могли использоваться микросхемы К1800ВС1. На структурной схеме УУ кроме двух основных внутренних магистралей УУ (адреса и данных) показана магистраль прямого доступа в память со стороны КДО. Данная магистраль обозначена на рис.3.29 как МПД. Сейчас я полагаю, что вполне можно было бы обойтись и без нее. Примечание. Для тех, кто заинтересуется истинными шедеврами микроэлектроники и схемотехники 80-х годов - микросхемами серии М1800 рекомендую посетить сайт www.datasheetarchive.com. 3.8.6 Вот пожалуй и все существенные аппаратные и архитектурные решения, принятые при разработке предложений по построению СПП. Не исключаю, что в настоящеее время всю рассмотренную архитектуру можно оптимально реализовать на базовых матричных кристаллах (БМК), от которых я в свое время так резко и к счастью отказался (см.п.3.7.1). А может все это надо делать на готовых РС-компьютерах, о чем я уже сказал в преамбуле к разделу. Возможно, в чем-то прав был наш соавтор - Яков Ильич Фет, настаивавший на последовательной (побитной) обработке и передаче данных. А быть может вообще все это не нужно? Пусть на эти вопросы при желании ответят молодые разработчики.