Страница 112 из 124
Нестандартные интерфейсы лучше всего выполнять таким же образом, либо путем разработки для них печатной платы, либо используя одну из универсальных интерфейсных плат, выпускаемых такими компаниями, как Douglas, Electronic Solutions и Vector. Эти пустые платы имеют места для подключения микросхем и других компонентов (включая оконечные заземлители для внешних кабелей) как припаиванием, так и накруткой (подробнее об этом см. в гл. 12). Некоторые платы содержат встроенные схемы для взаимодействия с магистралью, включая обслуживание прерываний и даже ПДП.
В некоторых случаях наилучшим решением является разработка интерфейса, частично располагаемого в компьютере, а частично-снаружи, как это показано на рис. 10.15.
Рис. 10.15. Структура разделенного интерфейса.
Тогда «компьютерная» часть интерфейса может включать, например, лишь простой параллельный порт ввода-вывода, либо в виде покупной платы, либо собственной разработки. Кабель, соединяющий две части интерфейса, оказывается простым; если требуется скоростная передача при большой протяженности кабеля, можно использовать высокопроизводительные комбинации драйверов/приемников, обсуждавшиеся в разд. 9.14 (например RS-232 или симметричные микросхемы 75S110, или даже волоконную оптику). Такой подход к конструированию интерфейсов может быть особенно полезен при работе со слабыми аналоговыми сигналами, поскольку в этом случае чувствительные к помехам линейные цепи можно удалить от рева наводок цифровых схем компьютера (и приблизить к источнику аналоговых сигналов); это также позволяет с особым вниманием отнестись к поддержанию «в чистоте» заземленных линий аналогового сигнала.
SCSI, IEEE-488 и другие интерфейсы. В продаже имеются буквально сотни вставных плат для распространенных магистралей вроде IBM PC, Multibus, VME и Q-bus, выполняющих необозримое множество функций. Эти платы недороги и просты в использовании, так что перед разработкой собственной платы вы должны сначала выяснить (а) нет ли такой же платы в продаже и (б) нельзя ли использовать в качестве «резидентной в компьютере» части вашего интерфейса простую плату параллельного порта, как это описывалось в предыдущем разделе. Есть и другая возможность-подключить ваше устройство к компьютеру через стандартный встроенный параллельный порт Centronics либо через последовательный порт RS-232 (см. разд. 10.19 и 10.20). Поскольку эти порты одинаковы на всех микрокомпьютерах, такое решение сделает ваше устройство переносимым, даже на микрокомпьютер с другой магистралью (или вообще без магистрали!). Если ваше устройство подключается к последовательному порту, оно, скорее всего, будет включать собственный микропроцессор, что даст вам право думать о нем скорее как о компьютере, чем о периферийном устройстве. Однако как мы покажем в следующей главе, разработка небольшого прибора, управляемого микропроцессором — дело забавное, простое и недорогое; собственно, нет никаких причин выделять микропроцессор среди других БИС, а их-то вы не колеблясь используете в своем приборе!
Развивая дальше предложенную идею, следует сказать, что имеется целый ряд стандартов на «кабельные интерфейсы», ставшие последнее время весьма популярными. Они называются SCSI (Small Computer System Interface-интерфейс малых компьютерных систем), IPI (Intelligent Peripherals Interface-интерфейс интеллектуальной периферии), ESDI (Enhanced Small-Disk Interface — улучшенный интерфейс малого диска) и IEEE-488 (известный также под именами HPIB и GPIB, General-Pur-Кабель — Внешняя часть интерфейса pose Interface Bus-интерфейсная магистраль общего назначения). Интерфейс SCSI (произносится «скази»), в особенности благодаря обилию дисков и другой периферии, подключаемой непосредственно к порту SCSI, стал стандартным элементом многих микрокомпьютеров. При этом для компьютеров, не имеющих встроенного порта SCSI, выпускаются вставляемые интерфейсные платы с этим портом.
SCSI является потомком SASI (Shugart Assosiates System Interface-простой параллельной магистрали, которую фирма Shugart придумала для своих дисководов жестких дисков) и в простейшем виде представляет собой байтовый двунаправленный параллельный протокол с квитированием. Интерфейс обеспечивает несколько режимов, включая синхронную и асинхронную передачу с симметричными или несимметричными драйверами; хотя первоначально он использовался для связи единственного ЦП с единственным диском, однако с его помощью можно несколько ЦП подключить к нескольким дискам. Типичные скорости передачи составляют 1,5 Мбайт/с для асинхронного режима и 4 Мбайт/с для синхронного; асинхронный протокол медленнее, так как в процессе каждой пересылки туда и сюда передаются сигналы квитирования. С несимметричными драйверами SCSI обеспечивает передачу на 6 м, а с симметричными на 24 м.
Магистраль IEEE-488 (первоначально — интерфейс HPIB фирмы Hewlett-Packard) была разработана для подключения лабораторных приборов к компьютеру. Интерфейс включает полный протокол связи по магистрали нескольких приборов и использует терминологию локальных сетей. IEEE-488 занимает прочные позиции в инструментальной технике; фирмы Hewlett-Packard, Keithley, Philips/Fluke, Tektronix и Wavetek комплектуют этим интерфейсом большую часть выпускаемых ими приборов. Платы с интерфейсом IEEE-488 выпускаются почти для всех микрокомпьютеров. В разд. 10.20 мы еще вернемся к обсуждению интерфейсов SCSI и IEEE-488.
Системные концепции программного обеспечения
В этом разделе мы обсудим некоторые общие аспекты программирования для малых компьютеров, имея в виду, что изучение средств связи с компьютером имеет мало смысла, если вы не знакомы с иерархией программ, фактически вызывающих к жизни компьютер. Нам в особенности хотелось бы остановиться на таких важных вопросах, как программирование, операционные системы, файлы и использование памяти. Очень легко унестись в царство мечты, восторгаясь красотой аппаратного обеспечения компьютера и недооценить важность хорошего программного обеспечения. Именно программное обеспечение придает компьютеру крылья, и хорошая операционная система вместе с пакетом «утилит» необходимы ему, как воздух.
Рассмотрев программное обеспечение и системы программирования, мы закончим главу разделом о принципах передачи данных, остановившись на стандартизованном последовательном протоколе ASCII RS-232, параллельном порте Centronics, других возможностях параллельной передачи данных (SCSI, IPI, GPIB) и, наконец, на локальных сетях.
10.17. Программирование
Язык ассемблера. Как уже упоминалось выше, ЦП компьютера распознает определенные комбинации бит, как команды, и действует в соответствии с их значением. Однако этим двоичным машинным языком пользуются крайне редко. Обычно вы составляете программы на мнемоническом языке ассемблера (как это было сделано в приводившихся ранее примерах программирования интерфейсов), а специальная программа, называемая ассемблером, преобразует их в выполнимые машинные коды. Язык ассемблера очень близок к машинному языку; каждая команда языка преобразуется непосредственно в одну или несколько строк машинного кода (из которых первая обычно представляет код операции, а последующие описывают адресацию переменных или содержат константы). Программирование на языке ассемблера позволяет получить максимально эффективную программу и дает возможность обращения к флагам и регистрам, что недоступно из языков высокого уровня. Однако такое программирование утомительно, как это показывают приведенные примеры, и для решения большинства задач (особенно требующих значительного объема вычислений) более целесообразно использовать компилятор или интерпретатор с языка высокого уровня, такого как Си или Фортран, а к процедурам на языке ассемблера обращаться лишь в случае необходимости.