350 likes | 672 Views
Лекция 4. Функционирование МПС - порты и контроллеры. Лектор: Люличева И.А. Рассматриваются вопросы. Работа с ППИ и таймером БИС последовательного интерфейса ( УАПП-UART) Контроллер прерываний Контроллер прямого доступа в память. Состав МП комплектов.
E N D
Лекция 4 Функционирование МПС - порты и контроллеры. Лектор: Люличева И.А.
Рассматриваются вопросы • Работа с ППИ и таймером • БИС последовательного интерфейса (УАПП-UART) • Контроллер прерываний • Контроллер прямого доступа в память
Состав МП комплектов • На прошлой лекции мы обсуждали, что для работы МПсистемы нужны некоторые вспомогательные схемы, программируемые и непрограм-мируемые. Непрограммируемые БИС (генераторы, формирователи шин и пр.) мы оставили на самостоятельное изучение. • Мы рассмотрели структурные схемы 2 программируемых БИС – Таймера, и параллельного интерфейса (ППИ).
Структурная схема МП системы (уточненная) • ША • ШД • ШУ CPU ПЗУ ОЗУ Таймер В.В К к
Пример программирования ППИ • Вопрос – назначение параллельного порта (справа – распиновка для электрических принципиальных схем). • ;Пример 2 алгоритм (текст – на доске) • 1. Формируем УС • 2. Модифицируем алгоритм ввода из порта. • 3. Пишем программу.
Алгоритм и программа • В уже изученный алгоритм ввода из порта добавляется ТОЛЬКО один блок – настройка ППИ на режми работы. • В программу добавятся 2 строки (До начала цикла)– • MOV AL, 90h • OUT 0C3h
Таймер • Назначение таймера – разгрузить процессор от рутинных операции подсчета времени, импульсов (в режиме счетчика) и пр. • Например, вместо длинной программы задержки в ЛБ 1 можно было настроить таймер на режим программируемой задержки и ожидать прерывания от таймера.
Примеры программирования таймера • ;Пример 1 настройка одного счетчика таймера в режим деления на 5 (адреса таймера -80h,81h,82h,83h) mov al,1eh; CT0,1 мл.байт, режим 3, код 2 out 83h,al; вывод упр. байта в порт УС таймера mov al,5 ; коэф. деленияKf=F1/F2=5 out 80h,al; запись Kf в 0 счетчик.
Примеры программирования таймера • Пример 2. Программа инициализации 2-х счетчиков сложнее: • MOV AL, 00010101B ; 00-Режим Сч0, 01-мл. байт, 010-реж.2,1-дв/дес • OUT 43H,AL ; вывод в регистр режима • MOV AL, 01110111B ; 01-Режим Сч1,11-два байта,011-реж.2,1-дв/дес • OUT 43H ; вывод в регистр режима • MOV AL, 10H ; N деление в Сч0 • OUT 40H ; Адрес Сч0 • MOV AL, 00 ; мл. байт N деление в Лч1 • OUT 41H ; Адрес Сч1 • MOV AL, 20H ; ст. байт N деление в Лч1 • OUT 41H ; Адрес Сч1
УАПП-UART • Связь с удаленными устройствами или абонентами сетей может осуществляться с помощью универсального асинхронного последовательного приемо-передатчика УАПП-UART (иначе-программируемый связной интерфейс). Эта БИС полностью поддерживает стандарт интерфейса RS-232.
Структурная схема УАПП/UART • К выводам RxD - приемник и TxD - передатчик через линию связи подключаются передатчик и приемник другого абонента или устройства. Если связь производится через модем, то доступны любые сети вплоть до Интернет.
УАПП-UART • Поскольку БИС УСАПП имеет 2 упр. слова ее программирование несколько сложнее, чем параллельного порта ППИ или таймера. • Ниже приведен пример настройки УСАПП. Алгоритм этой программы состоит из 3 блоков – сброс, передача УС1, передача УС2. • Далее рассмотрен вывод массива байтов в с контролем по готовности передатчика. В программе вывода использована базовая адресация.
Пример настройки последовательного порта • ; Настройка УСАПП ( адреса 9С – данные и 9D - управление) mov al, 40h; программный сброс out 9Dh, al; mov al, 0CFh; инструкция режима: 2 стоп-бита, out 9Dh, al ; нет контроля,8 бит, fTxC/ 64 mov al,01h; инструкция команды out 9Dh, al; разреш. передачи TxEN =1
Пример работы с последовательным портом • ; Пример 3 Передача(вывод) массива байтов в УСАПП mov cх, 20; число символов mov BX,1000h; нач. Адрес. массива М1: mov al,[BX]; переслать байт из массива в AL out 9Ch,al; и вывести его в УСАПП wt: in al,9dh; чтение байта состояния shr al,1; символ передан в линию? (TxRDY = 1?), jnc wt; если нет, то ждать, inc bx; если „да”, перейти к адресу след. байта dec cх; переданы все байти? jnz М1; если „нет”, повторить
Контроллер прерываний • Программируемый контроллер прерываний 8259 (советский аналог - КР1810ВН59А) предназначен для обработки до восьми прерываний. • Имеет несколько режимов работы – с фиксированным или циклическим приоритетом, шаг – 4 или 8, которые устанавливаются программным путем с использованием 5 управляющих слов инициализации и операции.
Контроллер прерываний • Есть два типа управляющих команд контролера 8259 - команды инициализации и команды операции. • Команда инициализации (ICW) определяет ОБЩИЙ режим функционирования ПКП. • Команда операции (OCW) детально описывает небольшую операцию, например: • Маскирование отдельных запросов,
Контроллер прерываний • спеціальне маскування обслужених запитів; • установка статусу рівнів пріоритету (по установці вихідного стану, по обслуженому запиті, за вказівкою); • операції кінця переривання (звичайний кінець переривання, спеціальний кінець переривання, автоматичний кінець переривання); • читання регістрів IRR, ISR, IMR.
Контроллер прерываний • Возможно каскадное включение до 9 ПКП. • Один из контроллеров при этом – ведущий, остальные 8 – ведомые.
Контроллер прерываний • Ми не будемо докладно описувати команди ініціалізації а тим більшоперації контролера 8259. Бажаючих розібратися у всіх тонкостях завдання початкового режиму роботи контролера переривань ми відсилаємо до довідкової літератури по мікросхемі 8259 або її вітчизняному аналогу К1810ВН59. • У персональних комп'ютерах XT й AT за первісну установку режимів роботи мікросхем 8259 відповідає BIOS. У програміста швидше за все не виникне потреба перепрограмувати контролер - це небезпечно, тому що неправильне програмування контролера приведе до порушення логіки роботи всієї системи.
Контроллер ПДП (назначение и стр схема) • Назначение – разгрузить ЦП от рутинных операций ввода-вывода массивов. • КПДП – это единственная из БИС, которая может изменять шину адреса. • При работе в режиме ведущего все циклы передачи выполняются под управлением КПДП. МП при этом отключен от шин и находится в состоянии «захват шин».
Контроллер ПДП • Прямий доступ до пам'яті (ПДП, DMA) - це метод безпосереднього звернення до пам'яті, без використання процесора. Звичайно DMA використовується для обміну великими масивами даних між системною пам'яттю і пристроями введення-виведення. • В персональних комп’ютерах підсистема DMA виконана на базі окремої ВIС – КПДП, але інших МПС можливі два інших варіанта. КПДП керує передачею даних по системній шині між пам'яттю і інтерфейсом ввода-вывода.
Контроллер ПДП • Основне його призначення - звільнити МП від операцій передачі великих блоків даних. В процесі передачі контролер ПДП поміщає адреси на шину, а також видає і приймає сигнали квітування так, як це робить логіка управління шиною самого ЦП. Для цього йому треба запрошувати цикли шини у процесора.
Контроллер ПДП • Мікросхема 8237 має три канали ПДП і 43 байт буферної пам'яті; вона може обслуговувати до трьох інтерфейсів введення-виведення або зовнішньої пам'яті. У деяких системах окрім контролера ПДП потрібен ще і дешифратор його наказів, наприклад, Intel 8205. Процесор відповідає тільки за програмування DMA: настройку на певний тип передачі, завдання початкової адреси і розміру масиву обмінюваних даних.
Алгоритм прямого доступа в память • Загальний алгоритм прямого доступу до пам'яті • Для здійснення прямого доступу до пам'яті контролер повинен виконати ряд послідовних операцій: • прийняти запит (DREQ) від пристрою введення-виведення; • сформувати запит (HRQ) в процесор на захоплення шини; • прийняти сигнал (HLDA), підтверджуючий захоплення шини; • сформувати сигнал (DACK), що повідомляє пристрій про початок обміну даними; • видати адресу елементу пам'яті, призначеної для обміну; • виробити сигнали (MEMR, IOW або MEMW, IOR), що забезпечують управління обміном; • після закінчення циклу DMA або повторити цикл DMA, змінивши адресу, або припинити цикл.
Контроллер ПДП • Контроллер прямого доступа к памяти (КПДП) имеет несколько каналов и для машин AT состоял из двух микросхем Intel 8237A. Контроллер НГМД использует канал 2. • Перед началом инициализации КПДП программа должна послать в порты 0Bh и 0Ch код операции, которая будет выполняться КПДП - 46h для операции чтения и 4Ah для операции записи. • В процессе инициализации программа должна сообщить КПДП адрес буфера, куда ему следует поместить данные или откуда надо взять данные, и длину передаваемых данных в байтах.
Контроллер ПДП (пример программы) • Ограничимся примером установки 2 канала для чтения одного сектора (512 байт) диска, dma - это адреса КП базовый адрес КПДП. • mov al,46h ;Канал 2, чтение с диска • (УС = 4Аh для записи на диск) • out dma+0B, al ; Режим • out dma+0C, al ; Сброс триггера FF • mov al, bl ; Загрузка начального адреса памяти • out dma+4,al • mov al, bh • out dma+4,al
Контроллер ПДП (пример программы) • mov al,0 ; Счетчик=512 • out dma+5,al ; младший байт=00 • mov al,2 • out dma+5,al; старший байт=2…. Итого 200Н==512 • out dma+0A,al ; Размаскировать канал 2 - разрешить передачу. • Программа настройки КПДП– линейная!!
Домашнее задание (вместо летучки) • 1. Какие БИС входят в состав МПК 18101? • 2. Назначение БИС параллельного и последовательного портов. • 3. Назначание контроллера прерываний. • 4. Какие устройства в ПК работают по прерываниям? • 5. Какие устройства в ПК используют прямой доступ к памяти?
Вопросы для сдачи ЛБ 1 • Что такое чипсет, что в него входит? • Разработайте алгоритм ввода данных из последовательного порта в асинхронном режиме с контролем по четности • Поясните назначение и принцип работы контроллера прерываний. • Что такое вектор прерываний? • Сколько прерываний от ВУ есть в ПК? От каких устройств эти прерывания? • Поясните назначение и принцип работы контроллера прямого доступа в память. • Поясните порядок программирования КПДП.