Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС для АТП (ЛЕК).doc
Скачиваний:
33
Добавлен:
26.09.2019
Размер:
2.38 Mб
Скачать

10.5.Системные средства

TMS320C2x содержит 16-разрядный счетчик команд (PC) и 4-уровневый (TMS32020) или 8-уровневый (TMS320C25) аппаратный стек для хранения содержимого PC. Счетчик команд адресует внешнюю и внутреннюю память программ для выборки команд. Стек используется во время прерываний и вызовов подпрограмм.

Счетчик команд адресует память программ, расположенную либо на кристалле, либо вне кристалла, через шину адреса памяти команд (PAB). Благодаря PAB, команды захватываются из памяти программ и загружаются в регистр команд (IR). После того, как IR загружен, PC инициирует следующий цикл захвата кода команды.

Перед началом нового цикла захвата кода команды PC загружается либо значением PC+1, либо адресом перехода (в случае команды ветвления, программного вызова или прерывания). В случае команды условного перехода, в которой переход не выполняется, PC дважды увеличивается на 1 для учета ячейки, содержащей адрес перехода. Содержимое аккумулятора может быть загружено в счетчик команд во время выполнения операции "вычисляемый GO TO" (команды BACC или CALA).

TMS320C2x имеет возможность выполнить одну команду N+1 раз. N определяется содержимым счетчика повторений (RPTC). Если используется эта возможность, то после каждого выполнения команды RPTC уменьшается на 1. И так до тех пор, пока RPTC не обнулится. Использование счетчика повторений полезно при выполнении таких команд, как NORM (нормализовать содержимое аккумулятора), MACD (умножить и сохранить с перемещением данных), SUBC (условное вычитание). Использование счетчика повторений с многоцикловыми командами такими, как MACD, позволяет выполнять их более эффективно за один цикл.

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

Стек доступен при помощи команд PUSH и POP. Всякий раз, когда содержимое PC проталкивается на вершину стека, предыдущее содержимое каждого уровня стека проталкивается вниз, а содержимое нижнего уровня теряется. Поэтому информация будет потеряна, если в стек будет помещено более четырех (восьми) слов, прежде чем выполнится чтение из стека. При чтении из стека возможен обратный результат: после трех (семи) последовательных чтений из стека каждая последующая выборка будет возвращать содержимое нижнего уровня стека. После этого все уровни стека будут содержать значения нижнего уровня. Две дополнительные команды, PSHD и POPD, позволяют обмениваться данными между вершиной стека и памятью данных. Эти команды позволяют расширить стек в область памяти в случае, если в программе используется более четырех (восьми) вложенных программных вызовов или прерываний.

Конвейер команд состоит из последовательности операций "предвыборка - декодирование - выполнение". Во время работы конвейера предвыборка, декодирование и выполнение команд независимы друг от друга. Это позволяет командам перекрываться. Так в течении одного цикла две или три команды могут быть активны, каждая на разных этапах работы. Добавочные аппаратные средства, имеющиеся на процессоре TMS320C25, позволяют расширить количество уровней конвейера до трех, что повышает производительность процессора. К этим средствам относятся счетчик предзахватов (PFC), 16-разрядный стек микровызовов (MCS), регистр команд (IR), и регистр очереди команд (QIR).

При трехуровневом конвейере PFC содержит адрес следующей команды, которая должна быть предзахвачена. Как только предзахват осуществлен, команда загружается в IR. Если же IR хранит команду, которая еще не выполнена, то предзахваченная команда помещается в QIR. После этого PFC увеличивается на 1. Как только текущая команда будет выполнена, команда из QIR будет перегружена в IR, для дальнейшего исполнения.

Счетчик команд (PC) содержит адрес команды, которая должна быть выполнена следующей, и не используется для операций захвата. Но обычно PC используется в качестве указателя на текущую позицию в программе. Содержимое PC увеличивается после каждой выполненной команды. Когда возникает прерывание или вызов подпрограммы, содержимое PC помещается в стек, чтобы в дальнейшем можно было выполнить возврат в нужное место программы.

Циклы предзахвата, декодирования и выполнения конвейера независимы друг от друга, это позволяет перекрываться исполняемым командам во времени. В течении любого цикла три команды могут быть одновременно активны, каждая на разных стадиях завершения. Когда происходят ветвления, вызовы подпрограмм или прерывания, конвейерный поток разрывается, потому что конвейер осуществляет предварительный выбор последовательно и не может в общем случае обнаружить, что будет происходить передача управления до тех пор, пока команда не начнет выполняться. Во время выполнения команд ветвления или вызова подпрограммы, как РС так и PFC загружаются адресом перехода, и конвейерная работа должна быть возобновлена.

Два регистра состояния 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".

Бит формата. Если 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 и хранит текущий счетчик таймера. Каждые NCLKOUT1 циклов, где 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 воздействует на процессор следующим образом:

  1. Логический 0 загружается в бит CNF слова состояния ST1 для конфигурации RAM как памяти данных.

  2. Счетчик команд устанавливается в 0, а сигналы адресной шины A0-A15 во время сброса обнуляются.

  3. Шина данных D0-D15 переводится в третье состояние.

  4. Все сигналы управления пространствами памяти и портов ввода/вывода (*PS, *DS, *IS, R/*W, *STRB, *BR) обновляются, путем перевода их в высокое состояние пока *RS активен (в низком состоянии).

  5. Все прерывания запрещаются путем установки бита INTM в 1 (заметим, что *RS не маскируется). Регистр флагов прерываний IFR при сбросе обнуляется.

  6. Биты состояния:

  7. Для всех TMS320C2x 0  OV, 1  XF, 0  FO, 0  TXM.

  8. Кроме TMS32020 1  SXM, 0  PM, 1  HM, 1  CY, 1  FSM.

  9. Остальные биты состояния не изменяются.

  10. Регистр распределения глобальной памяти очищается, т.е. вся память становится локальной.

  11. Счетчик повторений RPTC очищается.

  12. Контакт DX (передача данных) переводится в третье состояние. Любые операции по приему/передаче данных через последовательный порт прекращаются, а бит режима передачи TXM сбрасывается, поэтому кадровые импульсы на контакте FSX воспринимаются как входные. Операции приема/передачи могут быть начаты только после окончания *RS.

  13. В регистр TIM после сброса загружается максимальное значение (>FFFF). Регистр PRD на TMS320C25 также загружается значением >FFFF, а на TMS32020 требуется программная инициализация этого регистра. Содержимое TIM начинает уменьшаться только после окончания сброса.

  14. Сигнал *IACK (подтверждение прерывания) генерируется таким же образом, как и для маскируемых прерываний.

  15. Состояние ячеек RAM после сброса не определено.

  16. Биты ARB, ARP, DP, IMR, OVM, TC во время сброса не инициализируются. Поэтому они после сброса должны быть установлены программным способом.

После сброса выполнение программы начинается с адреса 0. TMS320C2x может находится в состоянии сброса сколь угодно долго.