|
Нужна помощь разобраться с asm рутиной FIRа, Моя первая самостоятелсьная FIR рутина... |
|
|
|
Jun 3 2007, 18:35
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
После долгих моих тугодумных мук родил FIR код в asm который будет част проэкта (вызывается из кода С). Почему-то после добавления ее в проэкт (данного файла asm) - проэкт не компилируется - падает ессно на этой рутине выдавая кучу ошибок. Первая из них весьма странная мне, не могу понять что его не устраивает. Может подскажете чего я не вижу: Код .mmregs .global _p_buffer_in,_p_buffer_out,_dline,_fcoeff,_fir_ord,_p_buff_lenth .global _fir_processing
_fir_processing: ; saving regs content into stack pshm ar0; used as delay line and coeff. cycling addressing increment pshm ar1; holds input data array start address pshm ar2 ; holds pointer to filter coeff. array addressing pshm ar3; holds pointer to delay line array addressing pshm ar4; holds output data array start address pshm ar5; holds output data array nop nop ; Initialization stm #1,ar0 ;set increment step for cycling buffers mvdm *(_fir_ord),BK ;set cyclic buffer size (for delay line and coeff buffer) stm #_p_buff_in,ar1 ;load data_in array start address stm #_fcoeff,ar2 ;load coeff. array start address stm #_dline,ar3 ;load delay line array start address stm #_p_buffer_out,ar4 ;load output data buffer array address mvdm *(_p_buff_length)-1,brc ;load BRC with processing data block length (PROC_BUFFER_LENGTH) nop nop ; Filtration rptb fir_loop_end-1 ; repeat FIR routine for entire processing data buffer mvdd *ar1+,*ar3+% ; load next input sample from input proc. array into delay line array rptz a,_fir_ord-1 ; FIR order less 1 iterations per each input data sample mac *ar2+0%,*ar3+0%,a ; MAC operation on cyclic delay line and coeff. arrays rnd a ; round off value in acc. A to 16 bits sth a,*ar4+ ; store output value into data output array fir_loop_end: popm ar5 popm ar4 popm ar3 popm ar2 popm ar1 popm ar0 Первая ошибка которую выдает компилятор: Цитата > ERROR ! at line 29: [E0004] Expecting dual memory addressing mvdd *ar1+, *ar3+% Дальше еще есть кучу ошибок, подозреваю что некоторые завязаны на предыдущих, посему буду исправлять по одной от первой к последней с перекомпиляцией после каждой. Итак, что ему не нравиться в mvdd ? Она-то вроде перекидывает из памяти в память, и вроде у меня так и есть в коде....  Что я в упор не вижу ????? Кроме того, если видите у другие ошибки в коде алгоритма - буду благодарен за указание таковых... P.S. Все переменные в данном asm определены в основном С коде.
|
|
|
|
|
 |
Ответов
|
Jun 4 2007, 05:59
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(BratherLU @ Jun 4 2007, 09:16)  1 - В mvdd можно использовать только регистры ar2,ar3,ar4,ar5 2 - rnd не стоит использовать т к она работает неправильно читайте эррату на процессор заменить на ADD #1,15,src[,dst] 3 - Загляните в хелп CCS в разделы Register Conventions и Function Conventions Да, спасибо. Я вчера рылся в нете насчет инфы по rnd (error подозрительным показался...) и действител-ьно наткнулся на упоминание эрраты, скачал SPRZ 155d - там вторая advisory как раз об этом и говорит. Рекомендуют заменять rnd на то что вы пердложили. Так и сделал в сорсе. Кстати, вопрос - этот вариант округления результата я видел в примере FIR кода: http://cnx.org/content/m10023/2.19/, и оттуда его стянул (rnd). Честно говоря не совсем понял резонность такого способа округления до 16 бит. Хелп на rnd говорит о прибавлении к аккумулятору 2^15 степени, затем они там в примере беру как результат старшие 16 бит аккумулятора. е могли бы вы пояснить чайнику каким образом так получаем 16 эффектиных бит (включая знак) ? Насчет mvdd - понял, спасибо. Загляну в conventions. Пока заменил ее на две инструкции переброски данного через аккумулятор Б. Еще одна вещь: при прогоне в дебаггере, обнаружил что: mvdm *(_p_buff_length)-1,brc не правильно работает - загружает не то значение которое по адресу _p_buff_length. Не знаю почему (может стоит тоже проверить register conventions), но пока заменяю ее на три другие: ld *(_p_buff_length), b sub #1, b stl b, brc тут загвоздка - в runе, последняя не загружает brc регистр вообще. Наверно применил не ту инструкцию для загрузки mеmory-mapped регистра из аккумулятора. Как правильно это сделать ? В целом, вам кажется код OK ? Нет каких-либо явных ошибок в имплементации алгоритма ?
|
|
|
|
Сообщений в этой теме
Саша Z Нужна помощь разобраться с asm рутиной FIRа Jun 3 2007, 18:35 BratherLU В Conventions описано как праввильно делать вызов ... Jun 4 2007, 08:54 Саша Z Цитата(BratherLU @ Jun 4 2007, 12:54) В C... Jun 4 2007, 10:14 BratherLU mvdk *(_p_buff_length-1),brc сорри Вас запутал и... Jun 4 2007, 11:06 Саша Z Цитата(BratherLU @ Jun 4 2007, 15:06) mvd... Jun 4 2007, 11:27 BratherLU ld #0x00,a
rpt *(_fir_ord)
rptz действительно не ... Jun 4 2007, 11:58 Саша Z Цитата(BratherLU @ Jun 4 2007, 15:46) ld ... Jun 4 2007, 12:03 BratherLU Коэффициенты тоже должны быть выровнены по соответ... Jun 4 2007, 12:07 Саша Z Цитата(BratherLU @ Jun 4 2007, 16:07) Коэ... Jun 4 2007, 12:28 BratherLU Еще смотрите - что у вас в BK и в ar0 если все ок ... Jun 4 2007, 12:43 Саша Z Цитата(BratherLU @ Jun 4 2007, 16:43) Еще... Jun 4 2007, 13:07 BratherLU В Данной реализации длина линии задержки==число ко... Jun 4 2007, 14:13 Саша Z Цитата(BratherLU @ Jun 4 2007, 18:13) В Д... Jun 4 2007, 18:18  BratherLU Цитата(Саша Z @ Jun 4 2007, 22:18) ..., т... Jun 5 2007, 08:49   Саша Z Цитата(BratherLU @ Jun 5 2007, 12:49) Пос... Jun 5 2007, 11:48 BratherLU Еще раз в данной реализации -> длина линии заде... Jun 5 2007, 12:03 Саша Z Цитата(BratherLU @ Jun 5 2007, 16:03) Еще... Jun 5 2007, 12:25 BratherLU Давйте кусочек кода начиная с внешнего цикла (там ... Jun 5 2007, 12:45 Саша Z Цитата(BratherLU @ Jun 5 2007, 16:45) Дав... Jun 5 2007, 13:02 BratherLU Да незачта.В своем проекте дописал чуть-чуть
Код*.... Jun 5 2007, 14:07 =GM= Цитата(Саша Z @ Jun 3 2007, 17:35) Кроме ... Jun 5 2007, 14:52  Саша Z Цитата(=GM= @ Jun 5 2007, 18:52) Мне каже... Jun 5 2007, 15:58   =GM= Цитата(Саша Z @ Jun 5 2007, 15:58) Да но ... Jun 5 2007, 18:13    Саша Z Цитата(=GM= @ Jun 5 2007, 22:13) Вот что ... Jun 6 2007, 06:57     -=ВН=- Цитата(Саша Z @ Jun 6 2007, 10:57) ...
Кс... Jun 6 2007, 07:28      Саша Z Цитата(-=ВН=- @ Jun 6 2007, 11... Jun 6 2007, 08:04       -=ВН=- Цитата(Саша Z @ Jun 6 2007, 12:04) Да нет... Jun 6 2007, 08:52     =GM= Цитата(Саша Z @ Jun 6 2007, 05:57) Ну дав... Jun 6 2007, 09:10      Саша Z Цитата(=GM= @ Jun 6 2007, 13:10) Бестолко... Jun 6 2007, 09:33       =GM= Цитата(Саша Z @ Jun 6 2007, 08:33) ... не... Jun 6 2007, 10:01        Саша Z Цитата(=GM= @ Jun 6 2007, 14:01) 1) Не за... Jun 6 2007, 10:36 Саша Z Цитата(BratherLU @ Jun 5 2007, 18:07) Да ... Jun 5 2007, 14:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|