Чтение онлайн

ЖАНРЫ

Искусство схемотехники. Том 2 (Изд.4-е)
Шрифт:

На рис. 10.20 показаны временные соотношения этих сигналов.

Рис. 10.20. Временные соотношения для (принтерного) интерфейса Centronics.

Базовые сигналы перечислены в первой группе: D0-D7, STROBE', ACKNLG' и BUSY. Сигнал BUSY является флагом: если он в низком состоянии, принтер не «занят», т. е. готов принимать данные; источник данных (компьютер) устанавливает тогда данные, а затем STROBF (при гарантированной достоверности данных по обе стороны этого импульса). После этого устанавливается в высокое состояние сигнал BUSY, который возвращается в низкое состояние только когда принтер готов принимать следующий байт. Компьютер должен, как это показано на

рисунке, наблюдать за состоянием линии BUSY, чтобы определить момент посылки следующего байта. Сигнал ACKNLG' (который представляет собой импульс, а не уровень) можно использовать в качестве сигнала прерывания; не пытайтесь, однако, подменить им сигнал BUSY, потому что он может закончиться к тому времени, когда вы захотите считать его состояние, и вы будете ждать вечно. В состав порта входят еще несколько сигналов, позволяющие обнаружить, что в принтере нет бумаги (РЕ') или что он отключен (ERROR' или BUSY); компьютер может инициализировать принтер (INIT'), запросить автоматический перевод строк (AUTO FEED XT') или послать байт для отмены выбора принтера (установить IN' в высокое состояние, затем послать ASCII-код DC3). Обратите внимание на щедрые временные соотношения в диаграмме синхронизации, с очевидностью рассчитанные на медленные (механические) устройства, которые не могут принимать данные с высокой скоростью.

В большинстве принтеров предусмотрен какой-то объем буферной памяти, что позволяет им быстро принять первую посылку данных, однако в среднем байты можно посылать лишь со скоростью их печати. Для матричного принтера скорость посылки данных составляет 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 Мбайт/с; предусмотрены программные команды, разрешающие любому устройству, подключенному к магистрали, стать «ведущим» (т. е. источником сообщений), а любой комбинации остальных устройств — «ведомыми» (т. е. приемниками сообщений). «Контроллер» диктаторски распоряжается, что делать каждому устройству.

Поделиться с друзьями: