Материал: Функциональная организация микро-ЭВМ К1816ВЕ48

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 2.1.Структурная схема МК.

В состав АЛУ входят следующие блоки: комбинационная схема обработки байтов, регистры Т, регистр-аккумулятор А, схема десятичного корректора и схема формирования признаков. Аккумулятор используется в качестве регистра операнда и регистра результата. Регистр временного хранения операнда Т1 программно недоступен и используется для временного хранения второго операнда при выполнении двухоперандных команд. Комбинационная схема АЛУ может выполнять следующие операции: сложение байтов с переносом и без него; логические операции И,ИЛИ и исключающее ИЛИ; инкремент, декремент, инверсию; циклический сдвиг лево, вправо через (или минуя) флаг переноса, обмен тетрад в байте; десятичную коррекцию содержимого аккумулятора. При выполнении операций обработки данных в АЛУ на комбинационной схеме вырабатываются флаги переноса C, вспомогательного переноса (перенос из младшей тетрады в старшую) AC, нулевого содержимого аккумулятора Z и флаги наличия единицы в выбранном бите аккумулятора. Флаги переноса С и вспомогательного переноса AC фиксируются на триггерах, входящих в состав регистра слова состояния программы (ССП). Логика условных переходов по флагам, которые не сохраняются в ССП, позволяет выполнять команды передачи управления (JZ,JNZ,JB0-JB7) без их фиксации.

2.1. Программно-доступные компоненты

Регистр слова состояния программы доступен программисту и его можно прочитать (MOV A,PSW) или изменить (MOV PSW,A). Формат ССП показан на рис.2.2.

Cлово состояния программы

(PSW - Program Status Word) 7 6 5 4 3 2

1

0 C AC

F0

BS

1

S2 S1 S0

С- признак переноса;

AC

- признак переноса;

F0

- флаг пользователя;

BS

- селектор банка регистров;

S2S1S0

- указатель стека.

Рис.2.2. Формат ССП.

Кроме перечисленных признаков логика условных переходов МК оперирует флагами F0 и F1, функциональное назначение которых определяется разработчиком; флагом переполнения таймера TF, сигналами на входах Т0 и Т1. Кроме того, логикой переходов после окончания каждого машинного цикла опрашивается еще один флаг, а именно флаг разрешения/запрета прерываний.

Память программ и память данных в МК физически и логически разделены. Карта адресов памяти программ показана на рисунке 2.2. Резидентная память программ реализована в перепрограммируемом ПЗУ емкостью 1 Кбайт. Счетчик команд (СК) содержит 12 бит, поэтому максимальное адресное пространство, отводимое для программ, составляет 4 Кбайта, но для его использования необходимо организовать внешнюю память. Счетчик команд устроен таким образом, что в процессе счета участвуют только младшие 11 бит, поэтому из предельного состояния 7FFh (если только по этому адресу не расположена команда передачи управления) СК перейдет в состояние 000h. Состояние старшего бита СК может быть изменено только специальными командами ( SEL MB0, SEL MB1), что обуславливает разбиение памяти на два банка памяти емкостью по 2 Кбайта каждый.

При использовании внешней памяти программ следует помнить, что МК не имеет средств считывания и анализа флага МВ, равного содержимому старшего бита счетчика команд СК11. Поэтому в каждый текущий момент исполнения программы, состоящей из потока вызовов подпрограмм, нет возможности определения номера банка памяти , из которого осуществляется выборка. Так как переходы между банками выполняются только по командам SEL MB, необходимо следить за тем, чтобы подпрограммы, взаимно вызывающие друг друга, располагались в пределах одного банка памяти.

4095

. . . . . .

2048

2047

. . . . . .

1024

1023

. . . . . .

8

7

Прерывание таймера

6

5

4

3

2

Внешнее прерывание 1

0

Сброс и запуск

SEL MB1 (СК11=1)

SEL MB1 (СК11=0)

Рис. 2.2. Карта адресного пространства памяти программ.

При обработке запросов прерываний в МК старший бит счетчика команд СК11 принудительно устанавливается в 0, что приводит к необходимости размещать в пределах банка 0 подпрограмму обслуживания прерывания и все подпрограммы, вызываемые ею.

В резидентной памяти программ имеется три специализированных адреса:

адрес 0, к которому передается управление сразу после окончания сигнала СБР; по этому адресу должна находиться команда безусловного перехода к началу программы; адрес 3, по которому расположен вектор прерывания от внешнего источника;

адрес 7, по которому расположены вектор прерывания от таймера или начальная команда подпрограммы обслуживания прерывания по признаку переполнения таймера/счетчика.

Память программ разделяется не только на банки емкостью 2 Кбайта, но и на страницы по 256 байт в каждой. В командах условного перехода задается восьмибитный адрес передачи управления в пределах текущей страницы. Команда вызова подпрограмм модифицирует 11 бит счетчика команд, обеспечивая тем самым межстраничные переходы в пределах выбранного банка памяти программ.

Резидентная память данных(РПД) емкостью 64 байта имеет в своем составе два банка рабочих регистров 0-7 и 24-31 по восемь регистров в каждом. Выбор одного из банков регистров выполняется по команде SEL RB. Рабочие регистры доступны по командам с прямой адресацией, а все ячейки РПД доступны по командам с косвенной адресацией. В качестве регистров косвенного адреса используются регистры R0, R1 и R0*, R1*.

Ячейки РПД с адресами 8-23 адресуются указателем стека из ССП и могут быть использованы в качестве 8-уровневого стека. В случае,

если уровень вложенности подпрограмм меньше восьми, незадействованные в стеке ячейки могут использоваться как ячейки РПД. При переполнении стека регистр-указатель стека, построенный на основе 3-битного счетчика, переходит из состояния 7 в состояние 0. МК не имеет команд загрузки байта в стек или его извлечения из стека, и в нем фиксируются только содержимое счетчика команд и старшая тетрада ССП (флаги). В силу этого разработчику необходимо следить за тем, чтобы вложенные подпрограммы не использовали одни и те же рабочие регистры. Карта адресов памяти программ показана на рисунке 2.3.

Практически все команды с обращением к РПД оперируют с одним байтом. Однако по командам вызова и возврата осуществляется доступ к двухбайтным словам. В памяти данных слова хранятся так, что старший байт слова располагается в ячейке с большим адресом, а в памяти программ порядок расположения байтов по старшинству при хранении двухбайтных слов обратный. В МК-системах, где используется внешнее ОЗУ, через регистры косвенного адреса R0 и R1 возможен доступ к ВПД емкостью 256 байт.

Программисту также доступен внутренний восьмибитный двоичный суммирующий счетчик, который может быть использован для формирования временных задержек и для подсчета внешних событий. Содержимое таймера/счетчика (Т/СNT) можно прочитать (MOV A,T) или изменить (MOV T,A). Команда STRT T запускает таймер/счетчик в режиме таймера, а команда STRT CNT- в режиме счетчика событий. Остановить работу (но не сбросить содержимое) таймера/счетчика можно командой STOP TCNT или сигналом системного сброса СБР.

63

32

Резидентная память данных

32 * 8

31

26