1.Особенности архитектуры сигнальных процессоров (1086957), страница 3
Текст из файла (страница 3)
Использование в качестве первых 4К слов памяти программ внутренней памяти (ROM, EPROM) или внешней памяти, определяется состоянием контакта MP/*MC (микропроцессор/микроконтроллер) процессора TMS320C2х. Если на MP/*MC высокий уровень - используется внешняя память, если низкий - внутренняя.
Карты распределения памяти
TMS320C2x обеспечен тремя разделенными адресными пространствами - для памяти программ, для памяти данных и для устройств ввода/вывода. Эти пространства вне кристалла различаются при помощи сигналов *PS, *DS, *IS (для пространств программы, данных, ввода/вывода соответственно).
Блоки памяти B0, B1, B2, расположенные на кристалле, охватывают в сумме 544 слова памяти с произвольным доступом (RAM). RAM блок B0 (256 слов) располагается на 4 и 5 страницах памяти данных, если он отведен под данные, или по адресам FF00 - FFFF, если он является частью памяти программ. Блок B1 (только для данных) располагается на 6 и 7 страницах, а блок B2 занимает старшие 32 слова 0 страницы. Отметим, что оставшуюся часть 0 страницы занимают 6 адресуемых регистров и резервная область; 1 - 3 страницы также представляют собой резервную область. Резервные области нельзя использовать для хранения информации, при чтении их содержимое не определено.
Команды CNFD/CNFP используются для конфигурации блока B0 либо как память программ, либо как память данных. Команду BLKP (переместить информацию из памяти программ в память данных) можно использовать для загрузки блока B0 кодами команд, пока он является памятью данных, и затем, используя команду CNFP (сформировать блок RAM как память команд), превратить его в RAM программ.
Внутренняя память программ (ROM), расположенная на кристалле процессора может быть использована в качестве младших 4Кслов памяти программ. Для этого на контакт MP/*MC должен быть подан сигнал низкого уровня. Для запрещений использования внутренней области ROM на MP/*MC надо подать высокий уровень.
Когда блок B0 используется как память программ, он может быть загружен кодами команд из внешней памяти программ при помощи команд RPTK (повторить последующую команду столько раз, сколько указано в непосредственном операнде) и BLKP (переместить блок информации из памяти программ в память данных).
Если для хранения команд используется быстрая внешняя память или внутренняя память RAM, TMS320C2x выполняет обработку на максимальной скорости без циклов ожидания. Однако, существует возможность подключать к процессору более медленную, а значит и более дешевую внешнюю память. Для этой цели имеется входной сигнал READY. Загрузка кодов команд из медленной внешней памяти в RAM память, расположенную на кристалле позволяет увеличить скорость вычислений и одновременно снизить стоимость системы.
Шесть регистров, расположенных в пределах адресного пространства данных, перечислены в Таблице 3-2 и показаны на функциональной схеме Рис. 3-1.
Доступ к адресуемым регистрам осуществляется так же, как и к ячейкам памяти данных. Исключение лишь в том, что BLKD не перемещает информацию из области адресуемых регистров.
Таблица 3-2. Адресуемые регистры
Название | Адрес | Назначение |
DRR (15-0) | 0 | Регистр-приемник последовательного порта |
DXR (15-0) | 1 | Регистр-передатчик последовательного порта |
TIM (15-0) | 2 | Регистр таймера |
PRD (15-0) | 3 | Регистр периода |
IMR (5-0) | 4 | Регистр масок прерываний |
GREG (7-0) | 5 | Регистр распределения глобальной памяти |
1.2.1. Вспомогательные регистры
TMS320C2x имеет файл регистров, содержащий вспомогательные регистры (AR0 - AR7). В TMS32020 содержится пять, а в TMS320C25 - восемь вспомогательных регистров.
Вспомогательные регистры могут быть использованы для косвенной адресации памяти данных или для временного хранения информации. Косвенная адресация дает возможность разместить адрес операнда, находящегося в памяти данных, в одном из вспомогательных регистров. Один из этих регистров можно выбрать, загружая в указатель вспомогательного регистра (ARP) значения от 0 до 7 (от 0 до 4 для TMS32020). При этом будет выбран регистр AR0 - AR7, соответственно. Вспомогательные регистры и ARP могут быть загружены как из памяти данных, так и с помощью непосредственного операнда определенного в коде команды.
ARAU может автоматически изменять содержимое текущего вспомогательного регистра в то время, пока осуществляется адресация области памяти данных при помощи этого же регистра. Изменение заключается в приращении или уменьшении текущего регистра на 1 либо на значение, содержащееся в AR0. Таким образом, порядок адресации к сложным массивам данных нет необходимости определять при помощи CALU, оно используется для других вычислений. ARAU полезно при управлении адресацией, т.к. параллельно могут выполняться другие операции. Однако по желанию программиста его можно применять в качестве простого арифметического устройства в связи с тем, что файл вспомогательных регистров имеет непосредственную связь с памятью данных. ARAU выполняет 16-разрядную беззнаковую арифметику в то время, как CALU выполняет 32-разрядную арифметику в дополнительном коде. Команды условного ветвления BBZ/BBNZ обеспечивают переходы в зависимости от сравнения AR0 с текущим вспомогательным регистром. Команда BANZ позволяет использовать вспомогательные регистры в качестве счетчика циклов.
1.2.2.Методы адресации памяти данных
TMS320С2х может адресовать 64К слов программной памяти и 64К слов памяти данных. Внутренняя память данных процессора входит в 64К пространство памяти данных.
16-разрядная шина адреса данных (DAB) используется для адресации памяти данных одним из следующих двух способов:
-
При помощи DRB (шины прямого адреса) использующей режим прямой адресации (например, ADD >10).
-
При помощи AFB (шины файла вспомогательных регистров) использующей режим косвенной адресации (например, ADD *).
Кроме того операнду могут адресоваться с помощью счетчика команд если используется непосредственный операнд, расположенный в памяти программ (например LARK AR1,>10 ).
Если используется режим прямой адресации, 9-разрядный указатель страницы данных (DP) указывает на одну из 512 128-словных страниц. Адрес памяти данных (dma), определяющийся семью младшими битами кода команды, указывает на требуемое слово внутри страницы. Адрес на DRB (шине прямого адреса) формируется путем объединения
9-разрядного DP и 7-разрядного dma.
Когда используется режим косвенной адресации, текущий 16-разрядный вспомогательный регистр AR(ARP) адресует память данных через AFB (шину файла вспомогательных регистров). В то время, пока вспомогательный регистр обеспечивает адресацию памяти данных и данные обрабатываются в CALU (центральном арифметико-логическом устройстве), содержимое вспомогательного регистра может быть изменено при помощи ARAU (арифметического устройства вспомогательных регистров).
Если используется непосредственный операнд, то он должен содержаться либо внутри кода команды, либо, в случае 16-разрядных непосредственных операндов, в слове, следующем за кодом команды.
1.2.3.Пересылки из одной области памяти в другую
TMS320С2х наделен командами, выполняющими пересылки блоков данных и кодов команд. Эти функции выгодно сочетаются с возможностью изменять конфигурацию блоков RAM, расположенных на кристалле.
Команда BLKD перемещает блок внутри памяти данных, а BLKP - блок из памяти программ в память данных. Эти команды перемещают блоки информации как из внутренней RAM, так и из внешней памяти. Наиболее эффективно применять эти команды совместно с командами RPT/RPTK.
Команда DMOV (переместить данные) полезна при выполнении алгоритмов, которые осуществляют операцию задержки, таких, как свертка и цифровая фильтрация, в которых данные проходят через временное окно. DMOV может непрерывно выполнятся сквозь блоки B0, B1 и B2, однако вне внутренней RAM эта функция не работает.
Выполнение команды DMOV в пределах внутренней RAM, на кристалле подобно выполнению эквивалентной команды для TMS32010. DMOV позволяет копировать данные из одной ячейки памяти в другую, имеющую больший адрес, и одновременно, в том же командном цикле, выполнять операции над содержимым адресуемой ячейки. В этом же командном цикле может выполнятся обработка в ARAU, если использован режим косвенной адресации. Команды MACD (умножить и сохранить с перемещением данных) и LTD (загрузить T-регистр, сохранить предыдущее произведение и переместить данные) используют функцию перемещения данных.
Команды TBLR/TBLW позволяют передавать одно слово информации между памятью программ и памятью данных и наоборот. TBLR позволяет считать слово из памяти программ (внутренней ROM или внешней RAM/ROM) в ОЗУ данных. TBLW используется для записи одного слова из внутренней памяти данных (RAM) во внешнее ОЗУ программ.
1.3.Центральное арифметико-логическое устройство (CALU)
Центральное арифметико-логическое устройство (CALU) содержит 16 -разрядный масштабирующий регистр сдвига, 1616 параллельный умножитель, 32-разрядное арифметико-логическое устройство (ALU), 32-разрядный аккумулятор и несколько дополнительных сдвиговых регистров, расположенных как на выходе из умножителя, так и на выходе из аккумулятора.
Любая операция ALU выполняется в следующей последовательности:
-
Данные захватываются из RAM на шину данных,
-
Данные проходят через масштабирующий сдвиговый регистр и через ALU, в котором выполняются арифметические операции,
-
Результат передается в аккумулятор.
Один вход в ALU всегда соединен с выходом аккумулятора, а второй может получать информацию либо из регистра произведения (PR) умножителя, либо загружаться из памяти через масштабирующий сдвиговый регистр.
Масштабирующий сдвиговый режим
Масштабирующий сдвиговый регистр имеет 16-разрядный вход с шины данных и
32-разрядный выход в ALU (Рис. 3-7). Сдвиговый регистр выполняет левый сдвиг на 0-16 бит, как указано в команде. При этом младшие разряды заполняются нулями, старшие разряды заполняются либо нулями либо расширением знака, в зависимости от состояния бита SXM (режим расширения знака) в регистре состояния ST0.
TMS320C2х также имеет несколько других сдвиговых регистров, которые позволяют выполнить числовое масштабирование, выделение бита, расширенную арифметику и предотвращать переполнение. Эти сдвиговые регистры подсоединены к выходам умножителя и аккумулятора.
Арифметико-логическое устройство (ALU) и аккумулятор (ACC)
32-разрядный ALU и аккумулятор TMS320С2х выполняют широкий спектр арифметических и логических операций, большинство из которых выполняются в течение одного командного цикла. Результат любой операции, выполняемой в ALU, помещается в аккумулятор. Данные, которые подаются на обработку в ALU, могут быть предварительно сдвинуты в сдвиговом регистре.
На один из входов ALU всегда подается содержимое аккумулятора, а другой вход может быть соединен либо с регистром произведения (PR) умножителя либо с выходом масштабирующего сдвигового регистра.
32-разрядный аккумулятор разделен на два 16-разрядных сегмента для удобства при сохранении его в памяти данных: ACCH (аккумулятор старший) и ACCL (аккумулятор младший). Дополнительный сдвиговый регистр, соединенный с выходом аккумулятора обеспечивает левый сдвиг на 0, 1 или 4 разряда. Этот сдвиг осуществляется прежде, чем поместить данные на шину памяти для их хранения. При этом содержимое аккумулятора не изменяется.
TMS320C2x поддерживает операции с плавающей точкой для вычислений, требующих большой динамический диапазон. Команда нормализации (NORM) нормализует числа с фиксированной точкой, находящиеся в аккумуляторе, путем выполнения левого сдвига. Команда LACT (загрузить аккумулятор со сдвигом, указываемым Т – регистром) денормализует числа с плавающей точкой с помощью арифметического левого сдвига мантиссы через входной масштабирующий сдвиговый регистр. Количество сдвигов в этом случае - это значение порядка, определяемое четырьмя младшими разрядами Т-регистра (TR). Команды ADDT и SUBT (прибавить к/вычесть из аккумулятора со сдвигом, заданным в Т-регистре) также позволяют обрабатывать числа с 16-разрядной мантиссой и 4-разрядным порядком.
Режим насыщения при переполнении может быть запрограммирован при помощи команд SOVM/ROVM (установить/сбросить режим насыщения). Если аккумулятор находится в режиме насыщения при переполнении и произошло переполнение, флаг переполнения устанавливается и аккумулятор загружается наибольшим положительным (>7FFFFFFF) или отрицательным (>80000000) числом, в зависимости от знака переполнения. Если режим насыщения не установлен (бит OVM сброшен), переполненный результат загружается в аккумулятор без изменений.
TMS320C2x выполняет команды ветвления, в зависимости от состояния ALU. Команда BACC (перейти по адресу, расположенному в аккумуляторе) позволяет вычислять адрес перехода. Команды BIT/BITT, не изменяя содержимого аккумулятора, позволяют определять значение конкретных разрядов в любом слове памяти данных.
Аккумулятор TMS320C25 снабжен битом переноса CY, который устанавливается или сбрасывается в зависимости от операций выполняемых процессором. Бит переноса позволяет более эффективно выполнять умножение, сложение и вычитание. Также он удобен при работе с переполнениями. Бит переноса изменяется при выполнении большинства арифметических команд, а также команд сдвига и циклического сдвига аккумулятора. Но он не изменяется при загрузке аккумулятора, логических операциях, или при других неарифметических или управляющих операциях. Он также не изменяется при выполнении команд умножения MPY, MPYK и MPYU, но изменяется командами MAC и MACD.
# - у TMS32020 отсутствует. # # - на TMS320C25 выполняет сдвиг влево на 0 - 7 разрядов, а на TMS32020 - сдвиг влево на 0, 1 или 4 разряда.
Рис. 10.2. Центральное арифметико-логическое устройство (CALU).
Умножитель, T- и P-регистры