Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 64 void iir_tuner(float dec_50[], unsigned short adc_buf[]) {
- 0x08000ae0 <+0>: stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11}
- 0x08000ae4 <+4>: movw r3, #3688 ; 0xe68
- 0x08000ae8 <+8>: ldr.w r10, [pc, #144] ; 0x8000b7c <iir_tuner+156>
- 0x08000aec <+12>: ldr.w r9, [pc, #144] ; 0x8000b80 <iir_tuner+160>
- 0x08000af0 <+16>: ldr r6, [pc, #132] ; (0x8000b78 <iir_tuner+152>)
- 0x08000af2 <+18>: ldr.w r2, [r10]
- 0x08000af6 <+22>: ldr.w r4, [r9]
- 0x08000afa <+26>: ldr r7, [r6, #0]
- 0x08000afc <+28>: movt r3, #8192 ; 0x2000
- 0x08000b00 <+32>: add.w r8, r1, #7168 ; 0x1c00
- 0x08000b04 <+36>: ldr.w r12, [r3]
- 0x08000b08 <+40>: subs r0, #4
- 0x08000b0a <+42>: subs r3, r1, #2
- 0x08000b0c <+44>: add.w r8, r8, #30
- 0x08000b14 <+52>: mov r1, r2
- 0x08000b16 <+54>: add.w r5, r3, #90 ; 0x5a
- 0x08000b1a <+58>: mov r2, r4
- 0x08000b1c <+60>: b.n 0x8000b2a <iir_tuner+74>
- 65 int i, j, k;
- 66 float x, y, z;
- 67 int n, m, o;
- 68
- 69 for(i=0, j=0; i<ADC_TUNER_BUF_SZ/2; j++) {
- 0x08000b4c <+108>: cmp r3, r8
- 0x08000b58 <+120>: beq.n 0x8000b5e <iir_tuner+126>
- 70
- 71 /* IIR BPF centred at Fs/4. All your MIPs are belong to this
- 72 loop. */
- 73
- 74 for(k=0; k<ADC_TUNER_M; k++,i++) {
- ---Type <return> to continue, or q <return> to quit---
- 0x08000b32 <+82>: cmp r3, r5
- 0x08000b38 <+88>: bne.n 0x8000b1e <iir_tuner+62>
- 75 #ifdef FIXED_IIR
- 76 m = (int)adc_buf[i];// I could be wrong here -- I'm new to any kind of DSP -- but won't this offset be removed by the BPF?
- 0x08000b1e <+62>: ldrh.w r4, [r3, #2]!
- 0x08000b2a <+74>: ldrh.w r4, [r3, #2]!
- 77 n = m - ((B1MUL*n_2)>>B1SHFT);
- 0x08000b22 <+66>: rsb r2, r2, r2, lsl #10
- 0x08000b26 <+70>: sub.w r2, r4, r2, asr #10
- 0x08000b2e <+78>: rsb r1, r1, r1, lsl #10
- 0x08000b34 <+84>: sub.w r1, r4, r1, asr #10
- 78 n_2 = n_1;
- 79 n_1 = n;
- 80 #else
- 81 x = (int)adc_buf[i] - 32768;
- 82 y = x - (BETA1*y_2);
- 83 y_2 = y_1;
- 84 y_1 = y;
- 85 #endif
- 86 }
- 87
- 88 /* Equaliser FIR filter, notch at Fs/(4*ADC_TUNER_M) to smooth out
- 89 IIR BPF passband response */
- 90 #ifdef FIXED_IIR
- 91 o = n + ((B2MUL*o_2)>>B2SHFT);
- 0x08000b10 <+48>: movw r11, #979 ; 0x3d3
- 0x08000b3a <+90>: mul.w r12, r11, r12
- 0x08000b3e <+94>: mov r4, r1
- 0x08000b40 <+96>: add.w r1, r1, r12, asr #10
- 92 dec_50[j] = (float)o;
- ---Type <return> to continue, or q <return> to quit---g
- 0x08000b44 <+100>: vmov s14, r1
- 0x08000b48 <+104>: vcvt.f32.s32 s15, s14
- 0x08000b4e <+110>: vmov r1, s15
- 0x08000b54 <+116>: str.w r1, [r0, #4]!
- 93 o_2 = o_1;
- 0x08000b52 <+114>: mov r12, r7
- 94 o_1 = n;
- 0x08000b5a <+122>: mov r7, r4
- 0x08000b5c <+124>: b.n 0x8000b14 <iir_tuner+52>
- 0x08000b5e <+126>: movw r0, #3688 ; 0xe68
- 0x08000b62 <+130>: movt r0, #8192 ; 0x2000
- 0x08000b66 <+134>: str.w r2, [r10]
- 0x08000b6a <+138>: str.w r4, [r9]
- 0x08000b6e <+142>: str r7, [r0, #0]
- 0x08000b70 <+144>: str r4, [r6, #0]
- 95 #else
- 96 z=y+BETA2*z_2;
- 97 dec_50[j] = z;
- 98 z_2 = z_1;
- 99 z_1 = y;
- 100 #endif
- 101
- 102 }
- 103 }
- 0x08000b72 <+146>: ldmia.w sp!, {r4, r5, r6, r7, r8, r9, r10, r11}
- 0x08000b76 <+150>: bx lr
- 0x08000b78 <+152>: lsrs r0, r7, #25
- 0x08000b7a <+154>: movs r0, #0
- 0x08000b7c <+156>: lsrs r4, r7, #25
- 0x08000b7e <+158>: movs r0, #0
- 0x08000b80 <+160>: lsrs r4, r6, #25
- ---Type <return> to continue, or q <return> to quit---
- 0x08000b82 <+162>: movs r0, #0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement