- •6. Проектирование микропроцессорных систем
- •6.1. Представление системы как объекта проектирования
- •6.2. Основные этапы проектирования
- •6.3. Разработка архитектуры системы
- •6.4. Проектирование аппаратных средств
- •6.4.1. Схемотехническое проектирование процессора
- •6.4.2. Схемотехническое проектирование памяти
- •Банкирование памяти
- •Организация банков памяти
- •Проектирование запоминающих устройств
- •6.4.3. Схемотехническое проектирование интерфейса
- •Организация ввода/вывода данных
- •6.4.4. Тестирование и настройка аппаратных средств
- •Тестирование статическими сигналами
- •Свободный прогон микропроцессора
- •6.5. Проектирование программных средств
- •6.5.1. Этапы жизненного цикла программы
- •6.5.2. Точная постановка задачи и формулировка требований к программе
- •Постановка задачи ввода данных в озу
- •6.5.3 Проектирование программы
- •Декомпозиция общей задачи
- •Декомпозиция задачи ввода данных в озу
- •Структуры данных
- •Разработка структуры данных программы для ввода данных в озу
- •Алгоритмизация программы
- •Подходы к алгоритмизации
- •Иерархическая организация алгоритма
- •Алгоритмизация программы для ввода данных в озу
- •1. Модуль "Тестовый контроль озу по шд" (dTstContr)
6.4.2. Схемотехническое проектирование памяти
Различная ширина внешней шины данных у МП ВМ86 и ВМ88 определяет различную схемотехническую организацию памяти в МПС на их основе. Основное различие заключается в организации и использовании банков памяти.
Банкирование памяти
В МПС на базе МП ВМ88 память организуется в виде одного банка объемом 1 мбайт и подключается к системной шине стандартным образом (рис. 6.5,а). Обмен информацией с такой памятью осуществляется лишь побайтно.

Рис. 6.5. Банкирование памяти МПС:
а) для МП ВМ88; б) для МП ВМ86
В МПС на базе МП ВМ86 память представляется в виде двух банков по 512 кбайт каждый. Один банк подключается к младшей половине D7D0 шины данных и называется младшим банком. Второй банк подключается к старшей половине D15D8 шины данных и называется старшим банком. Схема подключения банков к системной шине приведена на рис.6.5,б.
Младший банк содержит байты с четными
адресами, так как обращение к нему
осуществляется при A0=0, а старший банк
байты с нечетными
адресами, так как обращение к нему
происходит при A0=1 (
=0).
Конкретный байт в каждом банке выбирается
по коду адреса на линиях A19A1.
Выбор банков памяти для обмена информацией
осуществляется с помощью сигналов
и A0 в соответствии с табл.6.1. Из таблицы
6.1 следует, что МП ВМ86 может осуществлять
обмен информацией с памятью как словами,
так и байтами. При этом слова могут
располагаться как по четным, так и
нечетным адресам. Однако, слова по четным
адресам передаются за один цикл шины,
а по нечетным адресамза два цикла шины: сначала младший байт
по линиям D15D8, а
затем (после автоматического
инкрементирования полного адреса
A19A0) старший байт
по линиям D7D0.
Маршрутизация старших и младших байтов
внутренних 16-битных регистров по
соответствующим половинам шины данных
выполняется автоматически и незаметна
для программиста.
Таблица 6.1
Обращение к банкам памяти МП ВМ86
|
Операция обмена |
|
A0 |
Используемая шина данных |
|
Запись/считывание слова по четному адресу |
0 |
0 |
D15D0 |
|
Запись/считывание слова по нечётному адресу: младший байт слова старший байт слова |
0 1 |
1 0 |
D15D8 D7D0 |
|
Запись/считывание байта по чётному адресу |
1 |
0 |
D7D0 |
|
Запись/считывание байта по нечётному адресу |
0 |
1 |
D15D8 |
|
Нет обращения |
1 |
1 |
|
Для повышения производительности МПС на базе МП ВМ86 слова данных целесообразно располагать по четным адресам, что особенно актуально для стеков, оперирующих только словами. Для выравнивания адреса на четное значение в ассемблере предусмотрена директива EVEN, располагаемая перед описанием массива слов. Если текущий адрес трансляции является четным, то эта директива ничего не делает, а при нечетном адресе она увеличивает его на 1, превращая в четный. Для МП ВМ88 выравнивание на четный адрес не имеет смысла, так как обращение к любому слову требует два цикла шины независимо от его адреса.
МП ВМ86 считывает команды из памяти только словами по четному адресу. Если команда перехода передает управление на нечетный адрес, то в первом цикле выборки считывается один байт, что обеспечивает выравнивание адреса команд на четное значение.
