- •Организация эвм и систем
- •Глава 1 эвм общего назначения
- •Структура эвм общего назначения.
- •Арифметико-логические устройства.
- •Устройства управления.
- •Risc и cisc процессоры.
- •1.5 Форматы машинных команд.
- •Inc byte ptr [40h] – одноадресная
- •Способы адресации.
- •Стековая адресация. Виды стеков.
- •Глава 2
- •2.1 Микропроцессор к1810вм86.
- •2.2 Назначение входов/выходов вм86 в минимальном режиме.
- •2.3 Назначение входов/выходов вм86 в максимальном режиме.
- •Внутренняя архитектура мп вм86.
- •Сегментация памяти.
- •2.6 Программная модель мп вм86.
- •2.7 Организация оперативной памяти.
- •2.8 Организация адресного пространства портов ву.
- •2.9 Методы обмена информацией между мп и портами ву.
- •2.10 Параллельный программируемый адаптер к1810вв55 (i8255).
- •Пример использования и программирования адаптера
- •2.12 Программируемый таймер к1810ви54 (i8254).
- •2.13 Пример использования таймера.
- •2.14 Обработка прерываний.
- •2.15 Система прерываний вм86.
- •2.16 Контроллер прерываний к1810вн59 (i8259).
- •Дополнительная информация о настройке вн59.
- •Прямой доступ к памяти.
- •Программирование кпдп вт37
- •2.21 Организация процессорного модуля вм86.
- •2.20. Организация шинного интерфейса в максимальном режиме
- •2.23. Слабо связанные конфигурации.
- •2.24. Арбитр шин к1810вб89 (i8289).
- •2.25 Сильно связанные конфигурации на примере совместной работы мп86 и арифметического сопроцессора вм87.
- •2.26. Формат машинной команды вм86.
Пример использования и программирования адаптера
Пусть в системе имеются принтер и фотосчитыватель. Подключение их к системной шине через порты адаптера ВВ55 показано на рис. 12.

Рис. 12
В соответствии с этой схемой произведем настройку портов адаптера (системные адреса внутренних устройств адаптера будем считать совпадающими с IBM PC/XT):
|
mov al,83h out 63h,al |
; все порты на режим 0, РА – на вывод, ; РВ – на ввод, старшая часть РС – на ; ; ; вывод, младшая – на ввод. |
|
|
|
|
mov al,0 |
; обнуляем разряды РС 7-4. |
|
out 62h,al |
|
Пусть необходимо принять байт информации с фотосчитывателя. Обмен будем производить методом опроса готовности. Когда фотосчитыватель готов к выдаче очередного байта, он выставляет сигнал READY2. МП считывает этот байт через РВ и формирует (программным образом) положительный импульс на линии STB2, получив который фотосчитыватель снимает текущий байт и начинает готовить следующий.
|
m1: in al,62h and al,8 jz m1 |
; проверка готовности фотосчитывателя ; к выдаче очередного байта. ; читаем РС ; бит 3 равен единице ? ; если нет – переход на m1
|
|
in al,61h mov [200h],al |
; читаем байт с фотосчитывателя и ; заносим в память, например, по ; адресу ds:200h ; читаем РВ и заносим считанный байт ; в ОП
|
|
mov al, 10h out 62h,al mov al,0 out 62h,al |
; формируем импульс на линии PC4 ; выставляем единицу на РС4 ; выставляем ноль на РС4 |
Аналогично осуществляется вывод байта информации на принтер:
|
m2: in al,62h and al,4 jz m2
|
; проверяем READY1
|
|
mov al,ah out 60h,al |
; выводим на принтер байт информации ; например, из регистра ah
|
|
mov al, 40h out 62h,al mov al,0 out 62h,al |
; формируем STB1 |
2.12 Программируемый таймер к1810ви54 (i8254).
Данная микросхема широко применяется в системах на основе МП фирмы Intel для организации временных задержек, организации службы системного времени и. т. д.
Таймер содержит три независимых канала, соответственно канал 0, канал 1 и канал 2. Внутри каждого канала стоит шестнадцатиразрядный счетчик, работающий на вычитание. Счетчик можно программным образом настроить на счет в двоичной или двоично-десятичной системе счисления. Любой канал таймера можно запрограммировать на работу в одном из шести режимов, соответственно режим 0, режим 1,…., режим 5.
При программировании канала в его регистр управляющего слова (РУС) передается настроечное слово (байт). Хотя у каждого канала свой РУС, все они имеют один системный адрес и поэтому, с точки зрения программиста, внутри таймера один РУС. Таймер определяет, какому каналу предназначено настроечное слово по внутреннему содержимому этого слова.
Схема подключения таймера к СШ приведена на рис. 13.
Информация на линиях А1 и А0 задает одно из четырех адресуемых устройства внутри таймера:
А1=0, А0=0 – канал 0;
А1=0, А0=1 – канал 1;
А1=1, А0=0 – канал 2;
А1=1, А0=1 – РУС.
CLK - вход синхроимпульсов. На этот вход поступают импульсы, которые считает канал. Декремент счетчика происходит по заднему фронту импульсов на входе CLK.

Рис. 13
GATE – управляющий вход. Если на этом входе единица, счетчик канала считает импульсы, приходящие на CLK, если ноль – не считает. В некоторых режимах снятие и подача единицы на входе GATE инициирует перезапуск счетчика.
OUT – выход канала. Вид сигнала на этом выходе зависит от режима, на который настроен канал.
Остальные входы/выходы таймера аналогичны одноименным входам/выходам адаптера ВВ55.
Формат настроечного слова канала приведен на рис. 14.

Рис. 14
Разряды D7, D6 задают номер канала, в который передается настроечное слово:
D7=0, D6=0 – канал 0;
D7=0, D6=1 – канал 1;
D7=1, D6=0 – канал 2;
D7=1, D6=1 – специальная команда (на практике используется редко).
Как видно из рис. 14, таймер связан с СШ восьмиразрядной шиной данных. В то же время формат счетчика канала – два байта. Поэтому имеются различные варианты загрузки счетчика и чтения его содержимого. Эти варианты задают разряды D5 и D4 настроечного слова:
D5=0, D4=0 – специальный режим «чтение на лету»;
D5=0, D4=1 – передается только старший байт;
D5=1, D4=0 – передается только младший байт;
D5=1, D4=1 – передаются оба байта (за две передачи, сначала младший, а потом старший.
Прочитать содержимое счетчика канала можно двумя способами. Первый способ требует остановки счета, для чего надо либо прекратить подачу импульсов на вход CLK, либо снять единицу со входа GATE. Второй способ не требует остановки счета и называется «чтение на лету». В этом случае в настроенный, работающий канал надо передать еще одно настроечное слово (его формат смотри на рис. 15).

Рис. 15
Здесь, как и ранее, D7 и D6 задают номер канала, а звездочки означают безразличное значение. Получив такой приказ, канал автоматически фиксирует текущее значение счетчика в буфере, откуда его затем можно считать за одну или две передачи.
Разряды D3 – D1 (рис. 15) задают режим, в котором будет работать канал (соответственно 000 – режим 0,…, 101 – режим 5).
Разряд D0 задает систему счисления, в которой будет работать канал. При D0=0 задается двоичная, а при D0=1 – десятичная система счисления.
Далее перечислим названия режимов и их смысл.
Режим 0 - программируемая задержка
После загрузки управляющего слова в регистр режима канала на выходе ОUT устанавливается напряжение низкого уровня; загрузка счетчика не изменяет это состояние. Затем, если GATE =1, начинается декремент счетчика (последовательное вычитание из него единицы). В момент, когда счетчик обнулится, на выходе OUT устанавливается напряжение высокого уровня. Высокий уровень напряжения на выходе OUT сохраняется до загрузки счетчика новым значением. Счет разрещен только при наличии сигнала высокого уровня на входе GATE. Низкий уровень этого сигнала или ниспадающий фронт запрещают счет. Счет будет продолжен при условии восстановления уровня логической 1 на входе GATE. Перезагрузка счетчика в процессе счета приводит к следующему: загрузка младшего байта останавливает текущий счет, загрузка старшего байта запускает новый цикл счета. Минимально допустимое значение счетчика равно 2.
Режим 1 - программируемый одновибратор
В этом режиме на выходе счетчика формируется отрицательный импульс длительностью t = N×T, где N - число, загруженное в счетчик, T - период тактовых импульсов. Низкий уровень (логический 0) на выходе OUT устанавливается со следующего такта после подачи на вход GATE сигнала высокого уровня ("счет разрешен"). Загрузка в счетчик нового числа не влияет на длительность текущего импульса, а учитывается при следующем запуске. Перезапуск счетчика производится нарастающим фронтом входа GATE (без перезагрузки счетчика). Минимальное допустимое значение N равно 1.
Режим 2 - программируемый делитель (генератор) частоты
В этом режиме счетчик таймера работает как делитель частоты F на N, где N число, загружаемое в счетчик. При этом из сигнала, поступающего на вход CLK микросхемы, на ее выходе OUT формируется сигнал с частотой F/N. Длительность уровня логической 1 для формируемого сигнала равна (N-1)/T, а длительность уровня логического 0 равна T, где Т - один период синхронизации счетчика по входу CLK. Другими словами, каждый раз при достижении счетчиком удиницы, на выходе OUT появляется отрицательный импульс с длительностью один такт. Если в процессе работы счетчика осуществить его перезагрузку, то текущий период не изменяется , а следующий будет соответствовать новому значению N. Вход GATE используется для аппаратной синхронизации. Так, по сигналу GATE, равному 0, на выходе OUT устанавливается сигнал 1, а с переходом сигнала GATE к значению 1 счет возобновляется с начального значения N.
Режим 3 - программируемый генератор меандра
В этом режиме программируемый интервальный таймер выполняет функции программируемого генератора частоты со скважностью 2. Период выходного сигнала t = N×T, при этом длительность положительного и отрицательного полупериодов равна T×N/2, если N - четное число. При нечетном N положительный период (на выходе OUT установлен сигнал логической 1 ) равен T×N/2, а отрицательный (на выходе OUT установлен сигнал логического 0) - T×(N-1)/2. Перезагрузка счетчика в процессе счета новой величиной не оказывает влияния на текущий период. Изменен будет очередной период выходного сигнала. Низкий уровень сигнала на входе GATE запрещает счет, на выходе OUT устанавливается сигнал высокого уровня. Высокий уровень GATE разрешает счет, а нарастание его запускает счетчик с начального состояния N. Генератор меандра не работает при загрузке в счетчик числа N=3.
Режим 4 - генератор одиночного импульса (счетчик событий)
В этом режиме работы по окончании отсчета числа N, загруженного в счетчик, на выходе OUT формируется сигнал 0 с длительностью, равной периоду T, а затем сигнал вновь переходит в исходное состояние OUT = 1. Для повтора цикла необходима перезагрузка счетчика. Перезагрузка счетчика возможна только программным способом. Как и ранее, под программной перезагрузкой здесь понимается загрузка нового значения константы пересчета N в счетчик с шины данных. При этом загрузка младшего байта не оказывает влияния на текущий счет, а загрузка старшего байта запускает новый цикл счета. Вход GATE имеет то же назначение , что и в режиме 0 : при GATE = 0 счет запрещен, при GATE = 1 счет разрешен. Таким образом, указанный режим может быть использован для формирования одиночного импульса, вырабатываемого через определенную задержку после перезагрузки счетчика. Минимальное допустимое значение числа N равно 1.
. Режим 5 - генератор одиночного импульса (счетчик событий) с аппаратным перезапуском
Работа таймера в режиме 5 по выходному сигналу аналогична работе в режиме 4, а по действию сигнала GATE - режиму 1, в котором, как у одновибратора, запуск счета выполняется передним фронтом сигнала GATE. Если счет не завершен до конца, то по переднему фронту сигнала GATE счет начинается с начала. Таким образом, счетчик является перезапускаемым. Возможна перезагрузка счетчика новой величиной N во время счета, что не влияет на длительность текущего цикла, а новая загруженная величина N будет обработана в следующем цикле счета.
В любой IBM – подобной ПЭВМ стоит микросхема таймера ВИ53. При этом внутренним устройствам таймера присвоены следующие системные адреса:
канал 0 – 40h
канал 1 – 41h
канал 2 – 42h
РУС - 43h.
Канал 0 отведен для службы системного времени. На выходе этого канала формируются импульсы с частотой примерно равной 18,2 Гц. Эти импульсы подаются на вход IR0 контроллера прерываний ВН59 и представляют собой запросы на прерывание от таймера.
Канал 1 используется для регенерации динамической памяти. Сигнал с выхода этого канала подается на вход DREQ0 контроллера прямого доступа к памяти ВТ37 и является запросом на прямой доступ к памяти.
Канал 2 предназначен для выработки звуковых сигналов. Его выход заведен на встроенный динамик. Выдачей выходного сигнала канала 2 на динамик управляют биты 1 и 0 порта 61h.
Схема использования таймера в IBM – подобных ПЭВМ приведена на рис. 16.

Рис. 16
Как видно из схемы, биты 1 и 0 порта 61h управляют выдачей частоты на динамик. Для настройки канала 2 надо выполнить две команды:
|
mov al,0b6h out 43h,al |
; канал 2 настраивается на предачу ; обеих байтов, на режим 3, ; на двоичный счет |
Запретить и разрешить звучание можно командами:
|
in al,61h and al,0fch out al,61h |
; запретить звучание |
|
in al,61h or al,3 out 61h,al |
; разрешить звучание |
