Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++ - [14]

Шрифт
Интервал

>.const IDMA=                0x3fe0;

>.const BDMA_BIAD=           0x3fe1;

>.const BDMA_BEAD=           0x3fe2;

>.const BDMA_BDMA_Ctrl=      0x3fe3;

>.const BDMA_BWCOUNT=        0x3fe4;

>.const PFDATA=              0x3fe5;

>.const PFTYPE=              0x3fе6;

>.const SPORT1_Autobuf=      0x3fef;

>.const SPORT1_RFSDIV=       0x3ff0;

>.const SPORT1_SCLKDIV=      0x3ff1;

>.const SPORT1_Control_Reg=  0x3ff2;

>.const SPORT0_Autobuf=      0x3ff3;

>.const SPORT0_RFSDIV=       0x3ff4;

>.const SPORT0_SCLKDIV=      0x3ff5;

>.const SPORT0_Control_Reg=  0x3ff6;

>.const SPORT0_TX_Channels0= 0x3ff7;

>.const SPORT0_TX_Channels1= 0x3ff8;

>.const SPORT0_RX_Channels0= 0x3ff9;

>.const SPORT0_RX_Channels1= 0x3ffa;

>.const TSCALE=              0x3ffb;

>.const TCOUNT=              0x3ffс;

>.const TPERIOD=             0x3ffd;

>.const DM_Wait_Reg=         0x3ffe;

>.const System_Control_Reg=  0x3fff;

Описание этих символьных имен и их соответствие адресам памяти данных процессора приведено в табл. 6.1.


Таблица 6.1 Описание символьных имен регистров управления и состояния процессора ADSP-2181

ИмяОписаниеАдрес
IDMAРегистр управления IDMA0x3FE0
BDMA_BIADРегистр внутреннего адреса BDMA0x3FE1
BDMA_BEADРегистр внешнего адреса BDMA0x3FE2
BDMA_BDMA_CtrlРегистр управления BDMA0x3FE3
BDMA_BWCOUNTРегистр счетчика слов BDMA0x3FE4
PFDATAРегистр данных программируемых флагов0x3FE5
PFTYPEРегистр управления программируемыми флагами0x3FE6
SPORT1_AutobufРегистр управления автобуферизацией SPORT10x3FEF
SPORT1_RFSDIVРегистр делителя кадровых импульсов SPORT10x3FF0
SPORT1_SCLKDIVРегистр делителя тактовых импульсов SPORT10x3FF1
SPORT1_Control_RegРегистр управления SPORT10x3FF2
SPORT0_AutobufРегистр управления автобуферизацией SPORT00x3FF3
SPORT0_RFSDIVРегистр делителя кадровых импульсов SPORT00x3FF4
SPORT0_SCLKDIVРегистр делителя тактовых импульсов SPORT00x3FF5
SPORT0_Control_RegРегистр управления SPORT00x3FF6
SPORT0_TX_Channels0Регистр младшего слова передатчика SPORT00x3FF7
SPORT0_TX_Channels1Регистр старшего слова передатчика SPORT00x3FF8
SPORT0_RX_Channels0Регистр младшего слова приемника SPORT00x3FF9
SPORT0_RX_Channels1Регистр старшего слова приемника SPORT00x3FFA
TSCALEРегистр масштабирования таймера0x3FFB
TCOUNTРегистр счетчика таймера0x3FFC
TPERIODРегистр периода таймера0x3FFD
DM_Wait_RegРегистр тактов ожидания памяти данных0x3FFE
System_Control_RegРегистр управления системой0x3FFF

Как видно из содержимого данного файла, в каждой его строке производится директивное назначение определенному символьному имени конкретного числового значения. Символьные имена могут быть произвольными, важно только, чтобы они одинаково записывались в данном файле и в самой программе. В дальнейшем мы часто будем использовать символьное описание регистров, для обращения к ним по записи или чтению из программы. В частности, в нашей программе mem_clr.dsp содержатся строки команд для обращения к регистру конфигурирования PFTYPE и регистру данных PFDATA программируемых флагов PF процессора. Файл def2181.h должен находиться в том же каталоге, в котором будет храниться файл программы во время ее трансляции. Иначе компилятор выдаст сообщение об ошибке во время компиляции программы.

Далее, в файле программы начинается запись команд. Поскольку с нулевого адреса памяти программ должны быть записаны векторы прерываний или их обработчики, первой располагается команда перехода jump BEGIN на начало программы, а затем команды возврата из прерывания rti для каждого из прерываний процессора. Все команды должны заканчиваться точкой с запятой, в соответствии с требованиями синтаксиса ассемблера. Заметьте, что в одной строке присутствует сразу несколько команд. Такая запись допускается компилятором ассемблера. Так как для каждого вектора прерывания в памяти программ отведено по четыре 24-разрядных ячейки памяти, а каждая команда процессора занимает одну 24-разрядную ячейку памяти, то оставшиеся неиспользованные ячейки памяти заполняются пустыми командами пор. Сразу же после метки BEGIN записаны команды инициализации конфигурационного регистра флагов PFTYPE с помощью рабочего регистра ax0 блока ALU процессора. Непосредственная запись константы в память данных не поддерживается процессором. Ниже располагаются строки комментариев с пояснением назначения каждого бита регистра флагов PFTYPE. Подобные записи позволяют хорошо документировать программу и облегчают тем самым ее отладку и последующее сопровождение. Аналогично описанным выше записям, в программе присутствуют строки команд записи в регистр данных PFDATA программируемых флагов слова управления светодиодом. Далее следуют команды инициализации некоторых регистров сигнального процессора. В частности, команда i0 = ^buf_dm; производит инициализацию индексного регистра, входящего в блок DAG сигнального процессора, т.е. присваивает индексному регистру i0 значение адреса начала буфера buf_dm, располагающегося в памяти данных процессора. Аналогично происходит инициализация других регистров этого блока и инициализация регистра ar блока ALU. Я намеренно указал на принадлежность регистров блокам процессора, для того чтобы показать связь между архитектурой процессора и выполняемой программой и тем самым облегчить понимание того, что происходит в самом процессоре при выполнении перечисленных команд программы. Далее в программе организуется циклическое заполнение памяти данных процессора значением регистра ar. После чего организуется цикл, состоящий из команд инвертирования выходного флага FL2 процессора и заполнения нулевой ячейки памяти регулярно увеличивающимся значением из регистра ar. Кроме того, в данном цикле организовано чтение состояния входов PF0-PF3 процессора и запись этих значений в ячейку памяти данных по адресу 1. Это сделано для того, чтобы при работе программы можно было увидеть с помощью осциллографа генерацию сигнала на выводе FL2, а также следить за изменением значений ячеек памяти с помощью симулятора или других аппаратно-программных средств, убеждаясь тем самым в правильной работе программы и нормальном функционировании процессора. Завершает программу директива окончания модуля программы endmod. В общем случае структура файла должна быть следующей:


Рекомендуем почитать
Винный гид покупателя

Эта книга не просто энциклопедический перечень виноделов и виноградарей, но одновременно и учебник, и покупательский гид. Ее цель — превратить вас в более знающего и уверенного покупателя, достаточно осведомленного о «закулисных» деталях, чтобы при покупке вина вы могли сделать самый разумный выбор.


Секреты безопасной покупки подержанного автомобиля

Выбор и покупка подержанного автомобиля в России до недавнего времени были лотереей. Проигрыш в этой лотерее означал сотни тысяч рублей, выпущенных на ветер. Однако эта книга, представляющая собой краткое руководство по приобретению б/у машины, а также услуги нашего сервиса «АвтоКод» помогут свести риск нарваться на мошенников к нулю!


713 секретов производственных технологий

Форматирование файла не завершено (Stribog).Эти не только древние, но и интересные рецепты не потеряли актуальности и в нынешнее время. Правда, хочу заметить, что не все из них безопасны. Особенно те, где используется ртуть и соли тяжелых металлов (в частности это касается раздела «Парфюмерия»). Так что думайте Сами.С уважением, Сергей Каштанов.


Противотанковая мина ТМ-72 и минный взрыватель МВН-72

Руководство предназначается для изучения тактико-технических характеристик, устройства принципа действия, правил применения, хранения и транспортировки противотанковой мины ТМ-72 и минного взрывателя МВН-72.


Учимся читать в три раза быстрее за 20 минут - Лайфхакер

rufb2edit 0.0.908 сен 2015http://lifehacker.ru/2015/01/22/chitat-v-3-raza-bystree/web2fb2_201509080815_87756238791.0Учимся читать в три раза быстрее за 20 минут - ЛайфхакерИя Зорина 22 января 2015Учимся читать в три раза быстрее за 20 минутУмение быстро читать освобождает кучу свободного времени. Только представьте, вы можете в три раза быстрее справляться со всей литературой — технической, профессиональной или художественной. А теперь приятная новость: в отличие от большинства навыков, которые нужно осваивать постепенно, скорочтение доступно вам уже через 20 минут тренировки.


Молодежный словарь

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