Проектирование устройств на сигнальных процессорах: Учебное пособие (Проектирование цифровых устройств аппаратуры связи на ЦСП семейства ADSP-21xx), страница 14

Все перечисленные в табл. 6.1 этапы разработки ПО будут последовательно описаны:

7. ДЕТАЛИЗАЦИЯ АЛГОРИТМА

Алгоритм, полученный на начальном этапе проектирования (раздел 5), указывает лишь общий ход решения задачи независимо от конкретной элементной базы. Чтобы реализовать алгоритм на практике, необходимо осуществить его детализацию с учётом возможностей и особенностей выбранного ЦСП и разработанной структурной схемы.

Детализация алгоритма - это разукрупнение обобщенного графического алгоритма до такой степени, чтобы каждый элемент алгоритма выполнялся одной командой, выраженной через элементы структуры ЦСП.  Детализация алгоритма облегчает и формализует последующее построение программы, состоящей из команд, выраженных через символические обозначения узлов и операций, имеющихся у выбранного ЦСП. Заметим, что процесс детализации является достаточно сложным творческим процессом.

Процесс детализации разбит на более мелкие этапы 2.1 -2.3, так как решаемые задачи достаточно многообразны и требуют повышенной аккуратности и ответственности. Нельзя отрываться от физического содержания задачи, следует действовать строго в рамках возможностей ЦСП и предупредить опасность нарушений в использовании регистров и ячеек памяти. Следовательно, перед выполнением этой работы необходимо подробно ознакомиться с возможностями ЦСП, в частности, с его программной моделью, системой команд и особенностями их выполнения.

Справочные материалы по ADSP-218x имеются в приложении B.

7.1. Освоение системы команд ЦСП

Каждый тип ЦСП характеризуется присущим ему ограниченным набором несложных команд. Этот набор организован так, что обеспечивает возможность реализации алгоритма любой сложности путем его разложения на более простые операции. В наборе обычно имеется избыточность, направленная на повышение быстроты обработки. Форма описания наборов команд может быть различной.  Для семейства ADSP-21xx используется язык ассемблер с алгебраической  формой записи команд. Она близка к языкам высокого уровня, что облегчает освоение системы команд.

Изучение набора операций начинают с наиболее доступного, словесного описания. Более полная и однозначная трактовка операции содержится в её выражении на языке ассемблера. В ADSP-21xx имеются три вычислительных  блока: АЛУ, умножитель-накопитель (MAC) и устройство сдвига. В каждый момент работает только один из них, но одновременно могут параллельно выполняться операции пересылки и формирования адресов данных в DAG1 и 2. Сведения о возможных источниках операндов и возникающих признаках операций имеются в таблицах Приложения B. Для выяснения особенностей выполнения операции бывает полезно рассмотреть структурную схему соответствующего блока процессора. Ориентироваться при выборе регистров, участвующих в операциях, помогает программная модель ЦСП (Приложение B, рисунок B.1).

Система команд ADSP-21xx имеет некоторые ограничения:

·  Прежде, чем использовать в операции непосредственное число как операнд, его нужно поместить в один из регистров процессора, используя инструкцию пересылки (присвоения).

·  Прежде, чем использовать в операции содержимое ячейки памяти как операнд, его нужно переместить в один из регистров вычислительного блока, используя команду пересылки.

Эти ограничения хорошо компенсируются наличием  в системе команд многофункциональных инструкций, которые одновременно с вычислительной операцией выполняя+ют одну или две пересылки. Однако эту возможность рекомендуется задействовать на заключительном этапе разработки ПО.

Набор инструкций переходов помимо специфических инструкций управления адресом содержит широкий набор условных операций. Перечень кодов условий приведен в Приложении B, таблица B.1.

В ADSP-218x для параллельного ввода/вывода используют порты – внешние адресуемые регистры (см. п. 2.5). Обращение к ним происходит по адресу с использованием дешифратора. Так что команда обращения к порту аналогична команде чтения или записи для ячейки памяти, имеющей адрес. На этапе программирования вместо адреса используется имя, присвоенное порту.