по алгоритму Radix-2
Выполняет БПФ с прореживанием по времени по алгоритму radix-2 с длиной входных данных x(n) 64 или более.
Использование памятиДействительная часть комплексных входных чисел находящихся в ПД в нормальном порядкеМнимая часть комплексных входных чисел находящихся в ПП в нормальном порядкеДействительная часть преобразованных данных, хранящихся в ПД/2Таблица Sin хранящася в ПД/2Таблица Cos хранящася в ПД
Вызываемая информация:(twid_real[N/2])- таблица sin(2pi*n/N) в бит-реверсивном порядке(twid_imag[N/2])- таблица cos(2pi*n/N) в бит-реверсивном порядке
(Inputreal[N]) - действительная часть входного массива, находится в ПД(Inputimag[N]) - мнимая часть входного массива, находится в ПП
Результаты:(Refft[N]) - действительные результаты БПФ в последовательном порядке(Inputreal[N]) - мнимые результаты БПФ в последовательном порядке:
длина БПФ к-во циклов время, мкс 160МГц
--------------------------------------
1024 24160151
Использование памяти:
ПП код программы(24-bit) = 92 слова
ПП данные(24-bit) = N + 2 + N/2 слов
ПД данные(16-bit) = 2N + 4 + N + 1 слов
****************************************************************************/
/**********Константы, представленные ниже дожны быть изменены для различных длин БПФ*******= количество точек БПФ, должно быть 2 в некоторой степени
log2N = log2(N)_Value = 2^(16-LOG2N)
Refft_Bitrev = Битреверсии адреса выходных действитеьных чисел ПД_Bitrev = Битреверсии адреса выходных мнимых чисел ПД
******************************************************************************/
/* Установка констант для N-точечного БПФ */
#define N 512
#define Ndiv2 (N/2)
#define log2N 9
#defineMod_Value128
#defineRefft_Bitrev0x0001
#defineInputreal_Bitrev0x000
/* данные ПД */
.section/data data1;
.VAR twid_imag [Ndiv2] = "twid_sin.dat";
.VAR groups = 1;
.VAR node_space = Ndiv2;
/* данные ПД */
.section/data seg_buf1;
.VAR Inputreal [N+2] = "inreal.dat";
/* данные ПД */
.section/data seg_buf2;
.VAR Refft[N+2];
/* данные ПП */
.section/pm data2;
.VAR/init24 twid_real [Ndiv2] = "twid_cos.dat";
.VAR Inputimag [N+2] = "inimag.dat";
/* код вектора прерываний ПП */
.section/pm IVreset;
JUMP start; NOP; NOP;
/* Код программы */
.section/pm program;
start: = page(twid_real);/* Инициализация страницы для данных ПП */= 0;= length(twid_imag);/* Инициализация циркулярного буфера twid_imag*/= twid_imag;(b0) = AX1;/* Инициализация указателя на twid_imag */= 1;= 0;/* Инициализация для модульной адрессации */= 0;= length(twid_real); /* Инициализация циркулярного буфера twid_real*/= twid_real;(b4) = AX1;/* Инициализация указателя на twid_real */= 1;= 0; /* Инициализация для модульной адрессации */= -1;= 0;/* Инициализация для модульной адрессации */ = 0; = 0; = 0; = 8;/* Инициализация счётчика стадий */stage_loop UNTIL CE;/* Вычисление всех стадий БПФ */
I0 = twid_imag;/* I0 --> (-S) W0 */
I1 = Inputreal;/* I1 --> x1 в первой группе данной стадии */= Inputreal;/* I2 --> x0 в первой группе данной стадии */
I4 = twid_real;/* I4 --> C W0 */
I5 = Inputimag;/* I5 --> y1 в первой группе данной стадии */= Inputimag;/* I6 --> y0 в первой группе данной стадии */= DM(groups);= SI;/* CNTR = # групп данной стадии */
SR = LSHIFT SI BY 1(LO);(groups) = SR0;= DM(node_space);/* SI = изменению node_space */
M2 =SI;=SI;(I1,M2);/* I1 --> x1 в первой группе данной стадии */(I5,M7);/* I5 --> y1 в первой группе данной стадии */
DO group_loop UNTIL CE;= PM(I4,M5), MX0 = DM(I1,M0);/* MY0=C, MX0=x1 */= MX0*MY0(SS), MX1 = PM(I5,M4);/* MR=C*x1,MX1=y1 */= DM(I0,M1);/* MY1 = (-S) */= SI;/* CNTR = счётчик бабочки */bfly_loop UNTIL CE;= MR-MX1*MY1(RND), AY0 = DM(I2,M0); /* MR=x1*C-y1*-S, AY0=x0 */= MR1+AY0, AX1 = PM(I5,M5); /* AR=x0'=x0+(x1*C-y1*-S) */(I2,M1) = AR, AR = AY0-MR1; /* DM=x0', AR=x1'=x0-(x1*C-y1*(-S)) */= MX0*MY1(SS), DM(I1,M1) = AR; /* MR=x1*(-S), DM=x1' */= MR+MX1*MY0(RND), AY1 = PM(I6,M4), MX0 = DM(I1,M0); /*MR=x1*(-S)+y1*C, AY1=y0, MX0= следующему x1 */= MR1+AY1, MX1 = PM(I5,M6); /* AR=y0'=y0+(y1*C+x1*(-S)), MX1= следующему y1 */(I6,M5) = AR, AR = AY1-MR1; /* PM=y0', AR=y1'=y0-(y1*C+x1*(-S)) */_loop:= MX0*MY0(SS), PM(I5,M5) = AR; /* PM=y1' */= PM(I5,M7), MX0 = DM(I1,M2); _loop:=PM(I6,M7), MX0=DM(I2,M2); =ASHIFT SI BY -1 (LO);_loop:(node_space)=SR0; = twid_imag/* I0 --> (-S) */= Inputreal;/* I1 --> x1 */= Inputreal;/* I2 --> x0 */
Проектирование железнодорожного узла связи на основе цифровой АТС Квант-Е
Цифровая система коммутации «Квант-Е» имеет модульное построение,
распределенную коммутацию, децентрализованное программное управление и
возможность централ ...
Установка акустической системы в автомобиль Honda Civic
Еще недавно желание иметь в
автомобиле аудиосистему класса НІ-FІ расценивалось большинством окружающих в
лучшем случае как бездумная трата денег. Однако для ...
Расчет спектра и энергетических характеристик сигнала
В последнее десятилетие ХХ века произошла научно-техническая революция в
области транспортной связи, в основе которой лежат два крупных достижения науки
сер ...