Программная реализация протоколов в среде DOS и Windows 9x не вызывает особых затруднений, поскольку здесь программист может обращаться к регистрам порта непосредственно. В более защищенных ОС (UNIX, Linux, Windows NT/2000) для обращения к регистрам LPT-порта требуются вызовы API.

При использовании данных адаптеров следует внимательно относиться к проблемам защиты от помех. Непосредственно с адаптера сигналы можно передавать лишь на небольшие расстояния (десятки сантиметров). Для передачи на большие расстояния (если ПК не приблизить к объекту) подойдут преобразователи уровней сигналов ТТЛ в дифференциальные сигналы интерфейса RS-422 и обратно. При этом адаптер разделяется на 2 блока, соединенные кабелем, — первый блок устанавливается на LPT-порт, другой — около подключаемого объекта.

Несколько сложнее получаются адаптеры этих интерфейсов для СОМ-портов. Здесь можно программно генерировать сигналы DTR и RTS и считывать состояния сигналов CIS, DSR, DCD и RI. Усложнение заключается в необходимости использования преобразователей уровней сигналов RS-232C в ТТЛ (для этого выпускается ряд микросхем, например фирмами Maxim, Sypex), для которых требуется подача питания.

Для интерфейсов SPI и JTAG тоже можно использовать LPT-порт, здесь даже не требуется организация двунаправленных линий. Сигналы SCK и MOSI (SPI), TCK, TMS, TDO и TRST (JTAG) можно подключить к любым выходным линиям порта, MISO (SPI), TDI (JTAG) — к любой входной линии. Простейший адаптер содержит лишь последовательные резисторы 100–150 Ом, включенные в сигнальные цепи для уменьшения «звона» и влияния кабеля на схему. Однако такая схема может надежно работать лишь при небольшой длине кабеля (20–30 см), что не всегда удобно. Более надежна и удобна схема с буферами, способными переходить в высокоимпедансное состояние (например, 74НС244 или 1556АП5). Плата с буфером может соединяться с LPT-портом довольно длинным кабелем, а от нее к устройству идет короткий кабель. Программно-управляемый перевод буфера выходных сигналов в третье состояние позволяет логически отключать адаптер от программируемой схемы, что особенно удобно в процессе отладки программируемых устройств. Именно так устроен популярный адаптер «ByteBlaster», применяемый для программирования конфигурируемой логики фирмы Altera и других. Адаптер вместе с ПО может обеспечивать протокол SPI (быть ведущим устройством в варианте с двухточечной топологией), JTAG и собственный протокол программирования устройств «Serial Passive». Схемы различных адаптеров и ПО для них можно легко найти в Сети.

Программная реализация последовательных протоколов ограничивает скорость передачи данных на уровне 50-150 Кбит/с при работе LPT-порта в стандартном режиме. В режиме EPP или ECP можно достичь скорости и 1–2 Мбит/с, но при этом адаптер несколько усложняется (поскольку в этих интерфейсах требуется одновременно принимать и передавать данные). Решить проблему производительности, а заодно и расширить функциональные возможности позволяет использование специализированных интерфейсных адаптеров для шин PCI или ISA, выпускаемых рядом фирм. Есть и внешние устройства с интерфейсами USB или Ethernet. Правда, цена этих адаптеров и устройств существенно отличается от цены простого адаптера, который можно изготовить и самостоятельно.

<p>Глава 12</p><p>Архитектурные компоненты IBM PC-совместимого компьютера</p>

Аппаратные интерфейсы, описанные в книге, в IBM-PC-совместимом компьютере «живут» в специфическом архитектурном окружении. Эту специфику приходится учитывать при проектировании аппаратной части устройств, чтобы обеспечить с ними эффективное программное взаимодействие. В этой главе вкратце рассматриваются особенности процессоров x86 и связанные с этими особенностями распределение памяти, организация ввода-вывода и прерываний. Здесь же рассматривается традиционный контроллер DMA, системные средства измерения времени, а также способы внедрения собственных расширений BIOS и нетрадиционной (бездисковой) загрузки ПО в специализированные компьютеры на базе IBM PC.

<p>12.1. Пространство физической памяти</p>

Основную часть физического адресного пространства PC занимает оперативная память (ОЗУ), начинающаяся с нулевого адреса. В нее вклинивается область адресов A0000h-FFFFFh — Upper Memory Area (UMA), 384 Кбайт — верхняя память, зарезервированная со времен IBM PC для системных нужд. В UMA размещаются области буферной памяти адаптеров шины (E)ISA (например, видеопамять) и постоянная память (BIOS с расширениями). ОЗУ продолжается и за областью UMА. Под самой верхней границей физического адресного пространства имеется образ памяти системной ROM BIOS.

Перейти на страницу:

Все книги серии Наиболее полное и подробное руководство

Похожие книги