ЖУРНАЛ СТА №4/1999

69 4/99 В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА CTA реместив предварительно в данный блок программный код алгоритма БПФ. Данный механизм использован авто- рами в описываемой программе (листинг, МЕТ5:). Необходимо отметить, что размер блока В0 ограничен, и при использовании линейного программирования обра- титься к переопределению блока даже для коротких пре- образований БПФ будет невозможно. А разработанная подпрограмма БПФ имеет фиксированный размер и со- стоит из 86 слов, что позволяет использовать блок В0 как память программ для любых длин преобразования. В заключение необходимо сказать несколько слов о не- достатках разработанной программы. Они связаны с вы- полнением процедуры БПФ в арифметике с фиксирован- ной точкой. В этом случае ощутимо проявляются эффекты квантования в БПФ, и ошибка округления существенно влияет на конечную точность преобразования. При 16-би- товом смещении таблицы косинусов и синусов удается представить поворачивающие множители с точностью только до четвертого знака после запятой. Для исключения эффектов арифметического переполнения аккумулятора при выполнении базовой операции «бабочка» необходимо ограничить динамический диапазон входного сигнала. Для разработанной программы он составляет 60 дБ. Авто- ры программы сознательно не стали переходить на 32- или 24-разрядный формат с плавающей точкой, так как это приводит к значительному увеличению времени выполне- ния и объема занимаемой памяти. Однако, если в конкрет- ном приложении требуется высокая точность преобразо- вания и разработчик не ограничен временем выполнения программы, такой переход может быть оправдан. Листинг описанной в статье программы с блоками кон- стант (Р0-Р3) можно загрузить с Web-сайта www.cta.ru . ● Авторы работают в Военном институте правительственной связи 302034, г. Орел, ВИПС Телефон: (086) 41-9933 E-mail: bor@vips.icn.gov.ru Таблица 2. Количество тактов для выполнения команд разных классов Класс команд Количество тактов PI/DI PI/DE PE/DI PE/DE 1 1 2+d 1+p 2+d+p 2 1 2+d 1+p 2+d+p 3 1 1+d 1+p 2+d+p PR/DI PR/DE 1 2+d 1 2+d 1 1+d 4 1 1 1+p 1+p 1 1 5 2 2 2+2p 2+2p 2 2 Условные обозначения: PI — команда выполняется из внутренней памяти программ (RAM); PR — команда выполняется из внутренней памяти программ (ROM); PE — команда выполняется из внешней памяти программ; DI — команда выполняется, используя внутреннюю память данных; DE — команда выполняется, используя внешнюю память данных; d — время, требуемое для доступа к внешней памяти данных; p — время, требуемое для доступа к внешней памяти программ. .title " 512 point Radix2, Complex FFT " .globl FFT ; Глобальные метки .globl BAB,BPER,LOOP,KL ; * * * * * * * * * * * * DATA .set 0400h PM .set 0800h TIKET .set 0060h TIKETEND .set 0068h PR .set 0070h RL .set 0071h MN .set 0072h DWR .set 0073h DWI .set 0074h LOADDATA .set 0075h AD_BEG .set 0076h .text RESET B BEG ************************************************* * Таблица векторов прерывания * ************************************************* .space (18h($RESET))*10h ************************************************* * Таблица векторов прерывания * ************************************************* .space (100h($RESET))*10h COEFF .label C_START .word 255,127,63,31,15,7,3,1,0 ; Таблица значений счетчика циклов COEFFE .label C_END COEFFL .equ COEFFECOEFF BEG DINT ; Запрет прерывания LDPK 0000h ; Страница памяти данных  0 ZAC SACL 00,0 ; Обнуление регистров приема/передачи SACL 01,0 ; последовательного порта LACK 0000h ; Маскирование всех возможных прерываний SACL 04,0 ; * * * * * * * * * * * * * * * * * ROVM ; Инициализация флагов арифметических SSXM ; операций SPM 0 ; * * * * * * * * * * * * * * * * * LRLK AR0,DATA ; Размещение адреса первой ячейки памяти данных SAR AR0,LOADDATA ; в LOADDATA * Листинг программной реализации алгоритма БПФ для процессора TMS320С25

RkJQdWJsaXNoZXIy MTQ4NjUy