1.Особенности архитектуры сигнальных процессоров (1086957), страница 5
Текст из файла (страница 5)
Два регистра состояния ST0 и ST1 хранят состояния различных условий и режимов. Регистры состояния могут быть помещены в память данных и загружены из памяти данных. Это позволяет сохранять и восстанавливать состояние процессора при обработке прерываний и подпрограмм. Все биты состояния читаются и записываются с помощью команд SST/SST1 и LST/LST1 соответственно (за исключением бита INTM, который не может быть загружен командой LST).
На рис. 3-14 показана структура обоих регистров состояния. Заметим, что DP, ARB, ARP показаны на структурной схеме рис. 2 -1 как отдельные регистры. Однако, так как эти регистры не имеют отдельных команд для сохранения в памяти, они были включены в регистры состояния в качестве составных частей. Как видно на рис. 3-14 некоторые биты слова состояния зарезервированы. Они при чтении командами LST/LST1 воспринимаются как 1. Биты, отмеченные символом (#), присутствуют только у TMS320C25 и отсутствуют у TMS32020.
15 13 | 12 | 11 | 10 | 9 | 8 0 | ||||||||
ST0 | ARP | OV | OVM | 1 | INTM | DP | |||||||
ST1 | ARB | CNF | TC | SXM | # CY | 1 | 1 | #HM | #FSM | XF | FO | TXM | PM |
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 0 |
Рис. 10.4. Структура регистров состояния.
Таблица 3-4. Назначение битов регистров состояния ST0 и ST1.
Поле | Назначение |
ARP | Указатель вспомогательного регистра. Это трех битовое поле, которое указывает, какой из вспомогательных регистров (AR) используется для косвенной адресации. Если в ARP загружается новое значение, старое значение сохраняется в ARB. Содержимое ARP может быть заменено командами использующими косвенную адресацию при обращении к памяти, а также командами LARP, MAR и LST. Наконец, ARP может быть загружен тем же самым значением, что и ARB при выполнении команды LST1. |
OV | Флаг переполнения. При возникновении сигнала переполнения OV устанавливается в "1". После этого содержимое OV не меняется, если не будет выполнен аппаратный сброс или команды BV, BNV или LST, которые чистят OV. |
OVM | Режим насыщения. Если OVM="0", то при переполнении аккумулятора теряется старший бит(обычный результат). Если OVM="1", тол при переполнении в аккумулятор будет записано наибольшее положительное или отрицательное число, в зависимости от знака результата. Команды SOVM и ROVM устанавливают или сбрасывают этот бит. Команда LST также может изменять содержимое OVM. |
INTM | Режим прерывания. "0" разрешает маскируемые прерывания, "1"-запрещает. INTM устанавливается и сбрасывается командами DINT и EINT соответственно. Активные сигналы *RS и *IACK также устанавливают INTM. INTM не влияет на немаскируемое прерывание по сигналу *RS. Содержимое INTM не изменяется командой LST. |
DP | Указатель страницы памяти данных. Девятиразрядный регистр DP объединенный с 7 младшими битами команды образует адрес памяти данных при прямой адресации. Содержимое DP изменяется командами LST, LDP и LDPK. |
ARB | Буфер указателя вспомогательного регистра. После того как в ARP загружается новое значение, старое значение ARP сохраняется в ARB. Исключение составляет команда LST. Когда ARB загружается с помощью команды LST1, то же самое значение загружается и в ARP. |
CNF | Бит конфигурации памяти, расположенной на кристалле TMS320С2х. Если он сброшен в "0", блок В0 определен как память данных; если он установлен в "1", В0-память программ. Содержимое CNF изменяется командами CNFD, CNFP и LST1. При аппаратном сбросе (*RS-активный) CNF сбрасывается в "0". |
TC | Тест/контроль флаг. На ТС бит воздействуют команды BIT, BITT, CMPR, LST1 и NORM. ТС бит устанавливается в "1", если (1) разряд ячейки памяти тестируемый командами BIT или BITT равен "1", (2) результат сравнения AR0 и AR(ARP) с помощью команды CMPR равен 1, (3) результат функции исключающее "или" двух младших битов аккумулятора с помощью команды NORM равен 1. Две команды ветвления BBZ и BBNZ предусмотрены для ветвления в зависимости от значения С. |
SXM | Режим расширения знака. Если SXM=1, данные загружаемые в аккумулятор сдвигаются с расширением знака. Если SXM=0, расширение знака запрещено. Заметим, что SXM не влияет на выполнение некоторых команд. Например, в команде ADDS расширение знака запрещено, независимо от содержимого SXM. Этот бит устанавливается командой SSXM, сбрасывается-RSXM, и может измениться командой LST1. При аппаратном сбросе SXM не изменяется. |
#CY | Бит переполнения. Этот бит устанавливается в 1, если в результате сложения генерируется перенос, или сбрасывается в 0, если в результате вычитания возникает заем. Иначе он сбрасывается после сложения или устанавливается после вычитания. Исключение - команды ADDH и SUBH. ADDH может только устанавливать, а SUBH только сбрасывать бит переноса. Его могут изменять также команды SC, RC, LST1, сдвиги и вращения. Две команды перехода BC и BNC выполняют ветвление в зависимости от состояния CY. При сбросе CY устанавливается в 1. |
#HM | Бит режима ПДП. Если HM=1, процессор останавливается и не выбирает команды из внутренней памяти в течении активного *HOLD. Если HM=0, процессор может во время ПДП продолжать выполнять команды, расположенные во внутренней памяти. При этом внешние сигналы процессора будут удерживаться в третьем состоянии. HM=1 при сбросе. |
#FSM | Бит режима кадровой синхронизации. Этот бит сообщает о том, выполняет последовательный порт свою работ с кадровой синхронизацией или без нее. Если FSX=1, работа последовательного порта начинается после получения кадрового импульса на FSX/FSR. Когда FSM=0, сигналы на FSX/FSM игнорируются, и последовательный порт работает баз кадровых импульсов. FSM=1 при сбросе. |
XF | Состояние вывода XF. Бит состояния показывает состояние вывода XF. XF устанавливается и сбрасывается командами SXF и RXF и может быть загружено в LST1. XF загружается по *RS значением "1". |
FО | Бит формата. Если FO=0, последовательный порт передает и принимает информацию 16-разрядными словами. Если FO=1, информация передается и принимается побайтно (8бит). Содержимое FO изменяется командами FORT и LST1. При аппаратном сбросе (*RS-активный) FO сбрасывается в "0". |
TXM | Бит режима передачи. Если TXM=1, то последовательный порт использует сигнал FSX для вывода информации. В этом режиме импульс появляется на выводе FSX, когда регистр DXR загружается передаваемыми данными. После этого переданные данные появляются на выводе DX. Если TXM=0, то контакт FSX используется для входного сигнала. TXM устанавливается и сбрасывается командами STXM и RTXM и может быть загружено в LST1. Когда *RS активный, происходит сброс TXM в 0. |
PM | Режим сдвига произведения (2бита). Если PM=00, то 32-разрядное произведение загружается в ALU без сдвига. Если PM=01, содержимое PR перед загрузкой в ALU сдвигается на 1 разряд влево. Если PM=10, PR сдвигается на 4 разряда влево. Если PM=11, PR сдвигается на 6 разрядов вправо с расширением знака. При этом содержимое PR не изменяется. Сдвиг выполняется только при передаче содержимого из PR в ALU. Содержимое PM изменяется командами SPM и LST1. При аппаратном сбросе (*RS-активный) PM не изменяется. |
Микропроцессор TMS320C2x содержит 16-разрядный регистр таймера, который адресуется как память данных и называется TIM -регистр, и 16-разрядный регистр периода PRD.
Регистр таймера представляет собой декрементный счетчик, непрерывно тактируемый внутренним синхросигналом, образованным делением частоты сигнала CLKOUT1 на четыре для TMS32020 или без деления частоты для TMS320C25. Сигнал сброса (см. Рис. 3-15) устанавливает таймер TIM в его максимальное значение (FFFF), а регистр периода PRD либо устанавливает в FFFF для TMS320C25, либо не инициализирует для TMS32020. После сигнала сброса, регистр таймера начинает уменьшать свое значение. В последствии регистры TIM и PRD могут быть загружены программно.
Регистр таймера TIM расположен в памяти данных по адресу 2 и хранит текущий счетчик таймера. Каждые NCLKOUT1 циклов, где N=4 для TMS32020 или N=1 для TMS320C25, содержимое TIM уменьшается на 1. Регистр PRD, расположенный в памяти данных по адресу 3, хранит начальное значение счетчика таймера.
Прерывание TINT по таймеру генерируется каждый раз, как содержимое TIM достигает нуля. Таймер в течении следующего цикла перегружается значением, хранящимся в PRD. Поэтому прерывания от таймера появляются с интервалом, равным PRD + 1 циклов CLKOUT1 для процессора TMS320C25, или 4 x PRD - для TMS32020.
П
рограммируя PRD значением от 1 до 65535 (FFFF), можно изменять период появления TINT от 2-х до 65536-ти циклов CLKOUT1 для TMS320C25 или от 4-х до 262140 - для TMS32020. Нулевое значение для PRD является недопустимым. Регистры TIM и PRD доступны для чтения и записи в любое время. Запись в регистр периода нового значения не изменяет текущее содержимое счетчика. Новое значение периода загрузится в TIM только по достижении им нулевого значения. Если оба регистра, TIM и PRD, загружены новым значением, то таймер начнет работу с новым значением периода без выдачи прерывания. Таким образом осуществляется управление периодом таймера.
# - коэффициент деления N=4 для TMS32020, N=1 для TMS320C25.
Рис.10.5 Блок-схема таймера.
Если таймер не используется, то прерывания по таймеру могут маскироваться или все маскированные прерывания блокируются командой DINT. В этом случае регистр PRD может использоваться для хранения данных. Однако, если TINT используется, то регистры PRD и TIM должны быть запрограммированы до снятия маски таймера.
В микропроцессоре TMS320C2х предусмотрена возможность повторения одной команды до 256 раз. 8–разрядный счетчик повторений RPTC может быть загружен как из памяти данных (командой RPT), так и непосредственно (командой RPTK). Величина, загружаемая в счетчик, должна быть на единицу меньше требуемого числа повторений данной команды.
Свойство повторений может использоваться с такими операциями, как умножение/сложение, перемещение блоков памяти, прием/ передача и чтение/запись данных. Многоцикловые команды BLKD/BLKP, MAC/MACD, TBLR/TBLW становятся конвейерными при использовании свойства повторений, а одноцикловые команды становятся более эффективными. Например, операция чтения таблицы данных выполняется за три цикла, но при использовании повторений ячейка памяти может считываться каждый цикл.
Сброс (*RS) - немаскируемое внешнее прерывание, которое в любой момент времени может вернуть процессор TMS320C2x в известное состояние. Обычно сброс применяется после подачи питания, так как в этом случае процессор находится в случайном состоянии.
Поступление сигнала *RS низкого уровня заставляет микропроцессор TMS320С2x закончить выполнение и устанавливает счетчик команд в нуль. Сигнал *RS воздействует на различные регистры и биты состояния. При включении питания состояние процессора не определено. Поэтому после включения питания, сигнал сброса (*RS ) должен быть выставлен в течении трех циклов для гарантированной установки процессора в исходное состояние. После этого работа процессора начинается с адреса 0, по которому обычно хранится команда безусловного перехода (B), передающая управление программе инициализации системы.
Сигнал *RS воздействует на процессор следующим образом:
-
Логический 0 загружается в бит CNF слова состояния ST1 для конфигурации RAM как памяти данных.
-
Счетчик команд устанавливается в 0, а сигналы адресной шины A0-A15 во время сброса обнуляются.
-
Шина данных D0-D15 переводится в третье состояние.
-
Все сигналы управления пространствами памяти и портов ввода/вывода (*PS, *DS, *IS, R/*W, *STRB, *BR) обновляются, путем перевода их в высокое состояние пока *RS активен (в низком состоянии).
-
Все прерывания запрещаются путем установки бита INTM в 1 (заметим, что *RS не маскируется). Регистр флагов прерываний IFR при сбросе обнуляется.
-
Биты состояния:
-
Для всех TMS320C2x 0 OV, 1 XF, 0 FO, 0 TXM.
-
Кроме TMS32020 1 SXM, 0 PM, 1 HM, 1 CY, 1 FSM.
-
Остальные биты состояния не изменяются.
-
Регистр распределения глобальной памяти очищается, т.е. вся память становится локальной.
-
Счетчик повторений RPTC очищается.
-
Контакт DX (передача данных) переводится в третье состояние. Любые операции по приему/передаче данных через последовательный порт прекращаются, а бит режима передачи TXM сбрасывается, поэтому кадровые импульсы на контакте FSX воспринимаются как входные. Операции приема/передачи могут быть начаты только после окончания *RS.
-
В регистр TIM после сброса загружается максимальное значение (>FFFF). Регистр PRD на TMS320C25 также загружается значением >FFFF, а на TMS32020 требуется программная инициализация этого регистра. Содержимое TIM начинает уменьшаться только после окончания сброса.
-
Сигнал *IACK (подтверждение прерывания) генерируется таким же образом, как и для маскируемых прерываний.
-
Состояние ячеек RAM после сброса не определено.
-
Биты ARB, ARP, DP, IMR, OVM, TC во время сброса не инициализируются. Поэтому они после сброса должны быть установлены программным способом.
После сброса выполнение программы начинается с адреса 0. TMS320C2x может находится в состоянии сброса сколь угодно долго.
1.5.1.Прерывания
Процессор TMS320C2х имеет 3 внешних маскируемых пользователем прерывания (INT2 - INT0), которые могут использоваться внешними устройствами. Внутренние прерывания генерируются последовательным портом (RINT и XINT), таймером (TINT) и командой программного прерывания (TRAP). Прерывания имеют приоритет, причем сброс имеет самый высокий приоритет, а прерывание от передатчика и последовательного порта имеет самый низкий приоритет.