Перейти к содержанию
    

Первые шаги...

Привет всем!

Я студент, и мое задание на диплом - реализовать адаптивный алгоритм (LMS) на ez-kit sharc 21061 фирмы analog devices.

Нашел на их сайте описание реализации fir-фильтра на assembler. Достаточно сложновато с учетом того, что не могу найти мануала по assembler для этих процев.

Не мог ли кто-нибудь посоветовать с чего мне начать? Где я могу найти мануал по ассемблеру?

И если кто-нибудь сконнектил бы со мной и посоветовал бы что-нибудь конкретное, то был бы очень признателен! Мое мыло [email protected]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мануал по ассемблеру для этих процов лежит на сайте 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. В продолжении темы хотелось бы задать свой вопрос.

Только начинаю изучать ассемблер (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:

 

Кто-нибудь может профессиональным взглядом указать на недостатки, подсказать другой, более эффективный (быстрый) способ реализации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где-то так:

....
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...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть задача написать код на ассемблере осуществляющий чтение из одного (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, т.е., аппаратно.

Это дает максимально быстрый по скорости и максимально компактный "код"..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 blackfin:

Спасибо за совет. Это конечно было бы лучше, но в данный момент изучаю то, что имею под рукой :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...