Искусство схемотехники. Том 2 (Изд.4-е)
Шрифт:
В некоторых случаях наилучшим решением является разработка интерфейса, частично располагаемого в компьютере, а частично-снаружи, как это показано на рис. 10.15.
Рис. 10.15. Структура разделенного интерфейса.
Тогда «компьютерная» часть интерфейса может включать, например, лишь простой параллельный порт ввода-вывода, либо в виде покупной платы, либо собственной разработки. Кабель, соединяющий две части интерфейса, оказывается простым; если требуется скоростная передача при большой протяженности кабеля, можно использовать высокопроизводительные комбинации драйверов/приемников, обсуждавшиеся в разд. 9.14 (например RS-232
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. Программирование
Язык ассемблера. Как уже упоминалось выше, ЦП компьютера распознает определенные комбинации бит, как команды, и действует в соответствии с их значением. Однако этим двоичным машинным языком пользуются крайне редко. Обычно вы составляете программы на мнемоническом языке ассемблера (как это было сделано в приводившихся ранее примерах программирования интерфейсов), а специальная программа, называемая ассемблером, преобразует их в выполнимые машинные коды. Язык ассемблера очень близок к машинному языку; каждая команда языка преобразуется непосредственно в одну или несколько строк машинного кода (из которых первая обычно представляет код операции, а последующие описывают адресацию переменных или содержат константы). Программирование на языке ассемблера позволяет получить максимально эффективную программу и дает возможность обращения к флагам и регистрам, что недоступно из языков высокого уровня. Однако такое программирование утомительно, как это показывают приведенные примеры, и для решения большинства задач (особенно требующих значительного объема вычислений) более целесообразно использовать компилятор или интерпретатор с языка высокого уровня, такого как Си или Фортран, а к процедурам на языке ассемблера обращаться лишь в случае необходимости.
Компиляторы и интерпретаторы.Си, Фортран, Паскаль и Бейсик — примеры популярных языков высокого уровня. При составлении программы вы можете использовать алгебраические выражения вроде
= (—Ь + sqrt (b*b — 4*а*с))/(2*а)
и управляющие структуры типа if…elseif… else, for…, while… и do…. Вам не приходится гонять туда и обратно крошечные порции информации объемом 1 байт или заботиться об адресации, сохранении регистров и прочем; вы просто объявляете переменные и массивы с указанием типов и размеров, а затем используете их в арифметических и логических выражениях. Не жизнь, а малина.
Выше шла речь об исходном тексте, который можно преобразовать в выполнимую программу двумя способами. Исходные программы на языках Си или Фортран компилируются, т. е. преобразуются специальной программой (компилятором языка) в строки на языке ассемблера; затем программа ассемблера переводит этот промежуточный язык ассемблера в машинный язык[7]. Программы же на языках Бейсик и АПЛ обычно интерпретируются; вместо преобразования исходной программы в программу на языке ассемблера интерпретатор анализирует предложения программы и выполняет соответствующие машинные команды.
В целом интерпретация занимает гораздо больше времени, чем компиляция. Поскольку, однако, в случае интерпретации отсутствуют процессы компиляции, ассемблирования или компоновки (о компоновке см. ниже), программу можно запустить немедленно после ее ввода в машину. Интерпретирующие программы часто включают простые редакторы, удобные для быстрой модификации программы перед ее повторным пуском в процессе отладки. На заре микрокомпьютерной техники, когда жесткие диски были редкостью, интерпретатор Бейсик приобрел широкую популярность, поскольку он работает целиком в памяти; этому можно противопоставить утомительный многоступенчатый процесс компиляции. Однако сегодня быстрые диски и эффективные компиляторы снимают с нас все заботы. Любопытно отметить, что современные компиляторы часто следуют примеру интерпретирующей системы Turbo Pascal фирмы Borland и предоставляют вам «среду программирования», в которой можно без всяких усилий переходить от редактора к выполняемой программе. Если программа натыкается на ошибку, система возвращает вас в редактор и отмечает при этом неправильное предложение; такого рода системы включают отладчики, библиотекари и другие полезные и приятные средства.