реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Fixed Point для ARM7
5balloff
сообщение Mar 2 2009, 16:30
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 2-03-09
Из: Москва
Пользователь №: 45 570



подскажите где можно достать Fixed Point библиотеку для ARM7 с функцией SQRT?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Mar 2 2009, 19:07
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(5balloff @ Mar 2 2009, 11:30) *
подскажите где можно достать Fixed Point библиотеку для ARM7 с функцией SQRT?


Можно поковырятся в етом архиве:

ftp://ftp.circuitcellar.com/pub/Circuit_C...ymanski-194.zip

там в fixpt/real библиотечка для декодировки MP3, похоже там есть SQRT


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
etoja
сообщение Mar 3 2009, 10:00
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Вот здесь есть практические алгоритмы и тексты программ:
http://forum.sources.ru/index.php?showtopic=9933
Go to the top of the page
 
+Quote Post
zhz
сообщение Mar 3 2009, 21:55
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-03-05
Пользователь №: 3 559



Цитата(5balloff @ Mar 2 2009, 18:30) *
подскажите где можно достать Fixed Point библиотеку для ARM7 с функцией SQRT?


Есть такая весьма полезная книга:
ARM System Developer’s Guide
Designing and Optimizing System Software
Andrew N. Sloss, Dominic Symes, Chris Wright

Ch.7 Square Roots
7.4.1 Square Root by Trial Subtraction
7.4.2 Square Root by Newton-Raphson Iteration

Код
;// Section 7.4: Square and cube root

        AREA    ch07_4, CODE, READONLY

        EXPORT  usqr_32
        EXPORT  ucbr_32
        EXPORT  rsqr_32

q       RN 0   ; input value, current square root estimate
r       RN 1   ; the current remainder
c       RN 2   ; scratch register

usqr_32; unsigned usqr_32(unsigned q)
        SUBS    r, q, #1<<30           ; is q>=(1<<15)^2?
        ADDCC   r, r, #1<<30           ; if not restore
        MOV     c, #3<<30              ; c is a constant
        ADC     q, c, #1<<31           ; set bit 15 of answer
       ; calculate bits 14..0 of the answer
        GBLA    N
N       SETA    14
        WHILE   N<>-1
          CMP   r, q, ROR #(30-2*N)    ; is r >= t<<N ?
          SUBCS r, r, q, ROR #(30-2*N) ; if yes then r -= t<<N;
          ADC   q, c, q, LSL#1         ; insert next bit of answer
N         SETA  (N-1)
        WEND
        BIC     q, q, #3<<30           ; extract answer
        MOV     pc, lr

q0      RN 0   ; input value, current estimate
r       RN 1   ; current remainder
s       RN 2   ; current remainder
q1      RN 3   ; current estimate
c_1     RN 12  ; 1<<29
c_2     RN lr  ; 3<<30

        MACRO
        CBR_STEP $N, $q1, $q0
        SUBS    $q1, r, s, ROR #(30-3*$N)
        MOVCS   r, $q1
        ADC     $q1, c_2, $q0, LSL#1
        ADD     s, $q0, s, ROR #30
        EORCS   $q0, c_1, $q0, LSL #1
        SUB     s, s, $q0, ROR #30
        MEND

ucbr_32; unsigned ubcr_32(unsigned q)
        STR     lr, [sp, #-4]!
        MVN     c_1, #1<<29
        MOV     c_2, #3<<30
       ; calculate answer bit 10
        SUBS    r, q0, #1<<30
        MOVCC   r, q0
        ADC     q0, c_2, #1<<31
        MOVCC   s, #(1<<30)
        MOVCS   s, #(3<<30)+4
       ; calculate answer bits 9,8,...,1
        CBR_STEP 9, q1, q0
        CBR_STEP 8, q0, q1
        CBR_STEP 7, q1, q0
        CBR_STEP 6, q0, q1
        CBR_STEP 5, q1, q0
        CBR_STEP 4, q0, q1
        CBR_STEP 3, q1, q0
        CBR_STEP 2, q0, q1
        CBR_STEP 1, q1, q0
       ; calculate answer bit 0
        CMP     r, s, ROR #30
        ADC     q0, q1, q1
        BIC     r0, q0, #3<<30
        LDR     pc, [sp], #4
        
        
q       RN 0   ; input value, estimated reciprocal root
b       RN 1   ; scratch register
s       RN 2   ; normalization shift
d       RN 3   ; normalized input value
a       RN 12  ; scratch register/accumulator

        
rsqr_32; unsigned rsqr_32(unsigned q)
        CLZ     s, q                ; choose shift s which is
        BIC     s, s, #1            ; even such that d=(q<<s)
        MOVS    d, q, LSL s         ; is 0.25<=d<1 at Q32
        ADDNE   q, pc, d, LSR#25    ; table lookup on top 7 bits
        LDRNEB  q, [q, #tab-base-32]; of d in range 32 to 127
base    BEQ     div_by_zero         ; divide by zero trap
        ADD     q, q, #0x100        ; table stores only bottom 8 bits
       ; q is now a Q8, 9-bit estimate to 1/sqrt(d)
        SMULBB  a, q, q             ; a = q*q at Q16
        MOV     b, d, LSR #17       ; b = d   at Q15
        SMULWB  a, a, b             ; a = d*q*q at Q15
        MOV     b, q, LSL #7        ; b = q at Q15
        RSB     a, a, #3<<15        ; a = (3-d*q*q) at Q15
        MUL     q, a, b             ; q = q*(3-d*q*q)/2 at Q31
       ; q is now a Q31 estimate to 1/sqrt(d)
        UMULL   b, a, d, q          ; a = d*q at Q31
        MOV     s, s, LSR #1        ; square root halves the shift
        UMULL   b, a, q, a          ; a = d*q*q at Q30
        RSB     s, s, #15           ; reciprocal inverts the shift
        RSB     a, a, #3<<30        ; a = (3-d*q*q) at Q30
        UMULL   b, q, a, q          ; q = q*(3-d*q*q)/2 at Q31
       ; q is now a good Q31 estimate to 1/sqrt(d)
        MOV     q, q, LSR s         ; undo the normalization shift
        BX      lr                  ; return q
div_by_zero
        MOV     q, #0x7FFFFFFF      ; maxium positive answer
        BX      lr                  ; return q
        
tab    ; tab[k] = round(256.0/sqrt((k+32.3)/128.0)) - 256
        DCB  0xfe, 0xf6, 0xef, 0xe7, 0xe1, 0xda, 0xd4, 0xce
        DCB  0xc8, 0xc3, 0xbd, 0xb8, 0xb3, 0xae, 0xaa, 0xa5
        DCB  0xa1, 0x9c, 0x98, 0x94, 0x90, 0x8d, 0x89, 0x85
        DCB  0x82, 0x7f, 0x7b, 0x78, 0x75, 0x72, 0x6f, 0x6c
        DCB  0x69, 0x66, 0x64, 0x61, 0x5e, 0x5c, 0x59, 0x57
        DCB  0x55, 0x52, 0x50, 0x4e, 0x4c, 0x49, 0x47, 0x45
        DCB  0x43, 0x41, 0x3f, 0x3d, 0x3b, 0x3a, 0x38, 0x36
        DCB  0x34, 0x32, 0x31, 0x2f, 0x2d, 0x2c, 0x2a, 0x29
        DCB  0x27, 0x26, 0x24, 0x23, 0x21, 0x20, 0x1e, 0x1d
        DCB  0x1c, 0x1a, 0x19, 0x18, 0x16, 0x15, 0x14, 0x13
        DCB  0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0b, 0x0a, 0x09
        DCB  0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01

        END
Go to the top of the page
 
+Quote Post
5balloff
сообщение Mar 4 2009, 09:41
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 2-03-09
Из: Москва
Пользователь №: 45 570



спасибо всем огромное!!!
Go to the top of the page
 
+Quote Post
vvs157
сообщение Mar 4 2009, 18:17
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(zhz @ Mar 4 2009, 00:55) *
Есть такая весьма полезная книга:
ARM System Developer's Guide
Designing and Optimizing System Software
Andrew N. Sloss, Dominic Symes, Chris Wright
Не подскажите, где ее можно скачать?
Go to the top of the page
 
+Quote Post
zhz
сообщение Mar 4 2009, 23:40
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-03-05
Пользователь №: 3 559



Цитата(vvs157 @ Mar 4 2009, 20:17) *
Не подскажите, где ее можно скачать?


http://ifolder.ru/10871961
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 5 2009, 00:18
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Говорит: "Файл номер 10871961 не найден !!!"
Go to the top of the page
 
+Quote Post
VAI
сообщение Mar 5 2009, 05:05
Сообщение #9


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



пароль: "Без пароля", без кавычек
http://depositfiles.com/files/bkzud1ixl


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Tarkus
сообщение Mar 5 2009, 10:30
Сообщение #10





Группа: Участник
Сообщений: 9
Регистрация: 22-02-09
Пользователь №: 45 211



Цитата(vvs157 @ Mar 4 2009, 20:17) *
Не подскажите, где ее можно скачать?

На сонсиври есть отдельная тема с e-book, я оттуда скачал.
http://www.sonsivri.com/forum/index.php?topic=20992.0
А книга действительно полезная, я не поленился распечатать 700 страниц smile.gif
Go to the top of the page
 
+Quote Post
vvs157
сообщение Mar 5 2009, 10:46
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(VAI @ Mar 5 2009, 08:05) *
пароль: "Без пароля", без кавычек
http://depositfiles.com/files/bkzud1ixl
Спасибо!
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 5 2009, 10:58
Сообщение #12


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Где выдрал - ХЗ, но полезно.[attachment=30396:ARM_code...routines.zip]
Go to the top of the page
 
+Quote Post
zhz
сообщение Mar 5 2009, 12:51
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-03-05
Пользователь №: 3 559



Цитата(aaarrr @ Mar 5 2009, 02:18) *
Говорит: "Файл номер 10871961 не найден !!!"


Sorry, проверял вроде.
Повторим:
http://ifolder.ru/10879927
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 10:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016