±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 1208  |  »Ø¸´: 4

jianchaoyv

½ð³æ (СÓÐÃûÆø)

[½»Á÷] ¡¾ÇóÖú¡¿Çë°ïæ¿´Ò»¸ö»ã±àº¯Êý

/***********************************************************************
* _DFT_Fundamental:  
*                                  calculate DFT transform for the fundamental waveform
*                                    this routine could be use to calculate the phase of fundamental waveform
*                                  which equals to atan(A(1)/B(1))
*
* Operation:
* F(1) = (1/N)* sum_n (f(n)*WN(n)), WN(n) = exp[-(j*2*pi*n)/N],
*         n in {0, 1,... , N-1},
* F(2) = (1/N)* sum_n (f(n)*WN(n)), WN(n) = exp[-(j*2*pi*n)/N],
*         n in {N, 1,... , 2*N-1},
*
* calculate:
*                        cycle 1 's DFT transform
*    and    cycle 2 's DFT transform
* Input:
*   w0 = number of source data per cycle       
*        w1 = ptr to source vector (srcCV)                ----- data should be stored in Y-DATA memory
*   w2 = ptr to output value
*        w3 = ptr to cos_sin table                       
*        w4 = COEFFS_IN_DATA, or memory program page with cos_sin table
*   w5 = calculate cycle number
* Return:
*         null
* result store in (w2) array, where
* (w2  ) = F(1).real
* (w2+1) = F(1).imag
* (w2+2) = F(2).real
* (w2+3) = F(2).imag
*
* System resources usage:
*        {w0..w7}        used, not restored
*        {w8..w13}        saved, used, restored
*         AccuA                used, not restored
*         AccuB                used, not restored
*         CORCON                saved, used, restored
*         PSVPAG                saved, used, restored (if factors in P memory)
*
* one loop stage usage.
* instruction cycle:
*                w0 * 4 +
* execution time under 30MIPS:
*        Design By:                                         Jemmey Huang  CADC
*        Last modification:                         Oct 8 / 2006
***********************************************************************/
_DFT_Fundamental:

        push.d        w8                                ; {w8,w9} to TOS
        push.d        w10                                ; {w10,w11} to TOS
        push.d        w12                                ; {w12,w13} to TOS

;............................................................................

        ; Prepare CORCON for fractional computation.
        push CORCON
        bset CORCON, #4                                        ;ACCSAT = 1, Set 9.31 mode
        bset CORCON, #6                                        ;ACCSAT = 1, Set 9.31 mode
        bset CORCON, #7                                        ;ACCSAT = 1, Set 9.31 mode

;............................................................................

        ; Prepare CORCON and PSVPAG for possible access of data
        ; located in program memory, using the PSV.
        push        PSVPAG;


        mov        #COEFFS_IN_DATA,w7                        ; w7 = COEFFS_IN_DATA
        psvaccess        w7                                        ; enable PSV bit in CORCON
        mov        w4,PSVPAG                                        ; load PSVPAG with program
                                                                        ; space page offset
                                                                        ; from here w4 can be used for other job

        mov w5, w9                                                ; cycle number store to w9

        mov w0, w7                                                ; data length = N
        dec w7, w7                                                ; N-1

        ; from here,
        ; w0 data length N
        ; w1 source data start address
        ; w2 return data start address
        ; w3 table start address for cosx
        ; w4 not use
        ; w5, w6 use by MAC
        ; w7 loop counter = N-1
        ; w8 X data pointer to the sin_cos table
        ; w9 cycle number
        ; w10 Y data pointer to the f(i)
        ; w11 not use
        ; w12 not use
        ; w13 not use

        mov w1, w11
_loop_cycls:
        mov w11, w10                                        ; source data begining address
        mov w3, w8                                                ; cos table begining address       
        clr A
        mov [w10++], w6                                        ; pre-fetch source data
        mov [w8++], w5                                        ; pre-fetch cos table
        repeat  w7
        mac w5*w6, a, [w8]+=2, w5, [w10]+=2, w6
        sac.r a, #5, [w2++]                                ; stored real value of cycle 1

        mov w11, w10                                        ; retrive source data begining address
        mov [w10++], w6                                        ; pre-fetch data f(1)
        clr A
        repeat w7                                                ; repeat N time
        mac w5*w6, a, [w8]+=2, w5, [w10]+=2, w6
        sac.r a, #5, [w2++]                                ; stored image value of cycle 1  >>20

        add w11, w0, w11
        add w11, w0, w11
        dec        w9, w9                                                ; w9--
        bra        gt,_loop_cycls                                ; if w0 > 0, do next stage
       

        ; Restore PSVPAG and CORCON.
        pop        PSVPAG
        pop        CORCON

        pop.d        w12                                ; {w12,w13} to TOS
        pop.d        w10                                ; {w10,w11} to TOS
        pop.d        w8                                ; {w8,w9} to TOS
        return
               
ÆäÖÐÕⲿ·Ö£º
        ; Prepare CORCON and PSVPAG for possible access of data
        ; located in program memory, using the PSV.
        push        PSVPAG;


        mov        #COEFFS_IN_DATA,w7                        ; w7 = COEFFS_IN_DATA
        psvaccess        w7                                        ; enable PSV bit in CORCON
        mov        w4,PSVPAG                                        ; load PSVPAG with program
                                                                        ; space page offset
                                                                        ; from here w4 can be used for other job
ÊÇʲôÒâ˼£¿¼±Çó°ïÖú£¡£¡£¡
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

fengyu027

ľ³æ (ÕýʽдÊÖ)

ÄãÕâ¸öÊÇÒ»¸öʲô³ÌÐò°¡ ÊÇ·´»ã±à³öÀ´µÄÂð
¼á³Ö¾ÍÊÇʤÀû£¡
2Â¥2010-08-23 16:01:11
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

hn911

½ð³æ (СÓÐÃûÆø)

¡ï
ÓàÔó³É(½ð±Ò+1):лл²ÎÓëÓ¦Öú£¡ 2010-09-10 16:16:25
ÕâÊǼÆËã»ù±¾²¨ÐεÄÀëÉ¢¸µÀïҶת»»
3Â¥2010-09-10 14:59:31
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

siqin123

гæ (ÕýʽдÊÖ)

¡ï
΢³¾¡¢ÃÎÏë(½ð±Ò+1): лл»Ø¸´¡­¡­ 2011-04-14 21:07:24
ÇóÓë·´ÕýÇк¯ÊýµÈÖµµÄÀëÉ¢¸µÀïÒ¶±ä»»
¼á³ÖÊÇÒ»ÖÖÐÅÑö£¬»ýÀÛÊÇÒ»ÖÖÖÇ»Û
4Â¥2011-01-14 21:05:21
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

huycwork

½ð³æ (ÖøÃûдÊÖ)

¡ï
΢³¾¡¢ÃÎÏë(½ð±Ò+1): лл»Ø¸´¡­¡­ 2011-04-14 21:07:39
; Prepare CORCON and PSVPAG for possible access of data   ;ÕâÀï¾Í˵Ã÷ÁËCORCONºÍPSVPAGÊÇÁ½¸ö״̬¼Ä´æÆ÷
        ; located in program memory, using the PSV.                          ;ÉèÖóÌÐò״̬£¬ÆôÓÃPSVλ
        push        PSVPAG;                                                                       ;±¸·Ý¼Ä´æÆ÷


        mov        #COEFFS_IN_DATA,w7                                               ; ¸³Öµ£¬COEFFS_IN_DATAÊdz£Á¿Öµ
        psvaccess        w7                                                                          ; ´ò¿ªCORCON¼Ä´æÆ÷ÖеÄPSVλ
        mov        w4,PSVPAG                                                                    ; Ϊ³ÌÐòÉèÖÃPSVPAG
============================================================================
ÉÏÃæÊÇ´óÌåÒâ˼£¬¾ßÌå¶øÑÔ£¬Ó¦¸Ã·­Ôĵ¥Æ¬»úÊÖ²áÒԲ鿴CORCONºÍPSVPAGÕâÁ½¸ö¼Ä´æÆ÷¸ÉÂïÓõģ¬Òòµ¥Æ¬»úµÄ²»Í¬£¬¹¦ÄÜÒ²²»¾¡Ïàͬ
äöÎеÄÖÐÐÄÓÐÒ»¿é¿ÕµØ£¬¿Õ¿ÕµÄ¡£
5Â¥2011-04-13 23:25:30
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ jianchaoyv µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 285Çóµ÷¼Á +7 AZMK 2026-04-04 9/450 2026-04-06 00:06 by ÓÀ×ÖºÅ
[¿¼ÑÐ] 348Çóµ÷¼Á +3 ³µÀå×Ózzz 2026-04-05 3/150 2026-04-05 20:30 by à£à£à£0119
[¿¼ÑÐ] Ò»Ö¾Ô¸ËÕÖÝ´óѧ²ÄÁϹ¤³Ì£¨085601£©×¨Ë¶ÓпÆÑо­ÀúÈýÏî¹ú½±Á½¸öʵÓÃÐÍרÀûÒ»ÏîÊ¡¼¶Á¢Ïî +10 ´ó»ðɽС»ðɽ 2026-04-05 10/500 2026-04-05 19:58 by СÎÏţСÎÏÅ£
[¿¼ÑÐ] 277Çóµ÷¼Á +5 ¿¼Ñе÷¼Álxh 2026-04-05 5/250 2026-04-05 19:03 by chy09050039
[¿¼ÑÐ] 081700»¯Ñ§¹¤³ÌÓë¼¼Êõ Ò»Ö¾Ô¸Öк£Ñó 323 Çóµ÷¼ÁѧУ +16 ÅûÐÇºÓ 2026-04-03 16/800 2026-04-05 09:00 by dick_runner
[¿¼ÑÐ] ¿¼Ñе÷¼Á +11 СsunÒªºÃÔË 2026-04-04 11/550 2026-04-05 08:02 by qlm5820
[¿¼ÑÐ] 288»·¾³×¨Ë¶,Çóµ÷²ÄÁÏ·½Ïò +13 lllllos 2026-04-04 14/700 2026-04-04 23:34 by lqwchd
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏÅ©090401£¬268£¬Çóµ÷¼Á +5 һľÄñÈ» 2026-04-04 5/250 2026-04-04 17:07 by babysonlkd
[¿¼ÑÐ] Ò»Ö¾Ô¸ÎäÀí²ÄÁϹ¤³Ì302µ÷¼Á»·»¯»ò»¯¹¤ +19 Doleres 2026-03-31 20/1000 2026-04-04 16:44 by °¡¿¡£¡
[¿¼ÑÐ] 325Çóµ÷¼Á +4 ´º·ç²»½èÒâ 2026-04-04 4/200 2026-04-04 14:46 by ÏæÅ©´¢ÄܲÄÁÏ
[¿¼ÑÐ] Çó²ÄÁϵ÷¼Á£¬Ò»Ö¾Ô¸Ö£ÖÝ´óѧ289·Ö +15 ˶ÐǸ° 2026-04-03 15/750 2026-04-04 01:01 by userper
[¿¼ÑÐ] ÉúÎïѧ308·ÖÇóµ÷¼Á£¨Ò»Ö¾Ô¸»ª¶«Ê¦´ó£© +7 ÏàÐűػá¹ââÍòÕ 2026-04-02 7/350 2026-04-03 16:48 by rzh123456
[¿¼ÑÐ] 085501Ò»Ö¾Ô¸Ì칤´ó£¬»úеר˶Çóµ÷¼Á£¬¿ç²ÄÁÏ +3 33ÉÏ 2026-04-03 3/150 2026-04-03 14:08 by 1753564080
[¿¼ÑÐ] 085600£¬320·ÖÇóµ÷¼Á +6 ´ó²öС×Ó 2026-04-02 6/300 2026-04-02 21:54 by dongzh2009
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©¿Æ¼¼´óѧ085601²ÄÁϹ¤³ÌÓ¢Ò»Êý¶þ³õÊÔ×Ü·Ö335Çóµ÷¼Á +8 Ë«ÂíβƦÀϰå2 2026-04-02 9/450 2026-04-02 14:45 by 5896
[¿¼ÑÐ] 0805Çóµ÷¼Á +8 ÊÇË®·Ö 2026-03-31 8/400 2026-04-02 10:46 by guanxin1001
[¿¼ÑÐ] »¯Ñ§¹¤³Ìר˶324·Ö£¬Ò»Ö¾Ô¸Öйú¿óÒµ´óѧÇóµ÷¼Á +7 ¹¢¹¢1314 2026-04-01 7/350 2026-04-02 07:40 by ÉÐË®¸óÖ÷
[¿¼ÑÐ] °²È«¹¤³Ì 285 Çóµ÷¼Á +3 Xinyu56 2026-04-01 4/200 2026-04-01 21:50 by ¾²¾²¾²¾²¾²¾²¾²¾
[¿¼ÑÐ] ²ÄÁÏרҵµ÷¼Á +5 À²À²À²¿Þ 2026-03-31 6/300 2026-04-01 16:48 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸´óÁ¬Àí¹¤´óѧ²ÄÁÏÇóµ÷¼Á +6 Gymno 2026-03-30 6/300 2026-03-31 07:26 by Î޼ʵIJÝÔ­
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û