Главная страница

Учебное пособие по дисциплине АПЭВМ Курейчик КП, Минск 2006. Учебное пособие по дисциплине "апэвм" Минск 2006 содержание введение


Скачать 4.42 Mb.
НазваниеУчебное пособие по дисциплине "апэвм" Минск 2006 содержание введение
АнкорУчебное пособие по дисциплине АПЭВМ Курейчик КП, Минск 2006.pdf
Дата06.05.2017
Размер4.42 Mb.
Формат файлаpdf
Имя файлаУчебное пособие по дисциплине АПЭВМ Курейчик КП, Минск 2006.pdf
ТипУчебное пособие
#7166
КатегорияИнформатика. Вычислительная техника
страница3 из 6
1   2   3   4   5   6
ПОРТЫ
ОСНОВНЫЕ ПОНЯТИЯ И ТЕРМИНЫ
Порт последовательной передачи данных называют еще портом RS-232-C, или асинхронным адаптером RS-232-C. Компьютер IBM
PC поддерживает интерфейс RS-232-C не в полной мере, скорее разъем, обозначенный на корпусе компьютера как порт последовательной передачи данных, содержит некоторые из сигналов, входящих в интерфейс RS-232-C и имеющих соответствующие этому стандарту уровни напряжения.
В настоящее время порт последовательной передачи данных используется очень широко. Вот далеко не полный список применений: подключение мыши; подключение графопостроителей
(плоттеров), сканеров, принтеров, диджитайзеров; связь двух компьютеров через порты последовательной передачи данных с использованием специального кабеля и таких программ, как FastWire II или
Norton Commander; подключение модемов для передачи данных по телефонным линиям; подключение к сети персональных компьютеров.
Практически каждый компьютер оборудован хотя бы одним портом для последовательной передачи данных.
Последовательная передача данных означает, что данные передаются с использованием единственной линии. При этом биты байта данных передается по очереди с использованием одного провода. Для синхронизации группе битов обычно предшествует специальный стартовый бит, после группы битов следуют бит проверки на четность и один или два стоповых бита. Иногда бит проверки на четность может отсуствовать.
Сказанное иллюстрируется следующим рисунком:
Рис. 11. Принцип последовательной передачи данных.
Исходное состояние линии последовательной передачи данных - уровень логической 1. Стартовый бит START сигнализирует о начале передачи данных.
Далее передаются биты данных, вначале младшие, затем старшие. Если используется бит четности P, то передается и он. Бит четности имеет такое значение, чтобы в пакете битов общее количество единиц (или нулей) было четно или нечетно.
В самом конце передаются один или два стоповых бита STOP, завершающих передачу байта. Затем уровень линии передачи снова устанавливается в 1 до прихода следующего стартового бита.
26

Использование четности, стартовых и стоповых битов определяют протокол передачи данных. Очевидно, что передатчик и приемник данных должны использовать один и тот же протокол, иначе связь будет невозможной.
Другая важная характеристика - скорость передачи данных. Она также должна быть одинаковой для передатчика и приемника.
Скорость передачи данных обычно измеряется в бодах. Боды - это количество передаваемых битов в секунду. При этом учитываются и старт/стопные биты, а также бит четности.
Иногда используется другой термин - биты в секунду (bps). Здесь имеется в виду эффективная скорость передачи данных, без учета служебных битов.
АППАРАТНАЯ РЕАЛИЗАЦИЯ
Компьютер может быть оснащен одним или двумя портами последовательной передачи данных. Эти порты расположены либо на материнской плате, либо на отдельной плате, вставляемой в слоты расширения материнской платы.
Бывают также платы, содержащие 4 или 8 портов последовательной передачи данных. Их часто используют для подключения нескольких компьютеров или терминалов к одному, центральному, компьютеру.
В основе последовательного порта передачи данных лежит микросхема Intel
8250. Это универсальный асинхронный приемо-передатчик (UART - Universal
Asynchronous Receiver Transmitter). Микросхема содержит несколько внутренних регистров, доступных через команды ввода/вывода.
Микросхема 8250 содержит регистры передатчика и приемника данных. При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр передатчика. Байт "выдвигается" из сдвигового регистра по битам.
Аналогично имеются сдвиговый и буферный регистры приемника.
Программа имеет доступ только к буферным регистрам, копирование информации в сдвиговые регистры и процесс сдвига выполняется микросхемой
8250 автоматически.
Внешние устройства подключаются к порту ввода/вывода через разъем DB25P
(имеющий 25 выводов) или DB9P (имеющий 9 выводов). Приведем разводку разъема последовательной передачи данных DB25P:
Таблица 1. Разводка разъема DB25P.
Номер контакта
Назначение контакта
Вход или выход
1
Защитное заземление -
2
Передаваемые данные (Transmitted Data)
Выход
3
Принимаемые данные (Received Data)
Вход
4
Запрос для передачи (Request to send, RTS)
Выход
27

5
Сброс для передачи (Clear to Send, CTS)
Вход
6
Готовность данных (Data Set Ready, DSR)
Вход
7
Сигнальное заземление -
8
Детектор принимаемого с линии сигнала
(Data Carrier Detect, DCD)
Вход
9-19
Не используются
20
Готовность выходных данных
(Data Terminal Ready, DTR)
Выход
21
Не используется
22
Индикатор вызова (Ring Indicator, RI)
Вход
23-25
Не используется
Наряду с 25-контактным разъемом часто используется 9-контактный разъем:
Таблица 1. Разводка разъема DB9.
Номер контакта
Назначение контакта
Вход или выход
1
Детектор принимаемого с линии сигнала
(Data Carrier Detect, DCD)
Вход
2
Принимаемые данные (Received Data)
Вход
3
Передаваемые данные (Transmitted Data)
Выход
4
Готовность выходных данных (Data Terminal
Ready, DTR)
Выход
5
Сигнальное заземление -
6
Готовность данных (Data Set Ready, DSR)
Вход
7
Запрос для передачи (Request to send, RTS)
Выход
8
Сброс для передачи (Clear to Send, CTS)
Вход
9
Индикатор вызова (Ring Indicator, RI)
Вход
28

Уровни напряжения на линиях разъема составляют для логического нуля -15 вольт, для логической единицы - +15 вольт.
Доступ к отдельным линиям возможен через порты ввода/вывода асинхронного адаптера, которые мы рассмотрим в следующем разделе. Там же будет описано назначение отдельных линий разъема.
ПОРТЫ АСИНХРОННОГО АДАПТЕРА
На этапе инициализации системы модуль POST BIOS тестирует имеющиеся асинхронные адаптеры и инициализирует первые два. Их базовые адреса располагаются в области данных BIOS начиная с адреса 0000:0400h.
Первый адаптер COM1 имеет базовый адрес 3F8h и занимает диапазон адресов от 3F8h до 3FFh. Второй адаптер COM2 имеет базовый адрес 2F8h и занимает адреса 2F8h...2FFh.
Асинхронные адаптеры могут вырабатывать прерывания:
• COM1 - IRQ4 (соответствует INT 0Ch)
• COM2 - IRQ3 (соответствует INT 0Bh)
Рассмотрим назначение отдельных битов этих портов.
ПОРТ 3F8h
Этот порт соответствует регистру передаваемых данных. Для передачи в порт
3F8h необходимо записать передаваемый байт данных. После приема данных от внешнего устройства они могут быть прочитаны из этого порта.
В зависимости от состояния старшего бита управляющего слова, выводимого в управляющий регистр с адресом 3FBh, назначение порта 3F8h может изменяться. Если этот бит равен 0, порт используется для записи передаваемых данных. Если же бит равен 1, порт используется для вывода значения младшего байта делителя частоты тактового генератора. Изменяя содержимое делителя, можно изменять скорость передачи данных. Старший байт делителя записывается в порт 3F9h.
Зависимость скорости передачи данных от значения делителя частоты представлено в следующей таблице:
Таблица 3. Зависимость скорости передачи от значения делителя частоты.
Делитель
Скорость передачи в бодах
1040 110 768 150 384 300 192 600 96 1200 29

48 2400 24 4800 12 9600 6 19200 3 38400 2 57600 1 115200
ПОРТ 3F9h
Порт используется либо как регистр управления прерываниями от асинхронного адаптера либо (после вывода в порт 3F9h байта с установленным в 1 старшим битом) для вывода значения старшего байта делителя частоты тактового генератора.
В режиме регистра управления прерываниями порт имеет следующий формат:
Таблица 4. Описание регистра управления.
Номер бита Значение
0 1
- разрешение прерывания при готовности принимаемых данных
1 1
- разрешение прерывания после передачи байта (когда выходной буфер передачи пуст)
2 1
- разрешение прерывания по обнаружению состояния "BREAK" или по ошибке
3 1
- разрешение прерывания по изменению состояния входных линий на разъеме RS-232-C (CTS, DSR, RI, DCD)
4 - 7
Не используются, должны быть равны 0.
ПОРТ 3FAh
Регистр идентификации прерывания. Считывая его содержимое, программа может определить причину прерывания.
Формат регистра:
Таблица 5. Формат регистра идентификации прерывания.
30

Номер бита Значение
0 1
-
Нет прерываний, ожидающих обслуживания
1 - 2 00 - Прерывание по линии состояния приемника, возникает при переполнении приемника, ошибках четности или формата данных или при состоянии "BREAK". Сбрасывается после чтения состояния линии из порта 3FDh.
01 - Данные приняты и доступны для чтения. Сбрасывается после чтения данных из порта 3F8h.
10 - Буфер передатчика пуст. Сбрасывается при записи новых данных в регистр данных передатчика, порт 3F8h.
11 - Состояние модема. Устанавливается при изменении состояния входных линий CTS, RI, DCD, DSR. Сбрасывается после чтения состояния модема из порта 3FEh.
3 - 7
Должно быть равно 0
ПОРТ 3FBh
Управляющий регистр, доступен по записи и чтению.
Таблица 6. Формат управляющего регистра.
Номер бита Значение
0 - 1
Длина слова в битах:
00 - 5 бит;
01 - 6 бит;
10 - 7 бит;
11 - 8 бит.
2
Количество стоповых бит:
0 - 1 бит;
1 - 2 бита.
3 - 4
Четность:
X0 - контроль на четность не используется;
01 - контроль на нечетность;
11 - контроль на четность.
5
Фиксация четности. При установке этого бита бит четности всегда принимает значение 0 (если биты 3-4 равны 11) или 1
(если биты 3-4 равны 01).
6
Установка перерыва. Вызывает вывод строки нулей в качестве сигнала "BREAK" для подключенного устройства.
31

7 1
- порты 3F8h и 3F9h используются для для загрузки делителя частоты тактового генератора;
0 - порты используются как обычно.
ПОРТ 3FCh
Регистр управления модемом. Управляет состоянием выходных линий DTR,
RTS , линий, специфических для модемов OUT1 и OUT2, для запуска диагностики соединенных вместе замкнутых входе и выходе асинхронного адаптера.
Формат порта:
Таблица 7. Формат регистра управления модемом.
Номер бита Значение
0 1
-линия DTR;
1 1
- линия RTS;
2 1
- линия OUT1 (запасная);
3 1
- линия OUT2 (запасная);
4 1
- запуск диагностики при входеасинхронного адаптера, замкнутом на его выход;
5 - 7 1 - должно быть равно 0.
ПОРТ 3FDh
Регистр состояния линии.
Таблица 8. Формат регистра состояния линии.
Номер бита Значение
0
Данные получены и готовы для чтения, сбрасывается при чтении данных.
1
Ошибка переполнения. Был принят новый байт данных, а предыдущий еще не был считан программой. Предыдущий байт потерян.
2
Ошибка четности, сбрасывается после чтения состояния линии.
3
Ошибка синхронизации.
32

4
Обнаружен запрос на прерывание передачи "BREAK" - длинная строка нулей.
5
Регистр хранения передатчика пуст, в него можно записывать новый байт для передачи.
6
Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи.
7
Таймаут (устройство не связано с компьютером).
ПОРТ 3FEh
Регистр состояния модема.
Таблица 9. Формат регистра состояния модема.
Номер бита Значение
0 линия CTS изменила состояние
1 линия DSR изменила состояние
2 линия RI изменила состояние
3 линия DCD изменила состояние
4 состояние линии CTS
5 состояние линии DSR
6 состояние линии RI
7 состояние линии DCD
ПРОГРАММИРОВАНИЕ АСИНХРОННОГО АДАПТЕРА
К сожалению, MS-DOS не содержит сколько-нибудь серьезной поддержки асинхронного адаптера. Две функции прерывания INT 21h с номерами 3 и 4 предназначены для чтения и записи байтов через асинхронный адаптер. Обе эти функции имеют дело с адаптером COM1 или AUX. Функция 3 получает в регистре AL символ, принятый из адаптера, функция 4 посылает в адаптер символ, записанный в регистр DL.
Основной недостаток функций MS-DOS, предназначенных для работы с адаптером, заключается в отсуствии их функциональной полноты. Используя только функции MS-DOS, вы не сможете проанализировать ошибочные
33
ситуации и изменить режим работы асинхронного адаптера - нет соответствующих средств.
Функции BIOS, обслуживающие адаптер, более разнообразны. Однако и им присущи недостатки. Например, вы не сможете установить скорость передачи более 9600 бод или использовать режим фиксации четности. Нет возможности узнать текущий режим асинхронного адаптера, отсутствует поддержка модема.
Поэтому для программирования асинхронного адаптера мы рекомендуем использовать порты ввода/вывода микросхемы 8250.
ИНИЦИАЛИЗАЦИЯ АСИНХРОННОГО АДАПТЕРА
Первое, что должна сделать программа, работающая с асинхронным адаптером
- установить протокол обмена и скорость передачи данных. После загрузки операционной системы для асинхронных адаптеров устанавливается скорость
2400 бод, не выполняется проверка на четность, используются один стоповый бит и восьмибитовая длина передаваемого символа. Вы можете изменить этот режим командой MS-DOS MODE.
Выполнив ввод из порта 3FBh, программа может получить текущий режим адаптера. Для установки нового режима измените нужные вам поля и запишите новый байт режима по адресу 3FBh.
Если вам надо задать новое значение скорости обмена данными, перед записью байта режима установите старший бит этого байта в 1. Затем последовательно двумя командами вывода загрузите делитель частоты тактового генератора.
Младший байт запишите в порт 3F8h, старший - в порт 3F9h.
Перед началом работы необходимо также проинициализировать регистр управления прерываниями (порт 3F9h), даже если в вашей программе не используются прерывания от асинхронного адаптера. Если прерывания вам не нужны, запишите в этот порт значение 0.
На этом инициализацию можно считать законченной.
ПЕРЕДАЧА ДАННЫХ
Перед записью байта данных в регистр передатчика необходимо убедиться в том, что регистр хранения передатчика свободен, то есть убедиться в том, что передача предыдущего символа завершена.
Признаком того, что регистр передатчика свободен, является установленный в
1 бит 5 регистра состояния линии с адресом 3FDh.
ПРИЕМ ДАННЫХ
Аналогично передаче данных, перед вводом символа из порта приемника 3F8h необходимо убедиться в том, что бит 0 порта 3FDh установлен в 1. Это означает, что символ принят из линии и находится в буферном регистре приемника.
ИСПОЛЬЗОВАНИЕ ПРЕРЫВАНИЙ
Так как процесс последовательной передачи данных протекает достаточно медленно, имеет смысл выполнять его в фоновом режиме, используя прерывания по окончанию передачи или приема символа. Напомним, что порту
COM1 соответствует аппаратное прерывание INT 0Ch, а COM2 - INT 0Bh.
34

Для разрешения прерываний необходимо установить в 1 биты порта управления прерываниями 3F9h, соответствующие тем прерываниям, которые мы желаем обрабатывать.
Когда произошло прерывание, программа-обработчик прерывания должна проанализировать причину прерывания, прочитав содержимое порта идентификации прерывания с адресом 3FAh.
Не забудьте, что в конце обработчика аппаратного прерывания должна находится последовательность команд: mov al, 20h out 20h, al iret
Может случиться так, что одновременно произойдет несколько прерываний. В этом случае бит 0 регистра идентификации прерывания будет установлен в 1.
Если такая ситуация имеет место, перед завершением обработки прерывания вам надо снова прочитать регистр идентификации прерывания и обработать следующее прерывание. Так следует поступать до тех пор, пока бит 0 регистра идентификации прерывания не станет равным нулю.
35

ПАМЯТЬ
Оперативная память ПЭВМ (RAM) физически представляет собой набор модулей динамической памяти (DRAM), подключаемый к общей шине (в старых системах) или к специальному контроллеру памяти . Логически память является одномерной матрицей элементов (байтов), в которой хранятся данные и исполняемый код программы.
ЛОГИЧЕСКАЯ ОРГАНИЗАЦИЯ ПАМЯТИ
Правила работы с памятью в защищенном режиме достаточно сложны и рассматриваются отдельно. Для реального режима работы процессора доступ к памяти осуществляется с помощью двух адресов - сегмента, содержащего старшие 16 разрядов 20-ти разрядного физического адреса (обусловлено разрядностью шины 16-битного процессора) и смещения, 12 старших бит которого добавляется с сегменту, а 4 бита составляют младшие разряды физического адреса. Если при добавлении старших 12-ти бит смещения сегмент переполняется, то сегмент должен обнуляться, что, однако, не происходит в процессорах 80286 и старше (см. HMA).
Так как первой системой для ПЭВМ была MS-DOS фирмы Microsoft, то и разделение памяти на области в реальном режиме связано со структурой этой системы.
Области памяти при работе DOS показаны на рисунке:
Рис. 12. Организация памяти в DOS
Первые 640 Кбайт памяти при загрузке DOS распределяются следующим образом:
Рис. 13. Структура первых 640 Кбайт в DOS.
36

UPPER MEMORY
Верхняя память первоначально предназначалась для загрузки системы DOS
(первой версии). Впоследствии в этот диапазон адресов подключались ПЗУ и память внешних устройств и ROM BIOS. Схема распределения этого диапазона:
Рис. 14. Структура верхней памяти в DOS.
HMA
Область памяти в диапазоне адресов 10000h:0010h..10000h:FFFFh. Она доступна в реальном режиме процессора 80286 и старше ввиду того, что при переполнении сегментного адреса (при вычислении физического адреса старшие 12 бит смещения добавляются к сегменту) не происходит его обнуления и обращение идет к адресам за пределами пространства в
1024Кбайт. Эта область становится доступной при загрузке специального драйвера, деблокирующего адресную линию A20 (т.е. 21-ый разряд адресной шины - у 8086/8088 только 20 адресных линий). В MS-DOS это драйвер
HIMEM.SYS. После этого можно загружать программы в эту область, используя прерывание Int 2Fh (мультиплексное), функции 4Axxh
(недокументированны). Впрочем, DOS чаще использует эту область для загрузки туда своей части (драйверы, буферы, стек, обработчики функций и т.д.).
EXTENDED MEMORY
К расширенной памяти относят всю остальную память за пределами первого мегабайта. Доступ к ней в реальном режиме невозможен без специальных средств (впрочем, есть исключение). Одним из них является интерфейс XMS - eXtended Memory Specification. Он позволяет выделять, копировать, удалять блоки расширенной памяти с помощью функций прерывания Int 2Fh 43xxh.
Альтернативой XMS являются интерфейсы DPMI (DOS Protected Mode
Interface) для защищенного режима и VCPI для виртуального.
EXPANDED MEMORY
Даже на заре эры ПЭВМ объема памяти в 640 Кбайт не всегда хватало, поэтому возник интерфейс EMS - Expanded Memory Specification. Этот интерфейс предполагал наличие отдельного устройства - платы с памятью, которая подключалась к доступным адресам верхней памяти - обычно начиная с адресов D000h - E800h. В этом диапазоне организовывалась область размером
37

64 Кбайта, разделяемая на 4 окна (фрейма) по 16 Кбайт. В эти окна, используя вызовы драйвера EMS, программист мог “видеть” любые страницы памяти, размешенной на плате. Однако с появлением 32-разрядных процессоров использование дополнительных контроллеров стало нецелесообразным, т.к. это значительно замедляло систему (работа памяти по общей шине ISA) и повышало ее стоимость. Поэтому от внешней памяти быстро отказались, но принципы, заложенные в основу интерфейса EMS, оказались настолько удачны, что драйвера EMS используются и по сей день для организации доступа к памяти за пределами первого мегабайта. Обычно эмуляцию EMS осуществляют на базе XMS - интерфейса, разделяя общую память на две части по мере поступления запросов на блоки памяти.
UPPER MEMORY BLOCKS
Свободная память в пределах 640-1024 Кбайт используют не только для организации окон EMS, но и для логической переадресации туда страниц памяти. Приблизительно это выглядит так:
Рис. 15. Организация окон EMS.
В организованные области, наполненные памятью, загружаются резидентные программы и драйверы DOS. Для работы этого механизма нужен драйвер XMS
- EMM386 или подобный ему, иначе области памяти окажутся “пустыми”, т.е. без реальной памяти, соответствующей адресам.
38

ФИЗИЧЕСКАЯ ОРГАНИЗАЦИЯ ПАМЯТИ
Память ПЭВМ основана на модулях DRAM, т.е. динамической памяти. Схема работы такого модуля представлена на рисунке:
Рис. 16. Временная диаграмма работы модуля DRAM.
Так как сигналы RAS (номер строки памяти) и CAS (номер столбца) подаются на те же входы микросхемы, между ними должна быть некоторая задержка (2-3 такта). В пакетном режиме (как на рисунке) сигнал RAS подавать все время не нужно, т.к. считывание происходит с той же строки матрицы памяти. Если память синхронизирована с шиной процессора (память SDRAM), то данные будут поступать без задержек - по одному блоку (64 бита) за такт или по два блока (память DDR SDRAM), иначе между выдачей данных на шину будет задержка в 1-2 такта (память EDO или FPM).
Динамическая память работает достаточно медленно за счет необходимости задержек на регенерацию. Статическая память не требует этих задержек, но является более дорогой, громоздкой и потребляет больше энергии. Выход - использование кэширования.
КЭШИРОВАНИЕ ПАМЯТИ
В основе механизма кэширования лежит принцип использования дополнительных модулей статической памяти для хранения промежуточных данных при чтении и записи их в память. Механизм кэширования достаточно сложен, но упрощенно он выглядит так. При запросе процессора на чтение определенного блока данных по определенному адресу контроллер памяти проверяет, не был ли этот блок прочитан ранее. Все читаемые данные попадают сначала в кэш, поэтому запрос на чтение можно выполнить без обращения к основной динамической памяти, взяв их из кэша (статической памяти).
Скорость работы кэша почти в 2 раза превышает скорость работы обычной
39
памяти на той же тактовой частоте (впрочем, память SDRAM в пакетном режиме дает не такую большую разницу). После обработки данные попадают тоже в кэш, откуда могут быть взяты при следующих запросах на чтение.
Кэш-память может находиться как в составе ядра процессора (см. 32-битный процессор), так и на плате совместно с обычной DRAM.
Механизм кэширования широко используется начиная с процессора 80386. С развитием ПЭВМ ему отводится все большая роль в повышении производительности подсистемы “Процессор - память”.
БАНКИ ПАМЯТИ
Еще одним способом обхода задержек на регенерацию динамической памяти является разбиение памяти на банки. Для этого всю память разделяют на несколько (2 или 4) аппаратно независимых частей (обычно - разные блоки памяти или микросхемы). При этом если четные слова памяти размещаются в одном банке, то нечетные - в другом. При последовательном чтении / записи слов банк регенерируется в то время, когда доступ осуществляется ко второму банку. После чего банки меняются местами. При этом чтение идет непрерывно, т.к. банк, к которому происходит доступ, уже готов, будучи регенерирован до этого во время работы с другим банком. В настоящее время разбиение на банки применяется повсеместно и практически все модули памяти работают в этом режиме.
ТЕНЕВАЯ ПАМЯТЬ
Теневая память (shadow RAM) - еще одно средство повышения производительности ПЭВМ. Известно, что микросхема ПЗУ, хранящая BIOS,
Setup, POST и другие важные системные программы, подключается к общей системе через общую шину ISA (см. Общая архитектура ПЭВМ). Поэтому доступ к ней намного медленнее, чем к обычной памяти. Чтобы преодолеть этот недостаток, содержимое ПЗУ копируется в обычную память на этапе начальной загрузки ПЭВМ и остается там все время работы системы.
Обращение по адресам 0F000h - 0FFFFh производится не к ПЗУ, а к обычной динамической памяти, и является столь же быстрым. Возможно также и кэширование этих адресов, однако в данном случае оно не играет большой роли, т.к. в ПЗУ хранятся в основном обработчики прерываний BIOS.
40

1   2   3   4   5   6


написать администратору сайта