ну здрасте. Все прозрачно написано в ASM30 manual. Исходников до жопы - хотя бы библиотеку math или dsp открыть
_dtmf_goertzel:
push PSVPAG
push CORCON
push.d W8
push W10
/* prepare dsp-core and PSV */
mov #(DSP_MODE_FRACTIONAL | \
DSP_MODE_RND_DIS | \
DSP_MODE_PSV_EN | \
DSP_MODE_SAT_SUPER | \
DSP_MODE_DATA_SAT_EN | \
DSP_MODE_ACCA_SAT_DIS | \
DSP_MODE_ACCB_SAT_DIS | \
DSP_MODE_SIGNED), W8
mov W8, CORCON /* set required dsp-core mode */
mov #psvpage(_dtmf_coeff_8000_205), W8
mov W8, PSVPAG /* set required PSV page */
dec W1, W1 /* frame size */
mov W0, W9 /* Save frame pointer */
/* Calculate Magnitude for every frequency */
/* --------------------------------------- */
do #(16-1), 1f
/* Q0 = coeff * Q1 - Q2 + sample */
/* Q2 = Q1 */
/* Q1 = Q0 */
/* coeff = W5
Q1 = W6
Q2 = W8
*/
mov #_result, W10
mov W9, W0 /* restore frame pointer */
clr W6 /* clear Q1 */
clr W8 /* clear Q2 */
mov [W2++], W5 /* get coeff for next freq */
do W1, 2f
mov [W0++], W7
mpy W4*W7, A
;lac [W0++], #0, A /* Q0 = sample */
;sftac A, #8
mac W5*W6, A
mac W5*W6, A /* Q0 = sample + coeff * Q1 */
neg W8, W8 /* Q2 = -Q2 */
add W8, #0, A /* Q0 = sample + coeff * Q1 - Q2 */
mov W6, W8 /* Q2 = Q1 */
sac.r A, #0, [W10++]
2: sac.r A, #0, W6 /* Q1 = Q0 */
/* Calculate magnitude:
magnitude ^ 2 = Q1 ^ 2 + Q2 ^ 2 - Q1 * Q2 * coeff
*/
mov W8, W7 /* W7 = Q2 */
mpy W6*W6, A
mpy W7*W7, B
add A /* A = Q1 ^ 2 + Q2 ^ 2 */
mpy W6*W7, B /* B = Q1 * Q2 */
sac.r B, #0, W6
mpy W5*W6, B
mac W5*W6, B /* B = Q1 * Q2 * coeff */
sub A /* A = Q1^2 + Q2^2 - Q1*Q2*coeff */
sac.r A, #-1, [W3++] /* save A * 2 for true dB conversion */
1: nop
pop W10
pop.d W8
pop CORCON /* restore CORCON */
pop PSVPAG /* restore PSVPAG */
return
-
- вот чтоб до этой библиотеки добраться пришлось развернусь С30. Отдельный сюр, как эти библиотеки организованы. Крок(157 знак., 20.02.2008 22:02)
- вранье и провокация =) либы можно скачать отдельно - Gamma SPb(21.02.2008 11:06)
- вот чтоб до этой библиотеки добраться пришлось развернусь С30. Отдельный сюр, как эти библиотеки организованы. Крок(157 знак., 20.02.2008 22:02)