Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Порты асинхронного адаптера




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

В зависимости от версии, BIOS инициализирует первые два или четыре порта коммуникации. Каждому порту отводится по одной микросхеме UART. Базовый адрес – это двухбайтовый адрес порта, который является младшим из группы адресов портов, дающих доступ к UART. Базовые адреса портов хранятся в ячейках, начиная с адреса 0040:0000h. При выполнении BIOS начальной загрузки каждому порту присваивается логическое имя COM1÷COM4.

Базовый адрес порта определяется путем чтения переменных BIOS, адреса которых приведены в табл. 105. Перед работой с портом рекомендуется определить его адрес путем чтения переменной BIOS, а не использовать стандартное значение.

 

 

Табл. 105. Адреса переменных BIOS для COM портов.

Имя порта Адрес BIOS Диапазон адресов Описание
COM1 0040:0000h 3F8…3FFh Базовый адрес порта COM1 3F8h. Если переменная равна 0, то порт не найден.
COM2 0040:0002h 2F8…2FFh
COM3 0040:0004h 3E8…3EFh
COM4 0040:0006h 2E8…2EFh

 

 

Порту соответствует также определенная линия прерывания IRQ для уведомления об изменении его состояния. Архитектура IBM PC обеспечивает управление прерываниями для двух последовательных портов COM1 (IRQ4, соответствует INT 0Ch) и COM2 (IRQ3 соответствует INT 0Bh), и оставляет место в таблице прерываний еще для COM3 и COM4.

Микросхема 8250 содержит 11 программируемых однобайтовых регистров, с помощью которых управляется и контролируется последовательный порт. Адреса регистров, соответствующих каждому порту, вычисляются путем добавления смещений к базовому адресу.

Доступ к регистрам осуществляется через восемь адресов портов (табл. 106), занимающих смежные адреса в пространстве устройств ввода-вывода. Следует заметить, что регистров реально больше, т.к. регистры по смещениям 0 и 1 мультиплексируются регистром управления линией LCR.

Регистр хранения передатчика (Transmitter Register). Байт данных, записанный в регистр THR, сразу передается в сдвиговый регистр передатчика (TSR). Здесь данные преобразуются в последовательную форму, добавляются биты четности и кадрирования и передаются на последовательный выход микросхемы SOUT. В отличие от параллельного интерфейса здесь нет необходимости в наличии стробирующего импульса. Младший значащий разряд передаваемого символа записывается в D0.

 

Табл. 106. Назначение регистров микросхемы 8250.

Смещение Адрес порта Регистр R-W
COM1 COM2
    3F8h   2F8h Регистр хранения передатчика THR. W
Регистр данных приемника RBR. R
Делитель скорости обмена (LSB). RW
  3F9h 2F9h Делитель скорости обмена (MSB). RW
Регистр разрешения прерывания IER. R-W
  3FAh 2FAh Регистр идентификации прерывания IIR. R
  3FBh 2FBh Регистр управления линией LCR. R-W
  3FCh 2FCh Регистр управления модемом MCR. R-W
  3FDh 2FDh Регистр состояния линии LSR. R-W
  3FEh 2FEh Регистр состояния модема MSR. R-W
  3FFh 2FFh Регистр сверхоперативной памяти SCR. R-W

 

 

Буферный регистр приемника RBR (Read Buffer Register). Данные в последовательной форме поступают на вход микросхемы SIN. Затем удаляются кадрирующие биты, бит четности и информационные разряды передаются в сдвиговый регистр приемника RSR (Receiver Shift Register). В регистре RSR выполняется «сборка» символа из требуемого числа информационных разрядов (от 5 до 8), даже при наличии ошибок кадрирования и четности. Полученный символ записывается в регистр RBR, начиная с младшего разряда D0. Формат регистров THR и RBR одинаков (табл. 107).

 

 

Табл. 107. Формат регистра передатчика и приемника.

Биты                
Значение D7 D6 D5 D4 D3 D2 D1 D0

 

 

Регистр управления линией LCR (Line Control Register). Значения разрядов регистра LCR определяют асинхронный формат данных (табл. 108).

 

 

Табл. 108. Формат регистра управления линией.

Биты                
Значение DLAB BC SPS EPS PEN STB WLS1 WLS0

 

 

Разряды WLS1 и WLS0 определяют число информационных разрядов, которые рассматриваются как один символ (табл. 109). Данные от микропроцессора передаются побайтно, независимо от размерности. При длине слова, меньшей 8 разрядов, сохраняется только заданное число младших разрядов.

 

 

Табл. 109. Кодирование данных.

WLS1 WLS0 Длина
     
     
     
     

 

 

Разряд STB задает число стоповых бит, добавляемых к каждому кадру при передаче. При STB=0 добавляется один стоп-бит. При STB=1 добавляется два стоп-бита, если размерность информационного поля равна 6,7,8, либо 1.5 стоп-бита при 5-разрядной длине поля. Половина стопового бита означает, что линия связи удерживается в состоянии MARK в течение времени, составляющего 150% от времени действия одного элементарного сигнала. Следует заметить, что 8250 проверяет только первый стоповый бит при любой установке поля STB.

Разряды SPS, EPS и PEN задают тип контроля четности (табл. 110).

 

 

Табл. 110. Кодирование типа четности.

SPS EPS PEN Тип контроля
x x   Проверка отключена.
      Проверка на нечетность. Символ и бит четности должны содержать нечетное количество единиц.
      Проверка на четность. Символ и бит четности должны содержать четное количество единиц.
      MARK-контроль: бит четности всегда равен лог. 1.
      SPACE-контроль: бит четности всегда равен лог. 0.

 

 

Разряд BC используется для генерации выходного сигнала BREAK. При лог. 1 на последовательном выходе SOUT микросхемы 8250 принудительно устанавливается сигнал SPACE. Сигнал будет оставаться таким независимо от изменения других параметров передатчика до появления лог. 0 в поле BC.

Разряд DLAB предназначен для доступа к регистрам делителя скорости передачи. Для обращения к регистрам TBR, RBR и IER разряд должен быть установлен в 0. При DLAB=1 регистры перестраиваются на обращение к регистрам делителя скорости.

Регистр состояния линии LSR (Line Status Register) линии определяет протокол связи (табл. 111). В процессе обмена регистр обычно постоянно просматрива­ется. При передаче данных регистр информирует, что предыдущий символ уже послан, позволяя записать новый символ поверх него. При приеме данных регистр информирует о поступлении следующего сим­вола, чтобы программа могла прочитать его прежде, чем он будет перезаписан следующим прибывшим.

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

 

 

Табл. 111. Формат регистра состояния линии.

Биты                
Значение   TSRE THRE BI FE PE OE DR

 

 

Разряд DR (готовность данных, Data Ready) устанавливается в 1, когда поступающий символ принят и передан в буферный регистр приемника RBR. Считывание символа из RBR приведет к автоматическому сбросу DR в 0.

Разряд OE (ошибка переполнения приемника, Overflow Error) устанавливается в 1 при возникновении ошибки переполнения (перезаписи). Ошибка возникает при записи в RBR символа, когда предыдущий еще не был считан. В этом случае непрочитанный символ безвозвратно теряется. Разряд устанавливается в 0 при считывании данных из LSR.

Разряд PE (ошибка четности, Parity Error) указывает на ошибку четности. При получении очередного символа вычисляется бит четности в соответствии с параметрами, заданными в регистре LCR. При несовпадении расчетного значения с битом четности, полученным вместе с символом, разряд PE устанавливается в 1. Разряд сбрасывается в 0 только при считывании данных из LSR.

Разряд FE (ошибка кадрирования, Frame Error) устанавливается в 1, если бит, следующий за последним разрядом данных или битом четности, не является стоповым (не имеет значение MARK). Тем не менее, принятый символ передается в RBR. Разряд сбрасывается в 0 только при считывании данных из LSR.

Разряд BI (прерывание по сигналу BREAK) устанавливается в 1 каждый раз, когда на последовательном входе SIN присутствует сигнал BREAK. Сигнал соответствует BREAK, когда он удерживается в состоянии SPACE в течение промежутка времени, превышающего длительность одного кадра. Для снятия сигнала BREAK вход SIN должен оставаться в состоянии MARK в течение промежутка времени, не меньше половины длительности одного элементарного сигнала. Даже при снятии сигнала BREAK флаг BI остается установленным, и сбросить его можно только при прочтении данных из LSR.

Разряд THRE (готовность регистра хранения передатчика) устанавливается в 1, при передаче символа из регистра хранения передатчика THR в сдвиговый регистр передатчика TSR. Флаг сообщает, что THR пуст и готов принять очередной символ. Ошибка переполнения передатчика может возникнуть при записи символа в THR, когда флаг THR сброшен в 0. Следует заметить, что флаг THRE не отражает состояние готовности сдвигового регистра TSR.

Разряд TSRE (готовность сдвигового регистра) устанавливается в 1, когда символ, находящийся в сдвиговом регистре передатчика TSR передан, а новый символ еще не готов для передачи. При передаче очередного символа из THR в TSR флаг сбрасывается в ноль. Запись в разряд не приводит к его изменению. Таким образом, последовательная передача может считаться завершенной, когда оба флага THRE и TSRE будут установлены в 0.

Регистр разрешения прерывания IER (Interrupt Enable Register). Скорость передачи данных по последовательному интерфейсу невелика, поэтому имеет смысл выполнять его в фоновом режиме, используя прерывания по окончании передачи или приема символа.

Регистр IER (табл. 112) запрещает или разрешает по отдельности четыре типа прерываний, которые может генерировать адаптер (выход INTR). Запись 1 в разряды 0-3 разрешает соответствующий тип прерывания. Разрешенное прерывание сообщается в регистр идентификации прерывания IIR и активизирует выход INTR.

Разряд ERDAI разрешает прерывание по готовности принимаемых данных. Прерывание возникает при передаче принятого символа из сдвигающего регистра приемника RSR в буферный регистр RBR.

 

 

Табл. 112. Формат регистра разрешения прерывания.

Биты                
Значение         EMSI ERLSI ETHREI ERDAI

 

 

Разряд ETHREI разрешает прерывание по готовности регистра хранения передатчика THR. Прерывание возникает при передаче символа их регистра THR в сдвигающий регистр TSR.

Разряд ERLSI разрешает прерывание по изменению регистра состояния линии LSR. Прерывание возникает при установке флагов (одного или всех сразу) OE, PE, FE или BI в 1. Последующий анализ регистра LSR позволит определить причину прерывания.

Разряд EMSI разрешает прерывание по состоянию модема. Прерывание возникает при установке одного или всех сразу флагов DCTS, DDSR, TERI или DDCD регистра состояния модема MSR в 1. Последующий анализ регистра MSR позволит определить причину прерывания.

Когда происходит одно из перечисленных событий, в контроллере преры­ваний инициируется аппа­ратное прерывание IRQ3 для порта СОМ2 и IRQ4 для порта COM2. Процедура обработки прерываний передает управление подпрограмме, на которую указывает соответствующий вектор прерывания. Пос­кольку прерывание аппаратное, оно может быть маскиро­вано.

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

 

 

Табл. 113. Приоритеты прерываний.

Приоритет Описание
  Состояние линии приемника.
  Готовность принимаемых данных.
  Готовность регистра хранения передатчика.
  Состояние модема.

 

Регистр идентификации прерывания IIR (Interrupt Identification Register) хранит информацию о прерывании с наивысшим приоритетом (табл. 114). Разряд INP сообщает об отложенных прерываниях. Если таковых нет, флаг равен 1. При наличии нескольких прерываний, требующих обработки, флаг равен 0 и флаги IID0 и IID1 кодируют прерывание с наивысшим приоритетом. Разряды IID0 и IID1 идентифицируют прерывание.

 

 

Табл. 114. Формат регистра идентификации прерывания.

Биты                
Значение           IID1 IID0 INP

 

 

Типы прерываний, их приоритеты и действия для сброса прерывания перечислены в табл. 115. Таким образом, при одновременном появлении нескольких прерываний бит 0 регистра IIR будет установлен в 0. Если такая ситуация имеет место, перед завершением обработки прерывания следует снова прочитать регистр IIR и обработать следующее прерывание. Так следует поступать до тех пор, пока бит 0 регистра IIR не станет равным 1.

 

 

Табл. 115. Кодирование типов прерываний.

Регистр IIR Причина прерывания Действия для сброса
IID1 IID0 INP
     
      Ошибка OE,PE или FE, сигнал BREAK. Считать содержимое LSR.
      Готовность принимаемых данных. Считать символ из RBR.
      Регистр THR пуст. Считать данные из IIR или записать данные в THR.
      Сигналы CTS,DSR,RI или DCD изменились с момента последнего считывания из MSR. Считать данные из MSR.

 

 

Регистры делителя скорости передачи. Микросхема 8250 использует программируемый генератор скорости передачи, который использует 16-разрядный делитель частоты внешнего опорного сигнала. Типичной тактовой частотой внешнего опорного сигнала является 1.8432 МГц. Формула вычисления делителя скорости передачи данных имеет вид:

 

,

где – частота внешнего опорного сигнала в герцах.

 

Делитель скорости записывается в два байта. Формат регистров делителей приведен в табл. 116 и 117. Для передачи делителя в регистры флаг DLAB регистра управления линией LCR должен быть установлен в 1, в противном случае по этим двум адресам значения будут адресо­ваны в регистры THR и IER. Регистры скорости обмена всегда следует устанавливать первыми, т.к. они единственные, которые требуют установки бита DLAB регис­тре контроля линии LCR. После этого необходимо сбросить бит DLAB в 0.

 

 

Табл. 116. Младший значащий разряд делителя.

Биты                
Значение D7 D6 D5 D4 D3 D2 D1 D0

 

Табл. 117. Старший значащий разряд делителя.

Биты                
Значение D15 D14 D13 D12 D11 D10 D9 D8

 

 

Старший байт делителя передается по адресу 3F9H (или 2F9H), младший – по адресу 3F8H (или 2F8H). Зависимость скорости передачи данных от некоторых значений делителя частоты представлена в табл. 118. Первый столбец делителя содержит старший значащий байт MSB, второй – младший значащий байт LSB.

 

 

Табл. 118. Скорость передачи данных.

Скорость передачи, Бод Значение делителя
MSB LSB
  1047h 417h
  384h 180h
  96h 60h
  48h 30h
  12h 0Ch
     
     
     
     

 

 

Регистр сверхоперативной памяти SCR (Scratch Register) является 8-разрядным и служит для временного хранения данных. Его содержимое не влияет на работу адаптера. Формат хранения данных регистра приведен в табл. 119. При использовании регистра в прикладных программах следует помнить, что его услугами могут пользоваться и другие программы, поэтому всегда необходимо сохранять в стеке его содержимое, а затем вновь восстанавливать.

 

 

Табл. 119. Формат регистра сверхоперативной памяти.

Биты                
Значение D7 D6 D5 D4 D3 D2 D1 D0

 

 

Регистр состояния модема MSR (Modem Status Register) позволяет узнать текущие значения сигналов состояния модема и фиксировать их изменения с момента последнего считывания данных из MSR (табл. 120). При считывании разряды регистра сбрасываются в ноль и их необходимо вручную восстанавливать.

 

 

Табл. 120. Формат регистра состояния модема.

Биты                
Значение DCD RI DSR CTS DDCD TERI DDSR DCTS

 

 

Разряд DCTS (сброс передатчика) позволяет отследить изменение входного сигнала CTS. Любое изменение приводит к установке разряда в 1.

Разряд DDSR (готовность модема) отслеживает уровень сигнала на входе DSR, что приводит к установке в 1.

Разряд TERI (задний фронт сигнала или «указатель вызовов») отслеживает изменение сигнала на входе RI, что приводит к установке в 1.

Разряд DDCD («указатель несущей» или «указатель сигнала на линии приема») отслеживает любое изменение сигнала на входе DCD и устанавливает 1.

Разряд CTS («сброс передатчика») указывает текущее значение сигнала на входе CTS.

Разряд DSR («готовность модема») указывает текущее значение сигнала на входе DSR.

Разряд RI («указатель вызовов») указывает текущее значение сигнала на входе RI.

Разряд DCD («указатель несущей») указывает текущее значение сигнала на входе DCD.

 

Регистр управления модемом MCR (Modem Control Register) выдает управляющие сигналы устройству сопряжения, например, модему (табл. 121).

 

 

Табл. 121. Формат регистра управления модемом.

Биты                
Значение       LOOP OUT2 OUT1 RTS DTR

 

 

Разряд DTR (готовность терминала, Data Terminal Ready) определяет сигнал на выходе DTR микросхемы 8250. При DTR = 0 на выходе устанавливается 1 и наоборот.

Разряд RTS (запрос передатчика, Request Terminal Station) определяет сигнал на выходе RTS микросхемы 8250. При RTS = 0 на выходе устанавливается 1 и наоборот.

Разряды OUT1 и OUT2 являются выходами общего назначения. При 0 на выходе устанавливается 1 и наоборот.

Разряд LOOP (петлевая конфигурация) обеспечивает выполнение процедуры самопроверки. При установлении 1 происходит следующее (табл. 122):

- последовательный вход SIN отсоединяется от внешнего соединения и внутренне подключается к последовательному выходу SOUT;

- выход сдвигового регистра передатчика подключается к входу сдвигового регистра приемника;

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

 

 

Табл. 122. Схема петлевого подключения.

MCR MSR
OUT2 DCD
OUT1 RI
DTR DSR
RTS CTS

 

 

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




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


Дата добавления: 2014-11-16; Просмотров: 587; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.092 сек.