[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 23 июля 2004 г. 19:24
В ответ на: Есть ли у кого пример для организации фильтра на ADSP-2191 с разрядностью входных данных 24 бита(+) отправлено Wukrly 23 июля 2004 г. 18:22

Если бы еще знать ассемблер 219x... Вроде он сильно смахивает на ассемблер 218x, к-рый я тоже забывать начал... По памяти об ассеблерной мнемонике, регистрах и т.п. для 218x сейчас что-нибудь изображу.
LEN - длина фильтра.
I0 - указует на начало текущей порции вх. данных, 24-х разрядных. DM.
Вх. данные - младшие 16 разрядов в младшем адресе, старшие 8 с расширенным знаком в следующем адресе.
I4 - к-ты фильтра, как я понял они у Вас 16-ти разрядные. PM.
Дополнительно используется четыре ячейки памяти в DM, TMP0,TMP1,TM2,TMP3
AX0=0;
DM(TMP0)=AX0;
DM(TMP1)=AX0;
DM(TMP2)=AX0;
DM(TMP3)=AX0;
AX0=I0;
AX1=I4;
M0=2;
M4=1;
DIS M_MODE;
MR=0;
MX0=DM(I0,M0),MY0=PM(I4,M4);
CNTR=LEN; {забыл, чтобы цикл выполнился LEN раз нужно писать в CNTR LEN или LEN-1? Короче цикл должен LEN раз выполниться}
DO loopl UNTIL CE;
loopl:
MR=MR+MX0*MY0(US),MX0=DM(I0,M0),MY0=PM(I4,M4);
DM(TMP0)=MR0;
DM(TMP1)=MR1;
AY0=0XFFFF;
AF=PASS 0;
AR=PASS MR2; {вроде знак должен расшириться, но точно не помню, если нет - расширить его врукопашную}
DM(TMP2)=AR;
IF LT AF=PASS AY0;
AR=PASS AF;
DM(TMP3)=AR;
AR=AX0+1;
I0=AR;
I4=AX1;
MR=0;
MX0=DM(I0,M0),MY0=PM(I4,M4);
CNTR=LEN;
DO looph UNTIL CE;
looph:
MR=MR+MX0*MY0(SS),MX0=DM(I0,M0),MY0=PM(I4,M4);
AY0=DM(TMP1);
AR=MR0+AY0;
DM(TMP1)=AR;
AY0=DM(TMP2);
AR=MR1+AY0+C;
DM(TMP2)=AR;
AY0=DM(TMP3);
AR=MR2+AY0+C; {тоже вроде должно быть расшир. знака MR2}
DM(TMP3)=AR;
В общем в TMP0-TMP3 - результат. TMP0 - младшие.
Сдвигаете его, в смысле TMP0-TMP3, куда Вам нужно и оставляете нужное число разрядов. С учетом масштаба фильтра.
То, что я изобразил, годится для длины вплоть до 128.
При большей длине первый цикл (возможно и второй) нужно на несколько разбить, чтобы в каждом было не больше 128.
Может где описался, извиняйте.



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru