Искусство схемотехники. Том 2 (Изд.4-е)
Шрифт:
На рис. 10.20 показаны временные соотношения этих сигналов.
Рис. 10.20. Временные соотношения для (принтерного) интерфейса Centronics.
Базовые сигналы перечислены в первой группе: D0-D7, STROBE', ACKNLG' и BUSY. Сигнал BUSY является флагом: если он в низком состоянии, принтер не «занят», т. е. готов принимать данные; источник данных (компьютер) устанавливает тогда данные, а затем STROBF (при гарантированной достоверности данных по обе стороны этого импульса). После этого устанавливается в высокое состояние сигнал BUSY, который возвращается в низкое состояние только когда принтер готов принимать следующий байт. Компьютер должен, как это показано на
В большинстве принтеров предусмотрен какой-то объем буферной памяти, что позволяет им быстро принять первую посылку данных, однако в среднем байты можно посылать лишь со скоростью их печати. Для матричного принтера скорость посылки данных составляет 100–300 байт/с. Если вам надо разработать интерфейс Centronics для подключения к магистрали какого-либо компьютера, то самый простой способ организации всех выходных линий заключается в использовании зафиксированных («защелкнутых») данных, управляемых программным вводом-выводом. Линии D0-D7 можно выполнить в виде одного порта, а оставшиеся линии (включая STROBE') в виде второго. Входные сигналы (BUSY и др.) не фиксируйте, просто пропустите их на шину в операции программного чтения.
Полезным дополнением является использование ACKNLG' для возбуждения прерывания. На рис. 10.21 все сказанное проиллюстрировано применительно к магистрали IBM PC.
Рис. 10.21. Порт Centronics для PC.
Заметьте, что организация прерываний в этом случае не составляет труда, поскольку прерывания в PC активизируются перепадом; попросту используйте спад сигнала ACKNLG', как это показано на рис. 10.20. Для запрещения прерываний мы использовали один из фиксируемых выходных бит, как это описывалось в разд. 10.09 и 10.11. Обратите также внимание на использование сигнала магистрали RESET DRV для сброса всех выходов (и прерываний) при включении питания; именно ради этого мы выбрали микросхему `273 восьмиразрядного D-peгистра (в котором предусмотрен вход RESET).
В процессе работы с этим интерфейсом вы избирательно устанавливаете и сбрасываете выходные управляющие сигналы, подавая выходные байты с соответствующим образом установленными или сброшенными битами, в порт В. Поскольку на выходе предусмотрены фиксаторы, вы можете спокойно изменять состояние любого выходного бита, не боясь появления выбросов на других выходах. Однако храните в памяти копию байта, зафиксированного в порте В, чтобы можно было посылать в этот порт новые байты, отличающиеся единственным битом (используя операции И и ИЛИ, см. пример ниже). Импульс STROBE' следует генерировать программно, поскольку в интерфейсе нет безобразных одновибраторов. В программе 10.6 показано, как можно создать «программный импульс» на линии STROBE'.
Отметьте использование операций И и ИЛИ для сброса и установки, соответственно, одного бита. В этом примере мы не стали тратить время на модификацию текущего байта в ячейке current, поскольку в итоге он не изменяется. Если бы нам надо было изменить (и оставить измененным) какой-то другой управляющий бит, новый байт пришлось бы сохранить с помощью команды mov current, AL.
Аппаратный альтернативой хранения в памяти копии байта порта является включение в состав интерфейса порта с возможностью чтения, чтобы операция программного ввода позволила вам определить, что, собственно, зафиксировано в порте. Следующий пример позволит вам сообразить, как это делается.
Упражнение 10.6. Представьте себе, что вы полны энтузиазма и хотите добавить к схеме интерфейса Centronics порт с возможностью чтения. Сделайте так, чтобы чтение из порта В решало эту задачу. Вы будете приятно удивлены, обнаружив, как мало дополнительных цепей требует это усовершенствование.
Упражнение 10.7. Теперь перепишите программу 10.6, используя ваш новый порт и опустив ячейку current.
Порты Centronics используются практически во всех микрокомпьютерах; если вам нужен простой и быстрый параллельный выходной порт, без колебаний выбирайте Centronics. Во многих случаях (но не в IBM PC) микрокомпьютер позволит даже использовать порт в обе стороны. Обычно это делается путем посылки в порт управляющего бита, после чего изменяется направление передачи данных по единственной 8-разрядной шине данных.
SCSI и IPI. Это стандартные универсальные параллельные интерфейсы для подключения к компьютерам дисков и других высокопроизводительных периферийных устройств, как уже кратко упоминалось в разд. 10.16. SCSI (Small Computer System Interface — интерфейс малых компьютерных систем) представляет собой 8-бит параллельный кабельный интерфейс с квитированием и протоколами для обслуживания нескольких машин и нескольких периферийных устройств. В SCSI предусмотрены и синхронный, и асинхронный режимы, а также определенные программные протоколы. Вы можете найти интерфейсную плату SCSI для установки на магистраль практически любого популярного микрокомпьютера, включая VME и Multibus I и II; затем вы подсоединяете этот «главный адаптер» SCSI с помощью плоского кабеля SCSI-шины к плате периферийного контроллера (рис. 10.22). Плата контроллера часто является элементом самого периферийного устройства (т. е. располагается в дисководе жесткого диска) и взаимодействует с дисководом через «интерфейс уровня устройства», который может называться ST-506/412, ESDI или SMD.
Рис. 10.22. Магистраль SCSI с единственным периферийным устройством.
Достоинством SCSI является то, что с помощью этого интерфейса все микрокомпьютеры становятся совместимыми со всеми периферийными устройствами. Каждый разработчик считает своим долгом использовать SCSI, и в новых микрокомпьютерах этот интерфейс располагается прямо на системной плате. Со стороны периферийного устройства тоже удается избавиться от контроллера путем использования «архитектуры встроенного SCSI», когда магистраль SCSI становится одновременно и интерфейсом уровня устройства. Другими словами, вы соединяете кабелем системную плату микрокомпьютера с дисководом. SCSI обеспечивает передачу данных со скоростью до 1,5 Мбайт/с (при асинхронной передаче) или 4 Мбайт/с (при синхронной) при длине кабеля до 7 м (несимметричный) или 27 м (симметричный).
Интерфейс SCSI достаточно сложен, и мы не можем описывать здесь все его сигналы, режимы, командные протоколы и интерфейсные возможности. Ввиду его популярности, для облегчения вашей жизни, выпускаются однокристальные интерфейсные микросхемы (например, серии NCR 5380, Western Digital ЗЗС90, а также фирмами Fujitsu, Ferranti и др.).
SCSI хорошо работает с нынешними дисками. Однако для увеличения скорости передачи промышленность подумывает о переходе на 16-разрядную шину. Тогда, возможно, вступит в свои права интерфейс IPI (Intelligent Peripheral Interface- интеллектуальный периферийный интерфейс). IPI определяет 16-разрядную параллельную магистраль, работающую на скоростях до 10 Мбайт/с (частота передачи 5 МГц); как и SCSI, IPI обслуживает несколько машин и несколько периферийных устройств. Последнее время жесткие диски увеличивают свою скорость и плотность семимильными шагами; если еще принять во внимание рост скорости передачи, становится ясно, что мир быстро идет к универсальным интерфейсам (SCSI или IPI) со встроенной шиной. Через несколько лет, возможно, все остальные форматы будут забыты.
IEEE-488 (GPIB, HPIB). Когда появились первые приборы с выходами данных на задней панели, каждая компания все делала по-своему. Протоколов было почти столько же, сколько самих приборов, с параллельной или последовательной передачей, положительной или отрицательной полярностью и невообразимыми процедурами квитирования. Это был сумасшедший дом. Живо вспоминается разработка цифрового индикатора с огромными (высотой 15 см) цифрами для лекционного зала Гарвардского университета; для каждого из наших приборов у него были отдельные входные цепи!
В середине 60-х гг. фирма Hewlett-Packard решила покончить со всем этим безобразием, предложив универсальный приборный интерфейс. Фирма с присущей ей скромностью назвала его HPIB (Hewlett-Packard Interface Bus — интерфейсная магистраль Hewlett-Packard) и использовала его в качестве единственного интерфейса во всех новых разработках. HPIB позволяет подключать к магистральному кабелю (до 20 м длиной) до 15 приборов с помощью остроумно устроенных соединителей, которые можно вставлять друг в друга. По протоколу HPIB данные на магистрали имеют ширину 1 байт и передаются с квитированием; скорость передачи доходит до 1 Мбайт/с; предусмотрены программные команды, разрешающие любому устройству, подключенному к магистрали, стать «ведущим» (т. е. источником сообщений), а любой комбинации остальных устройств — «ведомыми» (т. е. приемниками сообщений). «Контроллер» диктаторски распоряжается, что делать каждому устройству.