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

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

Отправлено SM 26 июля 2005 г. 11:39
В ответ на: ну то есть быстрее быстрого алгоритма :). в этом случае у BF тоже самое отправлено yes 26 июля 2005 г. 11:24

на самом деле не 40 а 37 тактов. Не надо занулять аккумуляторы, а просто вместо MAC ставить первыми MPY. Если с циклами, то будет 39 тактов.


; CDP <= vector w/circular addressing
; AR0 <= matrix
; AR2 <= output buffer

amar *ar0(#8*4),xar1 ; copy and prepare pointer

mpy *ar0+, *cdp+, AC0 :: mpy *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1

mov pair(HI(AC0)),dbl(*ar2+)

mpy *ar0+, *cdp+, AC0 :: mpy *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1

mov pair(HI(AC0)),dbl(*ar2+)

mpy *ar0+, *cdp+, AC0 :: mpy *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1

mov pair(HI(AC0)),dbl(*ar2+)

mpy *ar0+, *cdp+, AC0 :: mpy *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1

mov pair(HI(AC0)),dbl(*ar2+)

;------------------ with loops

amar *ar0(#8*4),xar1 ; 1 copy and prepare pointer
mov #3, BRC0 ; 1 ext. loop counter setup

rptblocal loop_ext ; 1 ext loop start

mpy *ar0+, *cdp+, AC0 :: mpy *ar1+, *cdp+, AC1
|| rpt #6 ; 1 dual mpy || single repeat setup

mac *ar0+, *cdp+, AC0 :: mac *ar1+, *cdp+, AC1
; 7 dual mac repeated 7 times

loop_ext: mov pair(HI(AC0)),dbl(*ar2+) ; 1 dual write


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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

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

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

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


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

E-mail: info@telesys.ru