Параллельные и последовательные порты и их особенности работы.


На современных компьютерах есть хотя бы один последовательный и один параллельный порт, несмотря на то что уже давно существуют сетевые адаптеры, шина USB и другие способы коммуникации. Исключением могут быть разве что современные ноутбуки – на некоторых из них нет ни последовательных, ни параллельных портов.

Параллельный порт

Параллельный порт (сокращенное название – LPT) появился на самом первом IBM PC. Иногда его называют Centronics – по имени фирмы-разработчика. Параллельный порт использовался раньше преимущественно для подключения принтеров.
Современные принтеры обычно подключаются к компьютеру через USB (см. главу 10), но многие модели имеют разъем для подключения LPT-кабеля (кабеля параллельного порта).
Научимся находить разъемы параллельного порта. На рис. 9.1 изображен LPT-разъем на принтере Lexmark E321 – довольно современная модель (принтер куплен в прошлом году). Под ним – USB-разъем с подключенным USB-кабелем. Это говорит о том, что в данный момент принтер подключен к компьютеру через USB .

//-- Рис. 9.1. LPT-разъем на принтере --//
Если бы принтер подключался к параллельному порту компьютера, то нам бы понадобился кабель, изображенный на рис. 9.2.

//-- Рис. 9.2. Кабель --//
На рис. 9.3 показана материнская плата . Самый большой разъем, изображенный на этом рисунке, – параллельный порт. Обычно он окрашен для подключения устройств к параллельному порту компьютера в розовый цвет. Как различить последовательный и параллельный порты, одинаковые по размерам? Разъем параллельного порта имеет тип «мама», а последовательного порта – «папа». Другими словами, даже если вы перепутаете цвета (последовательный порт обычно окрашивается в синий цвет), вы не сможете подключиться к последовательному порту с помощью LPT-кабеля.

//-- Рис. 9.3. Параллельный и последовательный порты --//
К параллельному порту, кроме принтера, можно подключить:
некоторые носители данных, например внешние приводы CD-ROM, магнитные накопители «повышенной» емкости (раньше повышенной емкостью считалось 120 Мб);
стримеры – устройства хранения данных на магнитной ленте. Сейчас они практически не используются, а раньше часто использовались для создания резервных копий на серверах предприятий – ведь магнитная лента стоила копейки по сравнению с другими носителями информации и позволяла записывать большие на то время объемы информации (несколько гигабайтов);
сканеры старых образцов (современные подключаются через USB).

Откровенно говоря, я сомневаюсь, что сегодня вам придется воспользоваться параллельным портом, но такая вероятность есть – может быть, у вас есть старенький принтер, который еще хорошо работает, но подключается только к LPT-порту. Тогда вы должны знать о режимах работы параллельного порта (режим работы порта обычно выбирается в BIOS):
SPP (Standard Parallel Port) – стандартный режим параллельного порта. В данном режиме разрешается только односторонняя передача данных от компьютера к периферийному устройству, подключенному к порту. Скорость передачи данных – 200 Кбит/с;
EPP (Enhanced Parallel Port) – расширенный режим. Разрешен двусторонний обмен данными. Скорость работы – до 2 Мбит/с. Разрешается подключение до 64 периферийных устройств (в цепочку);
ECP (Extended Capability Port) – порт с расширенными возможностями. Обеспечивает двухсторонний обмен данными со скоростью до 2,5 Мбит/с. Поддерживает сжатие данных по алгоритму RLE. Обычно данный режим (если он поддерживается материнской платой) используют сканеры и другие устройства, передающие большие объемы данных.

Последовательный порт

Последовательный порт (другие названия – COM, RS-232, serial port), как и параллельный, в устаревающих моделях компьютеров использовался для подключения многих устройств, но чаще всего к нему подключали:
мышки и другие указательные устройства;
модемы – даже и сейчас некоторые модемы могут подключаться как к последовательному порту, так и к usb ;
«умные» источники бесперебойного питания – многие источники бесперебойного питания могут сообщать компьютеру о текущем заряде своих батарей. Это очень удобно, поскольку вы знаете, на сколько времени хватит заряда в батареях и как скоро нужно выключить компьютер.

Сейчас последовательный порт преимущественно используется для подключения некоторых внешних модемов и «умных» ИБП.
Есть две разновидности последовательного порта: 9-контактный и 25-контактный. На рис. 9.3 изображен 9-контактный последовательный порт.
На старых материнских платах обычно присутствуют два разных последовательных порта – «большой» (25 pin) и «маленький» (9 pin). На платах поновее – два «маленьких». А на самых современных платах – всего один последовательный порт (как правило, 9-контактный), оставленный из соображений совместимости.
Самый главный элемент последовательного порта – универсальный асинхронный приемопередатчик 16 450 UART (Universal Asynchron Receiver Transmitter). Обычно он бывает интегрирован в микросхему южного моста чипсета.
Максимальная скорость передачи по последовательному порту – 115 200 бит/с. По современным меркам это очень низкая скорость, но тем не менее, учитывая, что скорость современных модемов не превышает 56 000 бит/с, ее вполне достаточно.
К компьютеру можно подключить до четырех последовательных портов, но, как уже было отмечено, доступны бывают один или два порта. В Windows последовательные порты называются COMn, где n – номер порта, например COM1, COM2. Если у вас всего один порт, то он будет называться COM1.
Последовательный порт безнадежно устарел. Еще в 1999 году корпорация Microsoft в спецификации «идеального ПК», которая носила название PC99, рекомендовала отказаться от использования последовательного порта в пользу универсальной последовательной шины USB , что сейчас постепенно и происходит. Думаю, через пять лет последовательный порт окончательно исчезнет с материнских плат.

Последовательный интерфейс IEEE-1394

В 1995 году был разработан новый последовательный стандарт передачи данных – IEEE-1394 (или просто 1394). IEEE – это сокращенное название института, разработавшего стандарт, – Institute of Electrical and Electronic Engineers, а 1394 – порядковый номер нового стандарта. Основное преимущество данного стандарта – высокая скорость передачи данных. Сейчас она составляет 800 Мбит/с.
В 2000 году была принята версия стандарта 1394a, а в 2003-м – 1394b (на данный момент это самая современная версия стандарта). Основное отличие нового стандарта – это повышенная скорость передачи данных – 800 Мбит/с, а не 400 Мбит/с, как у 1394a. В дальнейшем планируется скорость передачи в 3200 Мбит/с. Новая версия (1394b) обратно совместима с 1394a, то есть вы можете подключить 1394a-устройства к порту 1394b.
Стандарт 1394 также известен под именами i.Link и FireWire. Первое название принадлежит компании Sony, а второе – компании Apple, но по сути это одно и то же – IEEE-1394. Компания Apple часто использует названия FireWire 400 и FireWire 800; 400 и 800 – это скорость передачи данных в Мбит/с. Фактически, FireWire 400 – это 1394a, а FireWire 800 – 1394b.
//-- Стандарт 1394a --//
Последовательная шина 1394a способна передавать данные со скоростью 100, 200 и 400 Мбит/с; 400 Мбит/с – это 50 Мбайт/с. То есть фильм (типичный размер 700 Мб) скопируется по этой шине всего за 14 секунд, что достаточно быстро даже для сегодняшнего дня, не говоря уже о начале 2000 года, когда был принят этот стандарт.
Но, сами понимаете, 400 Мбит/с – это только теория. А на практике устройства 1394a могли передавать данные со скоростью всего 100 Мбит/с (12,5 Мб/с).
К одному порту IEEE-1394a можно последовательно подключить до 63 устройств. Понятно, что с подключением каждого нового устройства снижается скорость передачи, но на практике никто не подключает к одному порту 63 устройства. Правда, шина IEEE позволяет работать в разветвленном режиме, то есть каждое из этих 63 устройств может быть IEEE-концентратором. А к каждому концентратору можно подключить до 16 IEEE-устройств. Вам и этого мало? Тогда можно установить 1023 шинные перемычки, что позволяет подключить к шине IEEE до 64 000 (!) устройств. Честно говоря, я даже не могу представить себе такое количество устройств.
Шина IEEE-1394 поддерживает технологию P&P (Plug and Play), позволяющую автоматически настраивать подключенное к системе устройство (драйверы, конечно, установить придется, но не нужно с помощью джамперов выделять ресурсы устройству). Также возможно горячее подключение/отключение устройств без отключения питания компьютера. Еще IEEE удобна тем, что каждое подключенное к ней устройство может потреблять ток до 1,5А, то есть небольшие устройства (которым хватит 1,5 А) могут обходиться без блока питания , а получать питание от IEEE.
На рис. 9.4 изображены более распространенный 6-контактный IEEE-порт и кабель, использующийся для подключения к этому порту. А на рис. 9.5 изображены 4-контактный IEEE-порт и соответствующий кабель.

//-- Рис. 9.4. 6-контактный IEEE-порт --//
//-- Рис. 9.5. 4-контактный IEEE-порт --//
Четырехконтактный IEEE-порт обычно используется для подключения цифровых видеокамер.
Если на вашей материнской плате нет IEEE-контроллера, можно установить отдельный контроллер, выполненный в виде платы расширения типа PCI (рис. 9.6).

//-- Рис. 9.6. IEEE-контроллер --//
//-- Стандарт 1394b --//
Стандарт 1394b предусматривает скорость передачи данных 800 Мбит/с (100 Мб/с) по медному или по волоконно-оптическому кабелю. В недалеком будущем планируется передача данных со скоростью 3200 Мбит/с, но пока нет устройств, поддерживающих такую скорость.
Вместо 6-контактного разъема используется 9-контактный (рис. 9.7), однако к 1394b можно подключить все устройства типа 1394a с помощью специального кабеля. Как и в случае с 1394a, если ваша системная плата не имеет интегрированного IEEE-контроллера, его можно купить в виде PCI-платы расширения (рис. 9.8).

//-- Рис. 9.7. 9-контактный (1394b) и 6-контактный кабель (1394a) --//

//-- Рис. 9.8. PCI-контроллер IEEE-1394b --//
Об IEEE-1394 вы должны знать следующее:

IEEE-1394 – современный последовательный высокоскоростной интерфейс, обеспечивающий высокую скорость передачи данных;
существует два стандарта 1394 – 1394a и 1394b;
основная разница между стандартами 1394a и 1394b заключается в применении другого типа разъема (у 1394b – 9 контактов, у 1394a – 6 или 4) и в более высокой скорости передачи данных – 800 Мбит/с у 1394b против 400 Мбит/с у 1394a;
стандарт 1394b обратно совместим с 1394a.

В следующей главе мы поговорим о другом очень распространенном последовательном интерфейсе – об универсальной последовательной шине USB . Шина USB в отличие от IEEE не является высокоскоростной: скорость передачи данных по ней составляет 12 Мбит/с (1,5 Мб/с) для USB 1.1 и 480 Мбит/с (60 Мб/с) для USB 2.0. Однако шина USB более популярна, чем IEEE-1394. Почему? Да потому что обычно последовательный интерфейс используется для подключения периферийных устройств, но большинству периферийных устройств (принтеры, сканеры, фотоаппараты, модемы) не нужны такие высокие скорости, которые обеспечиваются интерфейсом IEEE-1394. Да, USB-устройства более медленные, но в то же время они и более дешевые, поэтому и более популярны.

Порт называется «последовательным», так как информация через него передаётся по одному биту , последовательно бит за битом (в отличие от параллельного порта). Несмотря на то, что некоторые интерфейсы компьютера (например, Ethernet , FireWire и USB) тоже используют последовательный способ обмена информацией, название «последовательный порт» закрепилось за портом стандарта RS-232 .

Назначение

Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши . Сейчас он используется для соединения с , для связи с аппаратными средствами разработки встраиваемых вычислительных систем , спутниковыми ресиверами, кассовыми аппаратами, программаторами, с приборами систем безопасности объектов, а также с многими прочими устройствами.

С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Использовался со времен MS-DOS для передачи файлов с одного компьютера на другой, в UNIX для терминального доступа к другой машине, а в Windows (даже современной) - для отладчика уровня ядра.

Достоинством технологии является крайняя простота оборудования. Недостатком является низкая скорость, крупные размеры разъемов, а также зачастую высокие требования ко времени отклика ОС и драйвера и большое количество прерываний (одно на половину аппаратной очереди, то есть 8 байт).

Видео по теме

Разъёмы

На материнских платах ведущих производителей (например, Intel) или готовых системах (например, IBM , Hewlett-Packard , Fujitsu Siemens Computers) для последовательного порта принято условное обозначение COM или RS-232.

Варианты разъёма COM-порта типа DE-9

Наиболее часто используются стандартизированные в 1969 году D-образные разъёмы: 9- и 25-контактные, (DB-9 и DB-25 соответственно). Раньше использовались также DA-31 и круглые восьмиконтактные DIN-8. Максимальная скорость передачи в обычном исполнении порта составляет 115 200 бод .

Актуальность

Существуют стандарты на эмуляцию последовательного порта над USB и над Bluetooth (эта технология в значительной степени и проектировалась как «беспроводной последовательный порт»).

Тем не менее программная эмуляция данного порта широко используется и сегодня. Так, например, практически все мобильные телефоны эмулируют внутри себя классический COM-порт и модем для реализации тетеринга - доступа компьютера в Интернет через GPRS/EDGE/3G/4G оборудование телефона. При этом для физического подключения к компьютеру используется USB , Bluetooth или Wi-Fi .

Также программная эмуляция данного порта предоставляется «гостям» виртуальных машин VMWare и Microsoft Hyper-V , основная цель при этом - подключение отладчика уровня ядра Windows к «гостю».

В виде UART , отличающегося уровнями напряжения и отсутствием дополнительных сигналов, присутствует практически во всех микроконтроллерах, кроме самых-самых маленьких, SoC, платах разработчиков, а также присутствует на платах большей части устройств, хотя разъём и не выведен на корпус. Такая популярность связана с простотой этого интерфейса, как с физической точки зрения, так и с легкостью доступа к порту со стороны ПО по сравнению с другими интерфейсами.

Аппаратура

Разъем имеет контакты:

DTR (Data Terminal Ready - готовность к приёму данных) - выход на компьютере, вход на модеме. Означает готовность компьютера к работе с модемом. Сброс этой линии вызывает почти полную перезагрузку модема в первоначальное состояние, в том числе бросание трубки (некоторые управляющие регистры выживают после такого сброса). В UNIX это происходит в случае, если все приложения закрыли файлы на драйвере последовательного порта. Мышь использует этот провод для получения питания.

DSR (Data Set Ready - готовность к передаче данных) - вход на компьютере, выход на модеме. Означает готовность модема. Если эта линия находится в нуле - то в ряде ОС становится невозможно открыть порт как файл.

RxD (Receive Data - приём данных) - вход на компьютере, выход на модеме. Поток данных, входящий в компьютер.

TxD (Transmit Data - передача данных) - выход на компьютере, вход на модеме. Поток данных, исходящих из компьютера.

CTS (Clear to Send - готовность передачи) - вход на компьютере, выход на модеме. Компьютер обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в модеме.

RTS (Request to Send - запрос на передачу) - выход на компьютере, вход на модеме. Модем обязан приостановить передачу данных, пока этот провод не будет выставлен в единицу. Используется в аппаратном протоколе управления потоком для предотвращения переполнения в оборудовании и драйвере.

DCD (Carrier Detect - наличие несущей) - вход на компьютере, выход на модеме. Взводится модемом в единицу после установления соединения с модемом с той стороны, сбрасывается в ноль при разрыве связи. Аппаратура компьютера может издавать прерывание при наступлении такого события.

RI (Ring Indicator - сигнал вызова) - вход на компьютере, выход на модеме. Взводится модемом в единицу после обнаружения вызывного сигнала телефонного звонка. Аппаратура компьютера может издавать прерывание при наступлении такого события.

SG (Signal Ground - сигнальная земля) - общий сигнальный провод порта, не является общей землёй , как правило, изолирован от корпуса ЭВМ или модема.

В нуль-модемном кабеле используются две перекрещенные пары: TXD/RXD и RTS/CTS.

Исходно в IBM PC и IBM PC/XT аппаратура порта была построена на микросхеме UART 8250 фирмы National Semiconductor, затем микросхема была заменена на 16450, программно совместимой с предыдущими, но позволявшей использовать скорости вплоть до 115200 бит в секунду, затем появилась микросхема 16550, содержавшая двунаправленный FIFO буфер данных для снижения нагрузки на контроллер прерываний. В настоящее время включена в SuperIO микросхему на материнской плате вместе с рядом иных устройств.

Программный доступ к СОМ-порту

UNIX

COM-порты в операционной системе Unix (Linux) - это файлы символьных устройств. Обычно эти файлы располагаются в каталоге /dev и называются

  • ttyS0 , ttyS1 , ttyS2 и т. д. в Linux
  • ttyd0 , ttyd1 , ttyd2 и т. д. (или ttyu0 , ttyu1 , ttyu2 и т. д. начиная с версии 8.0) в FreeBSD
  • ttya , ttyb , ttyc и т. д. в Solaris
  • ttyf1 , ttyf2 , ttyf3 и т. д. в IRIX
  • tty1p0 , tty2p0 , tty3p0 и т. д. в HP-UX
  • tty01 , tty02 , tty03 и т. д. в Digital Unix
  • ser1 , ser2 , ser3 и т. д. в QNX

Для программного доступа к СОМ-порту необходимо открыть на чтение/запись соответствующий файл и сделать вызовы специальных функций tcgetattr (для того, чтобы узнать текущие настройки) и tcsetattr (чтобы установить новые настройки). Также может потребоваться сделать вызовы ioctl с определенными параметрами. После этого при записи в файл данные будут отправляться через порт, а при чтении программа будет получать уже принятые данные из буфера СОМ-порта.

Устройства с именами «ttyxx» используются как серверные, то есть приложение, открывшее данное устройство, обычно ожидает входящего звонка от модема. Классическим таким приложением, используемым по умолчанию, является getty , которая ожидает входящего звонка, далее настраивает COM-порт в соответствии с файлами конфигурации, выводит туда "login: ", принимает имя пользователя и запускает как потомка команду «login ИмяПользователя», со стандартным вводом и выводом, перенаправленными в COM-порт. Эта команда в свою очередь запрашивает и проверяет пароль, и в случае успеха запускает (не как потомка, а вместо себя вызовом execve в том же процессе) default user shell, прописанный в файле /etc/passwd.

Эта технология исторически возникла в 1970-е годы, когда под ОС UNIX использовались компьютеры вроде PDP-11 (в СССР серия называлась СМ ЭВМ) или VAX , позволяющие подключение многих терминалов для работы многих пользователей. Терминалы - а значит, и весь интерфейс пользователя - при этом подключались через последовательные порты, с возможностью подключения вместо терминала модема и дальнейшего дозвона на компьютер по телефону. До сих пор в UNIX-подобных ОС существует терминальный стек, и обычно 3 реализации терминалов - последовательный порт, консоль текстового режима экрана+клавиатура, и «обратная петля» в один из открытых файлов управляющего приложения (так реализованы telnetd, sshd и xterm).

Клиентские устройства последовательного порта, предназначенные для совершения звонков вовне, в многих UNIX (не во всех) называются cuaxx.

Так как последовательный порт в UNIX доступен только через терминальный стек, он может быть управляющим терминалом для процессов и групп (посылать SIGHUP при разрыве связи от модема и SIGINT при нажатии Ctrl-C), на уровне ядра поддерживать редактирование последней введенной строки клавишами стрелочек, и т. д. Для отключения этой возможности с целью превращения устройства в «трубу» для потока байт необходимы вызовы ioctl.

Windows

С последовательными портами в Win32 работают как с файлами. Для открытия порта используется функция CreateFile. Портов может быть много, поэтому они обозначаются как COM1, COM2 и т. д. по порядку обнаружения драйверов соответствующих устройств. Первые 9 портов доступны в том числе как именованные каналы для передачи данных (доступны по именам «COM1», «COM2», …), такой метод доступа считается устаревшим. Рекомендуется ко всем портам обращаться как к файлам (по именам «\\.\COM1», «\\.\COM2»,… «\\.\COMx»).

Последовательные порты

Последовательные порты для обмена данными с внешними устройствами – важнейшая составляющая любого МК, без них его «общение» с внешним миром резко ограничено. Последовательными их называют потому, что в них в каждый момент времени передается только один бит (в некоторых случаях возможна одновременная передача и прием, но все равно только по одному биту за раз). Самое главное преимущество последовательных портов перед параллельными (когда одновременно производится обмен целыми байтами или полубайтами‑тетрадами) – снижение числа соединений. Но оно не единственное – как ни парадоксально, но последовательные интерфейсы дают значительную фору параллельным на высоких скоростях, когда на надежность передачи начинают влиять задержки в линиях. Последние невозможно сделать строго одинаковыми, и это одна из причин того, что последовательные интерфейсы в настоящее время начинают доминировать (типичные примеры: USB и Fire Wire вместо LPT и SCSI или Serial ATA вместо IDE).

В микроконтроллерных устройствах с нашими объемами данных, конечно, скорость передачи нас волнует во вторую очередь, но вот количество соединительных проводов – очень критичный фактор. Поэтому все внешние устройства, которые мы далее станем рассматривать, будут иметь последовательные интерфейсы (кроме дисплеев для отображения информации, для которых, увы, последовательные интерфейсы встречаются лишь в моделях достаточно высокого уровня).

Практически любой последовательный порт можно имитировать программно, используя обычные выводы МК. Когда‑то так и поступали даже в случае самого популярного из таких портов – UART. Однако с тех пор МК обзавелись аппаратными последовательными портами, что, впрочем, не означает необходимости их непременного использования. Легкость программной имитации последовательных портов – еще одно их достоинство.

Из всех разновидностей портов, которые могут наличествовать в МК AVR, мы особенно обратим внимание на UART (Universal Asynchronous Receiver‑Transmitter , универсальный асинхронный приемопередатчик). UART есть основная часть любого устройства, поддерживающего протокол RS‑232, но и не только его (недаром он «универсальный») – например, промышленные стандарты RS‑485 и RS‑422 также реализовываются через UART, т. к. они отличаются от RS‑232 только электрическими параметрами и допустимыми скоростями, а не общей логикой построения.

В персональных компьютерах есть СОМ‑порт, который работает по тому же протоколу RS‑232, и узел UART точно так же является его базовой частью. Поэтому UART служит основным способом обмена данными МК с компьютером.

Отметим, что отсутствие СОМ‑порта в большинстве современных моделей ПК не является препятствием – существуют переходники USB‑COM, а в настольную модель можно вставить дополнительную карту с СОМ‑портами. О том, как обращаться с UART на практике, рассказывается в главах 21 и 22 , применительно к платформе Arduino – программировать такой обмен на ассемблере гораздо сложнее (хотя и надежнее, см. далее). В главе 22 мы увидим, что существуют простые и при этом достаточно надежные способы организовать передачу через последовательный порт по радиоканалу, что позволяет обойтись вообще без проводов.

Кроме UART, почти все МК AVR содержат самый простой из всех последовательных портов – SPI (Serial Peripheral Interface , последовательный периферийный интерфейс). Об устройстве SPI упоминалось в главе 16 . Его принципиальная простота сыграла отчасти дурную роль – трудно встретить два устройства, где протоколы SPI полностью совпадают, обычно обмен по этому порту сопровождается теми или иными «наворотами». Следует отметить, что программирование AVR также осуществляется через SPI, однако в общем случае этот интерфейс и SPI для обмена данными – разные вещи, хотя в большинстве случаев выводы у них одни и те же.

Кстати, всем знакомые карты памяти («флэшки») также адресуются через протокол, очень близкий к SPI.

Кроме этих портов, часто применяется очень простой аппаратно, но более сложный с программной точки зрения и довольно медленный интерфейс 12С (в терминологии Atmel AVR он называется TWI (Two‑Wire Interface , двухпроводной интерфейс). С его помощью можно общаться со многими устройствами: часами реального времени, компасами, датчиками, некоторыми разновидностями памяти. Мы рассмотрим его опять же в главах, посвященных Arduino .

В AVR имеется 10‑разрядный АЦП последовательного приближения (см. главу 17 ). Работа с ним имеет довольно много нюансов, и мы ее подробно рассмотрим в главе 20 . В главе 22 вы увидите, насколько Arduino упрощает этот процесс. И вообще, некоторые другие узлы МК семейства AVR мы рассмотрим по ходу изложения конкретных схем – так будет нагляднее. Сейчас же мы закончим затянувшееся знакомство с микроконтроллером и обратимся к вопросу о том, как его программировать. Следующие две главы мы посвятим элементарным сведениям о программировании МК на ассемблере, а далее перейдем к языкам высокого (и даже сверхвысокого) уровня. Так вы сможете наглядно сравнить и даже при желании «пощупать руками» преимущества и недостатки того и иного подхода и границы их применимости.

Лабораторная работа №9

Параллельные и последовательные порты и их особенности работы

Цель лабораторной работы:

– Изучение особенностей работы параллельных и последовательных портов

Порт (персонального) компьютера предназначен для обмена информацией между устройствами, подключенными к шине внутри компьютера и внешним устройством .

Для связи с периферийными устройствами к шине компьютера подключены одна или несколько микросхем контроллера ввода-вывода .

Последовательный порт стандарта RS-232-C. Является стандартом для соединения ЭВМ с различными последовательными внешними устройствами. В операционных системах каждому порту RS-232 присваивается логическое имя COM1-COM4.

Параллельный порт используется для одновременной передачи 8 битов информации. В компьютерах этот порт используется главным образом для подключения принтера, графопостроителей и других устройств. Параллельные порты обозначаются LPT1-LPT4.

Интерфейс USB (Universal Serial Bus) – универсальная последовательная шина призвана заменить устаревшие последовательный (COM-порт) и параллельный (LTP-порт) порты. Шина USB допускает подключение новых устройств без выключения компьютера. Шина сама определяет, что именно подключили к компьютеру, какой драйвер и ресурсы понадобятся устройству, после чего выделяет их без вмешательства пользователя. Шина USB позволяет подключить до 127 устройств.

IEEE 1394 (Institute of Electrical and Electronic Engineers 1394 – стандарт Института инженеров по электротехнике и электронику 1394) - последовательный интерфейс, предназначенный для подключения внутренних компонентов и внешних устройств. Цифровой последовательный интерфейс IEEE 1394 характеризуется высокой надежностью и качеством передачи данных, его протокол поддерживает гарантированную передачу критичной по времени информации, обеспечивая прохождение видео- и аудиосигналов в реальном масштабе времени без заметных искажений. При помощи шины IEEE 1394 можно подключить до 63 устройств и практически в любой конфигурации, чем она выгодно отличается от трудноконфигурируемых шин SCSI. Этот интерфейс используется для подключения жестких дисков, дисководов CD-ROM и DVD-ROM, а также высокоскоростных внешних устройств, таких как видеокамеры, видеомагнитофоны и т.д.

Задание 1.

Найти рисунок разъёмов системной платы. Указать название разъёмов и для каких устройств они применяются. Найти теоретические сведения по этим разъёмам.

Задание 2.

Определить внешние интерфейсы целевого компьютера. Подключить к целевому компьютеру принтер, монитор, сканер, мышь, клавиатуру, колонки.

Наружные разъёмы материнской платы: PS/2 (1 - мышь, 2 - клавиатура), сетевой RJ-45 (3), USB (4), D-subminiature (9-контактный разъём COM-порта) (5), LPT порт (6), VGA порт (7), MIDI) (8) и 3.5 мм аудио входы-выходы (разъём TRS) (9)

1, 2. PS/2 — компьютерный порт (разъём), применяемый для подключения клавиатуры и мыши. Впервые появился в 1987 году на компьютерах IBM PS/2 и впоследствии получил признание других производителей и широкое распространение в персональных компьютерах и серверах. Скорость передачи данных — от 80 до 300 Кб/с и зависит от производительности подключенного устройства и программного драйвера.

Для того чтобы передать информацию какому-либо устройству или получить ее от этого устройства, компьютеру необходимо специально организовать процесс обмена данными.

Организация операций, связанных с вводом и выводом информации, подразумевает следующее:

    соблюдение одинакового кода передаваемых данных (то есть «разговор на одном языке»);

    согласование скоростей передачи и приема информации (или «диалог в одинаковом темпе»);

    единство формата обмена данными (то есть способ дробления их на фрагменты, передаваемые за один цикл);

    стандартный протокол специальных управляющих сигналов (команды, «понятные» принимающему и передающему устройству) .

Для того чтобы соблюсти все указанные требования, в компьютере существуют специализированные контроллеры ввода/вывода, предназначенные только для организации работы по обмену информацией с внешним миром. Этот обмен реализуется через специальные «ворота» (каналы), получившие название портов .

Обмен (то есть ввод и вывод) данных между компьютером и периферийным устройством происходит в два этапа: передача информации от компьютера к периферийному устройству и прием информации от периферийного устройства. Такая организация работы требуется для исключения возникающих ошибок (например, при переполнении приемного буфера периферийного устройства или наличии внешней помехи) и оперативного информирования системы о состоянии процесса ввода/вывода.

Помимо оперативной памяти, процессор может адресовать и другую область, известную как адресное пространство ввода-вывода. Каждый порт ввода-вывода имеет уникальное множество адресов ввода-вывода. Микропроцессор включает две команды: IN и OUT, используемые для чтения и записи данных в адресном пространстве ввода-вывода, а также другие инструкции, управляющие портами ввода-вывода (эти команды будут рассмотрены при изучении языка ассемблера).

Порты ввода/вывода, соответственно способам передачи, подразделяют на параллельные и последовательные.

В параллельном порту (Parallel Port) в одном направлении одновременно передаются сразу 8 бит (1 байт) информации. Поэтому разъем параллельного порта содержит восемь линий для передачи данных, а на компьютере с двунаправленным параллельным портом разъем дополнительно восемь линий используются для приема данных.

Для параллельного порта не существует международного стандарта, однако в качестве фактического стандарта используется спецификация, опубликованная фирмой-изготовителем периферийных устройств Centronics (поэтому ее часто называют стандартом Centronics).

Интерфейс Centronics в компьютере использует для обмена данными 25-контактный «материнский» разъем (контактные гнезда под штыри кабеля).

Существуют следующие типы параллельного порта:

    стандартный;

    улучшенный параллельный порт EPP (Enhanced Parallel Port);

    порт с расширенными функциями ECP (Extended Capability Port).

Стандартный параллельный порт предназначен только для односторонней передачи данных от компьютера к принтеру. Он обеспечивает максимальную скорость передачи данных от 120 до 200 Кбайт/с.

Порт EPP является двунаправленным, то есть обеспечивает передачу 8 бит данных в обоих направлениях. Это избавляет центральный процессор от необходимости выполнения медленных команд типа IN и OUT, позволяя программе непосредственно заниматься пересылкой данных. Порт EPP передает и принимает данные почти в 6 раз быстрее стандартного параллельного порта, в основном, за счет наличия буферной памяти. Специальный режим (с использованием прямого доступа в память – DMA) позволяет порту EPP передавать блоки данных непосредственно из оперативной памяти в последовательный порт, минуя процессор. При использовании соответствующего программного обеспечения порт EPP может принимать и передавать данные со скоростью до 2 Мбайт/с. Подобно интерфейсу SCSI порт EPP позволяет подключать в цепочку до 64 периферийных устройств.

Дальнейшим развитием порта EPP явился порт ECP . Он обладает теми же возможностями, что и порт EPP, но количество устройств увеличено до 128. Кроме того, в порту ECP реализована такая важная функция, как сжатие данных.

Для сжатия данных используется метод RLE (Run Length Encoding), в котором длинная последовательность одинаковых символов передается двумя байтами: один байт определяет повторяющийся символ, другой – число повторений. Стандарт ECP допускает сжатие и распаковку данных как программно (с помощью драйвера), так и аппаратно (схемой порта).

В настоящее время стандарты портов EPP и ECP включены в стандарт IEEE 1284 . Этот стандарт определяет четыре режима работы: полубайтовый, байтовый, EPP и ECP. Дополнительно к функциям портов EPP и ECP стандарт IEEE 1284 позволяет принтеру послать сигнал при аварии.

Хотя в операционной системе предусмотрено три логических имени для параллельных портов – LPT1 (синоним PRN), LPT2 и LPT3 обычно в комплектацию компьютера входит один параллельный порт (в современных компьютерах контроллер параллельного порта располагается на материнской плате)

Параллельный порт чаще всего используется для подключения принтера. Однако к нему можно подключать и другие устройства, например, сканеры, внешние дисководы, стримеры и дисководы CD. Параллельный порт можно использовать также для обмена данными между двумя компьютерами.

Параллельный порт обеспечивает довольно высокую скорость передачи, поскольку эта передача осуществляется побайтно. Однако при большой длине кабеля или при не очень интенсивном обмене данными удобнее оказывается последовательный порт.

Последовательный порт (Serial Port) передает в одном направлении одновременно всего лишь 1 бит информации. Данные могут передаваться через этот порт как от ПК к внешнему устройству, так и наоборот.

Последовательные порты компьютера обычно соответствуют международному стандарту RS-232C (Reference Standard 232 версии С), поэтому к этому порту можно подсоединить любое устройство, которое также ориентировано на этот стандарт (например, мышь, модем, последовательный принтер или последовательный порт другого компьютера). Этот интерфейс использует 9 каналов связи: один из них служит для передачи информации от компьютера, другой – для приема данных от периферийного устройства. Оставшиеся 7 каналов используются для управления самим процессом обмена данными.

Последовательный порт состоит из UART-микросхемы (Universal Asynchronous Receiver/Transmitter – универсальный асинхронный приемник/передатчик) и некоторых поддерживающих компонентов. Эта микросхема принимает байты данных от шины компьютера, преобразует их в строку битов, добавляет необходимые биты кадровой синхронизации и затем выполняет передачу данных, а также выполняет обратные действия по приему строки данных.

Современные микросхемы UART оснащены буферной памятью и обеспечивают скорость передачи данных до 115 Кбит/с.

Данные при последовательной передаче разделяются служебными посылками, такими, как стартовый бит и стоп-бит. Эти биты указывают на начало и конец передачи последовательных бит данных. Данный метод передачи позволяет осуществить синхронизацию между приемной и передающей стороной, а также выровнять скорость обмена данными.

Для идентификации и распознавания ошибок при последовательной передаче в состав посылки дополнительно может включаться бит контроля четности. Значение бита контроля четности определяется двоичной суммой всех передаваемых битов данных. В режиме, когда бит контроля четности четный (Even Parity), значение бит контроля четности равно 0, если сумма битов четная, и 1 – в противном случае. Биты контроля четности имеют инверсные (обратные) значения (соответственно 1 или 0), если бит контроля четности нечетный (Odd Parity).

Стандартная комплектация компьютера содержит два последовательных порта. В современных компьютерах контроллеры последовательных портов, также, как и контроллер параллельного порта, располагается на материнской плате. Отличие разъема последовательного порта от параллельного состоим в том, что этот разъем имеет контактные штыри, а не гнезда («отцовский» разъем). В старых компьютерах использовался один 25-контактный и один 9-контактный разъем, в современных компьютерах – два 9-контактных разъема. Длина кабеля последовательного порта ограничена 18 м. Основным устройством, подключаемым к последовательному порту, является модем.

Некоторые компьютеры, особенно ориентированные на коммуникационные приложения, могут иметь последовательные порты, выполненные по другим стандартам (например, RS-449A или RS-613), имеющие более высокую скорость передачи данных на более дальние расстояния.