Разделы сайта

Разработка и описание программы. Особенности ввода/вывода

по алгоритму 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 */

Перейти на страницу: 1 2 3 4

Интересное из раздела

Проектирование железнодорожного узла связи на основе цифровой АТС Квант-Е
Цифровая система коммутации «Квант-Е» имеет модульное построение, распределенную коммутацию, децентрализованное программное управление и возможность централ ...

Установка акустической системы в автомобиль Honda Civic
Еще недавно желание иметь в автомобиле аудиосистему класса НІ-FІ расценивалось большинством окружающих в лучшем случае как бездумная трата денег. Однако для ...

Расчет спектра и энергетических характеристик сигнала
В последнее десятилетие ХХ века произошла научно-техническая революция в области транспортной связи, в основе которой лежат два крупных достижения науки сер ...