- •Основы микропроцессорной техники
- •В.И. Енин
- •В.И. Енин
- •Введение
- •После изучения дисциплины необходимо знать
- •После изучения дисциплины необходимо уметь
- •В.1. Роль и место курса “Микропроцессорная техника” в учебном процессе
- •1. Микропрограммные автоматы
- •После изучения главы необходимо знать
- •1.1. Автомат без памяти
- •1.2. Микропрограммный автомат
- •1.2.1. Автомат с памятью
- •1.2.2. Микропрограммный автомат в системе управления
- •1.2.3. Структурный автомат
- •1.3. Схемная реализация микропрограммных автоматов
- •2. МикропрограмМируемые контроллеры и микропроцессоры
- •После изучения главы необходимо знать
- •2.1. Блок микропрограммного управления
- •2.2. Блок обработки цифровых данных.
- •3. Принципы организации эвм
- •После изучения главы необходимо знать
- •3.1. Выполнение команд в эвм
- •Система команд и методы адресации
- •Подпрограммы
- •3.2. Общие принципы организации ввода-вывода
- •3.2.1. Программный режим ввода-вывода
- •3.2.2. Обмен информацией в режиме прерывания программы
- •3.2.3. Прямой доступ к памяти
- •3.2.4. Подключение внешних устройств
- •4. Архитектура однокристального микропроцессора
- •После изучения главы необходимо знать
- •4.1. Архитектура микропроцессора к580ик80а
- •4.1.1. Формат команд микропроцессора к580ик80а
- •4.1.2. Методы адресации микропроцессора к580ик80а
- •4.1.3. Команды безусловной и условной передач управления
- •4.1.4. Примеры команд процессора к580ик80а
- •4.2. Организация обмена в однокристальных микроЭвм
- •4.2.1. Функционирование микропроцессора
- •4.2.2. Подключение озу и регистров внешних устройств
- •5. Системы счисления и арифметические операции над числами
- •После изучения главы необходимо знать
- •5.1. Системы счисления для представления чисел в эвм
- •5.2. Представление в эвм целых двоичных чисел без знака
- •5.3. Представление в эвм целых чисел со знаком
- •5.3.1. Представление чисел со знаком в прямом коде
- •5.3.2. Представление чисел со знаком в дополнительном коде
- •5.3.3. Особенности выполнения сложения двоичных чисел без знака и со знаком
- •1. Примеры сложения чисел без знака.
- •2. Примеры сложения чисел со знаком.
- •5.4. Двоично-десятичная система представления чисел
- •5.5. Представление чисел в формате с плавающей точкой
- •Примеры представления чисел типа single
- •Примеры представления чисел типа real
- •6. Семейство процессоров х86
- •После изучения главы необходимо знать
- •6.1. Архитектура процессора 8086
- •Регистры процессора
- •Инструкции процессора
- •Сегментация памяти
- •Методы адресации
- •Распределение памяти
- •Прерывания
- •Функционирование
- •6.2. Процессоры 80286
- •Реальный режим
- •Защищенный режим
- •Прерывания
- •Регистр состояния задачи
- •Некоторые особенности функционирования
- •Функциональная схема pc at
- •7. Шина isa и интерфейсы сопряжения с устройствами управления
- •После изучения главы необходимо знать
- •7.1. Конструкция шины isa
- •Выводы шины isa
- •Распределение адресов на системной плате ат
- •Циклы магистрали
- •Прямой доступ к памяти
- •Регенерация памяти
- •Основные электрические характеристики линий isa
- •7.2. Проектирование устройств сопряжения для шины isa
- •7.2.1. Селекторы (дешифраторы) адреса
- •7.2.2. Операционная часть интерфейса
- •7.2.3. Микросхемы для построения интерфейсов Условные графические обозначения элементов цифровой техники
- •7.2.4. Микросхемы приемопередатчиков сигналов магистрали
- •Микросхемы селекторов адреса выходных регистров
- •8. Интерфейс centronics
- •После изучения главы необходимо знать
- •8.1. Порядок обмена по интерфейсу Centronics
- •8.2. Программируемый параллельный интерфейс ( ппи)
- •9. Обмен данными по интерфейсу rs-232
- •После изучения главы необходимо знать
- •9.1. Назначение линий связи rs-232
- •9.2. Подключение модема к rs-232
- •9.3. Подключение терминалов к rs-232
- •9.4. Подключение удаленных объектов управления
- •9.5. Назначение портов rs-232
- •10. Отсчёт реального времени в эвм
- •После изучения главы необходимо знать
- •10.1. Программируемый таймер
- •10.1.1. Режимы работы таймера
- •10.1.2. Таймер на системной плате ibm pc
- •10.2. Программируемый контроллер прерываний
- •10.2.1. Режимы работы пкп
- •10.2.2. Программирование пкп
- •10.3. Прерывания в ibm pc
- •10.3.1. Векторы прерывания
- •10.3.2. Прерывания bios и dos
- •10.3.3. Написание собственных прерываний
- •10.4. Отсчёт реального времени в эвм
- •10.5. Процедуры и функции для работы с прерываниями
- •После изучения главы необходимо знать
- •11.1. Архитектура 32-разрядных процессоров
- •11.1.1. Регистры процессора
- •11.1.2. Организация памяти
- •11.1.3. Режимы адресации
- •11.1.4. Ввод и вывод
- •11.1.5. Прерывания и исключения
- •11.1.6. Процессоры Pentium
- •11.2. Страничное управление памятью
- •11.3. Кэширование памяти
- •Кэш прямого отображения
- •Ассоциативный кэш
- •12. Однокристальные микроконтроллеры
- •После изучения главы необходимо знать
- •12.1. Однокристальный микроконтроллер к1816
- •12.2. Avr микроконтроллеры
- •12.3. Процессоры обработки сигналов
- •12.3.1. Однокристальный цифровой процессор обработки
- •12.3.2. Цифровые процессоры обработки сигналов (цпос)
- •13. Промышленное оборудование для цифровых систем управления
- •После изучения главы необходимо знать
- •13.1. Оборудование для централизованных систем управления
- •13.1.1. Персональные компьютеры для целей управления
- •13.1.2. Промышленные рабочие станции
- •13.1.3. Шасси для ibm совместимых промышленных компьютеров
- •13.1.4. Модульные промышленные компьютеры mic-2000
- •13.1.5. Процессорные платы
- •13.1.6. Устройства для сбора данных и управления
- •13.2. Оборудование для распределенных систем сбора данных и управления
- •13.2.1. Модули удаленного сбора данных и управления adam-5000
- •13.2.2. Модули удаленного сбора данных и управления adam-4000
- •13.3. Прикладное программное обеспечение
- •Заключение
- •Список использованных источников
- •Оглавление
- •Системы счисления и арифметические
10.4. Отсчёт реального времени в эвм
При написании программ на языках высокого уровня для отсчета интервалов времени в ЭВМ обычно используют специальные процедуры. Так на языке PASCAL имеется две процедуры работы со временем:
Procedure Delay(MS:Word) – ожидание в течении заданного числа миллисекунд;
Procedure GetTime(var hour, min, sec, ssec:Word)-возвращает установленное в системе время в часах, минутах, секундах и сотых долях секунды.
Однако, организовать эффективную работу в реальном масштабе времени с использованием таких процедур не удается.
Для реализации работы в реальном масштабе времени используется прерывание от таймера с частотой 18.2 гц, которое поступает с нулевого выхода таймера на вход IRQ0 запроса прерывания первого контроллера прерываний. Прерывание от таймера имеет высший приоритет и с частотой 18.2 гц контроллер вырабатывает сигналы требования прерывания. При каждом сигнале предоставления прерывания ПКП передает в процессор вектор прерывания от таймера (установленный BIOS) 8h.
Каждое прерывание от таймера INT 8h вызывает обращение к программе обработки прерывания TIMER_INT (F000: FEA5). Эта программа обработки имеет 32 разрядный счётчик для регистрации времени дня. Счётчик расположен в 2 ячейках TIMER_LOW (0040:006С) и TIMER_HIGH (0040:006E). Программа TIMER_INT вызывает перед своим завершением прерывание с вектором 1Ch. Система BIOS делает вектор прерывания 1Ch указателем на команду IRET. Прерывание с вектором 1Ch сделано для того, чтобы пользователь мог встроить собственную программу обработки прерывания. Связь аппаратных и программных средств при реализации прерывания от таймера представлена на рис 10.4.
Таким образом, прерывание ICh вызывается с частотой 18,2 Гц и ничего не выполняет, кроме возврата. Поэтому это прерывание можно использовать в пользовательских программах для отсчёта реального времени поместив в вектор 1Ch указатель на новую программу обработки.
Программа обработки прерывания завершается командой очистки бита обслуживания прерывания с наивысшим приоритетом в регистре ISR ПКП. Для этого необходимо перед выходом занести число 20h в порт 20h ПКП (рис.10.2). При этом будут разрешены все прерывания с низшим или равным приоритетом (в том числе и следующие прерывания от таймера).
Для включения пользовательской программы в качестве дополнения к прерыванию INT8h необходимо написать дополнительную процедуру обработки прерывания и поместить ее указатель (дальний адрес) в вектор 1Ch на место прежнего, предварительно его запомнив. В этом случае обращения к дополнительной программе обработки прерывания будут идти с частотой 18,2 Гц.
Если необходима более высокая частота, требуется перепрограммировать таймер. Но при этом будут неправильно работать часы реального времени и могут возникнуть проблемы с дисководами, т. к. в них предусмотрены временные задержки.
При написании программ следует использовать возможности операционной системы, языков высокого уровня, функций DOS и BIOS.
10.5. Процедуры и функции для работы с прерываниями
Программы, работающие с прерываниями могут быть написаны на языке высокого уровня (Pascal) или низкого (Assembler). Приведем часто используемые процедуры и функции.
На языке PASCAL заголовок процедуры обработки прерывания имеет вид:
Procedure Int(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:word); INTERRUPT; где Int- имя программы обработки прерывания. Список параметров обязательно должен иметь указанный вид. Некоторые параметры в заголовке программы могут быть опущены. Но они могут опускаться только подряд, начиная с первого элемента списка. Опускать промежуточные элементы списка запрещено. Параметры передаются в подпрограмму через новые значения регистров. При вызове подпрограммы обработки прерывания старое содержимое регистров помещается в стек, из которого восстанавливается при возврате. В регистры загружаются новые значения. Ошибки, связанные с передачей параметров в прерываниях, часто не отмечаются при трансляции.
Можно использовать процедуру без указания списка параметров, назначая переменным процедуры абсолютные адреса, совпадающие с адресами переменных в основной программе. В этом случае переменная подпрограммы и переменная основной программы, которые должны быть одного типа, будут располагаться в одном месте оперативной памяти. Они будут тождественны. Для этого в разделе описания переменных подпрограммы используют следующее описание переменных:
Var A: T absolute B; , где: A и B – переменные соответственно подпрограммы и основной программы, T – тип переменной.
Тело процедуры обработки прерывания должно содержать все операции, которые необходимо выполнить в процедуре. В конце программы обработки должна быть команда разрешения контроллеру прерывания вновь реагировать на очередное прерывание: port[$20]:=$20;.
Определение дальнего адреса процедуры или переменной производится с помощью функции add(Arg), которая возвращает дальний адрес переменной или процедуры, указанной в ее аргументе. Для определения адреса программы обработки прерывания (например Int) в теле основной программы необходимо присвоить некоторой переменной An типа pointer (указатель) значение функции addr, возвращающей адрес процедуры. Например, An:=addr(Int);
Переменная An будет иметь значение дальнего адреса программы обработки прерывания и, следовательно, размещена в векторе прерывания.
Процедура GetIntVec($1C, A_old);. используется для определения дальнего адреса программы обработки прерывания заданного вектора и его запоминания. Первый параметр процедуры – шестнадцатеричный номер вектора прерывания, адрес программы обработки которого мы сохраняем. Знак $ указывает на шестнадцатеричную систему счисления при указании номера вектора. В примере сохраняется адрес программы обработки прерывания с вектором $1C. Второй параметр – имя переменной типа Pointer, в которой будет храниться адрес найденной программы обработки
Установить новый адрес программы обработки прерывания заданного вектора можно используя процедуру SetIntVec($1C,An);. Первый параметр процедуры -номер вектора прерывания, адрес программы обработки которого мы устанавливаем. Второй параметр – имя переменной типа Pointer, в которой содержится адрес новой программы обработки. При выполнении смены программ обработки процедура автоматически запрещает прерывания.
11. 32-РАЗРЯДНЫЕ ПРОЦЕССОРЫ И PENTIUM
11.1. Архитектура 32-разрядных процессоров
11.2. Страничное управление памятью
11.3. Кэширование памяти
Процессор Intel386 является первым из семейства 32-разрядных процессоров фирмы Intel. Процессор имел 32-разрядные раздельные шины адреса и данных и внутреннюю очередь команд размером 16 байт для организации конвейерной обработки данных. Процессор Intel386 открывает ряд 32-разрядных процессоров, которые, наряду с повышением разрядности регистров, имеют новые общие элементы архитектуры, позволившие существенно повысить производительность ЭВМ.
Цель главы – ознакомление с основными элементами архитектуры 32-разрядных процессоров.