В качестве основной программы используется программа, предоставленная разработчиками фирмы Analog Devices, Inc. (Проект вы можете найти в приложении < /AppData/Local/Temp/AppData/Local/Temp/Temp1_allbest-r-00749956.zip/adsp-2191_complex_rad2_fft> и на сайте Analog Devices www.analog.com < /AppData/Local/Temp/AppData/Local/Temp/Temp1_allbest-r-00749956.zip/www.analog.com>). Программа проверена на тест-драйве фирменного программного обеспечения VISUALDSP++TM. На рисунке 13 показаны входные сигналы, подаваемые на вход кодека - вещественные сигналы подаются по левому каналу, мнимые, соответственно, по правому. Сигнал Inputreal - входной вещественный сигнал, показанный на рисунке в двух различных масштабах, Inputimag - входной мнимый сигнал, для реальных сигналов равный нулю. Результаты выполнения программы должны выдать результаты, представленные на рисунке 14. На рисунке 15 изображены выходные сигналы: Refft - выходной вещественный сигнал, Inputreal - выходной мнимый сигнал. Заметьте, что модель выходного сигнала на каждом отсчёте - это модуль комплексного числа, представленного в каждый момент времени выходными сигналами.
После того, как мы убедились в работоспособности программы обработки можно приступить к разработке реализации алгоритма многопроцессорной схемы. В качестве связи между процессорами будут выступать прерывание DSP-to-DSP Interrupt, и семафоры DSP-DSP Semaphore0 и DSP-DSP Semaphore1. Как видно из алгоритма, сначала происходит инициализация, не отличающаяся от инициализации стандартной программы, затем происходит очистка семафоров, её выполняет процессор P0:
/* Очиска флагов */= 0x0000;(0x34) = ax0;
Поскольку программа будет управляться прерываниями, то нужно их разрешить (эти строки должны присутствовать в обоих процессорах):
/* Инициализация прерывания DSP-to-DSP Interrupt */
AY0=IMASK;=0x0100;= AY0 or AY1;
/* Демаскирование DSP-DSP Interrupt */=AR;
/* Разрешение глобальных прерываний */INT;
Далее процессор P0 может выполнять любую программу, в нашем случае он выполняет команду IDLE, которая заставляет его делать «ничего», а процессор P1 прерывает его работу:
/* Ядро ЦОС P1 */
.=0x0004;(0x34)=ax0;
.
Чтобы процессор P1 слишком рано не прервал работу процессора P0, нужно поставить достаточное число «пустых» операций NOP.
Следующим шагом процессор P1 входит в режим IDLE, а процессор P0, проверив доступ к кодеку:
/* проверка Семафора0 в P0 */ChecK:
ay0 = 0x0001= reg(0x34);= ax0 AND ay0EQ JUMP Get_InData;
JUMP Sema0Check;
.
выполняет набор окна данных, выставляет семафор 0
/* выставление Семафора0 */
.= 0x0001;(0x34) = ax0;
.
генерирует прерывание
.=0x0004;(0x34)=ax0;
.
и начинает обработку данных.
После того, как процессор P0 сгенерирует прерывание, процессор P1 проверяет, с помощью семафоров, что ему делать:
/* проверка Семафора0 в P1 */ChecK:
ay0 = 0x0001= reg(0x34);= ax0 AND ay0NE JUMP Get_InData;
JUMP Sema0Check;
.
очищает семафор0, и начинает обработку данных.
Аналогичным образом организуется и вывод данных, только вместо семафора 0 процессоры оперируют семафором1. Подробнее о межпроцессорной коммутации можно узнать из электронной книги [5].
К особенностям Ввода/Вывода можно отнести использование адресных регистров Ввода/Вывода для коммутации с хост-процессором и кодеком.
Передачи данных от AC’97 в память процессора ЦОС выполняется использованием ПДП передач через буферы FIFO процессора ЦОС. Каждое ядро ЦОС имеет четыре буфера FIFO, доступных для передач к/от кодека AC’97. Регистры, которые контролируют ПДП передачи доступны только из процессора ЦОС и определены, как часть пространства регистров ядра.
Несколько слов об архитектуре FIFO данных.
Два FIFO из четырёх являются входными буферами, принимающими данные в процессор. Два других - передающие, посылают данные от процессора ЦОС к кодеку AC’97 или другому процессору ЦОС. Каждый FIFO способен содержать восемь 16-ти разрядных слов. Когда получены слова, или когда есть свободные места в буфере передачи могут генерироваться прерывания.
Моделирование цифро-аналоговых преобразователей
С введением новых телевизионных стандартов, таких как EDTV (телевидение повышенной четкости) и HDTV(телевидение высокой четкости) повышаются требования к АЦП и ЦАП. Некот ...
Проектирование волоконно-оптических линий передач между городами Мелитополь-Луганск
Волоконно-оптические линии передачи (ВОЛП) на сегодняшнее время
переживает расцвет, связанный, в первую очередь с взрывным характером развития
в последние годы ...
Проект кабельной линии
Железнодорожная сеть представляет собой единую, работающую по
общему плану систему, части которой взаимодействуют друг с другом. Работа всех
звеньев министе ...