29
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Тульский государственный университет»
Кафедра «Системы автоматического управления»
Курсовая работа
по дисциплине
ЭВМ И ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ
на тему
"РАЗРАБОТКА МПС"
Тула 2004 г.
Одним из крупнейших достижений микроэлектроники и вычислительной техники является создание микропроцессоров (микропроцессорных наборов БИС). В решении актуальных задач ускорения научно-технического прогресса им принадлежит существенная роль.
Высокая производительность, малые габаритные размеры и энергопотребление, эргономичность, развитое, ориентированное на массового пользователя базовое и прикладное программное обеспечение микроЭВМ и ПЭВМ обеспечивают значительное повышение эффективности труда в различных отраслях народного хозяйства. Это особенно важно при автоматизации сложной управленческой, хозяйственной, инженерной детельности, научных исследований и экспериментов, учебного процесса.
Массовый выпуск микропроцессорных наборов БИС с широкими функциональными возможностями, их низкая стоимость, гибкость и точность цифровых методов обработки информации превратили МП в системные элементы, на основе которых создаются системы промышленной автоматики, связи, измерительной техники, управления транспортом и т.д.
Создание МПС на базе МП содержит два этапа: разработка аппаратной части и разработка программного обеспечения на языке низкого уровня (языка кодовых комбинаций, Ассемблера).
В данной работе рассматривается пример разработки микропроцессорной системы, которая является ПИД-регулятором.
Выбор микропроцессора
Исходя из данных задания (разрядность, тактовая частота, общий объём памяти) выбираем процессор Z80 фирмы Zilog.
Схема подключения микропроцессора показана на рис. 1
Рисунок 1. Схема подключения микропроцессора
По заданию (вторая часть) на входе МПС - 16_ти битный сигнал ошибки САУ , синхронный со срезами внешнего синхросигнала постоянной частоты со скважностью (меандр). Следовательно МПС должна начать обрабатывать новый сигнал, как только он поступил. Этот процесс организован с помощью подключения синхросигнала с выходу маскируемого прерывания .
Для хранения 32 Кбайт ПЗУ используем четыре микросхемы 573РФ4 (объём 65536 бит, организация 8192?8)
Для хранения 8 Кбайт ОЗУ - четыре микросхемы 537РУ10 (объём 16384 бит, организация 2048?8).
Составим карту памяти (табл. 1), исходя из того, что ПЗУ занимает нижние адреса памяти, адреса ОЗУ следуют за ПЗУ, остальные 24 Кбайта не используются.
Таблица 1. Карта памяти
Номер бита |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||
ПЗУ |
Банк 1 (8 кб) |
0000 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
1FFF |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Банк 2 (8 кб) |
2000 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
3FFF |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Банк 3 (8 кб) |
4000 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
5FFF |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Банк 4 (8 кб) |
6000 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
7FFF |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
ОЗУ |
Банк 1 (2 кб) |
8000 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
87FF |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Банк 2 (2 кб) |
8800 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
8FFF |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Банк 3 (2 кб) |
9000 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
97FF |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Банк 4 (2 кб) |
9800 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
||
9FFF |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||
Из табл. 1 можно сделать следующие выводы по организации памяти:
· Шина данных подключается сразу ко всем восьми микросхемам.
· Для выбора той или иной микросхемы достаточно одного двойного демультиплексора 531ИД14, осуществляющего преобразование 14. Одна его часть отвечает за выбор схемы ПЗУ, другая - за выбор ОЗУ.
· Бит А15 равен 0, если адресуется ПЗУ и равен 1, когда адресуется ОЗУ.
· ПЗУ. По линии адреса на микросхему подаются биты А0_А12, биты А13 и А14 определяют, в какой именно банк происходит адресация.
· ОЗУ. По линии адреса на микросхему подаются биты А0_А10, биты А11 и А12 определяют конкретный банк, биты А13 и А14 всегда равны 0.
Сигналы с выхода демультиплексора подаются непосредственно на входы в ПЗУ и на входы в ОЗУ.
Для активизации демультиплексора, отвечающего за ПЗУ, на вход необходимо подавать активный уровень сигнала (логический 0), если происходит цикл обращения к памяти () и . Необходимый управляющий сигнал достигается при использовании логического функции и элемента дисъюнктора. Справедливы аналогичные рассуждения для демультиплексора, отвечающего за ОЗУ, за исключением того факта, что в дисъюнкцию должно войти отрицание элемента - .
На вход ОЗУ необходимо подать логическую функцию (логическое , элемент конъюнктор), а на вход - выход МП .
Напряжения.
Т.к. ПЗУ не находится в режиме программирования, то на входы питания ПЗУ (,,) требуется подать +5V, а входы и - заземлить (на рис. не показано).
На вход ОЗУ также подаётся +5V, а вход заземляется.
Схема подключения памяти к шинам представлена на рис. 2.
Рисунок 2. Организация памяти
Таблица 2. Адреса внешних устройств
N |
Внешний сигнал |
Адрес |
|
1 |
Входной сигнал |
0001:0000 |
|
2 |
|
0011:0010 |
|
3 |
|
0101:0100 |
|
4 |
|
0111:0110 |
|
5 |
Выходной сигнал |
1001:1000 |
|
Обращение к тому или иному внешнему сигналу в зависимости от его адреса осуществим с помощью демультиплексора 555ИД7 18 и дополнительных логических элементов. На вход демультиплексора подаются биты А0_А2. Бит А3 отвечает за то, осуществляется ли адресация к портам ввода или вывода.
Рассмотрим случай адресации к младшему байту порта ввода данных или вывода. Обозначим - сигнал с выхода демультиплексора №0, - сигнал, который подаётся на регистр, отвечающий за приём входного кода, - сигнал, отвечающий за запись в регистр выходного кода. Составим таблицу истинности (табл. 2). При этом необходимо помнить, что у активный уровень (подключается к входу ), а - сигнал положительной логики (подключается к входу ).
Таблица 3. Таблица истинности
|
|
|
|
|
0 |
0 |
0 |
0 |
|
1 |
0 |
1 |
1 |
|
0 |
1 |
1 |
0 |
|
1 |
1 |
1 |
0 |
|
Используя СКНФ, СДНФ и теорему де Моргана, запишем логические функции:
, .
Очевидно, что демультиплексор активируется, когда происходит цикл обращения к внешним устройствам () и хотя бы один из сигналов или равен нулю.
.
Сокращённая схема подключения устройств вводавывода изображена на рис. 3.
Общий вид МПС достигается совмещением рис. 1-3 на одном и соединением магистралей (шины данных, адреса и управления).
Рисунок 3. Проектирование устройств вводавывода
Интеграл и дифференциал
Интеграл и дифференциал считаются по приближённым формулам:
·
· .
В данных выражениях - период внешнего синхросигнала. В расчётах этот множитель участвовать не будет, а результат будет выдаваться пропорционально его значению.
Операция умножения восьмибитных чисел
В системе команд процессора Z80 нет операции умножения, поэтому умножение осуществляется с помощью операций сложения и сдвига. Операция умножения восьмибитных чисел в тексте программы выполнена в виде процедуры MUL8_8. В данной процедуре представлен один из вариантов умножения байтов - умножение младшими разрядами вперёд со сдвигом частичной суммы вправо.
Расположение операндов:
- множимое, - множитель, - двухбайтный результат, используется в качестве счётчика регистр L.
Операция умножения шестнадцатибитных чисел со знаком
Операция умножения шестнадцатибитных чисел построена на операции умножения восьмибитных чисел и выполнена в виде процедуры MUL16_16. Метод вычисления 32_х битного результата представлен на рис. 4.
Рисунок 4. Схема умножения 16-битных чисел
Т.к. входной код, равно как и константы, могут быть отрицательным числом, записанным в дополнительном коде, необходимо контролировать знак произведения. При этом все отрицательные сомножители входят в произведение по модулю, а знак произведения изменяется на противоположный, если сумма минусов, стоявших перед сомножителями, равна 1 (младший бит равен 1).
Расположение операндов в памяти:
- множимое, - множитель, причём коэффициент всегда располагается на месте множителя.
Четырёхбитный результат помещается в память, начиная с адреса, указанного перед процедурой в парном регистре H-L.
Контроль знаков
Поскольку коэффициенты ПИД-регулятора по заданию постоянны, то нет смысла хранить их со знаком и при каждой операции умножения заново выделять знак и инвертировать при необходимости. Целесообразно хранить модули коэффициентов в одних ячейках памяти (KP, KI, KD), а знаки - в специальной ячейке памяти (далее «знаковой ячейке»), устройство которой представлено на рис. 5. Старшая тетрада является незначащей. Младшие четыре бита отвечают за отрицательность соответсвующего элемента, причём 1 означает, что соответсвующий коэффициент изначально отрицательный. В изображённом случае все коэффициенты положительны, кроме KP. Биты трёх коэффициентов остаются постоянными с момента запуска программы.
Рисунок 5. Организация знаковой ячейки
Значение же коэффициента E () изменяется не только при поступлении нового значения. Эта ячейка отвечает также за знак разности при приблизительном подсчёте дифференциала. Поэтому дифференциал целесообразно считать в последнюю очередь.
Проверка знака произведения осуществляется в самой процедуре умножения. Т.к. множимое представляет собой либо , либо разность , то ему однозначно соотстветствует младший бит ячейки памяти SIGN. С другой стороны необходимо знать, какой именно из коэффициентов участвует в произведении, чтобы потом определить его знак. Для этого используется другая ячейка памяти «ячейка номера» - NUMBER. В неё вносится номер: 1 соответствует КР, 2 - KI, 3 - KD. Во время процедуры значение этой ячейки полностью определяет, какой именно из коэффициентов участвует в произведении, поэтому перед выполнением процедуры умножения необходимо присвоить какое-либо значение из трёх.
Использование памяти.
Программа для вычисления (1) требует обращения к ОЗУ. Расположение данных в ОЗУ представлено в табл. 4.
Таблица 4. Использование ОЗУ
№ |
Адрес |
Переменная |
Примечание |
|
1 |
8003: 8002: 8001: 8000 |
INT_SUM |
Интегральная сумма |
|
2 |
8004 |
Sign |
Знаковая ячейка |
|
3 |
8005 |
Number |
Ячейка номера |
|
4 |
8007: 8006 |
PE |
Предыдущее значение (число со знаком) |
|
5 |
8009: 8008 |
СE |
Текущее значение (число со знаком) |
|
6 |
800B: 800A |
KP |
Модуль |
|
7 |
800D: 800C |
KI |
Модуль |
|
8 |
800F: 800D |
KD |
Модуль |
|
WC (Work cell) - рабочие ячейки, необходимые для временного хранения результатов процедуры MUL16_16 и отдельных частей суммы (1). Далее записывается смещение относительно ячейки WC с адресом 8010. |
||||
9 |
8011: 8010 |
WC+1: WC+0 |
Множимое (блок 2: 1 на рис. 4): текущее значение , разность |
|
10 |
8013: 8012 |
WC+3: WC+2 |
Множитель (блок 4: 3): коэффициент |
|
11 |
none |
WC+4 |
Умерший товарищ |
|
12 |
8015: 8014 |
WC+6: WC+5 |
Блок 1?3 |
|
13 |
8017: 8016 |
WC+8: WC+7 |
Блок 2?3 |
|
14 |
8019: 8018 |
WC+10: WC+9 |
Блок 1?4 |
|
15 |
801B: 801A |
WC+12: WC+11 |
Блок 2?4 |
|
16 |
801F: 801E: 801D: 801C |
WC+16: WC+15: WC+14: WC+13 |
Результат умножения |
|
17 |
8023: 8022: 8021: 8020 |
WC+20: WC+19: WC+18: WC+17 |
Результат умножения и |
|
18 |
9FFF |
ST_PT |
Вершина стека |
|
Обработка переполнения
Программно переполнение (результат (1) превышает 32 бита) контролируется в трёх случаях:
· на очередном шаге произошло переполнение интегральной суммы;
· переполнение после сложения и интегральной суммы;
· переполнение при выполнении операции (1).
Результатом переполнения является следующая последовательность действий:
· на выходе сигнал FFFFH;
· обнуляется интегральная сумма.
При этом сам пользователь должен контролировать: чтобы разность двух соседних сигналов и не превышала 216.
Исходный текст программы
Метка |
Мнемокод |
Тактов |
Байт |
Примечания |
|
Задание констант |
|||||
PRT_IN_LO = 00H |
|||||
PRT_IN_HI = 01H |
Старший байт входного сигнала |
||||
KP_LO = 02H |
|||||
KP_HI = 03H |
|||||
KI_LO = 04H |
|||||
KI_HI = 05H |
|||||
KD_LO = 06H |
|||||
KD_HI = 07H |
|||||
PRT_OUT_HI = 08H |
|||||
PRT_OUT_LO= 09H |
|||||
ST_PT = 9FFFH |
Указатель стека |
||||
В соотвествии с табл. 4 также указываются значения: Int_sum, Sign, Number, PE, CE, KP, KI, KD, WC - WC +13, WC + 17 |
|||||
Основная программа |
|||||
ORG 0000H |
Программа начинается по адресу 0000H |
||||
JMP START |
10 |
3 |
|||
NOP |
4 |
1 |
|||
NOP |
4 |
1 |
|||
NOP |
4 |
1 |
|||
NOP |
4 |
1 |
|||
JMP INT |
10 |
3 |
|||
START: |
DI |
4 |
1 |
Запрет прерываний |
|
Запись значений коэффициентов (со знаками) в память |
|||||
MVI A, 0 |
7 |
2 |
Обнуление ячейки SIGN |
||
STA SIGN |
13 |
3 |
|||
IN KP_LO |
10 |
2 |
Запись в ячейку с адресом KP значения младшего байта KP |
||
LXI H, KP |
10 |
3 |
|||
STAX H |
7 |
1 |
|||
IN KP_HI |
10 |
2 |
Запись в ячейку с адресом INT_SUM+9 значения старшего байта KP |
||
INX H |
5 |
1 |
|||
STAX H |
7 |
1 |
|||
IN KI_LO |
10 |
2 |
Занесение остальных значений коэффициентов в соответсвующие ячейки памяти, коэффициент KD располагается также в регистрах А: В |
||
INX H |
5 |
1 |
|||
STAX H |
7 |
1 |
|||
IN KI_HI |
10 |
2 |
|||
INX H |
5 |
1 |
|||
STAX H |
7 |
1 |
|||
IN KD_LO |
10 |
2 |
|||
INX H |
5 |
1 |
|||
STAX H |
7 |
1 |
|||
IN KD_HI |
10 |
2 |
|||
INX H |
5 |
1 |
|||
STAX H |
7 |
1 |
|||
Определение знаков коэффициентов, выделения модулей и записи знаков в соответствующий бит знаковой ячейки |
|||||
MVI D, 3 |
7 |
2 |
Загрузить в регистр D количество циклов |
||
@@1: |
LDAX H |
7 |
1 |
Запись текущего коэффициента в B: C, старший байт также остаётся в аккумуляторе. |
|
MOV C, A |
5 |
1 |
|||
DCX H |
5 |
1 |
|||
LDAX H |
7 |
1 |
|||
MOV B, A |
5 |
1 |
|||
RAL |
4 |
1 |
Занесение в признак переноса старшего бита |
||
JNC POSNUM |
17 |
3 |
Если старший бит = 0, то перейти к POSNUM (positive number) - не требуется уточнение знака и изменения знаковой ячейки |
||
MOV A, B |
5 |
1 |
Загрузка в аккумулятор младшего байта |
||
XRI FFH |
7 |
2 |
Дополнение до двух и прибавление единицы - выделение модуля. |
||
ADI 1 |
7 |
2 |
|||
MOV B, A |
5 |
1 |
Сохранение младшего байта модуля в регистре В |
||
MOV A, C |
5 |
1 |
Помещение в аккумулятор старшего байта |
||
XRI FFH |
7 |
2 |
Дополнение до двух и учёт переноса. |
||
ACI 0 |
7 |
2 |
|||
MOV C, A |
5 |
1 |
Поместить в регистр С старший байт модуля |
||
XRA A |
7 |
1 |
Сброс признака переноса |
||
MOV E, D |
5 |
1 |
|||
MVI A, 1 |
7 |
2 |
|||
@@2: |
RAL |
4 |
1 |
Смещение единицы в соответствующий разряд и сохранение в регистре Е |
|
DCX E |
5 |
1 |
|||
JNZ @@2 |
17 |
3 |
|||
Итого @@2 |
156 |
|
|||
MOV E, A |
5 |
1 |
|||
LDA SIGN |
13 |
3 |
Загрузить в соответствующий бит ячейки SIGN - 1 (прямая адресация) |
||
ADD E |
4 |
1 |
|||
STA SIGN |
13 |
3 |
|||
POSNUM: |
MOV M, C |
7 |
1 |
Сохранить модуль коэффициента в соответсвующих ячейках. |
|
DCX H |
5 |
1 |
|||
MOV M, B |
7 |
1 |
|||
DCX H |
5 |
1 |
Уменьшить адрес на единицу - указатель на старший байт следующего коэффициента |
||
DCX D |
5 |
1 |
Уменьшить счётчик цикла |
||
JNZ @@1 |
17 |
3 |
Если не обработаны все коэффициенты то перейти к @@1. По окончании в регистрах B: С содержится значение коэффициента KP. |
||
Итого@@1 |
750 |
|
|||
LXI SP, ST_PT |
10 |
3 |
Установка вершины стека |
||
EI |
4 |
1 |
Разрешение прерываний |
||
HLT |
7 |
1 |
Ожидание прерывания |
||
Итого(START) |
939 |
129 |
|
||
Программа обработки прерывания |
|||||
Выявление модуля и знака |
|||||
INT: |
IN PRT_IN_LO |
10 |
2 |
Загрузить значение в регистры В: С и в память |
|
STA СE |
13 |
3 |
СE+1: СE (число со знаком) |
||
MOV C, A |
5 |
1 |
|||
IN PRT_IN_HI |
10 |
2 |
|||
STA СE+1 |
13 |
3 |
|||
MOV B, A |
5 |
1 |
|||
LXI H, SIGN |
10 |
3 |
Обнуление младшего бита SIGN |
||
LDAX H |
7 |
1 |
|||
ANI 00001110B |
7 |
2 |
|||
STAX H |
7 |
1 |
|||
RAL |
4 |
1 |
Проверка знака , операции аналогичны приведённым выше |
||
JNC POSNUM2 |
17 |
3 |
! | Как писать курсовую работу Практические советы по написанию семестровых и курсовых работ. |
! | Схема написания курсовой Из каких частей состоит курсовик. С чего начать и как правильно закончить работу. |
! | Формулировка проблемы Описываем цель курсовой, что анализируем, разрабатываем, какого результата хотим добиться. |
! | План курсовой работы Нумерованным списком описывается порядок и структура будующей работы. |
! | Введение курсовой работы Что пишется в введении, какой объем вводной части? |
! | Задачи курсовой работы Правильно начинать любую работу с постановки задач, описания того что необходимо сделать. |
! | Источники информации Какими источниками следует пользоваться. Почему не стоит доверять бесплатно скачанным работа. |
! | Заключение курсовой работы Подведение итогов проведенных мероприятий, достигнута ли цель, решена ли проблема. |
! | Оригинальность текстов Каким образом можно повысить оригинальность текстов чтобы пройти проверку антиплагиатом. |
! | Оформление курсовика Требования и методические рекомендации по оформлению работы по ГОСТ. |
→ | Разновидности курсовых Какие курсовые бывают в чем их особенности и принципиальные отличия. |
→ | Отличие курсового проекта от работы Чем принципиально отличается по структуре и подходу разработка курсового проекта. |
→ | Типичные недостатки На что чаще всего обращают внимание преподаватели и какие ошибки допускают студенты. |
→ | Защита курсовой работы Как подготовиться к защите курсовой работы и как ее провести. |
→ | Доклад на защиту Как подготовить доклад чтобы он был не скучным, интересным и информативным для преподавателя. |
→ | Оценка курсовой работы Каким образом преподаватели оценивают качества подготовленного курсовика. |
Курсовая работа | Деятельность Движения Харе Кришна в свете трансформационных процессов современности |
Курсовая работа | Маркетинговая деятельность предприятия (на примере ООО СФ "Контакт Плюс") |
Курсовая работа | Политический маркетинг |
Курсовая работа | Создание и внедрение мембранного аппарата |
Курсовая работа | Социальные услуги |
Курсовая работа | Педагогические условия нравственного воспитания младших школьников |
Курсовая работа | Деятельность социального педагога по решению проблемы злоупотребления алкоголем среди школьников |
Курсовая работа | Карибский кризис |
Курсовая работа | Сахарный диабет |
Курсовая работа | Разработка оптимизированных систем аспирации процессов переработки и дробления руд в цехе среднего и мелкого дробления Стойленского ГОКа |