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

70 4/99 В ЗАПИСНУЮ КНИЖКУ ИНЖЕНЕРА CTA LALK C_START ; Размещение таблицы значений счетчика LARP AR1 ; циклов с 60h ячейки памяти данных LRLK AR1,TIKET ; * * * * * * * * * * * * * * * * * RPTK COEFFL1 ; * * * * * * * * * * * * * * * * * TBLR *+ ; * * * * * * * * * * * * * * * * * * MET1: LALK PM0 ; Перемещение блока РМ0 из памяти LARP AR1 ; программ в память данных по адресу LRLK AR1,PM ; 0800h RPTK 255 TBLR *+ LALK PM1 ; Перемещение блока РМ1 LARP AR1 RPTK 255 TBLR *+ LALK PM2 ; Перемещение блока РМ2 LARP AR1 RPTK 255 TBLR *+ LALK PM3 ; Перемещение блока РМ3 LARP AR1 RPTK 255 TBLR *+ ************************************************* * Размещение входных данных  1000h1200h * ************************************************* CALL FFT ; Вызов процедуры FFT RET ; Конец ************************************************* * FUNCTIONS * ************************************************* FFT: LARP AR1 ; Перемещение подпрограммы БПФ LRLK AR1,200h ; на кристалл (блок В0) RPTK PROGL1 ; * * * * * * * * * * * * * * * * * MET5: BLKP P_START,*+ ; * * * * * * * * * * * * * * * * * CNFP ; Определение блока B0 как памяти программ CALL PROG ; Вызов процедуры PROG CNFD ; Определение блока B0 как памяти данных RET ******* FAST FOURIER TRANSFORMATION ************* .asect "onchip",0FF00h PROG .label P_START LARP AR1 ; Подготовка памяти для расчета БПФ ZAC ; LRLK AR1,DATA+1 ; Обнуление каждой нечетной ячейки LARK AR0,0002h ; памяти данных (обнуление мнимой RPTK 0FFh ; части, так как входной сигнал SACL *0+ ; действительный) RPTK 0FFh ; * * * * * * * * * * * * * * * * * SACL *0+ ; * * * * * * * * * * * * * * * * * ************************************************* LARP AR3 ; Перемещение входных данных MET3: LRLK AR0,200h ; в ячейку с адресом 0400h MET4: LRLK AR3,DATA ; с использованием обратного RPTK 255 ; распространения переноса MET2: BLKD 1000h,*br0+ ; (перестановка входных данных) RPTK 255 BLKD 1100h,*br0+ ************************************************* LARK AR0,2 ; Инициализация вспомогательных LARK AR2,TIKET ; регистров начальными значениями LARK AR4,TIKETEND ; счетчиков циклов LRLK AR6,PM ; Указатель на начало блока коэфф. LARK AR7,8 ; * * * * * * * * * * * * * * * * * LARP AR2 ; Активный регистр AR2 * LOOP: LAR AR1,LOADDATA ; Указатель на начало блока данных SAR AR1,AD_BEG ; Сохранение текущего указателя LAR AR3,*,AR4 ; Инициализация счетчика циклов 1 LAR AR5,*,AR6 ; Инициализация счетчика циклов 2 ZALH *+ ; Загрузка мнимой и реальной частей SACH RL ; активного поворачивающего множителя ZALH *+,AR1 ; из таблицы коэффициентов SACH MN ; * * * * * * * * * * * * * * * * * *BUTTERFLY BAB: MAR *0+ ; Инкремент AR1 на значение AR0 LT *+ ; Re2 MPY RL ; Re2 * RL LTP * ; Im2 MPY MN ; Im2 * MN MPYA RL ; Im2 * RL, Re2 * RL  Im2 * MN SACH DWR,1 ; Промежуточный результат в DWR LTP *0 ; Re2 MPY MN ; Re2 * MN SPAC ; Re2 * MN + Im2 * RL SACH DWI,1 ; Промежуточный результат в DWI * LAC *0+,0 ; Re1 ADD DWR,0 ; Re1  DWR SACL *0,0 ; Промежуточный результат в Re2 LAC *,0 ; Re1 SUB DWR,0 ; Re1 + DWR SACL *+,0 ; Промежуточный результат в Re1 *

RkJQdWJsaXNoZXIy MTQ4NjUy