Микроконтроллер 8250
WD8250
ХАРАКТЕРНЫЕ ОСОБЕННОСТИ
* Спроектирована для наиболее простого подсоединения к
самым широко используемым микропроцессорам (Z-80, 8080А, 6800
и т.д.).
* Полная двойная буферизация.
* Независимое управление передачей, приемом, линиями
состояния, прерыванием.
* Программируемый генератор скорости передачи позволяет
делить любые входные синхроимпульсы на число от 1 до (2**16-1)
и производит внутренную шестнадцатикратную синхронизацию.
* Независимый ввод синхронизирующих импульсов приемника.
* Полностью программируемый последовательный интерфейс.
Характеристики:
- 5, 6, 7 или 8-ми битовые данные;
- формирование бита контроля четности или нечетности и его обнаружение;
- формирование 1, 1,5 или 2-х стоповых битов;
- формирование скорости в бодах (канал связи со скоростью до 56 Кбод);
- обнаружение ложного стартового бита;
* Полные характеристики сообщений о состоянии
* ТТL-драйвер с 3-мя состояниями для двунаправленной шины данных и шины управляющей.
* Генерация и обнаружение прерывания передачи.
* Характеристики внутреннего диагностирования
- контроль линии связи для обнаружения неисправной изоляции.
- моделирование ошибок прерывания передачи, паритета, переполнения,кадрирования.
* Полностью управляемая приоритетная система приревания.
* Единственный источник питания +5 В.
ОПИСАНИЕ
WD8250 представляет собой программируемый элемент
ассинхронной связи (ACE) в 40-контактном корпусе. Устройство
изготавливается по технологии кремнеевых затворов N/MOS.
ACE является программируемым устройством, которое
использует двунаправленную 8-ми битовую шину данных с 3-мя
состояниями.
АСЕ используется для преобразования параллельных данных в последовательный формат со стороны передачи и преобразования последовательных данных в параллельные со стороны приемника. Последовательный формат представляет собой стартовый бит для передачи и приема следующие от 5-ти до 8-ми битов данных, бит паритета ( если запрограммирован) и один, полтора (только 5-ти битовый формат) или два стоповых бита. Максимальная рекомендуемая скорость передачи данных 56 Кбод. Внутренние регистры дают возможность пользхователю программировать различные типы прерываний, сигналов управления модема и знаковые форматы. Пользователь может считывать состояние АСЕ в любое время, читая регистры состояния, прерывания и состояния модема.
Дополнительной характерной особенностью АСЕ является программируемый генератор скорости, который может делить или внутренний синхронизирующий сигнал от кварца или внешную частоту уровня TTL на число от 1 до 2**16-1.
АСЕ спроектирован для работы как в управляемой системе прерывания так и в системе опроса, которая программируется пользователем и работает под управлением программного обеспечения с использованием внутреннего регистра.
ОПИСАНИЕ КОНТАКТОВ
Номер| кон- | такта| Мнемони- ка Наименова-| ние сиг- | нала | Функция
1 | 2 3 | 4
1 | до | 8 | | | | 9 | | | | | 10 | | | 11 | | | | | | 12 | 13 | 14 | | 15 | | | | | | | | 16 | | | 17 | | | 18 | 19 | | | | | | | | | 20 | 21 | 22 | | | | | | | | 23 | | | | | 24 | | | | 25 | | | | | | | | | | | | | | 26 | | 27 | | 28 | | 29 | | 30 | | 31 | | | | | 32 | | | | 33 | | | | 34 | | | | | 35 | | 36 | | | 37 | | | | 38 | | | | | | | 39 | | | | 40 | D0 до D7 RCLK SIN SOUT CSO CS1 CS2 BAUDOUT XTAL1 XTAL2 DOSTR DOSTR Vss DISTR DISTR DDIS CSOUT ADS A2 A1 A0 NC INTRPT OUT2 RTS DTR OUT1 MR CTS DSR RSLD RI Vcc Шина | данных | | | | | Вход син- | хронизации| приемника | | | Вход после| дователь- | ных данных| Выход пос-| ледовате- | льных дан-| ных | | Входы | Выбор ИМС0| Выбор ИМС1| Выбор ИМС2| | Выход син-| хронизации| передатчи-| ка | | | | | Вход внеш-| него синх-| росигнала | Выход вне-| шнего синх| росигнала | Вход строб| вывода дан| ных | | | | | | | | Заземление| Вход строб| ввода дан-| ных | | | | | | | Выход бло-| кировка бу| фера дан- | ных | | Выход вы- | бора ИМС | | | Вход строб| адреса | | | | | | | | | | | | Входы | Выбор ре- | гистра А2 | Выбор ре- | гистра А1 | Выбор ре- | гистра А0 | Нет под-| соединения| Выход пре| рывания | Выход 2 | | | | | Выход за-| прос пере-| дачи | | Выход го-| товность | терминала | данных | Выход 1 | | | | | Вход об-| щий сброс | Вход го- | тов для | передачи | Вход уст-| ройство со| пряжения | готово | Вход де- | тектор при| нимаемого | линейного | сигнала ка| нала дан- | ных | Вход ин- | дикатор | вызова | | +5 В | Линии ввода /вывода с 3-мя состояними. Двунаправленные линии связи меж- ду WD8250 и шиной данных. Все ском- понованные данные TX и RX, управля- ющие слова и информация о состоянии передаются через шину данных D0-D7. Этот вход является входом задающей частоты для приемника на ИМС (может быть подсоединен к 15-му контакту BAUDOUT) (частота равна скорость в бодах умноженная на 16) Ввод получаемых данных с канала связи (от перифирийного устройства, модема или устройства сопряжения). Вывод передаваемых данных, предоставляемых в последовательном коде в канал связи. Сигнал SOUT устанавливается в определенное состояние (лог.1) при общем сбросе. Когда сигналы CS0 и CS1 высокие, а CS2 низкий, выбирается ИМС. Выбор выполняется, когда строб адреса ADS фиксирует выбранные сигналы ИМС. 16-ти кратный синхросигнал передчи- ка ИМС WD8250. Частота синхросигна- ла равна частоте генератора, разде- ленной на число, загруженное в ре- гистр делителя. Сигнал BAUDOUT может быть использован для синхронизации приемника при подключении его к RCLR ( контакт 09). К этим контактам подключают кварц или внешний задающий генератор для задания требуемой скорости передачи (см. рис. 5 и 6). Когда ИМС выбрана, низкий уровень сигнала DOSTR или высокий уровень сигнала DOSTR позволяют запомнить данные в выбранном регистре WD8250 (записывает ЦПУ). Только одна из этих линий должна использоываться. Установите неиспользуемую линию в неактивное состояние: DOSTR - высокий уровень, DOSTR - низкий уровень. Заземление Когда ИМС выбрана низкий сигнал DISTR или высокий сигнал DISTR позволяет считывать с выбранного регистра WD8250 (читает ЦПУ). Только одна из этих линий может быть использована. Установите не- используемую линию в неактивное состояние: DISTR - высокий уровень DISTR - низкий уровень. Выход низкий всякий раз когдда данные считываются с WD8250. Может быть использован для изменения направления данных от внешнего приемопередатчика. Выход высокий всякий раз, когда ИМС выбрана. Передача данных в линию не может быть инициирована до тех пор, пока CSOUT высокий. При низком сигнале обеспечивается фиксирование сигналов для выбора регистра (А0, А1, А2) и выбора ИМС (CS0, CS1,CS2). Примечание: Положительный фронт сигнала ADS необходим, когда сигналы выбора регистра (А0, А1, А2) и выбора ИМС (CS0, CS1,CS2) нестабильны во время операции считывания или записи. Если это не требуется, вход ADS может быть постоянно низким. Эти 3 входа используются для выбора внутреннего регистра WD8250 во время считывания и записи. См.таблицу ниже. Не используется Вывод высокий всякий раз, когда присутствует разрешенное прерывание. Выход предназначенный для пользователя, который может быть запрограммирован 3-тим битом регистра управления модема. Бит равный 1 формиру- ет OUT2 низким. Когда выход низкий, он сообщает модему или устройству сопряжения, что WD8250 готов передать данные. См. регистр управления модема. Если выход низкий, он сообщает модему или устройству сопряжения, что WD8250 готов получить данные. Выход, предназначенный для пользователя, может быть запрограммирован 2-ым битом регистра управления модема. Бит равный 1 формирует выход 1 низким. Высокий сигнал сбрасывает регистры в состояния, указанные в табл. 1. Сигнал с АПД, указывающий, что устройство готово к передаче данных. См. регистр состояния модема. Сигнал с АПД, используемый для указания состояния готовности устрой- ства сопряжения. См. регистр состояния модема. Сигнал с АПД, указывающий, что идет получение сигнала, который удовлетворяет условиям качества сигнала. См. регистр состояния модема. Вход низкий, указывает, что сигнал вызова получен модемом или устройством сопряжения. См. регистр состояния модема. Питание +5 В.
ВЫБОР ИМС И АДРЕСАЦИЯ РЕГИСТРОВ
Строб адреса (ADS 25-тый контакт): при низком уровне обеспечивает разрешение анализа сигналов выбора регистра (А0, А1, А2) и выбора ИМС (СS0, CS1, CS2).
Примечание: положительный фронт сигнала ADS необходим
для фиксации, когда сигналы выбора регистра (А0,
А1, А2) и выбора ИМС (CS0, CS1, CS2) могут изменять во время считывания или записи. Если ADS не используется для фиксирования, то на этот вход необходимо подать постоянный разрешающий уровень логического 0.
Выбор ИМС (CS0, CS1, CS2) контакты 12-14: для выбора ИМС входы CS0 и CS1 должны иметь высокий уровень, а CS2 - низкий. Выбор ИМС производится после фиксирования стробом адреса (ADS) или если вход ADS постоянно низкий.
Выбор регистра (А0, А1, А2) контакты 26-28: условия выбора регистра при считывании или записи см. табл. 2.
Примечание: разрядом доступа к регистрам делителя (DLAB) является самый старший разряд в регистре управления линией. DLAB должен быть запрограммирован в 1 для обеспечения доступа к регистрам делителя генератора скорости передачи.
DLAB | А2 А1 А0 Регистр
0 | | | 0 | х | | х | х | х | х | х | 1 | 1 | 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 Буферный регистр приема (чтение) Регистр хранения информации передатчика (запись) Регистр разрешения прерывания Регистр идентификации прерывания (только чтение) Регистр управления линией Регистр управления модемом Регистр состояния линии Регистр состояния модема Нет Регистр делителя (младший байт) Регистр делителя (старший байт)
ПРИНЦИП ДЕЙСТВИЯ WD8250
Установка ИМС в исходное состояние.
Высокий уровень на входе на 35-ом контакте устанавливает WD8250 в положение, указанное в табл. 1.
Доступ к регистрам WD8250.
Программист системы имеет доступ к любому регистру из табл. 2. Характеристики отдельных регистров приводится на следующих страницах.
Таблица 1
Регистр/сигнал Установка | Исходное состояние
Буферный регистр приемника полученное | первое слово | данные
Регистр хранения информации передатчика запись в этот| регистр | | данные
Регистр разрешения прерываний общий сброс | | все разряды низкие
Регистр идентификации прерывания | -"- | | разряд 0 высокий и разря- ды с 1 по 7 постоянно низкие
Регистр управления линией -"- | | Все разряды низкие
Регистр управления модемом -"- | | Все разряды низкие
Регистр состояния линии -"- | | Все разряды низкие, а разряды 5 и 6 высокие
Регистр состояния модема общий сброс | сигнальные | входы модема | Разряды 0-3 низкие, разряды 4-7 - входные сигналы
Регистр делителя младший байт запись в ре- | гистр | данные
Регистр делителя старший байт запись в ре- | гистр | данные
SOUT общий сброс | высокий
BAUDOUT запись в лю- | бой регистр | делителя | низкий
CSOUT сигнал строба| ADS и состоя-| ние линий вы-| бора ИМС | высокий/низкий
DDIS DDIS=CSOUT x | RCLKx DISTR | (при общем сб-| росе ЦП устан-| авливает низк-| ие RCLK и | DISTR) | высокий
INTRPT общий сброс | низкий
OUT2 -"- | высокий
RTS -"- | высокий
DTR -"- | высокий
OUT1 -"- | высокий
Линии шины данных D7 - D0 ------------------- В третье состо| яние, если | CSOUTxDISTR =| высокий или | CSOUTxDOSTR =| высокий | --------------- Третье состояние данные (от ИМС к ЦП) данные (от ЦП к ИМС) -----------------------
РЕГИСТР УПРАВЛЕНИЯ ЛИНИИ
Разряды 0 и 1: эти два разряда определяют количество битов в каждой передаваемой или принимаемой последовательности символов. Кодирование битов 0 и 1 следующее
Бит 1 | Бит 0 | Длина символа
0 0 1 1 | 0 | 1 | 0 | 1 | 5 бит | 6 бит | 7 бит | 8 бит
Разряд 2: этот разряд определяет количество стоповых битов в последовательности символов. Если разряд 2 является лог.0, один стоповый бит формируется или контролируется при передаче или получении данных, соответственно. Если разряд 2 является лог.1 ( при выбранной разрядами 1 и 0 длине символа в 5-ть битов) формируется или контролируется 1,5 стоповых бита. Если разряд 2 является лог.1, при длине слова 6, 7 или 8 битов, формируется или проверяется два стоповых бита.
Разряд 3: это разряд разрешения паритета. Если бит 3 является лог.1, бит паритета формируется (передача данных) или контролируется (получение данных) между последним битом символа и стоповым битом последовательности данных (бит паритета используется для формирования четного или нечетного числа единиц при суммировании битов символа и бита паритета).
Разряд 4: этот бит является битом выбора проверки по паритету на четность. Если бит 3 является лог.1 и бит 4 является лог.0, нечетное число логических единиц передается или контролируется в битах информационного слова и бите паритета. Когда бит 3 является лог.1 и бит 4 является лог.1, передается или контролируется четное число битов.
Разряд 5: это бит фиксированного паритета. Когда бит 3 и бит 5 являются лог.1, бит паритета передается и затем определяется приемником в противоположном режиме, указанном битом 4.
Разряд 6: это бит управления прерыванием передачи. Когда бит 6 является лог.1, последовательный выход (SOUT) устанавливается в состояние пробела (лог.0) и находится в этом состоянии (до установки и исходное состояние битом 6 низкого уровня) независимо от других сигналов управления передачи. Эта особенность позволяет ЦПУ подключать терминал в систему связи ЭВМ.
Разряд 7: это бит доступа к регистру делителя ( DLAB ). Он должен быть на высоком уровне (лог.1) для доступа к регистрам делителя генератора скорости передачи при считывании или записи. Он должен быть на низком уровне (лог.0) для доступа к буферу приемника, регистру хранения информации передатчика или регистру разрешения прерывания.
ПРОГРАММИРУЕМЫЙ ГЕНЕРАТОР СКОРОСТИ ПЕРЕДАЧИ
Этот генератор может принимать любой входной
синхронизирующий сигнал ( до 3,1 МГц ) и делить его на любое
число от 1 до 2**16-1. Частота выхода генератора - 16 умножить
на скорость передачи в бодах. Два 8-ми битовых регистра хранят
число - делитель в 16-ти битовом двоичном коде. Эти регистры
делителя надо загрузить во время инициализации для обеспечения
требуемого режима работы генератора. При загрузке любого
регистра делителя, немедленно загружается 16-ти битовый
счетчик бодов. Это предотвротит работу счетчика без исходной
загрузки. Таблицы 3 и 4 иллюстрируют использование генератора
с двумя различными ведущими частотами.
Таблица 3 - использование кварца 1,8432 МГц.
Таблица 4 - использование кварца 3,072 МГц.
Примечание: максимальная частота генератора - 3,1 МГц. При использовании делителя 6 и меньших делителей, максимальная частота равна 1/2 значения делителя в МГц. Например, если делитель равен 1, максимальная частота равняется 1/2 МГц. Скорость передачи данных не должна превышать 56 Кбод.
Таблица 3
Применение кварца 1,8432 МГц в генераторе скорости передачи
Скорость в бодах Число-делитель синхронизации | Ошибка в % |
50 75 110 134,5 150 300 600 1200 1800 2000 2400 3600 4800 7200 9600 19200 38400 56000 2304 1536 1047 857 768 384 192 96 64 58 48 32 24 16 12 6 3 2 | - | - | 0,026 | 0,058 | - | - | - | - | - | 0,69 | - | - | - | - | - | - | - | 2,86
Примечание: 1,8432 МГц - это стандартная частота 8080, деленная на 10.
Таблица 4
Применение кварца 3,072 МГц в генераторе скорости передачи
Скорость в бодах Число-делитель синхронизации | Ошибка в % |
50 75 110 134,5 150 300 600 1200 1800 2000 2400 3600 4800 7200 9600 19200 38400 56000 3840 2560 1745 1428 1280 640 320 160 107 96 80 53 40 27 20 10 5 3 | - | - | 0,026 | 0,034 | - | - | - | - | - | - | - | 0,628 | - | 1,23 | - | - | - | 14,285
РЕГИСТР СОСТОЯНИЯ ЛИНИИ
Этот 8-ми битовый регистр предоставляет ЦПУ информацию о передаче данных. Формат регистра представлен в табл.2 и описан ниже.
Разряд 0:этот бит - индикатор готовности данных приемника (DR).Бит 0 устанавливается в состояние лог. 1, когда принят весь поступающий символ и передан на буферный регистр приемника.Бит 0 может быть сброшен в состояние лог. 0 либо при чтении ЦПУ данных в буферном регистре приемника, либо при записи ЦПУ лог. 0 в этот бит.
Разряд 1:этот бит является индикатором ошибки переполнения (ОЕ).Бит 1 указывает на то, что данные в буферном регистре приемника не были считаны ЦПУ до передачи следующего символа в буферный регистр приемника, разрушая этим предыдущий символ. Индикатор ОЕ сбрасывается при чтении ЦПУ содержимого регистра состояния линии.
Разряд 2:этот бит является индикатором ошибки паритета (PE). Бит 2 указывает на то, что символ принятых данных не имеет правильного четного или нечетного паритета, в соответствии с установленным битом выбора паритета. Бит РЕ устанавливается в состояние лог. 1 при обнаружении ошибки паритета и сбрасывается в лог. 0, когда ЦПУ считывает содержимое регистра состояния линии.
Разряд 3:этот бит является индикатором ошибки кадра (FE). Бит 3 указывает на то, что принятый знак не имеет истинного бита останова. Бит 3 устанавливается в лог. 1, когда бит останова, следующий за последним битом данных или битом паритета распознается как нулевой бит (уровень пробела).
Разряд 4:этот бит является индикатором прерывания передачи (BI). Бит 4 устанавливается в состояние лог. 1, если вход принимаемых данных удерживается в состоянии пробела (лог. 0) в течении времени, превышающего время передачи полного символа (т.е., общее время старт-бита + биты данных + паритет + биты останова). Примечание: Биты 1-4 идентифицируют ошибки, которые формируют
прерывание по состоянию линии приема при обнаружении
соответствующих условий.
Разряд 5:этот бит является индикатором "регистр хранения передатчика пуст" (THRE). Он указывает на то, что WD8250 готов принять новый символ для передачи. Кроме того, этот бит вызывает формирование WD8250 прерывания для ЦПУ, когда установлен высокий уровень разрешения прерывания по ситуации "регистр хранения передатчика пуст". Бит THRE устанавливается в состояние лог. 1, когда символ передан с регистра хранения передатчика на сдвиговый регистр передатчика. Бит сбрасывается в лог. 0 одновременно с загрузкой регистра хранения передатчика ЦПУ.
Разряд 6:этот бит является индикатором "сдвиговый регистр передатчика пуст" (TSRS). Бит 6 устванавливается в лог. 1, когда сдвиговый регистр передатчика бездействует. Он сбрасывается в состояние лог. 0, когда данные переданы с регистра хранения передатчика на сдвиговый регистр передатчика. Бит 6 - бит только чтения.
Разряд 7:этот бит постоянно установлен в состояние лог. 0.
РЕГИСТР ИДЕНТИФИКАЦИИ ПРЕРЫВАНИЯ
WD8250 имеет встроенную в ИМС возможность прерывания, которая обеспечивает гибкость при сопряжении наиболее часто используемых микропроцессоров, что позволяет использовать минимальный объем программного обеспичения при передаче символов данных при разделении прерываний WD8250 по приоритету на 4 уровня. Среди них - следующие условия формирования прерывания:
- состояние линнии приема (приоритет 1),
- готовность принимаемых данных (приоритет 2),
- регистр хранения передатчика пуст (приоритет 3),
- состояние модема (приоритет 4).
Информация, указывающая на то, что прерывание
упорядоченное по приоритету ждет,и указывающая на источник
этого прерывания записана в регистре идентификации прерывания
(см. табл. 5).При адресации регистра идентификации прерывания
(IIR) на время обращения к ИМС замораживается состояние самого
высокого по преоритету прерывания, а другие прерывания не
подтверждаются до тех пор, пока предыдущее прерывание не будет
обслужено ЦПУ. Содержимое IIR представлено в табл. 2 и
описывается ниже.
Разряд 0: этот бит может использоваться при программном опросе и указывает на ожидание прерывания. Когда бит 0 - лог. 0, прерывание ожидает, а содержимое IIR может использоваться в качестве указателя типа прерывания для программы обслуживания прерывания. Когда бит 0 - лог. 1, ожидающего прерывания нет, и опрос продолжается (если он используется).
Разряды 1 и 2 : эти два бита IIR используются для идентификации старшего по приоритету прерывания, находящегося в ожидании (см. табл. 5).
Разряды 3 - 7: эти 5-ть битов IIR всегда в состоянии лог. 0.
Таблица 5
Функции управления прерыванием
Регистр индикации прерывания ----------- Бит|Бит|Бит 2 | 1 | 0 Условия установки и -------------------- Уровень| Флаг приори-| прерывания тета | | сброса прерывания ------------------------------ | Источник | Управление | прерывания | сбросом | | прерывания | |
0 | 0 | 1 1 | 1 | 0 | | | | | | | | 1 | 0 | 0 | | | | 0 | 1 | 0 | | | | | | | | | | | | | | 0 | 0 | 0 | | | | | | | | | | | | | | | | - | Нет Самый |Состояние ли высокий|нии приема | | | Второй |Наличие при- |нятых данных | Третий |Регистр хра- |нения пере- |датчика пуст | | | | | Четвер-| Состояние тый |модема | | | | | | | | Нет | - |Переполнение, |Чтение регист- |ошибка парите-|ра состояния |та, ошибка |линии |кадра,прерыва-| |ние передачи | | Наличие при- |Чтение реги- |нятых данных |стра буфера | |приемника | Регистр хра- | Чтение ре- |нения пере- |гистра IIR |датчика пуст |(как источни- | |ка прерывания) | |или запись в | |регистр хране- | |ния передат- | |чика | Готов к пере-| Чтение реги- |даче, ус-во |стра состоя- |сопряжения да-|ния модема |нных готово, | |индикатор вы- | |зова, детектор| |принимаемого | |линейного сиг-| |нала |
РЕГИСТР РАЗРЕШЕНИЯ ПРЕРЫВАНИЯ
Этот 8-ми разрядный регистр разрешает каждому из 4 источников прерывания WD8250 в отдельности формировать выходной сигнал прерывания (INTRPT). Возможно полностью отключить систему прерывания, сбросив биты 0 - 3 регистра разрешения прерывания в состояние лог. 0. Подобно этому устанавливая соответствующие биты этого регистра в состояние лог. 1, могут быть разрешены выбранные прерывания. Отключая систему прерывания, мы отключаем регистр идентификации прерывания и активный (высокий) уровень выходного сигнала INTRPT. Все другие функции ИМС действуют, как обычно, включая установку регистра состояния, регистров состояния линий и модема. Содержимое регистра разрешения прерывания представлено в табл. 2 и описано ниже.
Разряд 0: этот бит разрешает прерывание по наличию принятых данных, если он установлен в состояние лог. 1.
Разряд 1: этот бит разрешает прерывание,когда регистр хранения передатчика пуст, и он установлен в состояние лог. 1.
Разряд 2: этот бит разрешает прерывание по состоянию линии приема, когда он установлен в состояние лог. 1.
Разряд 3: этот бит разрешает прерывание по состоянию модема при установке его в состояние лог. 1.
Разряды 4 - 7: эти 4 бита всегда установлены в состояние лог. 0.
РЕГИСТР УПРАВЛЕНИЯ МОДЕМОМ
Восьмиразрядный регистр управляет интерфейсом с утройством сопряжения, или модемом, или перефирийным устройством, иммитирующим модем. Содержимое регистра управления модемом представлено в табл. 2 и описано ниже.
Разряд 0: этот бит управляет выходом готовности терминала данных (DTR). Когда бит 0 устанавливается в состояние лог. 1, выход DTR принудительно устанавливается в состояние лог. 0. Когда бит 0 сбрасывается в состояние лог. 0, выход DTR устанавливается в состояние лог. 1.
Примечание: выход DTR WD8250 может подаваться на
инвертирующий линейный драйвер (такой как DS1488)
для получения выхода нужной полярности на
подключаемом модеме или устройстве сопряжения. Разряд 1: этот бит управляет выходом запроса передачи (RTS).
Бит 1 действует на выход аналогично биту 0.
Разряд 2: этот бит управляет сигналом "выход 1" (OUT1), который является вспомогательным выходом, определяемым пользователем. Бит 2 действует на выход аналогично биту 0.
Разряд 3: этот бит управляет сигналом "выход 2" (OUT2), который является вспомогательным выходом, определяемым пользователем. Бит 3 действует на выход аналогично биту 0.
Разряд 4: этот бит обеспечивает зацикливание для
диагностического тестирования WD8250. Когда бит 4
устанавливается в состояние лог. 1, происходит следующее:
выход передатчика (SOUT) устанавливается в состояние лог.1
(высокий уровень); вход приемника (SIN) отключается; выход
сдвигового регистра передатчика замыкается на вход здвигового
регистра приемника; 4-ре управляющих входа модема (CTS, DSR,
RLSD, RI) отключаются; 4-ре управляющих выхода модема (DTR, RTS, OUT1, OUT2) внутренне подключаются к 4-м управляющим входам модема. В диагностическом режиме передаваемые данные принимаются немедленно. Это позволяет процессору проверить передающие и принимающие каналы данных WD8250.
В диагностическом режиме работают прерывания приемника и передатчика. Прерывания по состоянию модема выполняются так же, но источником прерывания теперь являются 4 младших бита регистра управления модемом, а не 4-ре входа управления модема. Прерывания управляются регистром разрешения прерываний. Система прерывания WD8250 может быть проверена записью в 6-ть младших битов регистра состояния линии и 4-ре младших бита регистра состояния модема. Установка этих битов в состояние лог. 1 (любого из них) формирует соответствующее прерывание, если оно разрешено. Сброс этих прерываний происходит так же, как и при нормальной работе WD8250. Для возвращения к реальной работе регистры должны быть перепрограммированы для нормальной работы, а затем бит 4 должен быть сброшен в состояние лог. 0.
Разряды 5 - 7: эти биты постоянно установлены в состояние лог. 0.
РЕГИСТР СОСТОЯНИЯ МОДЕМА
Этот 8-ми разрядный регистр обеспечивает чтение текущего состояния управляющих линий от модема (или перефирийного устройства) на ЦПУ. Кроме этой информации о текущем состоянии 4-ре бита регистра состояния модема обеспечивают информацию об изменении этого текущего состояния. Эти биты устанавливаются в состояние лог. 1, когда управляющий вход от модема меняет состояние. Они сбрасываются в состояние лог. 0, когда ЦПУ читает регистр состояния модема. Содержимое регистра состояния модема приведено в табл. 2 и описано ниже.
Разряд 0: этот бит является индикатором изменения сигнала готовности к передаче (DCTS). Бит 0 указывает, что вход CTS в ИМС изменил состояние по отношению к тому, как он в предыдущий раз был считан ЦПУ.
Разряд 1: этот бит - индикатор изменения сигнала готовности терминала данных (DDSR). Бит 1 указывает, что вход DSR в ИМС изменил состояние по отношению к тому, как он в предыдущий раз считывался ЦПУ.
Разряд 2: этот бит - детектор заднего фронта индикатора вызова (TERI). Бит 2 указывает на то, что вход RI в ИМС изменился с ON (лог.1) на OFF (лог.0).
Разряд 3: этот бит - индикатор изменения детектора принятого линейного сигнала канала данных (DRLSD). Бит 3 указывает на изменение состояния входа RLSD в ИМС. Примечание: когда биты 0, 1, 2 или 3 установлены в состояние лог. 1, генерируется прерывание по состоянию модема.
Разряд 4: этот бит - дополнение ко входу "готов для передачи" (CTS).
Разряд 5: этот бит - дополнение входа готовности терминала данных (DSR).
Разряд 6: этот бит - дополнение входа "индикатор вызова" (RI).
Разряд 7: этот бит - дополнение входа "детектор принимаемого линейного сигнала" (RLSD).
Таблица 2
Доступные регистры WD8250
--------------------------------------------------------------
| Адрес регистра 0 DLAB 0 | Адрес регистра 0 DLAB 0
N бита Регистр буфера приемника (только чтение) Регистр хранения передатчика (только запись)
0 Разряд данных 0 * Разряд данных 0 *
1 Разряд 1 " 1
2 Разряд 2 " 2
3 Разряд 3 " 3
4 Разряд 4 " 4
5 Разряд 5 " 5
6 Разряд 6 " 6
7 Разряд 7 " 7
*Разряд 0 является найменьшим значащим разрядом, передаваемым или принимаемым.
--------------------------------------------------------------
| Адрес регистра 1 DLAB 0
----------------------------------------------------- N бита | Регистр разрешения прерывания
0 Разрешает прерывание по получению данных (ERBFI)
1 Разрешает прерывание при пустом буфере передатчика (ETBEI)
2 Прерывание по состоянию линии приема (ELSI)
3 Разрешение прерывания по состоянию модема (ЕDSSI)
4 0
5 0
6 0
7 -------- 0 ----------------------------------------------------
Адрес регистра 2
N бита Регистр идентификации прерывания
0 Наличие прерывания
1 Идентификация прерываний разряд 0
2 Идентификация прерываний разряд 1
3 0
4 0
5 0
6 0
7 -------- 0 ----------------------------------------------------
Адрес регистра 3
N бита Регистр управления линией
0 Выбор длины символа разряд 0 (WLS0)
1 Выбор длины символа разряд 1 (WLS1)
2 Количество битов останова (STB)
3 Разрешение паритета (PEN)
4 Выбор паритета (EPS)
5 Фиксированный паритет
6 Прерывание передачи
7 -------- Разряд доступа к регистрам делителя (DLAB) ----------------------------------------------------
Адрес регистра 4
N бита Регистр управления модемом
0 Готовность терминала данных (DTR)
1 Запрос на передачу (RTS)
2 Вывод 1 (OUT1)
3 Вывод 2 (OUT2)
4 Зацикливание
5 0
6 0
7 -------- 0 ----------------------------------------------------
Адрес регистра 5
N бита Регистр состояния линии
0 Готовность данных (DR)
1 Ошибка переполнения (OR)
2 Ошибка паритета (PE)
3 Ошибка кадрирования (FE)
4 Прерывание приема (ВI)
5 Пуст регистр хранения данных передатчика (THRE)
6 Пуст сдвиговый регистр (TSRE)
7 -------- 0 ----------------------------------------------------
Адрес регистра 6
N бита Регистр состояния модема
0 Изменение сигнала "свободен для передачи" (DCTS)
1 Изменение сигнала "готовность передать данные" (DDSR)
2 Отрицательный фронт сигнала "индикатор вызова"(TERI)
3 Изменение детектора линейного сигнала (DSLSD)
4 Свободен для передачи (CTS)
5 Готовность передать данные (DSR)
6 Индикатор вызова (RI)
7 -------- Детектор принимаемого линейного сигнала (RLSO) -----------------------------------------------------
|Адрес регистра | Адрес регистра
| 0 DLAB 1 | 1 DLAB 1
N бита Регистр делителя (LS) | Регистр делителя (MS)
0 Разряд 0 | Разряд 8
1 Разряд 1 | Разряд 9
2 Разряд 2 | Разряд 10
3 Разряд 3 | Разряд 11
4 Разряд 4 | Разряд 12
5 Разряд 5 | Разряд 13
6 Разряд 6 | Разряд 14
- 7 ----- Разряд 7 ---------------- ------- | Разряд ---------- 15 -------- ----
From news-service Sun May 17 13:24:01 1992
To: subscribers
From: scott@mycro.UUCP (Scott C. Sadow)
Newsgroups: comp.sys.ibm.pc.hardware,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.programmer Subject: [News] UART information: 8250 vs 16450 vs 16550 vs 16550A Message-ID: <1992May15.094715@mycro.UUCP>
Date: Fri, 15 May 92 13:47:15 GMT
Sender: L-usenet@kiae.su
Status: R
This message describes the differences between the 8250, 16450, 16550, and 16550A UART chips and some programming information for the 16550A. All of this information is from the National Semiconductor manuals. This means there is no guarantee that this is correct for other chips. Any and all information is supplied as-is. Also, if there are any typos or errors, they are probably due to transmission errors. :)
8250: Used in the original PC. For more information on this, refer to any of the many books on serial communtications.
16450: This is essentially an 8250, but the inside of the chip was designed using the latest technology. This chip has a scratch register for programmer use at offset BASE+7.
16550: This is essentially a 16450, but FIFO buffers were added for both transmit and receive. (FIFO means first-in-first-out and is the same as a queue) This was done to lower the overhead of serial communication by decreasing the amount of interrupts needed. However, there were bugs in the chip, so FIFOs should NOT be used. (Characters may be lost in FIFO mode)
16550A: This is a 16550 with working FIFOs.
Chip Detection
It is rather easy to detect what kind of UART is installed:
An 8250 does not have a scratch register
A 16450 does not have a FIFO
A 16550 has bad FIFOs, indicated by bit 7 of IIR
A 16550A has good FIFOs, indicated by bit 7 and bit 6 of IIR
You can use the following algorithm to detect the UART type. BASE is the base address of the serial port. (usually 3F8 for COM1, 2F8 for COM2, etc)
IIR = BASE+2 = interrupt identification register (read only)
FCR = BASE+2 = FIFO control register (write only)
SCR = BASE+7 = scratch register (read and write)
Bits are numbered from 0 to 7, 7 is high bit
Read and save the SCR
Store a test value into SCR (hex 5A is good)
Read SCR and compare to test value
If not equal, there is no scratch register, so the chip is an 8250
Store another test value into SCR (hex A5 is good)
Read SCR and compare to test value
If not equal, there is no scratch register, so the chip is an 8250
Restore the saved value from the SCR
Read and save the IIR (saves current possible FIFO status)
Store 1 into FCR (enables possible FIFOs)
Read IIR
If saved IIR value had bit 7 clear, store 1 into FCR (FIFOs were off)
If IIR had bit 6 set, the chip is a 16550A
If IIR had bit 7 set, the chip is a 16550
Otherwise, the chip is a 16450
How to use the 16550 FIFOs
National semiconductor says not to - you can lose characters. Get a 16550A (see below)
How to use the 16550A FIFOs
Changes to the UART registers compared to an 8250
IIR = BASE+2 = interrupt identification register (read only)
The upper 2 bits (bits 7 and 6) indicate if the FIFOs are enabled. A one in both means the FIFOs are enabled. A one in bit 7 only means you have a 16550, not a 16550A. (see above about chip detection and using 16550 FIFOs)
Bit 3 is used to indicate character time-out. This is set to indicate that there are bytes in the receive FIFO that need to be read. This happens after a short amount of time has elapsed that no characters have been recieved. If Bit 3 is set, Bit 2 is also set (which means receive data available), so for most applications, Bit 3 can be ignored.
On an 8250 and 16450, bits 7, 6, and 3 are always zero. Bits 5 and 4 are reserved. For compatability, after reading the IIR, mask the value with 7.
FCR = BASE+2 = FIFO control register (write only)
Bit 0 - FIFO enable
Bit 1 - receive FIFO reset
Bit 2 - transmit FIFO reset
Bit 3 - DMA mode select
Bit 4 - reserved
Bit 5 - reserved
Bit 6 - receiver trigger (LSB)
Bit 7 - receiver trigger (MSB)
Bit 0 - Set to 1 to enable both receive and transmit FIFOs. This bit must be set when any other bits are set.
Bit 1 - Set to 1 to clear the receiver FIFO. (flush the queue). This bit automatically resets to 0.
Bit 2 - Set to 1 to clear the transmit FIFO. (flush the queue). This bit automatically resets to 0.
Bit 3 - not used on most PC serial boards
Bit 6 & 7 - Receiver interrupt trigger level. Without a FIFO, the UART generates an interrupt every time a character is received. With the FIFO enabled, the UART generates an interrupt after N characters are received.
Bit 7 Bit 6 Trigger Level
0 0 1 byte
0 1 4 bytes
1 0 8 bytes
1 1 14 bytes
Why use the FIFOs, how they work, and how to use them
Normally when transmitting or receving, the UART generates an interrupt for every character sent or received. For 2400 baud, typically this is 240/second. For 115,200 baud, this means 11,520/second. With FIFOs enabled, the number of interrupt is greatly reduced. For transmit interrupts, the UART indicates the transmit holding register is not busy until the 16 byte FIFO is full. A transmit hold register empty interrupt is not generated until the FIFO is empty (last byte is being sent) Thus, the number of transmit interrupts is reduced by a factor of 16. For 115,200 baud, this means only 7,200 interrupts/second. For receive data interrupts, the processing is similar to transmit interrupts. The main difference is that the number of bytes in the FIFO before generating an interrupt can be set. When the trigger level is reached, a recieve data interrupt is generated, but any other data received is put in the FIFO. The receive data interrupt is not cleared until the number of bytes in the FIFO is below the trigger level.
To added 16550A support to existing code, there are 2 requirements.
1) When reading the IIR to determine the interrupt source, only use the lower 3 bits.
2) After the existing UART initialization code, try to enable the FIFOs by writing to the FCR. (A value of C7 hex will enable FIFO mode, clear both FIFOs, and set the receive trigger level at 14 bytes) Next, read the IIR. If Bit 6 of the IIR is not set, the UART is not a 16550A, so write 0 to the FCR to disable FIFO mode.
Upgrading to a 16550A from an existing 8250, 16450, or 16550
This information is not for the hardware-squeemish. Like all other hardware modifications, if you don't know what you are doing, get help and/or have someone do it for you. Desoldering a 40 pin chip (or worse) is not for beginners.
The 16550A is pin-for-pin compatabile with the other chips except pin 24 and pin 29. Pin 24 is an output on the old chips, and pin 29 was not connected. Pin 24 and Pin 29 are now output pins used for DMA mode. Thus, there should be no problem just removing the old chips and inserting the new one. I have done this on about a dozen boards with no problem.
Scott C. Sadow scott@mycro.UUCP...gatech!nanovx!mycro!scott
------------------------------
From news-service Sat May 23 05:31:58 1992 To: subscribers
From: bweaver@quack.sac.ca.us (Brian Weaver) Newsgroups: comp.sys.ibm.pc.hardware,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.programmer Subject: [News] Re: UART information: 8250 vs 16450 vs 16550 vs 16550A Message-ID:
Date: Tue, 19 May 92 00:00:42 GMT
References: <7060318454537@jaber.eecs.umich.edu> <1992May15.094715@mycro.UUCP> <1992May17.232539@mycro.UUCP>
Organization: The Duck Pond public unix: +1 408 249 9630, log in as 'guest'. Sender: L-usenet@kiae.su
Status: R
I just picked up a serial card with a 16550AFN UART chip. Is this the same as 16550A ? Also, will qmodem use the FIFO or do I need to install a fossil driver first? OR should i?
--
Brian Weaver bweaver@quack.sac.ca.us KD6CFA@N0ARY.#NOCAL.CA.USA.NA
From news-service Sun May 24 08:00:43 1992 To: subscribers
From: scott@mycro.UUCP (Scott C. Sadow) Newsgroups: comp.sys.ibm.pc.hardware,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.programmer Subject: [News] Re: UART information: 8250 vs 16450 vs 16550 vs 16550A Message-ID: <1992May20.100137@mycro.UUCP>
Date: Wed, 20 May 92 14:01:37 GMT
Article-I.D.: mycro.1992May20.100137
References:
Status: R
In article
>I just picked up a serial card with a 16550AFN UART chip. Is this
>the same as 16550A ?
Yes - a 16550AFN is a 16550A, and the "FN" suffix indicate something like plastic case and 40-pin dip package.
> Also, will qmodem use the FIFO or do I need
>to install a fossil driver first? OR should i?
I don't know the answer to this question.
Scott C. Sadow scott@mycro.UUCP...gatech!nanovx!mycro!scott
From news-service Sun May 24 08:00:43 1992 To: subscribers
From: scott@mycro.UUCP (Scott C. Sadow) Newsgroups: comp.sys.ibm.pc.hardware,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.programmer Subject: [News] Re: UART information: 8250 vs 16450 vs 16550 vs 16550A Message-ID: <1992May20.100351@mycro.UUCP>
Date: Wed, 20 May 92 14:03:51 GMT
Article-I.D.: mycro.1992May20.100351
References:
Status: R
In article
>
> I have a question. What good does having an 8250 vs. 16450 vs.
> 16550 vs. 16550A. Why is the higher ones needed? What abilities
> does the 16550A have over teh 16550A or the 16550?
> Email or post. Thanks.
>
>Mortal@netcom.com
The 8250 is the original serial chip.
The 16450 is a newer version, but is essentially the same.
The 16550 was created to have internal FIFO queues for both transmit and receive, but the are bugs in the chip, so the manufacturer says not to use the FIFOs on that chip.
The 16550A is the same as a 16550A, but with working FIFOs.
The only real difference: If you have a 16550A and have software that can use the FIFOs, the chip will generate fewer interrupts. This means that the CPU has less to do to communicate at the same speeds, or can now communicate at higher speeds with the same CPU load.
Scott C. Sadow scott@mycro.UUCP...gatech!nanovx!mycro!scott
======================================================================== * Origin: Power CAD BBS, Kiev, Ukraine (FidoNet 2:463/16)
_