Секционный микропроцессор К1802

Секционный микропроцессор семейства Am2900: Am2901/29091

Введение

Семейство Am2900

Семейство Am2900 состоит из серии микросхем, которые предназначены для сборки микропрограммируемых микрокомпьютеров и икроконтроллеров. Каждая ИМ разработана исходя из возможностей гибкого расширения функциональности и эмуляции существующих ЭВМ. Рис. 1 иллюстрирует типичную архитектуру системы. Существует две "стороны" системы - слева схемы управления и справа схема манипуляций с данными. Блок, помеченный "2901 array" состоит из АЛУ, регистров и логики управления данными, управления сдвигом влево/вправо, и схемы распростанения переноса. Данные обрабатываются путём их передвижки из основной памяти в регистры 2901, проводя необходимые операции над ними, и возвращая результат в основную память. Адрес памяти также генерируется 2901 и отсылается в регистр адреса памяти (MAR). Четыре бита статуса АЛУ 2901 запоминаются в регистре статуса после каждой операции.

Рис. 1.

Логика слева является секцией управления ЭВМ, используется ИМ 2909. Система контролируется с помощью памяти, обычно ППЗУ, которая содержит длинные слова - микроинструкции. Каждая микроинструкция содержит биты для управления каждым обработчиком данных систмы. Например, есть 9 бит для управления 2901, 8 бит для адресов регистров А и В, 2 или 3 бита для управления сдвиговыми мультиплексорами на концах массива 2901, и биты контроля регистра MAR, регисра инструкции и различных шинных формирователей. Когда биты микроинструкции применяются ко всем обрабатывающим устройствам и подведены тактирующие сигналы, исполняется одна маленькая операция (передача данных или сложение регистра с регистром).

Каждая микроинструкция содержит не только биты управления обработчиками данных, но также определяют нахождение следующей микроинструкции в ППЗУ. Например, поля, показанные на рис. 1 как I, CC, и BA. Поле I управляет счётчиком - индицирует, каков следующий адрес: field controls the sequencer. It indicates where the next address is m PC, стек, вход данных, ибудет ли проведена операция со стеком.

Поле CC содержит поля, указывающие при каком условии применяется поле I. Оно сравнивается с кодами условий в регистре статуса и может вызывать модификацию поля I. Сравнение и модификация происходит в блоке обозначенном "control logic." Часто это только ППЗУ. Поле BA содержит адрес перехода или адрес подпрограммы.

Конвейеризация.

Адрес микроинструкции генерируется счётчиком, начиная от фронта тактирующего сигнала. Адрес подаётся от секвенсера на ПЗУ, и после истечения времени доступа, микроинструкция появляется на выходе ПЗУ.

Конвейерный регистр - это регистр, помещённый на выходе памяти микропрограмм для разделения конвейера на две части. Регистр конвейера будет содержать текущую инструкцию м. (См. цифры в кружках на рис. 1.) Биты, управляющие манипуляциями данных, подводятся к элементам системы и часть битов возвращается на счётчик ­ для определения адреса следующей микроинструкции. Этот адрес о посылается в ПЗУ, и следующая микроинструкция ¯ появляется на входе конвейерноо регистра.

Так пока 2901 выполняет одну инструкцию, следующая инструкция принимается из ПЗУ. Отметим, что нету прямой связи между линиями между линияи выбора адреса и выходом счётчика. Это важно, поскольку замыкание м на ­ на о на ¯ должно быть произведено за один такт. В одно и то же время, замыкание от м на - должно быть в 2901-ых. Эти два пути практически одинаковые по времени (в худшем случае 200 нс для 16-разрядной системы). Наличие конвейерного регистра позволяет выбирать микроинструкцию параллельно с операциями над данными, а не последовательно, позволяя удваивать тактовую частоту.

Эмуляция существующей ЭВМ на рис. 1 работает следующим образом. Последовательность микроинструкций из ППЗУ выполняется для выборки инструкции из основной памяти. Для этого счётчик команд, обычно из рабочего регистра 2901, обычно посылается в MAR и инкрементируется. Содержимое регистра инструкции посылается на ПЗУ для генерации адреса первой микроинструкции, которая должна быть выполнения для исполнения неоьходимой операции. Переход на этот адрес производится через счётчик-секвенсер. Некоторые микроинструкции могут исполняться для получения данных из памяти, выполнения операций АЛУ, теста на переполнение и т.д. Затем будет переход назад к выполнению цикла выборки микроинструкции. С этой точки может быть переход на другие секции микрокода. Например, ЭВМ может проверить возникновение прерывания и получить адрес начала процедуры обработки прерывания из другого ПЗУ, а не начать выборку другой инструкции.


1Информация из The Am2DOO Family Data Book, Advanced Micro Devices, Inc., 1976.


Am2901: 4-разрядный секционный микропроцессор.

Устройство, показанное на рис. 2. состоит из 16-ти 4-разрядных слов двухпортовой памяти, высокоскоростного АЛУ и ассоциированного сдвигателя, декодера и мультиплексора. 9-разрядное слово микроинструкции организовано в виде 3 групп из 3-х бит, которые опеределяют операнды АЛУ, функцию АЛУ и регистр сохранения результата из АЛУ. МП каскадируем, перенос сквозной, имеет тристабильные выводы и поддерживает разнообразные флаги состояния АЛУ. Используется техпроцесс ТТЛ-с-транзисторами-Шоттки.

Архитектура

Детальная диаграмма блоков показана на рис. 3. Схема 4-разрядная, каскадируемая до любого числа бит. Вся обработка данных внутри ИМ 4-разрядная. Ключевых элементов на диаграмме (рис. 3) два - двухпортовое ОЗУ 16х4 и высокоскоростное АЛУ.

Рис. 2.

Данные в любом из 16 слов ОЗУ могут быть прочитаны через порт А, управляемых 4-разрядным адресом поля А. Аналогично, данные из любого слова 16 слов, адресуемых адресом В могут быть одновременно считаны из порта В ОЗУ. Одинаковый код может быть применён к полям выбора А и В, в этом случае идентичные данные появятся на обеих портах ОЗУ А и В.

При разрешении сигналом "разрешение записи в ОЗУ" (RAM EN), новые данные всегда записываются согласно адресу в адресном поле В. Доступ в ОЗУ производится трёхвходовым мультиплексором. Такая конфигурация используется для сдвига данных на выходе мультиплексора (при желании) - на один бит влево или вправо или без сдвига.

Выходы порта ОЗУ А и В используют различные 4-разрядные защёлки. Эти регитры сохраняют значения ОЗУ пока тактирующий сигнал имеет низкий уровень. Это позволяет исключить любые гонки, которые могут происходить при записи данных в ОЗУ.

Высокоскоростное арифметико-логическое устройство (АЛУ) может исполнять три арифметические и пять догических операций над двумя 4-разрядными словами R и S. R поступает из двухвходового мультиплексора, поле S поступает из трёхвходового мультиплексора. Мультиплексоры имеют исключающую особенность - они могут вообще не передавать данных, что эквивалентно 0.

Рис. 3

На рис. 3 на вход R мультиплексор подаёт порт А ОЗУ или прямые входы данных (D)с входов МП. аналогично, на вход S мультиплексор подаёт порт А, порт В, регистр Q.

Вход D является прямым 4-разрядным входом, и используется для получения данных извне МП. Аналогично, этот вход может использоваться для модификации содержимого внутреннего ОЗУ. Регистр Q - отдельный 4-разрядный регистр, использующийся в основном для умножения и деления, но он также может быть использован как аккумулятор или внутренний регистр для некоторых приложений.

Схема мультиплексора даёт возможность выбора различных пар A, B, D, Q, и O входов как операндов АЛУ. Эти пять входов, выбираемые по 2 за раз, в результате дают десять возможных комбинаций пар операндов: AB, AD, AQ, AO, BD, BQ, BO, DQ, DO, и QO. Очевино, что AD, AQ, и AO несколько избыточны с BD, BQ, и BO в том, что если адреса А и В одинаковы, результаты будут идентичны. Поэтому, есть только 7 полностью неизбыточных пар операндов для АЛУ. МП Am2901 реализует 8 таких пар. Для выборки операндов МП используются входы I0, I1, и I2. Определения I0, I1, и I2 для 8 комбинаций операндов показаны в таблице 1, также показан восьмеричный код.

Входы I3, I4, and I5 микроинструкции используются для определения функции АЛУ. Определения этих входов показаны в таблице 2, также показан восьмеричный код.

Нормальная техника для каскадирования нескольких АЛУ использует разряды переноса. Генерация переноса G, и продвижение переноса, P, - выходы МП для использования схемы ускоренного переноса, такой как Am2902.

Таблица 1. Управление операндами АЛУ


 

Микрокод 

Операнды АЛУ

I2

I1

10

Восьмеричный код

R

S

L

L

0

A

Q

L

L

H

1

A

B

L

H

L

2

O

Q

L

H

H

3

O

B

H

L

L

4

O

A

H

L

H

5

D

A

H

H

L

6

D

Q

H

H

H

7

D

O

Таблица 2. Управление функционированием АЛУ

Микрокод

Функция АЛУ

Символ

I5

I4

I3

Восьмеричный код

L

L

L

0

R plus S

R+S

L

L

H

1

S минус R

S-R

L

H

L

2

R минус S

R-S

L

H

H

3

R или S

R V S

H

L

L

4

R и S

R L S

H

L

H

5

-R и S

-R L S

H

H

L

6

R иск-ИЛИ S

R" S

H

H

H

7

R иск-ИЛИ-НЕ S

-R" S-

Выход переноса, Cn+4, также генерируется и доступен для использования как флаг переноса в регистре статуса. Оба вход переноса и выход переноса (Cn) и (Cn+4) активны высоким уровнем.

АЛУ имеет ещё три статусных выхода - F3, F = 0, и переполнение (OVR). Выход F3 - самый значащий бит АЛУ и может быть использован для определения положительного или отрицателього результата без открытия тристабильных выходов данных. F3 неинвертирован по отношению к выходу знака Y3. Выход F = 0 используется для определения нулевого результата. Этот выход имеет тип "открытый коллектор" и может быть соединён с такими же выводами других МП по схеме "монтажное И". F = 0 имеет высокий уровень когда выходы F имеют низкий уровень. Выход переполнения (OVR) используется для отметки арифметических операций, при которых результат операции превышает максимальное значение по модулю 2. Выход переполнения (OVR) имеет высокий уровень при наличии переполнения, отметим, что Cn+3 и Cn+4 имеют разную полярность.

Выход данных АЛУ может быть направлен по разным направлением. Это может быть выход данных устройства, или же адрес ОЗУ или регистр Q. Восемь возможных комбинаций результата АЛУ определяются входами микроинструкции I6, I7, и I8. Эти комбинации показаны в таблице 3.

Выходное 4-разрядное поле (Y) имеет тристабильный выход и может быть прямо использовано для организации шины. Управление выходом (OE) используется для разрешения тристабильных выходов. Когда на OE подан высокий уровень HIGH, выходы Y находятся в третьем состоянии.

Двухвходовый мультиплексор также используется для перенаправления вывода из порта ОЗУ А или от выходов АЛУ (F) на выходы МП Y. Выбор управляется входами микроинструкции I6, I7, и I8, как показано в табл. 3.

Как уже было сказано, входы ОЗУ управляются трёхвходовым мультиплексором. Это позволяет выходам АЛУ быть использованными несдвинутыми или сдвинутыми на один бит влево или вправо. У сдвигателя есть 2 порта, один обозначен RAM0 и другой RAM3. Оба порта имеют буфер с тристабильным выходом и входом, соединённым с мультиплексором. В режиме сдвига влево буфер RAM3 разрешается и RAM0 вход мультиплексора разрешён. Аналогично, в режиме сдвига вправо, буфер RAM0 и вход RAM3 разрешены. В режиме без сдвига, оба буфера находятся в третьем состоянии и входы мультиплексора не разрешены. Сдвигатель контролируется битами I6, I7, и I8 входов микроинструкции, как показано в табл. 3.

Таблица 3 Управление результатом АЛУ

Микрокод

функция RAM

функция Q-регистра

 

выход Y

сдвигатель RAM

Q
сдвигатель

I8

I7

I6

Восьмеричный код

Сдвиг

Загрузка

Сдвиг

Загрузка

RAM0

RAM3

Q0

Q3

L

L

L

0

X

None

None

Fо Q

F

X

X

X

X

L

L

H

1

X

None

X

Нет

F

X

X

X

X

L

H

L

2

Нет

Fо B

X

Нет

A

X

X

X

X

L

H

H

3

Нет

Fо B

X

Нет

F

X

X

X

X

H

L

L

4

Вниз

F/2о B

Вниз

Q/2о Q

F

F0

IN3

Q0

IN3

H

L

H

5

Вниз

F/2о B

X

Нет

F

F0

IN3

Q0

X

H

H

L

6

Вверх

2Fо B

Вверх

2Qо Q

F

IN0

F3

IN0

Q3

H

H

H

7

Вверх

2Fо B

X

Нет

F

IN0

F3

X

Q3

 


X-не имеет значения. Электрически, ножка сдвига - это ТТЛ вход соединённый внутри со тристабильным выходом, который находится в третьем состоянии.

B-регистр адресует входами В.

Вверх - к MSB. Вниз - к LSB.

Соотвественно, регистр Q обслуживается трёхвходовым мультиплексором. В режиме без сдвига, мультиплексор подаёт данные АЛУ на вход регистра Q . В случае сдвига, мультиплексор выбирает данные регистра Q соответственно сдвинутыми влево или вправо. У сдвигателя Q тоже имеется 2 порта - один Q0 и другой Q3. Операции с этими портами аналогичны сдвигателю RAM и так же управляются битами I6, I7, и I8 как показано в табл. 3.

Вход синхронизации 2901 управляет ОЗУ, регистром Q и защёлками А и В. При разрешение, данные тактируются в регистрQ по переднему фронту тактового сигнала. Когда уровень тактового сигнала высокий, защёлки А и В открыты и подают данные, присутствующие на выходах ОЗУ. Когда уровень тактового сигнала низкий, защёлки закрыты и хранят последние введённые данные. Если сигнал RAM EN активен, новые данные будут записаны в ОЗУ (слово), определённое адресом В когда уровень тактового сигнала низкий.

Всего есть 8 пар операндов АЛУ, выбираемых I0, I1, и I2 входами инструкции. АЛУ исполняет 8 функций - 5 логических и 3 арифметических. Входы инстукции I3, I4, и I5 управляют выборкой функции. Вход переноса, Cn, так же влияет на результат функции АЛУ при арифметической операции и не имеет значения при логической операции. При совместном рассмотрении входов от I0 до I5 и Cn, получается результирующая таблица 4, которая полностью определяет операцию для каждого состояния АЛУ и входов.

Функции АЛУ могут быть рассмотрены как "задачи" т.е. сложение, вычитание, И, ИЛИ, и т.д. В арифметическом режиме перенос влиет на выполняемую функцию, чего нет в логическом режиме. В таблице 5 определены различные логические операции, выполняемые 2901, таблица 6 определяет арифметические функции 2901 с учётом состояния переноса (Cn = 0) и (Cn = 1).

Логические функции для G, P, Cn+4, и OVR

Четыре сигнала G, P, Cn+4, и OVR указывают на возникновение переноса, переполнения если 2901 выполняет арифметическую операцию. Таблица 7 показывает логические выражения для этих четырёх сигналов для каждой из 8 функций АЛУ. Входы II и S - два входа, выбираемых согласно таблице 1.

Вводы/выводы 2901

A0-3

Четыре адресные входа выбора регистра, адресованого как порт А.

B0-3

Четыре адресные входа выбора регистра, адресованого как порт В.

I0-8

Девять линий управления микроинструкцией 2901, определяющие операнды АЛУ (I0,1,2), функцию АЛУ (I3,4,5), и как будут сохранены данные - в ОЗУ или регистре Q (I6,7,8).

O3, RAM3

Линия сдвига СЗР регистра Q (Q3) и RAM3 регистров (RAM3). Электрически линии - тристабильные выходы, подключенные к внутренним ТТЛ 2901. Когда код результата I6,7,8 показывает сдвиг влево, (восьмеричное 6 или 7), тристабильные выходы разрешаются и СЗР регистра Q доступны на выходе Q3 и СЗР АЛУ доступен на выходе RAM3 . Иначе, выходы находятся в третьем состоянии. Когда происходит сдвиг вправо, эти вызоды используются как входы СЗР регистра Q register (восьмеричное 4) и ОЗУ (восьмеричное 4 или 5).

O0, RAM0

Линии сдвига аналогичные Q3 и RAM8, но для МЗР регистра Q и ОЗУ. Выходы соединены с Q3 и RAM3 следующего устройства для обеспечения сдвига данных между устройствами при сдвиге вправо/влево регистра Q и данных АЛУ.

D0~3

Прямые входы данных. 4-разрядное поле данных, которое может быть выбрано как операнд АЛУ для введения данных в 2901. D0 является МЗР.

Y0-3

Четыре выхода данных Am2901. Тристабильны. При разрешении становятся 4-мя выходами АЛУ или данными порта А ОЗУ, согласно коду I6,7,8.

OE

Разрешение выхода. В высоком состоянии выходы Y отключены, в низком состоянии вызоды Y активны (0 или 1).

P, G

Генераация и распространение переноса АЛУ 2901. Сигналы используются для ИМ ускоренного переноса 2902. См. таблицу 7, где описаны уравнения формирования сигналов.

OVR

Переполнения. Выход - логическое исключающее ИЛИ между входом переноса и выходом СЗР АЛУ. В самом наиболее значащем конце слова выход указывает на превышения диапазона знаковой арифметики по модулю 2 (см. табл. 7).

F = 0

Выход типа "открытый коллектор", высокий уровень (отключено) обозначает что все выходы АЛУ F0~3 в логическом 0. В позитивной логичке это обозначает, что результат операции АЛУ равен 0.

Cn

Вход переноса для АЛУ Am2901.

Cn+4

Выход переноса АЛУ Am2901. См. табл. 7.

CP

Тактирующий сигнал Am2901. Выходы регистра Q и регистрового ОЗУ изменяются по фронту сигнала. Во время нахождения сигнала в низком состоянии можно производить запись в ОЗУ 16х4, в основные защёлки - вторичные защёлки ОЗУ закрыты, сохраняя прежде записанные на выходах ОЗУ данные, что позволяет синхронизировать защёлкивание данных.

Расширение Am2901

Любое количество 2901 может быть соединено для получения МП с разрядностью 12, 16, 24, 36, или больше бит. Рис. 4. иллюстрирует соединение трёх 2901 для получения 12-разрядного МП с последовательным переносом. Рисунок 5 иллюстрирует создание 16-разрядного МП с использованием схемы ускоренного переноса, и рисунок 6 - общую схему ускоренного переноса для длинных слов.

За исключением подключений разрядов переноса, все схемы расширений одинаковы. Контакты Q3 и RAM3 - двунаправленные линии сдвига СЗР устройств. Для всех устройств кроме наиболее старшего, эти линии подключены к Q0 and RAM0 контактам более младшего устройства. Эти соединения позволяют регистрам Q всех 2901 быть сдвинутыми влево или вправо как одному n-разрядному регистру, и так же позволяют выходным данным АЛУ быть сдвинутыми влево или вправо как длинному n-разрядному слову перед сохранением в ОЗУ. На обоих концах (МЗР и СЗР) контакты сдвига должны быть соединены с тристабильными мультиплексорами, которые управляются микрокодом для выбора соответствующих входных сигналов для контактов сдвига. (см. рис. 7).

Выходы с ОК F = 0 всех 2901 соединены вместе, к ним подведено питание через резистор. Эта линия имеет высокий уровень, только если выходы всех АЛУ содержат только нули. Большинство процессоров использует эти биты как Z (zero) бит слова статуса процессора.

Выходы переполнения и F'8 в основном используются только на СЗР-конце массива 2901, и полезны только при использовании знаковой арифметики по модулю 2. Выход переполнения является исключающим ИЛИ между входом переноса и выходом переноса СЗР. Он имеет высокий уровень, когда результат арифметической операции содержит больше бит чем есть в наличии, поэтому бит знака сейчас содержит ошибку. Фактически, это бит переполнения (V) статуса процессора. Выход F8 - СЗР выхода АЛУ. Фактически это знак результата при арифметике по модулю 2, и должен быть использован как бит знака (N) в слове статуса процессора.

Выход переноса старшего 2901 (Cn+4 ) - выход переноса всего массива 2901, и используется как бит переноса (C) слова статуса процессора.

Соединение переносов между устройствами может использовать распространение переноса или ускоренный перенос. Для распространения переноса, выход переноса каждого устройства (Cn+4) соединён с входом переноса (Cn) следующего более старшего устройства. Ускоренный перенос использует генератор ускоренного переноса 2901. Рисунки 5 и 6 иллюстрируют эти схемы.

Линии сдвига в концах массива 2901

Передача данных при сдвиге вправо/влево регистра Q и ОЗУ производится через двунаправленные линии. На концах массива используются тристабильные мультиплексоры для коммутации входов для регистров. Рисунок семь показывает 2 мультиплексора Am25LS253, двойных, четырёхвходовых, которые исопльзуются для введения четырёх режимов сдвига. Бит инструкции 17 (от 2901) обозначает, когда активны мультиплексоры сдвига вправо или сдвига влево. (См. табл. 8). Четыре режима сдвига в этом примере являются:

Нуль 
 
 

Один 

Вращение

Арифметический

Нуль двигается в СЗР ОЗУ при сдвиге вправо. Если регистр Q тоже сдвигается, 0 двигается в СЗР регистра Q. Если ОЗУ или оба регистра сдвигаются влево, 0 появляется с МЗР.

Тоже как и нуль, но двигается логическая единица в МЗР или СЗР.

Вращение одинарной точности. СЗР ОЗУ сдвигается в МЗР при сдвиге вправо, и МЗР сдвигается в СЗР при сдвиге влево. Регистр Q сдвигается таким же образом.

Арифметический сдвиг двойной длины происходит если регистр Q также сдвигается. При сдвиге влево, 0 загружается в региср Q, и СЗР регистра Q загружается в МЗР ОЗУ. При сдвиге вправо, МЗР ОЗУ загружаетя в СЗР регистра Q, а СЗР выхода АЛУ (Fn, бит знака), загружается в СЗР ОЗУ. (Этот бит будет также следующим МЗР ОЗУ).

Аппаратное умножение

Рисунок 8 иллюстрирует соединения, необходимые для аппаратного умножения на 2901. Показанная система использует 2 устройства для умножения 8х8, но расширение разрядности простое - необходимы соединения только СЗР и МЗР.

Используется алгоритм на базе сложения и сдвига. Один такт необходим для каждого бита множителя. В каждом цикле рассматривается МЗР множителя, если он равен 1, множимое добавляется к частичному произведению. Затем частичное произведение сдвигается на один бит в сторону МЗР, и множитель так же сдвигается на один бит в сторону МЗР. Старый МЗР множителя пропадает. Цикл повторяется для нового МЗР множителя, которое находится в Q0.

Множимое находится в регистре Q. Множимое - один из регистров ОЗУ, Ra. Произведение получается в ином регистре ОЗУ, Rb.

Входы А адресуют множимое в Ra, входы В адресуют частичное произведение в Rb. В каждом цикле Ra добавляется к Rb, основываясь на МЗР регистра Q ( Q0 ), и оба - регистр Q и выход АЛУ сдвигаются влево на один бит. Инструкции для 2901 в каждом цикле должны быть:

I8,7,6 = 4 (сдвиг входа регистра ОЗУ и регистра Q влево)

I5,4,3 = 0 (Сложить)

I2,1,0 = 1 or 3 (выбрать A, B или O, B как операнды АЛУ) Рисунок 8 показывает соединения для умножения. Номера в кружках относятся к нижеследующим параграфам.

1 смежные контакты регистра Q и сдвигателей ОЗУ соединены вместе так, что регистры Q обоих (всех) 2901 сдвигаются влево или вправо как один регистр. Аналогично, вся таблица 8:

Код 

Источник новых данных

 

Сдвиг


Тип

I7

S1

S0

Q0

Qn

RAM0

RAMn

H

L

L

0

Qn-1

0

Fn-1

 
 
 

Вверх (Вправо)


Нуль
Один
Вращение
Арифметический

H

L

H

1

Qn-1

1

Fn-1

H

H

L

Qn

Qn-1

Fn

Fn-1

H

H

H

0

Qn-1

Qn

Fn-1

L

L

L

Q1

0

F1

0

 

Вниз (Влево)


Нуль
Один
Вращать
Арифметический

L

L

H

Q1

1

F1

1

L

H

L

Q1

Q0

F1

F0

L

H

H

Q1

F0

F1

RAMn = RAMn-1 = Fn


 

8-разрядный (или более) выход АЛУ может быть сдвинут как единый регистр до сохранения в регистровом ОЗУ.

2 Выход сдвига на МЗР регистра Q опеределяет, будут ли операнды АЛУ А и В (сложение множимого с частичным произведением) или 0 и В (без сложения). Бит инструкции I1 выбирает между А и В или 0 и В как опернадами, он может быть взят прямо - как МЗР множителя.

3 Как только частичное произведение появляется на входе регистрового ОЗУ, оно сдвигается влево сдвигателем ОЗУ. Новый МЗР частичного произведения, вычисление которого закончено и не будет изменено следующими операциями, доступен на выходе RAM0 . Этот сигнал возвращается в СЗР регистра Q, затем, в каждом цикле, вычисленный СЗР произведения перемещается в СЗР регистра Q, регистр Q наполняется наименее значащей частью произведения.

4 Если выход АЛУ сдвигается вправо каждый цикл, бит знака нового частичногопроизведения должен быть вставлен в вход сдвига СЗР ОЗУ. Флаг F3 будет корректным знаком частичного произведения до возникновения переполнения. при возникновении переполнения при сложении или вычитании, флаг OVR flag будет "1", и F3 не будет правильным знаком результата. Знак результата должен быть дополнением F3. Корректный бит знака для сдвига в частичное произведения будет F3 +OVR; то есть, F3 если нет переполнения, и F3 если есть переполнение. На последнем цикле, когда СЗР множителя рассмотрен, д.б. применено скорее условное вычитание, а не сложение, потому что бит знака множителя содержит именно отрицательный вес множителя.

Y = -Y12i + Yi-12i-1 + .. + Y020

Эта схема даёт верный результат по модулю 2 для всех множимых и множителей в нотации по модулю 2.

Рисунок 9 - таблица, показывающая входные состояния 2901 для каждого шага знакового умножения в арифметике по модулю 2.

Am2909 - Счетчик микрокоманд

Общее описание

2909 - 4-разрядный контроллер адреса, предназначенный для управления адресом микроинструкций, выбираемых из ОЗУ или ПЗУ. Два 2909 могут генерировать 8-разрядный адрес (256 слов), три - 12-разрядный - 4096 слов. На рисунке 10 показана структурная схема 2909.

2909 может выбирать адрес из четырёх источников: 1) множество внешних прямых входов (D); 2) внешние данные с входов R, сохранённые во внутренних регистрах, 3) стек глубиной в 4 слова, 4) регистр-счётчик команд (обычно содержащий адрес последней команды + 1. Стек включает в себя несколько линий управления для эффективного управления вложенными подпрограммами. К каждому из четырёх выходов может быть применено логическое ИЛИ с внешним входом для условных инструкций перехода, отдельная линия сбрасывает выходы в нуль. Выходы тристабильны.

Архитектура Am2909

Детальная блок-схема показана на рис. 11. Устройство состоит из четырёхвходовго мультиплексора, выбирающего или адресный регистр, прямые входы, счётчик микропрограмм или стек в качестве адреса следующей микрокоманды. Мультиплексор управляется входами S0 и S1.

Адресный регистр состоит из 4-х триггеров типа D, тактируемых по входу сигнала, с общим разрешением тактирования. Когда сигнал разрешения АР имеет низкий уровень, новые данные постпуют в АР по фронту тактового сигнала. АР доступен мультиплексору как источник адреса команды. Прямой вход - четыре входа ИМ, подведённые к мультиплексору.

2909 содержит счётчик микропрограмм (m PC) который состоит из 4-битного инкреметора с 4-битным регистром. that is composed of a 4-bit incrementer followed by a 4-bit register.

Инкрементор имеет вход переноса (Cn) и выход переноса (Cn+4), т.о. он легко каскадируется. m PC может быть использован двумя способами. Когда самый младший вход переноса содержит 1, счётчик микрокоманд загружается на следующем такте значением выходов Y плюс 1 (Y + 1 о m PC). Так исполняются последовательные микроинструкции. Если же этот вход переноса C0 содержит 0, инкремента не происходит, и адрес не изменяется. (Y о m PC). Так одна микроинструкция может быть исполнена некоторое количество раз.

Последний источник адреса - файл 4-разрядных регистров (стек). Стек используется для хранения адресов возврата из подпрограмм. Стек содержит встроенный указатель стека, который всегда указывает на последнее записанное слово. Это позволяет делать замыкание стека без лишних команд push / pop.

Указатель стека работает как инкрементно/декрементный счётчик с раздельными входами push/pop и активации стека. Если вход активации содержит "0", и вход push/pop "1", производится операция PUSH. Указатель стека инкрементируется и в стек записывется адрес следующей за командой перехода, инициироваашей PUSH, микроинструкции.

Если вход активации содержит "0" и вход push/pop содержит "0", происходит операция POP. Используется адрес возврата из подпрограммы, при этом по фронту тактового сигнала указатель стека декрементируется. Если вход активации содержит "1", никаких действий со стеком не происходит.

Естественно, вложенность микроинструкций не должна превышать 4.

Вход ZERO используется для сброса всех четырёх выходов в 0. Вход активен низким уровнем. Каждый выходной разряд Y также имеет отдельных вход для совершения операции логического ИЛИ, что позволяет совершать условные переходы к разным микроинструкциям согласно запрограммированным условиям.

Выходы Y 2909 - тристабильные, что может быть полезно при автоматическом контроле МП для подачи адреса микропрограммы извне.

Некоторые определения

Определим некоторые сигналы, относящиеся к микрокоду. На рисунке 12 показаны базовые соединения 2909, памяти и регистра микроинструкций. Данные опеределения применимы к этой архитектуре.

Входы Am2909
 

S1, S0

Управляющие линии выбора генератора адреса

FE, PUP

Управляющие линии push/pop стека.

RE

Линия разрешения внутренних адресных регистров

ORi

Входы логического ИЛИ для каждой выходной линии.

ZERO

Вход логического И для выходных линий.

OE

Разрешение выхода. Когда OE имеет высокий уровень, выходы Y находятся в третьем состоянии.

Cn

Вход переноса для инкрементора

Ri

Входы внутреннего регистра адреса

Di

Прямые входы на мультиплексор

CP

Тактовая частота адресного регистра, m PC регистра и стека.


 

Выходы Am2909
 

Yi

Адресные выходы Am2909 (адресные входы для памяти микроинструкций).

Cn+4

Выход переноса инкрементора.

Внутренние сигналы

m PC 

Содержимое счётчика микрокоманд.

REG

содержимое регистра

STK0-STK3

Содержимое push/pop стека. По определению, слово в стеке 4х4, адресуемое по указателю стека есть STK0. Данные загружаются в STK0; последовательные push перемещают STK0 в STK1; pop перемещает STK3 о STK2 о STK1 о STK0. Физически, только указатель стека изменяется при выполнении операций push или pop, данные не перемещаются, доступ происходит только через STK0.

SP

Содержимое указателя стека.

Внешние к Am2909
 

Адрес управляющей памяти.

I(A)

Интсрукция в управляющей памяти по адресу A.

m WR

Содержимое регистра микрослова (выход управляющей памяти). Регистр микрослова содержит текущую исполняемую инструкцию.

Tn

Период тактовой частоты n.

Операции Am2909

Рисунок 13 показывает коды выборки мультиплексора. 2 бита из регистра микрослова (и доплнительная комбинационная логика переходов) определяют, какой источник адреса содержит адрес следующей микроинструкции. Содержимое выбранного источника появится на выходах Y. На рис. 13 так же изображена таблица истинности для управления выходами и управления стеком. Таблица 9 показывает эффект от уровней S0, S1, FE, и PUP для Am2909.

Эти четыре сигнала определяют, какой адрес появится на выходах Y, и какое состояние внутренних регистров будет после прохождения фронта тактовой частоты. Согласно рисунку, счётчик микрокоманд сначала сожержит некоторое слово J, адресный регистр - K, и есть 4 слова в стеке - от Ra до Rd.

Рис. 14 показывает исполнение подпрограммы с помощью 2909. подразумевается конфигурация, изображённая на рис. 11. Инструкция, исполняющаяся в данное время, находится в регистре микрослова (m WR). Содержимое m WR также косвенно управляет четырьмя сигналами S0, S1, FE, и PUP. Начальный адрес подпрограммы подводится к входам D Am2909 в то же время.

В столбцах слева находится последовательность микроинструкций, которые будут исполнены. По адресу J + 2, порция микроинструкции, управляющая исполнением, содержит команду "Переход к подпрограмме A." во время T2, она находится в m WR, и входы 2909 выставлены для выполнения перехода и сохранения адреса возврата. Адрес подпрограммы A подан на входы D из m WR и он появится на выходах Y. Первая инструкция подпрограммы I(A) выбирается и подаётся на входы m WR. во время следующего такта I(A) загружается в m WR для выполнения, и адрес возврата J + 3 ложится на стек. Инструкция возврата исполняется во время T5.

Таблица 9. Выходы и внутренние регистровые состояния следующего цикла для Am2909


 

Цикл 

S1, S0, FE, PUP

m PC

REG

STK0

STKI

STK2

STK3 

YOUT

Комментарий

Использование

N

N+1

0 0 0 0

. . . . . .

J

J+1

K

K

Ra

Rb

Rb

Rc

Rc

Rd

Rd 

Ra


J

. . .


Pop для стека

Конец
цикла

N

N +1

0 0 0 1

. . . . . .

J

J +1

K

K

Ra

J

Rb

Ra

Rc

Rb

Rd 

Rc


J

. . .


Push m PC

Начало
цикла

N

N+1

0 0 1 X

. . . . . . .

J

J+1

K

K

Ra

Ra

Rb

Rb

Rc

Rc

Rd

Rd


J

. . .


Продолжение

Продолжение

N

N + 1

0 1 0 0

. . . . . .

J

K+ 1

K

K

Ra

Rb

Rb

Rc

Rc

Rd

Rd

Ra 


K

...


Pop для стека;

Используется АР для адреса

Конец
цикла

N

N + 1

0 1 0 1

. . . . . .

J

K+ 1

K

K

Ra

J

Rb

Ra

Rc

Rb

Rd

Rc


K

...


Push m PC;

Переход по адресу в АР

JSR AR

N+ 1

0 1 1 X

. . . . . . .

K + 1

K

Ra 

Ra

Rb 

Rb

Rc 

Rc

Rd

Rd


K

. . .


Переход по адресу в АР

JMP AR

N

N+1

1 0 0 0

. . . . . .

J

Ra+1

K

Ra 

Rb

Rb 

Rc

Rc 

Rd

Rd

Rc 


Ra

...


Переход по адресу в STK0;

Pop для стека

RTS

N

N+1


1 0 0 1

. . . . . .


J

Ra+1


K

K


Ra

J


Rb

Ra


Rc

Rb


Rd 

Ra


R

...


Переход по адресу в STK0;

Push m PC

N

N + 1


1 0 1 X

. . . . . . .


J

Ra+ 1


K

K


Ra

Ra


Rb

Rb


Rc

Rc


Rd 

Rd 


Ra

. . .


Переход по адресу в STK0

Обращение к стеку
(цикл)

N

N +1


1 1 0 0

. . . . . .


J

D+1


K

K


Ra

Rb


Rb

Rc


Rc

Rd


Rd 

Ra 


D

...


Pop для стека;

Переход по адресу из D

Конец
цикла

N +1


1 1 0 1

. . . . . .


D +1


K


Ra 

J


Rb 

Ra


Rc 

Rb


Rd 

Rc


D

. . .


Переход по адресу в D 

Push m PC

JSR D

N

N +1


1 1 1 X

. . . . . . .


J

D+1


K

K


Ra

Ra


Rb

Rb


Rc

Rc


Rd 

Rd


D

. . .


Переход по адресу из D

JMP D

X = не имеет значения, 0 = низкий уровень, 1 = высокий уровень, Предполагаем Cn = 1.

Отметим: STK0 - регистр, адресуемый указателем стека.

Приложения