/* ______________Подпрограмма ДПФ_____________________ */
dft:
I6=sine; /* Указатель на Sine */
L6=64; /* Для N=64 значений */
I7=sine + N/4; /* Получение косинуса из синуса */
L7=64; /* Сдвиг указателя на pi/2 */
/* и использование циклического буфера.*/
I4=COS;
L4=2;
I3=SIN;
L3=2;
I5=0;
L5=0;
CNTR=N;
DO outer UNTIL CE;
M6=I5;
DM(I4,M7)=0; DM(I4,M7)=0;/* Очистка буфера временных данных COS */
DM(I3,M1)=0; DM(I3,M1)=0;/* Очистка буфера временных данных SIN */
CNTR=N;
DO calc UNTIL CE;
MX0=DM(I0,M1), MY0=PM(I7,M6); /* Чтение input, чтение COS */
MX1=MX0 /* Копирование input */
MY1=PM(I6,M6); /* Чтение SIN */
MR1=DM(I4,M7); /* Чтение текущего значения COS и суммирование */
MR0=DM(I4,M7);
MR=MR+MX0*MY0(SS);/* Мультисуммирование COS */
DM(I4,M7)=MR1; /* Запись нового накопленного значения COS */
DM(I4,M7)=MR0;
MR1=DM(I3,M1); /* Чтение текущего значения SIN и суммирование */
MR0=DM(I3,M1);
MR=MR-MX1*MY1(SS);/* Мультисуммирование SIN */
DM(I3,M1)=MR1; /* Запись нового накопленного значения SIN */
calc : DM(I3,M1)=MR0;
AR=DM(I4,M5);
DM(I2,M1)=AR; /* Запись результата действующей величины * /
AR=DM(I3,M2);
DM(I1,M1)=AR; /* Запись результата мнимой величины */
outer: MODIFY(I5,M7); /* Модификация указателей циклической таблицы */
end: IDLE;
Как видно из текста программы, в ней задействованы регистры генераторов адреса DAG для задания указателей на буфер данных тестируемого сигнала, таблицу значений гармонического сигнала, буферы результата и другие вспомогательные буферы. Вычисление значений спектра производится в двух циклах, счетчики которых инициализируются числом отсчетов N = 64. Вся программа выполняется за N*N групп операций. Результат работы программы заносится в выходные буферы действительных значений real и мнимых значений imag спектра.
Для выполнения программы выполните ее трансляцию с помощью клавиши F7. Затем установите точку останова на последнем операторе программы и запустите ее с помощью клавиши F5. Через несколько секунд программа выполнит свою работу и остановится. Визуальный просмотр тестируемого сигнала, а также результатов работы программы и других вспомогательных буферов данных можно осуществлять с помощью открытия окна памяти данных процессора, используя для этого команду Memory→Data. Кроме того, эти данные можно просматривать в графическом виде. Для этого необходимо выполнить команду: View→Debug Windows→Plot→New. При этом откроется окно конфигурации графического построителя Plot Configuration, показанное на рис. 25.2.
Рис. 25.2. Окно конфигурации графического построителя Plot Configuration
Рассмотрим работу с данным конфигуратором на примере просмотра буфера данных тестируемого сигнала. Оставьте в открывшемся окне конфигуратора без изменений строку Line Plot в поле Type группы настроек Plot. В поле Title введите имя графика «Input» или другое схожее по смыслу.
В группе Data Setting оставьте без изменений имя Data Set1 в поле Name и тип памяти DM в поле Memory. Нажмите на кнопку Browse в поле Address и выделите в открывшемся окне Browse for Symbol строку с именем input (рис. 25.3), после чего нажмите кнопку OK.
Рис. 25.3
В поле смещения данных Offset оставьте нулевое значение, а в поле счетчика Count замените значение 100 на 64, что соответствует количеству отсчетов в программе. Оставьте шаг сетки в поле Stride по умолчанию равным 1, а формат данных в поле Data целочисленным int. Нажмите на кнопку Add для добавления заданных установок в поле Data sets графического построителя. При желании, в это поле можно добавить и другие данные для отображения, а затем установить или снять перед соответствующим именем графика флажок для отображения этого графика. Теперь, нажмите на кнопку OK, после чего в правой части окна Visual DSP++ отобразится график заданных данных (рис. 25.4).
Рис. 25.4.
Для разворачивания и сворачивания окно графика имеет кнопку в виде стрелки. Аналогично можно построить и рассмотреть график, сформированный из буфера синусоидальных значений и хранящихся после выполнения программы в области памяти программ PM процессора с именем «sin» (рис. 25.5).
Рис. 25.5
Данные из буфера синусоидальных значений используются в программе в качестве табличных значений гармонического сигнала для расчета коэффициентов при вычислении спектра сигнала.
После выполнения программы результат ее работы будет храниться в буферах с именами real и imag и также может быть визуально изучен.
Встроенный в программный пакет Visual DSP++ графопостроитель обладает рядом дополнительных функций. Эти функции доступны с помощью контекстного меню (рис. 25.6), открываемого щелчком правой кнопки мыши на окне графика.
Рис. 25.6
Первой в этом меню присутствует команда Data Cursor, которая позволяет узнать координатное значение любой точки графика, щелкая по нему левой кнопкой мыши. Следующая команда Reset Zoom приводит вид графика в исходное состояние. Команда Configure вызывает окно сконфигурированный графопостроителя, рассмотренное выше. Команда Modify Setting вызывает окно установок Plot Setting построителя (рис. 25.7).
Рис. 25.7
Данное окно состоит из пяти закладок и позволяет настроить изображение графопостроителя по вкусу пользователя.
Закладка General позволяет задать имя Title и вспомогательное имя Subtitle для графика. В группе Grid Lines этой закладки можно задать цвет Grid color и присутствие сетки графика по осям X, Y, обеим осям (Both) или их отсутствие (None). Группа Background Color задает цвет графика Plot и фона окна Window.