- •Общие сведения
- •Техническое задание на проектирование
- •Варианты заданий
- •Формирование управляющего воздействия у1
- •Формирование управляющего воздействия y2
- •Формирование управляющего воздействия y3
- •Светодиодная индикация
- •Организация подсистемы прерываний
- •Выбор элементной базы
- •Реализуемый алгоритм
- •Требования к оформлению
- •Основные этапы разработки
- •Разработка микропроцессорного модуля
- •Описание элементной базы мпм
- •Микропроцессор i82386sx
- •Реализация системного контроллера
- •Шинные формирователи шин адреса и данных
- •Генератор тактовых импульсов и схема сброса
- •Реализация подсистемы прерываний
- •Разработка модуля ввода-вывода
- •Параллельно-программируемый адаптер кр580вв55
- •Разработка модуля таймера
- •Работа пит в режиме 0 (программируемый таймер)
- •Работа пит в режиме 3
- •Разработка памяти мпс
- •Распределение адресного пространства памяти
- •Разработка модулей пзу и озу
- •Распределение адресного пространства ввода/вывода
- •Разработка по
- •Литература
Основные этапы разработки
Разработка микропроцессорного модуля
Микропроцессорный модуль (МПМ) является основной частью МПС и управляет всеми остальными ее блоками. Обобщенная структура МПМ приведена на рисунке 4. МПМ содержит:
микропроцессор;
системный контроллер;
генератор синхроимпульсов;
шинные формирователь шин адреса и данных.
|
Рисунок 4 - Обобщенная структура микропроцессорного модуля МПС |
Описание элементной базы мпм
Микропроцессор i82386sx
Основой МПС является микропроцессор I82386SX. УГО МП приведена на рисунке 5, а в таблице 3 приведено назначение сигналов МП.
Рисунок 5 - УГО микропроцессора I82386SX
Таблица 3 - Назначение сигналов микропроцессора 386
Сигнал |
I/O |
Назначение |
CLK2 |
I |
Clock — внешний сигнал синхронизации процессора |
D[15:0] * |
I/O |
Data — сигналы шины данных |
А[23:1] • |
О |
Address — сигналы шины адреса |
BLE#, BHE# |
О |
Byte Low Enable, Byte High Enable — аналоги ВЕ0# и ВЕ1# |
W/R# |
О |
Write/Read — сигнал, определяющий тип шинного цикла (запись/чтение) |
M/IO# |
О |
Memory/ IO# Select — высокий уровень указывает на обращение к памяти (или останов), низкий — на обращение к портам ввода-вывода или подтверждение прерывания |
D/C# |
О |
Data/Control# — сигнал, определяющий тип шинного цикла (высокий уровень при передачи данных памяти или ввода-вывода, низкий — при выборке кода, в цикле подтверждения прерывания или при останове) |
ADS# |
O |
Address Status — сигнал идентификации адресного цикла, во время которого действительны сигналы W/R#, D/C#, M/IO#, ВЕ[0:3] и А[31:2] |
NA# |
I |
Next Address — запрос следующего адреса при конвейерной адресации |
READY* |
I |
Bus Ready — сигнал завершения шинного цикла. Шинный цикл расширяется на неограниченное время до появления сигнала готовности (низкий уровень) |
LOCK* |
О |
Bus Lock — сигнал монополизации управления шиной, вырабатывается на время выполнения инструкции по префиксу LOCK и автоматически при выполнении инструкций XCHG с памятью, подтверждения прерывания и доступа к таблицам дескрипторов |
INTR |
I |
Interrupt Request — сигнал запроса (высоким уровнем) маскируемого прерывания |
Сигнал |
I/O |
Назначение |
NMI |
I |
Non Mascable Interrupt — сигнал, высокий уровень которого вызывает немаскируемое прерывание NMI |
RESET |
I |
Сигнал аппаратного сброса (высоким уровнем) |
HOLD HLDA |
I О |
Bus Hold Request и Hold Acknowledge — запрос управления локальной шиной от другого контроллера и подтверждение предоставления |
PEREQ |
I |
Processor Extension Operand Request — запрос на передачу операнда сопроцессором |
BUSY# ERROR# |
I I |
Processor Extension Busy и Error — сигналы состояния сопроцессора. Активность сигнала BUSY# останавливает процессор, а сигнала ERROR вызывает исключения при исполнении инструкций WAIT и некоторых инструкций ESCAPE |
Примечание. У микропроцессора 386SX разрядность шины данных 16 бит - имеются только сигналы D[15:0], разрядность шины адреса 24 бит - А[23:1], сигналы ВЕ[0:3] и BS16# отсутствуют. У МП 386DX отсутствуют сигналы BLE# и ВНЕ#.
Синхронизация процессора осуществляется внешним сигналом CLK2, частота которого делится пополам внутренним делителем для получения сигнала внутренней синхронизации. Каждому периоду CLK2 соответствует одна из двух фаз внутренней синхронизации (фаза 1 или фаза 2). Максимальная пропускная способность локальной шины процессора — одно двойное слово за каждые два цикла внутренней частоты PCLK.
Шина данных допускает как 16-, так и 32-разрядный режим обмена, в зависимости от состояния входного сигнала BS16#. При чтении в 16-разрядном режиме данные на линиях D[16:31] игнорируются, при записи процессор управляет всей шиной данных независимо от сигнала BS16#.
Шина адреса позволяет адресовать 4 Гб физической памяти (00000000-FFFFFFFFh) в защищенном режиме и 1 Мб из области младших адресов в реальном режиме. Из этого правила для реального режима есть два исключения:
линии А[20:31] после сигнала RESET во время выборки кода находятся в единичном состоянии до первой инструкции межсегментного перехода;
линия А20 может принимать единичное значение, когда сочетание значения сегментного регистра и эффективного адреса приводят к переходу через границу 0FFFFFh (максимально возможное значение физического адреса в реальном режиме 0001FFEFh). Для обеспечения полной совместимости с 8086 применяют программно управляемый вентиль (GATE A20), принудительно обнуляющий бит А20 системной шины адреса.
При выполнении инструкций ввода-вывода процессор адресуется к области в 64 Кб пространства ввода-вывода (00000000-0000FFFFh).
Линии А[31:2] идентифицируют адрес с точностью до двойного слова, а в пределах этого слова сигналы ВЕ[0:3] непосредственно указывают, какие байты используются в данном цикле. ВЕ0# относится к D[0:7], ВЕ1# — к D[8:15], ВЕ2# — к D[16:23] и ВЕЗ# - к D[24:31]. Число активных линий BEi определяет, сколько байт (1, 2, 3 или 4) передается в данном цикле, при этом все байты могут быть только смежными. Если в текущем цикле записи оба сигнала ВЕ0#и ВЕ1# неактивны, выводимые данные старших байт автоматически дублируются на линиях младших (D[24:31] на D[8:15], D[16:23] на D[0:7]). Если адресованное слово (или двойное слово) пересекает границу двойного слова, процессор после пересылки уместившейся младшей части автоматически генерирует дополнительный цикл обмена с другими значениями А[31:2] и ВЕ[0:3].
|
Рисунок 6 – Формирование сигналов адресации для 16-разрядных шин |
Для связи с системной шиной, имеющей возможность подключения 8-, 16- и 32-битных устройств (шины ISA и EISA) и полную шину адреса, включающую сигналы АО, А1 и SBHE#, недостающие сигналы генерируются из сигналов ВЕ[0:3]# по логике, приведенной на рисунке 6. Для 8-битных устройств, как и при использовании 80286 или 8086, необходим «косой» буфер данных между линиями D[8:15] процессора и Data[0:7] системной шины.
Тип цикла локальной шины определяется сигналами М/Ю#, D/C#, W/R# и LOCK#, комбинация которых действительна во время активности сигнала ADS# (табл. 4.3).
Сигналы управления шиной ADS#, READY# и NA# задают временные границы циклов и управляют конвейерной адресацией. Сигнал ADS# отмечает начало каждого цикла, во время его действия производится идентификация типа цикла и фиксируется соответствующий ему адрес (линии А[31:2] и ВЕ[0:3]#). Сигнал READY# должен вводиться внешней схемой в каждом цикле, отмечая готовность к завершению текущего цикла. Сигнал NA# используется для запроса следующего адреса при конвейерной адресации, когда внешние схемы уже готовы воспринять новый адрес и сигналы идентификации. Если процессор уже имеет внутренний запрос на следующий шинный цикл, он выдаст адрес и идентификаторы следующего цикла до завершения текущего.
Таблица 4 - Декодирование шинных циклов МП 386
M/IO# |
D/C# |
W/R# |
Тип цикла |
0 |
0 |
0 |
Подтверждение прерывания (INTA#) |
0 |
1 |
0 |
Чтение порта (IOR#) |
0 |
1 |
1 |
Запись в порт (IOW#) |
1 |
0 |
1 |
Если ВЕ2# = 0 - останов (Halt), если ВЕ0# = 0 - отключение (Shutdown); при этом А[2:311=0, а остальные BEi=l. |
1 |
0 |
0 |
Чтение кода программы(MEMR#) |
1 |
1 |
0 |
Чтение данных из памяти (MEMRD#) |
1 |
1 |
i |
Запись данных в память (MEMWR#) |
Сигналы арбитража локальной шины предназначены для передачи управления локальной шиной другому устройству по его запросу - переходу в состояние лог. «1» линии HOLD. Когда процессор сочтет возможным передачу управления (в незаблокированных циклах сразу по завершении текущего шинного цикла), он выставит сигнал подтверждения HLDA.