; EECS 452 recursive sine/cosine generator ; ; 6 Oct 2003 .. initial version .. KM ; 12 Oct 2003 .. sine/cosineine version .. KM ; 2 Nov 2003 .. repairs .. KM .data .bss w_1,1 ; delay stage 1 in data memory .bss w_2,1 ; delay stage 2 in data memory .sect ".text" ; place into the code section .align 4 ; force 32-bit boundary .global _bsinegen ; make entry visible to linker cosine .set 32488 ; cosine in Q15 r .set (-0x7FFF) ; define start w_1 value, Q15 s .set 0x4000 ; define start w_2 value, Q15 _bsinegen: bset sxmd ; enable sign extend bset frct ; shift left 1 on multiply bset m40 ; use 40 bit accumulator bset rdm ; round bclr c54cm ; not C54x compatible mov #r,*(#w_1) ; initialize w_1 mov #s,*(#w_2) ; initialize w_2 L1: ; The following section is to be written by students here be dragons ; end of student section ; move (scaled) w_2 into T0 mov T0,port(#0x3002) ; McBSP_reg(2, McBSP_DXR2) = w_2; left mov *(#w_1),T0 mov T0,port(#0x3003) ; McBSP_reg(2, McBSP_DXR1) = w_1; right L2: btst #1,port(#0x3004),tc1 bcc L2,!tc1 ;while((McBSP_reg(2, McBSP_SPCR2)&0x0002) == 0); b L1 ;generate next sinewave value .end