Искусство схемотехники. Том 2 (Изд.4-е)
Шрифт:
LocalTalk. LocalTalk (первоначально Appletalk), разработанная (угадайте, кем?) фирмой Apple Computer, представляет собой упрощенную сеть с конфликтами. Это не кольцевая сеть, а линейная. Один из узлов может передавать, остальные слушают. В качестве среды передачи используется одна симметричная пара; сигналы в стандарте RS-422 поступают на нее из узлов через трансформаторы. Формат пакета соответствует стандарту SDLC. Максимальная протяженность сети составляет 330 м, и к ней можно подключить до 32 узлов. Пропускная способность сети составляет 230,4 Кбит/с. Совместимый вариант, известный под именем PhoneNET (Farallon Computing Inc.) использует телефонные кабели и соединители и, как утверждается, работает при расстояниях до 1300 м.
Протокол сети схож с Ethernet, но проще: если вы не слышите передачу по сети, вы можете посылать свой пакет. Аппаратура сети
В сети LocalTalk предусмотрены протоколы для совместного использования файлов и ресурсов (принтеров, модемов и проч.), а также способ наименования устройств, подключенных к сети. Можно даже раздобыть интерфейсы LocalTalk для «не-Аррlе»-компьютеров, что дает вам возможность пересылать файлы между компьютерами типов Macintosh, IBM и UNIX, а также совместно использовать такие ресурсы, как лазерный принтер.
10.22. Пример интерфейса: аппаратная упаковка данных
Если все ваши приборы подключаются к стандартной интерфейсной магистрали (например, GPIB), ваши дела блестящи: просто купите интерфейсную плату для вашего компьютера и несколько кабелей, соедините все вместе и наймите программиста. Талант тут не требуется, только деньги. Однако эта глава посвящена магистральным интерфейсам, и мы хотели бы завершить ее примером законченной разработки.
Надо полагать, что вы, как и мы, не выбрасываете все ваши работоспособные приборы, если появляется что-нибудь новенькое. Некоторые исключительно полезные приборы были созданы еще до эпохи GPIB; в них можно вдохнуть новую жизнь, смастерив к ним интерфейс для подключения к лабораторному компьютеру. Например, частотомер с 8-разрядным цифровым индикатором скорее всего имеет на задней панели «цифро-последовательный, бит-параллельный» выход, на котором появляются друг за другом индицируемые цифры в двоично-кодированном десятичном коде (BCD); весьма вероятно, что скорость вывода цифр совпадает со скоростью регенерации индикатора. Контролировать временные соотношения вы не можете; каждая достоверная цифра, вместе с ее трехбитным адресом позиции в числе, сопровождается стробом. Такого рода прибор скорее всего использует выходные уровни TTL.
На рис. 10.23 показано, как подключить такой прибор к IBM PC.
Рис. 10.23. Символьно-последовательный интерфейс.
Это законченный интерфейс, вместе с флагом состояния, прерываниями и выбираемым адресом порта ввода-вывода. Работа интерфейса начинается в левом нижнем углу рисунка, где обозначены данные, посылаемые из частотомера: последовательные цифры, их адреса (0–7) и стробирующий импульс STROBE7, говорящий о достоверности данных. Частотомер посылает цифры от самой младшей (LSD) до самой старшей (MSD), так что весь цикл заканчивается приемом самой старшей цифры (разряда 7). Восемь регистров `173 (4-разрядные D-регистры с тристабильными выходами) фиксируют последовательные цифры; для этого их информационные входы объединены, а на тактовые входы подаются отдельные сигналы с дешифратора адреса цифр. Обратите внимание на использование микросхемы `138-стробируемого дешифратора 1 из 8, с помощью которого из сигналов адреса и строба образуются тактовые сигналы для фиксации цифр.
Таким образом, выходные данные частотомера фиксируются в восьми 4-разрядных регистрах, выходы которых образуют 4 группы по 2 цифры (8 бит) в группе. PC может принять все восемь цифр четырьмя командами IN ввода данных шириной 1 байт из четырех последовательных адресов портов ввода-вывода (начиная с адреса, установленного
Флаг состояния устанавливается при приеме последней цифры числа из частотомера; состояние можно прочитать по адресу PORT + 4, где PORT — адрес, установленный на DIP-переключателях. Флаг состояния сбрасывается, когда ЦП читает последний (самый старший) байт данных (по адресу PORT + 3). Интерфейс позволяет работать и в режиме прерываний, которые через перемычку подключаются к любому из уровней IRQ2 или IRQ3, и разрешаются посылкой 1 по адресу PORT (а запрещаются посылкой 0); обратите внимание на неполную дешифрацию адреса в цепи записи, что позволило сэкономить вентили. Как и положено законопослушным гражданам, при включении питания мы сбрасываем оба триггера — и состояния, и разрешения прерываний.
Описанный интерфейс выполняет «упаковку» данных, объединяя несколько чисел в одно компьютерное слово. Если «числа» состоят из одного бита каждое, в 16-разрядное слово компьютера их можно упаковать 16 штук. Это не такое бессмысленное рассуждение, как кажется на первый взгляд: в цифровой обработке сигналов приходится иметь дело с периодическими выборками жестко ограниченных колебаний (которые можно рассматривать, как 1-бит аналого-цифровое преобразование); для повышения скорости выполнения операций ввода-вывода эти биты можно упаковать аппаратно и читать затем целыми словами. Конечно, если скорость не имеет значения, проще получать данные с помощью минимальных аппаратных средств, а всю упаковку и преобразования выполнять программно. Например, в приведенном примере можно было фиксировать и передавать в ЦП по одной цифре, если только быстродействие компьютера достаточно высоко, чтобы цифры не терялись.
Упражнение 10.8. Видоизмените схему интерфейса так, чтобы можно было программно выбирать линию запроса прерывания IRQ, используемую интерфейсом: посылкой 01Н по адресу PORT разрешать прерывания по IRQ2, посылкой 02Н по адресу PORT разрешать прерывания по IRQ3, а посылкой 0 по адресу PORT (или включением питания) запрещать и то, и другое.
Практическое замечание по поводу нашей схемы: следует избегать чрезмерной нагрузки линий шины. В приведенной схеме к каждой линии Dn подключаются выходы четырех тристабильных регистров `173, что создает чрезмерную емкостную нагрузку. Хотя наш интерфейс будет, несомненно, работать правильно, его подключение ограничит число дополнительных плат, которые можно установить на шине (особенно, если остальные разработчики окажутся грешными в том же отношении!). В нашем случае следовало использовать тристабильный 8-разрядный буфер (микросхема `244), включив его между выходами D0-D7 и шиной данных PC. Сигнал разрешения микросхемы можно получить, образовав логическое И декодированного адреса и сигнала IOR.
10.23. Форматы чисел
Формат байтов (или слов), получаемых из частотомера в рассмотренном примере, отличается от внутримашинного двоичного формата; частотомер образует двоично-кодированные десятичные коды, упакованные по две цифры в байте (или четыре цифры в слове). Чтобы с этими числами можно было выполнять какие-то вычисления, их следует преобразовать в целые числа или в числа с плавающей точкой (хотя в системе команд микропроцессора предусмотрены и команды с «десятичной коррекцией», позволяющие выполнять арифметические операции непосредственно над упакованными двоично-кодированными десятичными числами). Рассмотрим форматы чисел, обычно используемые в компьютерах (рис. 10.24), предмет, кратко затронутый нами в начале гл. 8.