islava 0 30 марта, 2010 Опубликовано 30 марта, 2010 · Жалоба Привет всем! Я студент, и мое задание на диплом - реализовать адаптивный алгоритм (LMS) на ez-kit sharc 21061 фирмы analog devices. Нашел на их сайте описание реализации fir-фильтра на assembler. Достаточно сложновато с учетом того, что не могу найти мануала по assembler для этих процев. Не мог ли кто-нибудь посоветовать с чего мне начать? Где я могу найти мануал по ассемблеру? И если кто-нибудь сконнектил бы со мной и посоветовал бы что-нибудь конкретное, то был бы очень признателен! Мое мыло [email protected] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hobgoblin 0 30 марта, 2010 Опубликовано 30 марта, 2010 · Жалоба Мануал по ассемблеру для этих процов лежит на сайте ADI: http://www.analog.com/static/imported-file...40__asm_man.pdf Его недостаточно, надо также описание отдельных команд. Оно есть в приложении A,B к мануалу по аппаратноым средствам проца: http://www.analog.com/static/imported-file...Revision2_1.pdf В сети гуляет русскоязычный перевод этого мануала, но если хорошо с английским, то лучше смотреть в первоисточник. А для написания непосредственно LMS по идее должна помочь глава 6 из вот этой книги: http://www.analog.com/static/imported-file...ook_Vol.1.0.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
islava 0 30 марта, 2010 Опубликовано 30 марта, 2010 (изменено) · Жалоба Спасибо огромное за информацию!!! Буду читать...) Изменено 30 марта, 2010 пользователем islava Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
puhat 0 1 апреля, 2010 Опубликовано 1 апреля, 2010 · Жалоба Здравствуйте. В продолжении темы хотелось бы задать свой вопрос. Только начинаю изучать ассемблер (BF-532). Есть задача написать код на ассемблере осуществляющий чтение из одного (unsigned char) массива {Cb1,Y1,Cr1,Y2,Cb2,Y3,Cr2...} и запись данных в три разных (short) массива {Y1,Y2,Y3...} , {Cb1,Cb2,Cb3....} и {Cr1, Cr2, Cr3, ....}. Требуется написать оптимальный по скорости код. Привожу пример своего кода. Написал, как смог :-) : ReadBuffer((unsigned char*)input, (short*)Y, (short*)CB, (short*)CR); // Вызываемая из C-файла функция. Ассемблерная функция: .section L1_code; .global ReadBuffer; .align 8; _ReadBuffer: LINK 0; [--SP] = (R7:0, P5:0); P0 = R0; // P0 = Pointer to the input buffer P1 = R1; // u16 Y1 I2 = R2; // u16 CB I3 = R3; // u16 CR P5 = 4; // MNOP; LOOP Count_1 LC1 = P5; // 4 cycles LOOP_BEGIN Count_1; R0 = B [P0++] (Z); W[i2++] = R0.l; // CR R0 = B [P0++] (Z); W[P1++] = R0; // Y1 R0 = B [P0++] (Z); W[i3++] = R0.l; // CB R0 = B [P0++] (Z); W[P1++] = R0; // Y1 LOOP_END Count_1; (R7:0,P5:0) = [sp++]; UNLINK; RTS; _ReadBuffer.end: Кто-нибудь может профессиональным взглядом указать на недостатки, подсказать другой, более эффективный (быстрый) способ реализации? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 1 апреля, 2010 Опубликовано 1 апреля, 2010 · Жалоба Где-то так: .... I0=0; R0=[P0++]; LSETUP (lp_begin, lp_end) LC0=P5; lp_begin: (R7,R6) = byteunpack r1:0; // r7.h=Y2; r7.l=cr1; r6.h=Y1; r6.l=cb1 R5 = pack (R7.h, R6.h) || W[I2++]=R7.L; [P1++]=R5; lp_end: MNOP || W[I3++]=R6.L || R0=[P0++]; .... За правильность не ручаюсь - проверить нет возможности. PS. Еще можно попробовать с помощью DMA... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
puhat 0 2 апреля, 2010 Опубликовано 2 апреля, 2010 · Жалоба 2 vik0 Спасибо. Попробую покопать в этом направлении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 32 2 апреля, 2010 Опубликовано 2 апреля, 2010 · Жалоба Есть задача написать код на ассемблере осуществляющий чтение из одного (unsigned char) массива {Cb1,Y1,Cr1,Y2,Cb2,Y3,Cr2...} и запись данных в три разных (short) массива {Y1,Y2,Y3...} , {Cb1,Cb2,Cb3....} и {Cr1, Cr2, Cr3, ....}. Требуется написать оптимальный по скорости код. ... Кто-нибудь может ..подсказать другой, более эффективный (быстрый) способ реализации? Для решения этой задачи лучше воспользоваться процессором BF547. Он распаковывает видео в формате ITU-R.BT656 вообще без использования ассемблера, т.е. исключительно с помощью EPPI+DMA, т.е., аппаратно. Это дает максимально быстрый по скорости и максимально компактный "код".. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
puhat 0 2 апреля, 2010 Опубликовано 2 апреля, 2010 · Жалоба 2 blackfin: Спасибо за совет. Это конечно было бы лучше, но в данный момент изучаю то, что имею под рукой :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться