Основы бортовых вычислительных машин
Скачать 3.2 Mb.
|
Шины данных. DSP организован на регистрах центрального про- цессора, составляющих три независимых операционных устройства. Передача данных на кристалле осуществляется по четырем двунаправ- 298 ленным 24-разрядным шинам: шине данных X (XDB), шине данных Y (YDB), шине данных программ (PDB), глобальной шине данных (GDB). Шины данных X и Y могут объединяться в 48-разрядную шину для пе- редачи инструкций. Шины XDB и YDB сделаны локальными для уве- личения скорости и уменьшения потребления мощности. Все другие передачи данных происходят по шине GDB. Структура шин поддержи- вает передачу данных типов «регистр - регистр», «регистр - память», «память - регистр». Размер передаваемых данных изменяется от 24- до 56-битных слов в одном командном цикле. Переходы между шинами осуществляются с помощью специального переключателя. Рисунок 8.7 - Структура DSP56002 Шины адреса. Адреса внутренней памяти данных X и Y переда- ются по двум однонаправленным 16-битным шинам - адресной шине X (ХАВ) и адресной шине Y (YAB). Адреса памяти программ передаются по двунаправленной шине адресов программ (РАВ). Пространство внешней памяти адресуется с помощью однона- правленной 16-битной шины с тремя состояниями выходов, которую 299 можно переключить на ХАВ, YAB или РАВ. В одном командном цикле может быть произведен только один доступ к внешней памяти. Переход между шинами осуществляется с помощью переключателя внутренних шин. Он представляет собой программируемую матрицу ключей, позволяющую соединять две любые внутренние шины без за- держек. В блоке переключателя шин расположено устройство манипуля- ций с битами за счет которого переключатель обеспечивает доступ к любому адресному пространству. Устройство манипуляций с битами выполняет битовые операции (установку, сброс, сравнение и т.п.) в па- мяти, адресных регистрах, регистрах управления и регистрах данных через шины XDB, YDB и GDB. Арифметико -логическое устройство данных. АЛУ данных (ри- сунок 8.8) разработано для улучшения возможности обработки сигна- лов широкого динамического диапазона. Специальные схемы обеспе- чивают простой контроль ошибок округления и переполнения обраба- тываемых данных. АЛУ содержит четыре 24-битных входных регистра, два 48-битных аккумулятора, два 8-битных регистра расширения акку- мулятора, аккумулятор сдвига, две шины данных и параллельное не- конвейеризованное устройство умножения с аккумулированием (MAC). Операции АЛУ используют арифметику дополнения до двух, в которой для представления отрицательных чисел используется дополнительный машинный код. В регистры АЛУ могут быть записаны 24- или 48- разрядные операнды. АЛУ позволяет выполнять в одном командном цикле инструкции умножения, сложения, вычитания, итерационного деления, нормализации, сдвигов, логических операций. Регистры АЛУ данных могут быть прочитаны или записаны 24-битными или 48- битными операндами по шинам XDB, YDB. Операнды источника могут иметь длину 24,48 и 56 бит и всегда находятся в регистрах АЛУ дан- ных. Результат любой операции в АЛУ данных сохраняется в аккуму- ляторе. Формат чисел с фиксированной запятой в виде правильных дробей с представлением отрицательных чисел в дополнительном коде. 24-битные данные обеспечивают динамический диапазон в 144дБ. Такого диапазона достаточно для большинства приложений, в которых используются параметры разрядностью не больше 24 бит. 56-битный аккумулятор АЛУ данных обеспечивает 336 дБ внутреннего динамиче- ского диапазона. АЛУ данных имеет следующие компоненты: • четыре 24-битных входных регистра; 300 • параллельный умножитель - аккумулятор (MAC); • два 48-битных регистра аккумулятора; • два 8-битных регистра расширения аккумулятора; • аккумулятор сдвига; • два устройства сдвига/ограничения по шине данных. Рисунок 8.8 - АЛУ данных Входные регистры АЛУ данных (Х1, Х0, Y1, Y0). Это 24-битные регистры данных общего назначения. Они могут использоваться как не- зависимые 24-битные регистры или как два 48-битных регистра X и Y, образованные объединением Х1 :Х0 и Y1 :Y0 соответственно. Х1 - старшее слово X, Y1 -старшее слово Y. Регистры служат входными бу- ферами между XDB или YDB и устройством MAC. Они используются как операнды источника АЛУ данных. Содержимое регистров может быть выдано на соответствующую шину данных для процедур обработ- ки прерываний. Аккумуляторы АЛУ данных. Шесть регистров АЛУ данных (А2, А1, А0, В2, В1 и В0) формируют два 56-битных аккумулятора общего 301 назначения. Каждый из аккумуляторов содержит по три объединенных регистра (А2:А1:А0 и В2:В1:В0). 24-битная MSP хранится в А1 или В1, 24-битная LSP - в А0 или В0. 8-битное расширение - в А2 или В2. 8-битные регистры расширения предназначены для защиты от пе- реполнения. В DSP56000/DSP56001 диапазон значений операндов со- ставляет от -1 до +0,9999998. Если сумма двух чисел меньше -1 или больше +0,9999998, то возникает потеря значимого разряда или пере- полнение. 8-битный регистр расширения формирует результат в случае 8 переносов. При использовании регистра расширения аккумулятора бит пере- полнения в регистре кодов условий всегда установлен в единицу. Расширение знака обеспечивается автоматически при записи в 56- битный аккумулятор А или В 48-битного или 24-битного операнда. Ес- ли записывается 24-битный операнд, ISP автоматически заполняется нулями для представления операнда в 56-битной форме, Если аккумуляторы А и В прочитаны, можно с помощью опера- ций масштабировать их содержимое на один бит влево или вправо для блока арифметики с плавающей точкой. MAC и логическое устройство. MAC и логическое устройство входят в главное арифметическое устройство DSP и выполняют все вы- числения с операндами данных. В случае арифметической команды устройство обрабатывает до трех операндов и выдает 56-битный ре- зультат в следующем формате: расширение: старшая значащая часть: младшая значащая часть (EXT: MSP: LSP). Операция MAC выполняется независимо и параллельно с опера- циями на шинах данных, что облегчает буферизацию входных и выход- ных данных АЛУ. Арифметическое устройство МАС содержит умно- житель и два аккумулятора. На вход умножителя могут поступать дан- ные только из регистров X и Y. Умножитель выполняет умножение 24 х 24 с дополнением до двух. 48-битный результат выравнивается и сум- мируется с 56-битным содержимым аккумулятора А или В. 56-битная сумма сохраняется в аккумуляторе (рисунок 8.9). 8-битное расширение аккумулятора фиксирует переполнение до 256 и позволяет складывать или вычитать содержимое 56-битных акку- муляторов. Операция MAC (умножение/ сложение) - неконвейеризо- ванная одноцикловая операция. Если инструкция предусматривает ум- ножение без сложения, то устройство MAC очищает аккумулятор и складывает его содержимое с произведением. Таким образом, результат всех арифметических инструкций представляется в формате 302 EXT:MSP:LSP (A2:A1:А0 или В2:В1.В0). Если результат сохраняется в 24-битном операнде, LSP просто отсекается или округляется до MSP. Рисунок 8.9 - Устройство__сдвига_аккумулятора.'>Устройство MAC Округление до ближайшего целого применяется при сложении произведения с содержимым аккумулятора в специальной команде DSP - MACR. Бит, до которого идет округление в аккумуляторе, определя- ется битом режима масштабирования в регистре статуса. Логическое устройство выполняет операции логического умноже- ния AND, логического сложения OR, исключающее ИЛИ EOR, инвер- сии NOT над регистрами АЛУ. Это устройство имеет разрядность 24 бита и оперирует старшей значащей частью операнда в аккумуляторе. Устройство сдвига аккумулятора. Асинхронное параллельное устройство сдвига с 56-битным входом и 56-битным выходом подклю- чено непосредственно к выходам MAC. Выполняет операции: нет сдви- га; сдвиг на один бит влево: ASL, LSL, ROL; сдвиг на один бит вправо: ASR, ASL, ROR; обнуление. Устройство сдвига/ограничения. Обеспечивает специальную обработку данных при выдаче из регистров аккумулятора на шины данных. Для каждой шины данных имеется отдельное устройство сдви- га/ограничения. Операция ограничения в случае переполнения разряд- ной сетки выполняется посредством замены результата вычислений 303 максимально возможной величиной. Знак данных устанавливается со- ответственно операнду источника: $7FFFFF - для 24-битного или $7FFFFF FFFFFF - для 48-битного положительного числа, $800000 - для 24-битного, $800000 000000 -для 48-битного отрицательного числа. MAC использует округление содержимого аккумулятора с оди- нарной точностью. Данный метод округления называется округлением до ближайшего целого или конвергентным округлением. Пространство памяти DSP56002. Пространство памяти DSP56002 представлено на рисунке 8.10. Регистр OMR расширен бита- ми YD (3 бит), МС (4 бит) SD (6 бит). Биты DE и YD задают режимы памяти (таблица 8.1). Таблица 8.1 - Режимы работы памяти DE YD Память данных 0 0 Внутренние ПЗУ запрещены и их адреса являются частью внешней памяти 0 1 Внутреннее ПЗУ данных X запрещено и является частью внешней памяти. Внутренние ОЗУ и ПЗУ данных Y запрещены и являются ча- стью внешней памяти 1 0 ПЗУ данных X и Y разрешены 1 1 Внутренние ОЗУ и ПЗУ данных Y запрещены и являются частью внешней памяти. Внутреннее ПЗУ данных X разрешено Однокристальный режим. В однокристальном режиме разрешены все внутренние памяти данных и программ. Программный сброс вызы- вает переход по адресу $0000 и выполнение соответствующей процеду- ры. Карты памяти для режима 0 и режима 2 идентичны, но в режиме 2 вектор сброса находится по адресу $Е000. Режим загрузки из EEPROM. Загрузочные режимы предназначены для загрузки программ из байтового ПЗУ во внутреннюю память про- грамм в течение сброса по питанию. После включения питания генера- тор состояний ожидания добавляет 15 состояний ожидания ко всем об- ращениям к внешней памяти, что позволяет использовать медленную память. Программа загрузки использует байты в трех последовательно расположенных ячейках внешнего ПЗУ для образования слова внут- ренней памяти программ. В загрузочном режиме разрешены загрузоч- ное ПЗУ на кристалле и выполнение программы загрузки. 304 Нормальный расширенный режим. В этом режиме разрешено внутреннее ОЗУ программ и вектор аппаратного сброса по адресу $Е000. Режим разработки. В этом режиме внутреннее ОЗУ программ за- прещено, а вектор аппаратного сброса находится по адресу $0000. Все ссылки на пространство памяти программ переадресуются прямо во внешнюю память. Режим загрузки по Host. В этом режиме разрешены загрузочное ПЗУ и выполнение программы загрузки. Режим аналогичен режиму 1, за исключением того, что программа загружается из внешней памяти программ по host-интерфейсу. Режим загрузки по SCI. В этом режиме разрешены загрузочное ПЗУ и выполнение программы загрузки. Внутреннее и/или внешнее ОЗУ программ загружается по интерфейсу SCI Количество слов про- граммы и стартовый адрес должны быть определены. Программа загрузки по SCI ожидает приема трех байтов, опреде- ляющих количество слов программы, трех байтов, определяющих ад- рес, с которого будут загружаться слова программы, и трех байтов для загрузки каждого слова программы. Режимы DSP56002 и управляющие сигналы приведены в таблице 8.2. Данные принимаются в SCI, начиная с младших битов. После окончания приема слов программы начинается выполнение загружен- ной программы. SCI запрограммирован на работу в асинхронном режи- ме с длиной данных - 8 бит, 1 стоп-бит, проверка на четность отсутст- вует. Таблица 8.2 -Операционные режимы работы DSP56002 Опер. режим МС MB MA Описание 0 0 0 0 Однокристальный режим - ОЗУ программ разрешено 1 0 0 1 Режим загрузки с EPROM, выход в режим 0 2 0 1 0 Нормальный расширенный режим - ОЗУ программ разрешено 3 0 1 1 Режим разработки - ОЗУ программ запрещено 4 1 0 0 Резерв 5 1 0 1 Загрузка по Host, выход в режим 0 6 1 1 0 Загрузка по SCI (внешняя синхронизация), выход в режим 0 7 1 1 1 Резерв 305 Рисунок 8.10 – Пространство памяти DSP56002 306 Устройство генерации адресов (address generate unit - AGU) и режимы адресации. Структура AGU. AGU выполняет вычисление истинных (физиче- ских) адресов данных в памяти. Это устройство использует три типа адресной арифметики: линейную модификацию адреса, модульную мо- дификацию адреса, адресацию с реверсивным переносом - и работает параллельно с остальными устройствами на кристалле, что сокращает время на генерацию адресов. Структура AGU показана на рисунке 8.11. Все регистры AGU являются 24-разрядными, в которых 16 младших разрядов являются значащими. Старшие 8 разрядов недоступны для за- писи и при чтении заполняются нулями. Блок регистров адреса (R0-R3 и R4-R7). Каждый из двух подбло- ков регистров адреса содержит четыре 16-битных регистра, которые содержат адреса для обращения к памяти. Каждый регистр может быть прочитан или записан с использованием глобальной шины данных. При выдаче содержимого регистров на шину данных 16-битные регистры записываются в два младших значащих байта шины данных, а старший значащий байт заполняется нулями. При записи в регистры старший значащий байт шины данных отсекает- ся. Каждый адресный регистр может использоваться как вход АЛУ ад- ресов для модификации регистров. Регистр из АЛУ нижних адресов и регистр из АЛУ верхних адресов доступны в одной инструкции. Если параллельно осуществляется пересылка данных из памяти X и из памяти Y, адресные регистры разделяются на два блока: R0 - R3, R4 - R7. Содержимое регистров адреса может модифицироваться соот- ветственно режиму адресации. Тип модификации определяется содер- жимым регистров модификации (Мn). Регистры смещения (Nn) исполь- зуются для режима адресации «модификация со смещением». Большинство режимов адресации модифицируют регистры адреса в цикле «чтение - модификация - запись». Блок регистров смещения (N0-N3 и N4-N7). Каждый из двух под- блоков регистров смещения содержит четыре 16-битных регистра, ко- торые содержат величину смещения, используемую для модификации адресных указателей или данных. Каждый регистр может быть прочи- тан или записан с использованием глобальной шины данных. При вы- даче содержимого регистров на шину данных 16-битные регистры за- писываются в два младших значащих байта шины данных, а старший значащий байт заполняется нулями. При записи в регистры старший значащий байт шины данных отсекается. 307 Рисунок 8.11 - Структура AGU Блок регистров модификации (М0-МЗ и М4-М7). Каждый из двух подблоков регистров модификации содержит четыре 16-битных регист- ра, которые определяют тип адресной арифметики для вычисления мо- дификаций регистров адреса или данных. Каждый регистр может быть прочитан или записан с использованием глобальной шины данных. При выдаче содержимого регистров на шину данных 16-битные регистры записываются в два младших значащих байта шины данных, а старший значащий байт заполняется нулями. При записи в регистры старший значащий байт шины данных отсекается. Каждый регистр модифика- ции устанавливается в $FFFF после сброса, что определяет линейную арифметику при вычислении модификаций адреса. АЛУ адресов. Два идентичных АЛУ адресов содержат 16-битный полный адрес, который может быть инкрементирован, декрементирован или к которому может быть добавлено содержимое регистра смещения. Второе полное слагаемое (называемое модулем) определяется результа- том суммирования первого полного слагаемого с величиной модуля, хранящейся в регистре модификации. Третье полное слагаемое опреде- ляется инкрементированием, декрементированием содержимого адрес- ного регистра или его суммированием с величиной смещения и перено- сом. Смещение и реверсивный перенос подаются параллельно на раз- ные входы. Тестовая логика определяет, какой из трех результатов по- дается на выход в качестве полного адреса 308 Каждое АЛУ адресов может модифицировать один регистр адреса в течение одного командного цикла. Содержимое регистра модифика- ции определяет тип арифметики для модификации адреса. Величина модификатора декодируется в АЛУ адресов. Адресация. DSP56000/DSP56001 обеспечивают три различных ти- па адресации: прямая регистровая, косвенная регистровая и специаль- ная. При прямой регистровой адресации и специальных режимах ис- пользование AGU не является обязательным. При прямой регистровой адресации в команде указывается физический адрес регистра, в котором находится операнд. Если регистр адреса используется для указания ячейки памяти, адресация называется косвенной регистровой, т.е. со- держимое регистра указывает не на сам операнд, а на адрес операнда. Специальная адресация определяет адрес с учетом его модификации. Модификация заключается в увеличении или уменьшении на единицу содержимого адресного регистра до или после выполнения команды. Программный контроллер. Программный контроллер обеспечи- вает предварительную выборку инструкций, декодирование инструк- ций, управление аппаратными циклами и обработку исключений Кон- троллер содержит 15-уровневый 32-разрядный системный стек и шесть непосредственно адресуемых регистров (рисунок 8.12), программный счетчик PC (Program Counter), регистр адреса цикла LA (Loop Address), счетчик петли LC(Loop Counter), регистр статуса SR (Status Register), регистр режима операций OMR (Operating Mode Register) и указатель стека SP (Stack Pointer). Системный стек представляет собой отдельный блок внутренней памяти, используемый для хранения регистра статуса и программного счетчика при вызовах подпрограмм и длительных прерываниях. В стеке также хранятся LA и LC для организации программных циклов. Каждая ячейка стека включает два 16-разрядных регистра: стар- шую часть (SSH) и младшую часть (SSL) стека. Все эти регистры могут быть прочитаны или записаны для упро- щения отладки системы. Хотя ни один из регистров программного кон- троллера не является 24-битным, все они читаются и записываются че- рез 24-битную шину PDB. При чтении регистров младшая часть битов (LSB) является значащей, а старшая значащая часть битов (MSB) за- полняется нулями. При записи регистров младшая часть битов (LSB) является значащей, а старшая значащая часть битов просто отбрасыва- ется, поскольку имеет смысл только младшая значащая часть битов (биты 15-0). 309 Рисунок 8.12 - Регистры контроллера Программный контроллер содержит конвейер с тремя ступенями и управляет пятью состояниями процессора: нормальным, обработкой исключений, сбросом, ожиданием и остановом. Структура программного контроллера. Программный контроллер состоит из трех аппаратных блоков: контроллера декодирования про- грамм (PDC), генератора адресов программ (PAG) и контроллера пре- рываний (PIC). Контроллер декодирования программ. PDC включает в себя про- граммную логику для декодирования, генератор адреса регистра, меха- низм выполнения циклов, механизм выполнения повторений, генератор кодов условий, механизм выполнения прерываний, регистр-защелку инструкций и его копию. PDC декодирует 24-битную инструкцию, за- груженную в регистр-защелку, и вырабатывает все сигналы, необходи- мые для управления конвейером. Копия регистра-защелки инструкций оптимизирует выполнение инструкций повторения и перехода. Генератор адресов программ. PAG содержит: регистры PC, SP, SS (системный стек), OMR (регистр операционного режима), SR, LC и LA. Циклы, являющиеся основной конструкцией алгоритмов цифровой об- работки сигналов, поддерживаются аппаратно. При выполнении инструкции цикла DO в регистр счетчика цикла загружается количество повторений цикла, а в регистр адреса цикла - 310 адрес последней инструкции цикла, и устанавливается флаг цикла в ре- гистре статуса. Перед выполнением инструкции DO содержимое реги- стров LA, LC и SR сохраняется в стеке. Под управлением механизма выполнения циклов адрес первой инструкции цикла помещается в стек. Пока флаг цикла в регистре статуса не сброшен, механизм выполнения циклов сравнивает содержимое PC с содержимым LA для определения последней инструкции цикла. Когда последняя инструкция выбрана, содержимое LC сравнивается с единицей. Если равенство не выполня- ется, содержимое LC декрементируется и из SS читается адрес первой инструкции цикла. Если равенство выполняется, то значения LA, LC и флага цикла в SR восстанавливаются из стека, а выборка инструкций продолжается с адреса LA + 1. Пересылка массива данных может быть выполнена с использова- нием механизма повторений. Инструкция REP загружает в LC количе- ство повторений следующей за ней инструкции. Так как команда, кото- рая будет повторяться, выбрана только один раз, это увеличивает про- изводительность за счет уменьшения обращений к внешней шине. Од- нако инструкция RЕР не может быть прервана, поскольку выбирается только один раз. Контроллер прерываний. PIC принимает все запросы прерываний, осуществляет арбитраж в каждом цикле и генерирует адрес вектора прерывания. Прерывания могут вызывать четыре внешних и 16 внут- ренних источников прерываний. Используется структура гибкого приоритета прерываний. Каждое прерывание получает свой уровень приоритета (IPL) - от 0 до 3. Уро- вень 0 - самый низкий, а уровни 1 и 2 маскируются. Уровень 3 является высшим и не маскируется. Биты маски прерываний в регистре статуса (SR) показывают текущий уровень приоритета прерываний в процессо- ре. Прерывания, имеющие уровень приоритета меньше текущего, не учитываются при арбитраже. Уровень приоритета 3 всегда вызывает прерывание процессора. Уровни приоритета прерываний для каждого периферийного устройства на кристалле (HI, SSI, SCI) и для каждого внешнего источника прерываний ( ¬ IRQA, ¬ IRQB) могут задаваться программным путем от 0 до 2. Уровни приоритета устанавливаются при записи в регистр уровней приоритета, представленный на рисунке 5.13. В DSP56002 регистр уровней приоритета прерываний расширен: добавлены биты 16 -TIL1 и 17 - TIL0, которые задают уровень приори- тета прерываний от таймера. Источники прерываний и их уровни при- оритета указаны в таблице 8.3. Каждый источник прерываний имеет 311 свой вектор для вызова процедуры обработки прерывания, располо- женной в младших 64 словах памяти программ. При переходе к обра- ботке исключений текущая инструкция выполняется, если только вы- бранное слово не является первым словом двухсловной инструкции, иначе выполнение инструкции прерывается. Далее выполняется две выборки адреса, во время которых PC не изменяется. PIC генерирует выборку адреса инструкции прерывания, указывающего на первое слово двухсловной инструкции подпрограммы быстрой обработки прерывания. Затем производится выборка двух слов инструкции по вектору прерывания. Если одно из этих слов - переход к подпрограмме, то быстрая об- работка прерывания переводится в длительную. Процедура длительной обработки прерывания помещает текущий контекст процессора в стек. Подпрограммы и прерывания могут быть вложенными. Стек может быть расширен в память за счет использования программного доступа к регистрам SSH и SSL. Контакты внешних прерываний ¬ IRQA и ¬ IRQB могут быть настроены на прерывания по переднему или задне- му фронту. Немаскируемое прерывание NMI осуществляется по уров- ню и выполняется по первому появлению на контакте ¬ IRQB 10В по- сле последнего обслуживания NMI или сброса. NMI имеет уровень приоритета 3 и не маскируется. NMI не используется как вход преры- вания общего назначения, поскольку зарезервировано для аппаратных разработок. Вектор аппаратного сброса может указывать на внутреннюю или внешнюю (Р.$Е000) память программ. Немаскируемое прерывание, трассировка и программное прерывание используются при отладке. Рисунок 8.13- Формат регистра уровней приоритета Программное прерывание используется для организации точек ос- танова. При трассировке инструкции выполняются в пошаговом режи- ме. 312 Таблица 8.3 - Уровни приоритета Стартовый адрес IPL Источник Р.$0000/Р.$Е000 3 Аппаратный внешний сброс Р.$0002 3 Ошибка стека Р.$0004 3 Трассировка Р.$0006 3 Программное прерывание SWI Р.$0008 0-2 Внешнее прерывание LLJIRQA Р.$000А 0-2 Внешнее прерывание LUIRQB Р.$000С 0-2 SSI - Приемник данных Р.$000Е 0-2 SSI - Приемник данных в состоянии исключения Р.$0010 0-2 SSI - Передатчик данных Р.$0012 0-2 SSI - Передатчик данных в состоянии исключения Р.$0014 0-2 SCI - Приемник данных Р.$0016 0-2 SCI - Приемник данных в состоянии исключения Р.$0018 0-2 SCI - Передатчик данных Р.$001А 0-2 SCI - Простой линии Р.$001С 0-2 SCI - Таймер Р.$001Е 3 NMI - Зарезервировано для разработок Р.$0020 0-2 Host - Приемник данных Р.$0022 0-2 Host - Передатчик данных Р.$0024 0-2 Host - Команда Р.$0028 0-2 Доступно для команд Host Р.$002А 0-2 Доступно для команд Host Р.$002С 0-2 Доступно для команд Host Р.$002Е 0-2 Доступно для команд Host Р.$0030 0-2 Доступно для команд Host Р.$0032 0-2 Доступно для команд Host Р.$0034 0-2 Доступно для команд Host Р.$0036 0-2 Доступно для команд Host Р.$0038 0-2 Доступно для команд Host Р.$003А 0-2 Доступно для команд Host Р.$003С 0-2 Доступно для команд Host Р.$003Е 0-2 Неправильная инструкция Все периферийные устройства на кристалле используют одинако- вый механизм запроса прерываний. Каждое устройство имеет одну ли- нию запроса прерывания в PIC и две входные линии: линию чтения вектора и линию ответа. Устройство, имеющее более одного источника прерывания, про- водит собственный арбитраж прерывания в соответствии с его внут- ренним уровнем приоритета. PIC выбирает одно из периферийных уст- ройств и посылает ему адрес вектора прерывания. Конвейер инструкций. Программный контроллер содержит трех- уровневый конвейер, выполняющий выборку, декодирование и испол- 313 нение инструкций. Устройства выборки, декодирования и исполнения расположены последовательно. Синхронизация. DSP56000/DSP56001 использует четырехфазную синхронизацию выполнения инструкций. Синхронизация обеспечива- ется внутренним генератором, соединенным с внешним кристаллом контактами XTAL и EXTAL, или внешним генератором по линии EXTAL. Программная модель. Программная модель контроллера пред- ставлена на рисунке 8.14. Она содержит наряду с программным счетчи- ком, регистром статуса и системным стеком дополнительные регистры счетчика цикла и адреса цикла, предназначенные для аппаратной под- держки инструкции DO. Рисунок 8.14 - Программная модель контроллера (* - запрещены для изменения, читаются как нуль) Программный счетчик (PC), 16-битный регистр, содержащий ад- рес следующей ячейки в памяти программ. PC может указывать на ин- струкции, операнды данных или адреса операндов. Ссылки на этот ре- гистр подразумеваются в большинстве инструкций. PC запоминается в стеке при выполнении программного цикла, подпрограммы или преры- вания. Регистр статуса (SR). 16-битный регистр статуса SR состоит из регистра режима MR, занимающего 8 старших битов и регистра кодов условий CCR, занимающего 8 младших битов. Регистр статуса сохраня- ется в стеке при выполнении программного цикла, подпрограммы или прерывания. Формат регистра показан на рисунке 8.15. 314 Рисунок 8.15 - Формат регистра статуса SR Регистр управления (MR). MR - специальный управляющий ре- гистр, определяющий текущее состояние процессора для супервизора. На биты регистра режима MR воздействуют сброс процессора, выпол- нение цикла, возврат из прерывания, программное прерывание и инст- рукции, оперирующие непосредственно с содержимым регистра. После аппаратного сброса в регистре устанавливается маска прерывания, би- ты масштабирования, флаг цикла, бит трассировки сбрасываются в «0». Регистр кодов условий (CCR). Регистр кодов условий (флагов) оп- ределяет текущее состояние процессора для пользователя. На регистр кодов условий воздействуют арифметические и логические операции, операции пересылки и инструкции, оперирующие непосредственно с содержимым регистра. После сброса все биты CCR устанавливаются в «0». Флаг переноса (С - бит 0) устанавливается в «1» при наличии пе- реноса из старшей значащей части числа в результате сложения. Пере- нос или заем генерируется из бита 55 результата. Перенос также возни- кает при манипуляциях с битами, сдвигах и циклических сдвигах. Флаг переполнения (V-бит 1) устанавливается при арифметиче- ском переполнении 56-битного результата. Это означает, что результат не может быть представлен в аккумуляторе. Флаг нуля (Z- бит 2) устанавливается в «1», если результат равен нулю. Флаг отрицательного результата (N - бит 3) устанавливается в «1», если результат имеет отрицательный знак. Флаг денормализации (U - бит 4) устанавливается, если два старших бита идентичны. Флаг расширения (Е- бит 5) сброшен в «0», если все биты целой части 56-битного результата - нули или единицы, иначе бит установлен. Целая часть определяется режимом масштабирования и битом Е. Если бит расширения равен нулю, то младшая часть числа содержит все зна- чащие биты, а старшая часть числа является расширением знака. В этом случае регистр расширения аккумулятора игнорируется. Если бит рас- ширения равен единице, то регистр расширения аккумулятора исполь- зуется. 315 Флаг ограничения (L - бит 6) установлен, если установлен бит пе- реполнения. Также устанавливается при выполнении операций ограни- чения устройством сдвига/ограничения данных. Бит сбрасывается толь- ко при сбросе процессора или специальной командой. Маска прерывания (I1,I0 - биты 8 и 9). Показывает текущий уро- вень приоритета прерываний в процессоре. Уровень приоритета изме- няется программным путем. Биты маски прерываний устанавливаются в «1» при аппаратном сбросе процессора и не изменяются при про- граммном сбросе. Режим масштабирования (S1,S0 - биты 10 и 11). Биты определяют режим масштабирования для устройства сдвига/ограничения данных АЛУ и позиции округления для MAC. Действие режима масштабирова- ния проявляется при чтении данных из аккумуляторных регистров А и В на шины данных и при округлении в MAC. При сбросе процессора и начале длительной обработки прерывания эти биты равны нулю. Режим трассировки (Т- бит 13). Бит устанавливается в начале вы- полнения каждой инструкции в пошаговом режиме. Если бит равен ну- лю, трассировка запрещена и выполнение инструкций идет нормаль- ным образом. При сбросе процессора бит Т равен нулю. Флаг цикла (LF- бит 15). Бит устанавливается при выполнении программного цикла и разрешает определение окончания цикла. По за- вершении цикла бит устанавливается в «0». Регистр операционного режима (OMR). OMR -24-битный регистр (рисунок 8.16), в котором определены 5 битов для DSP56000/DSP56001 и 7 битов для DSP56002. Устанавливает текущий операционный режим процессора. Рисунок 8.16 –Формат регистра операционного режима DSP56002 На биты регистра воздействует только сброс процессора и непо- средственные операции с содержимым регистра. После сброса биты МА и MB могут быть загружены извне через контакты А и В. Биты операционного режима кристалла (МА, МВ - биты 0 и 1) по- казывают режим расширения шин в процессоре. После сброса эти зна- чения загружаются извне через внешние контакты выбора операцион- ного режима ¬ MODA и ¬ MODB, либо могут быть изменены про- граммным путем. 316 Бит разрешения ПЗУ данных (DE- бит 2). Установка бита разре- шает использование двух ПЗУ данных размером 256 х 24, находящихся по адресам $0100 - $01FF в пространствах памяти X и Y. Бит запрещения внутренней памяти Y (YD - бит 3).Установка бита запрещает доступ к внутренней памяти данных Y. Если бит равен нулю, внутренняя память данных Y доступна в соответствии с состоянием управляющего бита DE. Аппаратный сброс очищает бит YD Бит операционного режима кристалла (МС - бит 4). Бит МС наря- ду с битами МА и MB определяет карту памяти и операционный режим кристалла. После сброса процессор загружает этот бит через внешний контакт MODC После выхода процессора из состояния сброса бит МС может быть изменен программным путем. Бит задержки останова (SD - бит 6). При выходе из состояния ос- танова (по инструкции STOP) если этот бит равен нулю, генерируется задержка в 64К циклов синхронизации (131072 Т состояний). Если бит установлен в «1», задержка составляет 16 Т состояний. Длительная за- держка используется для стабилизации синхронизации Бит доступа к внешней памяти (ЕА - бит 7). Бит определяет функ- ции двух линий порта А, указанные в таблице 8.4. Таблица 8.4 – Функции линий порта А ЕА Линия ¬ BR (Вход) Линия ¬ BG (Выход) 0 1 Запрос шины ( ¬ BR) Ожидание ( WT) Предоставление шины ( ¬ BG) Стробирование шины ( ¬ BS) Регистр адреса цикла и регистр счетчика цикла (LA и LC). Со- держимое регистра адреса цикла LA указывает на местонахождение слова последней инструкции программного цикла LC -специальный 16- битный счетчик, определяющий число повторений цикла. При выполнении инструкции DO содержимое регистра LA поме- щается в SSH, а регистра LC - в SSL, откуда оно извлекается только по- сле окончания цикла по инструкции ENDDO При выборке инструкции по адресу, содержащемуся в LA, прове- ряется содержимое LC. Если содержимое LC не равно единице, оно декрементируется и следующая инструкция выбирается по адресу, на- ходящемуся в верхней ячейке стека В противном случае PC инкремен- тируется, флаг цикла сбрасывается, регистры LA и LC восстанавлива- ются из стека и продолжается нормальное выполнение программы. Регистр LC программно доступен, и выполнение цикла может 317 быть прекращено программным путем. Регистр LC также используется в инструкции REP. Системный стек (SS). SS -отдельная внутренняя память размером 15 х 32 бита, разделенная на два блока SSL и SSH. SSH сохраняет со- держимое программного счетчика, SSL -регистра статуса при вызовах подпрограмм и длительных прерываниях. В стеке сохраняются также значения LA и LC при выполнении программных циклов. Стек обеспе- чивает выполнение 15 длинных прерываний, семи циклов DO, 15 вызо- вов подпрограмм. Если стек переполняется, возникает немаскируемое прерывание - ошибка стека. Значение PC теряется, что приводит к ошибке программы, выполняющейся, когда возникло прерывание по переполнению стека. Указатель стека (SP). 6-битный указатель стека определяет по- следнюю занятую ячейку стека и состояние стека (потеря содержимого, пустой, полный, переполнение). Формат регистра SP указан на рисунке 8.17. Рисунок 8.17- Формат регистра SP Указатель стека (Р0.Р1.Р2.Р3—биты 0-3) показывает последнюю используемую ячейку стека. После аппаратного сброса все биты равны нулю, что означает - стек пуст. Флаг ошибки стека (SE- бит 4). Показывает возникновение ошиб- ки стека. Если стек заполнен, указатель стека равен 001111, и любая операция, вызывающая запись в стек, приведет к возникновению ошиб- ки стека, т е SP будет равен 010000 Аналогично, если SP равен 0, любая операция чтения из стека приведет к возникновению ошибки стека. Флаг ошибки стека остается равным единице, пока пользователь не сбросит его в «0». Флаг потери содержимого (UF- бит 5). Устанавливается при поте- ре содержимого стека. Сбрасывается в «0» пользователем. Остальные биты стека зарезервированы для будущих разработок |