ЭУМК по дисциплине "Проектирование проблемно-ориентированных вычислительных средств" › Теория › Тема 3. Операционное устройство процессоров платформы с5000

# Электронный учебно-методический
комплекс по дисциплине
"Проектирование проблемно-ориентированных вычислительных средств"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

3.4. Центральное арифметическое устройство
3.4.1. Состав и основные узлы центрального АУ

В состав центрального АУ входят следующие функциональные компоненты:

- 40-битное арифметическо-логическое устройство (ALU) со схемой расширения знака;
- два 40-битных регистра-аккумулятора А и В с мультиплексорами на входе;
- сдвигатель с возможностью сдвига в диапазоне от -16 до 31 разряда;
- блок умножения/аккумулирования со сдвигателем;
- временный 16-битный регистр (T);
- регистры состояния и режима процессора (ST0, ST1, PMST);
- 16-битный регистр перехода (TRN) для хранения результата команды CMPS в алгоритме Виттерби;
- устройство сравнения, выборки и сохранения (CSSU);
- устройство экспоненциального кодирования.

Регистры центрального АУ являются регистрами с отображением на память, что позволяет их быстро сохранять и восстанавливать.

3.4.2. Регистры состояния и режима процессора

C54x DSP имеет три регистра состояния и управления:

- Регистр состояния 0 (ST0)
- Регистр состояния 1 (ST1)
- Регистр состояния режима процессора (PMST)

ST0 и ST1 содержат биты состояния блоков АУ и различных условий; PMST содержит режимы установки памяти и информацию управления. Потому что эти регистры отображаются на память, они могут быть записаны и прочитаны из памяти данных; состояние процессора может быть сохранено и восстановлено в процедуре обработки прерываний (ISRs).
Отдельные биты регистров ST0 и ST1 могут быть установлены или очищены командами SSBX и RSBX. Например, режим расширения знака может быть установлен командой SSBX SXM или сброшен командой RSBX SXM. Поля ARP, DP и ASM могут быть загружены командой LD с коротким непосредственным операндом. Поля ASM и DP могут быть также загружены командой LD из памяти данных.
Биты регистра ST0 показаны на рис. 3.9 и описаны в табл. 3.8, а биты регистра ST1 – на рис. 3.10 и в табл. 3.9.

15-13 | 12 | 11 | 10 | 9 | 8-0
ARP | TC | C | OVA | OVB | DP

###### Рисунок 3.9 – Формат регистра состояния 0 (ST0)

Таблица 3.8 - Назначение битов регистра состояния 0 (ST0)

Бит | Имя | После сбр. | Функция
15-13 | ARP | 0 | Указатель вспомогательных регистров. Это 3-х битовое поле выбирает вспомогательный регистр, используемый в режиме совместимости при косвенной адресации единственного операнда. ARP должен всегда устанавливаться в ноль, когда DSP находится в стандартном режиме (CMPT = 0)

12

TC

1

Тест/контроль флаг. TC хранит результаты проверки битов в арифметическо-логическом устройстве (ALU). На TC действуют команды BIT, BITF, BITT, CMPM, CMPR, CMPS и SFTC. Состояние (установлен или очищенный) TC определяет, условие выполнения команд перехода.
TC = 1 в следующих случаях:
проверенный командой BIT или BITT в 1;
проверяемое командами CMPM, CMPR или CMPS условие истинно
биты 31 и 30 сумматора, проверяемогокомандой SFTC имеют отличные друг от друга значения

11 | C | 1 | Бит переноса устанавливается в 1, если в результате сложения получается перенос и сбрасывается в 0, если в результате вычитания производится заем. Иначе, он сбрасывается при сложении и устанавливается после вычитания, если это не ADD или SUB со сдвигом на 16 бит. В этом случае, ADD может только устанавливать, а SUB только сбрасывать бит, но не иначе. Перенос и заем определяются по 32-му биту ALU. Команды сдвига (ROR, ROL, SFTA и SFTL) и MIN, MAX, ABS и NEG также влияют на этот бит.
10 | OVA | 0 | Флаг переполнения аккумулятора A. OVA устанавливается в 1, когда происходит переполнение в ALU или сумматоре умножителя и результат заносится в A. Если произошло переполнение, OVA остается установленным, пока не будет проверен и сброшен командами BC[D], CC[D], RC[D] или XC, использующими условия ANOV и AOV. Команда RSBX также может очистить этот бит
9 | OVB | 0 | Флаг переполнения аккумулятора B. OVB устанавливается в 1, когда происходит переполнение в ALU или сумматоре умножителя и результат заносится в B. Если произошло переполнение, OVB остается установленным, пока не будет проверен и сброшен командами BC[D], CC[D], RC[D] или XC, использующими условия BNOV и BOV. Команда RSBX также может очистить этот бит
8-0 | DP | 0 | Указатель страницы памяти данных. Это 9-битное поле объединяется с семью младшими (LSBs) битами слова инструкции, чтобы сформировать прямой адрес память из 16 бит для адресации единственного операнда памяти данных. Это действие выполняется, если бит способа компиляции в ST1 (CPL) = 0. Поле DP может быть загружено командой LD с коротким непосредственным операндом или из памяти данных

15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4-0
BRAF | CPL | XF | HM | INTM | 0 | OVM | SXM | C16 | FRCT | CMPT | ASM

###### Рисунок 3.10 – Формат регистра состояния 1 (ST1)

Таблица 3.9 - Назначение битов регистра состояния 1 (ST1)

Бит | Имя | После сбр. | Функция
15 | BRAF | 0 | Флаг активности повторения блока. BRAF указывает, является ли повторение блока в настоящее время активным. BRAF=0 - повторение блока неактивно. BRAF очищается, когда счетчик повторение блока (BRC) уменьшается до 0. BRAF=1 - повторение блока активно. BRAF автоматически устанавливается, когда выполняется команда RPTB
14 | CPL | 0 | Способа компиляции. CPL указывает, который указатель используется при прямой адресации: CPL=0 - прямой относительный способ адресации использует указатель страницы (DP) в качестве базового адреса CPL=1 - прямой относительный способ адресации использует указатель стека (SP) в качестве базового адреса
13 | XF | 1 | Состояние XF. XF указывает состояние вывода внешнего флага (XF), который является выводом общего назначения. Команда SSBX может устанавливать бит XF, а RSBX – сбрасывать

12

HM

0

Способ захвата. HM указывает, продолжает ли процессор внутреннее выполнение программы, при подтверждении активного сигнала захвата HOLD:
HM=0 - процессор продолжает выполнение из внутренней памяти программ, но переводит внешний интерфейс в третье состояние
HM=1 - процессор останавливает внутреннее выполнение

11 | INTM | 1 | Режим прерывания. INTM маскирует или разрешает все прерывания. INTM=0 - все незамаскированные прерывания разрешены INTM=1 - все маскируемые прерывания запрещены Команда SSBX устанавливает INTM, а RSBX – сбрасывает. INTM устанавливается в 1 при сбросе или когда принимаются маскируемые прерывания (INTR или внешние). INTM сбрасывается в 0, когда выполняются команды RETE или RETF (возврат из прерывания). INTM не затрагивает немаскируемые прерывания (RS и NMI). INTM не может быть установлен записью в память
10 |  | 0 | Всегда читается как 0

9

OVM

0

Режим переполнения. OVM определяет то, что загружается в аккумулятор-приемник, когда происходит переполнение:
OVM=0 - результат переполнения ALU или сумматора умножителя записывается в приемник как он есть
OVM=1 - в случае переполнения в аккумулятор заносится или максимальное положительное значение (00 7FFF FFFFh) или наибольшее отрицательное (FF 8000 0000h)
Команды SSBX и RSBX управляют битом OVM

8 | SXM | 1 | Режим расширения знака. SXM определяет, выполняется ли расширение знака: SXM=0 - расширение знака подавлено SXM=1 – знак данных, расширяется на старшие разряды перед использованием в ALU SXM не влияет на выполнение некоторых команд: ADDS, LDU, MAC и SUBS инструкции подавляют расширение знака независимо от значения SXM. Команды SSBX и RSBX устанавливают и сбрасывают SXM соответственно
7 | C16 | 0 | Режим арифметики двойной 16-битный/двойная точность. C16 определяет способ выполнения арифметический действий в ALU: C16=0 - ALU работает в режиме арифметики двойной точности C16=1 - ALU работает в режиме двойной 16-битной арифметики
6 | FRCT | 0 | Режим умножения. Когда FRCT = 1, произведение после умножителя сдвигается влево на один разряд, чтобы компенсировать дополнительный бит знака
5 | CMPT | 0 | Режим совместимости. CMPT определяет режим совместимости для ARP: CMPT=0 - ARP не обновляется при косвенной адресации с единственным операндом памяти данных. ARP должен всегда устанавливаться в 0, когда DSP находится в этом режиме. CMPT=1 - ARP обновляется при косвенной адресации с единственным операндом памяти данных, кроме случая, когда команда выбирает вспомогательный регистр 0 (AR0)
4-0 | ASM | 0 | Режим сдвига аккумулятора. 5-битовое поле ASM определяет величину сдвига в пределах диапазона от -16 до 15 и закодировано как число в дополнительном коде. Инструкции с параллельным сохранением, также как STH, STL, ADD, SUB и LD, используют это значение для сдвига. ASM может быть загружен командой LD из памяти данных или коротким непосредственным операндом

Регистр PMST загружается командами записи в регистры с отображением на память типа STM. Биты регистра PMST показаны на рис. 3.11 и описаны в табл. 3.10.

15-7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
IPTR | MP/MC | OVLY | AVIS | DROM | CLKOFF† | SMUL† | SST†

† Эти биты поддерживаются процессором C5402 и несколькими другими процессорами семейства C54.

###### Рисунок 3.11 – Формат регистра состояния режима процессора PMST

Таблица 3.10. Назначение битов регистра состояния режима процессора PMST

Бит | Имя | После сбр. | Функция
15-7 | IPTR | 1FFh | Указатель векторов прерывания. 9-битовое поле IPTR указывает страницу длиной 128 слов в памяти программ, где находятся вектора прерываний. Вы можете переназначить адрес таблицы векторов в ОЗУ. При сбросе, все эти биты установлены в 1 и вектор сброса всегда находится по адресу FF80h в памяти программ. Команда RESET не затрагивает это поле
6 | MP/MC | состояние вывода MP/MC | Режим микропроцессор / микрокомпьютер. MP/MC включает / выключает внутреннее ПЗУ в адресное пространство памяти программ. MP/MC=0 - внутренняя ROM включено и адресуемо. MP/MC=1 - внутренняя ROM не доступно. MP/MC устанавливается в состояние логического уровню на выводе MP/MC когда выполняется сброс. Состояние этого вывода не имеет значения до следующего сброса. Команда RESET не затрагивает этот бит. Этот бит может также быть установлен или очищен программно
5 | OVLY | 0 | Оверлей RAM. OVLY позволяет блокам внутренней памяти данных с двойным доступом RAM быть включенной в память программ. Значение бита OVLY: OVLY=0 - внутренняя RAM адресуется в области данных, но не в области программ OVLY=1 - внутренняя RAM адресуется в области программы и области данных. Однако данные страницы 0 (адреса 0h-7Fh), не включаются в память программ

4

AVIS

0

Режим видимости адреса. AVIS позволяет / запрещает адресам внутренней программы, быть видимыми на выводах адреса.
AVIS=0 - внешние линии адреса не изменяется вместе с внутренним адресом программы. Линии управления и данных не активны, а шина адреса остается в последнемсостоянии.
AVIS=1 - этот режим позволяет внутреннему адресу программы появиться на выводах C54x, чтобы он мог быть отслежен. Это также позволяет декодировать адрес вектора прерывания в соединении с IACK, когда вектора прерываний расположены во внутренней памяти.

3 | DROM | 0 | Данные ROM. DROM позволяет внутренней ROM быть быть отображенной в область данных. Значение бита DROM: DROM=0 - внутренняя ROM - отображена в область данных DROM=1 - часть внутренней ROM отображена в область данных
2 | CLKOFF† | 0 | Выключение CLOCKOUT. Когда бит CLKOFF в 1, выход CLKOUT отключен и на нем высокий уровень
1 | SMUL† | N/A | Насыщение при умножении. Когда SMUL = 1, насыщение результата умножения происходит перед выполнением накопления в командах MAC или MAS. Бит SMUL применяется только когда OVM = 1 и FRCT = 1. Бит SMUL позволяет командам MAC и MAS соответствовать базовым операциям MAC и MAS, определенным в спецификации ETSI GSM (GSM 6.06, 6.10, 6.53). Эффект бита такой, что результат 8000h × 8000h приводится к 7FFF FFFFh в режиме дробных чисел, перед выполнением последующего сложения / вычитания, требуемого командами MAC или MAS. В этом случае команда MAC эквивалентна MPY + ADD когда OVM = 1. Если режим не установлен и OVM = 1, результат умножения не насыщается перед выполнением сложения / вычитания, а только результаты команд MAC и MAS насыщаются

0

SST†

N/A

Насыщение при сохранении. Когда SST = 1, насыщение данных из аккумулятора разрешено перед сохранением в памяти. Насыщение выполняется после выполнения сдвига. Насыщение при сохранении имеет место со следующими командами: STH, STL, STLM, DST, ST || ADD, ST || LD, ST || MACR[R], ST || MAS[R], ST || MPY и ST || SUB. Следующие шаги выполняются при использовании насыщения при сохранении:

1. Значение 40-битных данных сдвигается (вправо или влево) в зависимости от инструкции. Сдвиг такой же как в команде SFTA и зависит от SXM
2. Значение 40-битных данных насыщается к значению 32-битных данных; насыщение зависит от SXM (при SXM=0 число всегда считается положительным)
   Если SXM = 0, генерируется следующее32-битное число:
   FFFF FFFFh, если значение большая чем FFFF FFFFh
   Если SXM = 1, генерируется следующее32-битное число:
   7FFF FFFFh, если значение большая чем 7FFF FFFFh
   8000 0000h, если значение меньше чем 8000 0000h
3. Данные записываются в памяти в зависимости от команды
4. Содержимое аккумулятора остается неизменным в течение этого действия

Оглавление | Программа | Теория| Практика | Контроль знаний | Об авторах
© БГУИР , 2012