亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fft16x32.asm

?? davinci技術 源碼 視頻監控匯編源碼
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
* ======================================================================== *
*  TEXAS INSTRUMENTS, INC.                                                 *
*                                                                          *
*  NAME                                                                    *
*      fft16x32 -- fft16x32                                                *
*                                                                          *
*                                                                          *
*  REVISION DATE                                                           *
*      17-May-2005                                                         *
*                                                                          *
*   USAGE                                                                   *
*                                                                           *
*       This routine is C-callable and can be called as:                    *
*                                                                           *
*       void fft16x32                                                       *
*       (                                                                   *
*           short * w,                                                      *
*           int nx,                                                         *
*           int * x,                                                        *
*           int * y                                                         *
*       )                                                                   *
*                                                                           *
*       w[2*nx]:    Pointer to vector of Q.15 FFT coefficients of size      *
*                   2*nx elements.                                          *
*                                                                           *
*       nx:         Number of complex elements in vector x.                 *
*                                                                           *
*       x[2*nx]:    Pointer to input vector of size 2*nx elements.          *
*                                                                           *
*       y[2*nx]:    Pointer to output vector of size 2*nx elements.         *
*                                                                           *
*                                                                           *
*   DESCRIPTION                                                             *
*                                                                           *
*       This code performs a Radix-4 FFT with digit reversal.  The code     *
*       uses a special ordering of twiddle factors and memory accesses      *
*       to improve performance in the presence of cache.  It operates       *
*       largely in-place, but the final digit-reversed output is written    *
*       out-of-place.                                                       *
*                                                                           *
*       This code requires a special sequence of twiddle factors stored     *
*       in Q1.15 fixed-point format.  The following C code illustrates      *
*       one way to generate the desired twiddle-factor array:               *
*                                                                           *
*       #include <math.h>                                                   *
*                                                                           *
*                                                                           *
*       short d2s(double d)                                                 *
*       {                                                                   *
*          d = floor(0.5 + d);  // Explicit rounding to integer //          *
*          if (d >=  32767.0) return  32767;                                *
*          if (d <= -32768.0) return -32768;                                *
*          return (short)d;                                                 *
*       }                                                                   *
*                                                                           *
*        void gen_twiddle_fft_c(short *w, int n)                            *
*       {                                                                   *
*          double M = 32767.5;                                              *
*   const double PI = 3.141592654;                                          *
*          int i, j, k;                                                     *
*                                                                           *
*          for (j = 1, k = 0; j < n >> 2; j = j << 2)                       *
*          {                                                                *
*             for (i = 0; i < n >> 2; i += j << 1)                          *
*             {                                                             *
*               w[k + 11] = d2s(M * cos(6.0 * PI * (i + j) / n));           *
*               w[k + 10] = d2s(M * sin(6.0 * PI * (i + j) / n));           *
*               w[k +  9] = d2s(M * cos(6.0 * PI * (i    ) / n));           *
*               w[k +  8] = d2s(M * sin(6.0 * PI * (i    ) / n));           *
*                                                                           *
*               w[k +  7] = d2s(M * cos(4.0 * PI * (i + j) / n));           *
*               w[k +  6] = d2s(M * sin(4.0 * PI * (i + j) / n));           *
*               w[k +  5] = d2s(M * cos(4.0 * PI * (i    ) / n));           *
*               w[k +  4] = d2s(M * sin(4.0 * PI * (i    ) / n));           *
*                                                                           *
*               w[k +  3] = d2s(M * cos(2.0 * PI * (i + j) / n));           *
*               w[k +  2] = d2s(M * sin(2.0 * PI * (i + j) / n));           *
*               w[k +  1] = d2s(M * cos(2.0 * PI * (i    ) / n));           *
*               w[k +  0] = d2s(M * sin(2.0 * PI * (i    ) / n));           *
*                                                                           *
*               k += 12;                                                    *
*             }                                                             *
*            }                                                              *
*          w[2*n - 1] = w[2*n - 3] = w[2*n - 5] = 32767;                    *
*          w[2*n - 2] = w[2*n - 4] = w[2*n - 6] = 0;                        *
*       }                                                                   *
*                                                                           *
*                                                                           *
*   TECHNIQUES                                                              *
*                                                                           *
*       The following C code represents an implementation of the Cooley     *
*       Tukey radix 4 DIF FFT. It accepts the inputs in normal order and    *
*       produces the outputs in digit reversed order. The natural C code    *
*       shown in this file on the other hand, accepts the inputs in nor-    *
*       mal order and produces the outputs in normal order.                 *
*                                                                           *
*       Several transformations have been applied to the original Cooley    *
*       Tukey code to produce the natural C code description shown here.    *
*       In order to understand these it would first be educational to       *
*       understand some of the issues involved in the conventional Cooley   *
*       Tukey FFT code.                                                     *
*                                                                           *
*       void radix4(int n, short x[], short wn[])                           *
*       {                                                                   *
*           int    n1,  n2,  ie,   ia1,  ia2, ia3;                          *
*           int    i0,  i1,  i2,    i3,    i, j,     k;                     *
*           short  co1, co2, co3,  si1,  si2, si3;                          *
*           short  xt0, yt0, xt1,  yt1,  xt2, yt2;                          *
*           short  xh0, xh1, xh20, xh21, xl0, xl1,xl20,xl21;                *
*                                                                           *
*           n2 = n;                                                         *
*           ie = 1;                                                         *
*           for (k = n; k > 1; k >>= 2)                                     *
*           {                                                               *
*               n1 = n2;                                                    *
*               n2 >>= 2;                                                   *
*               ia1 = 0;                                                    *
*                                                                           *
*               for (j = 0; j < n2; j++)                                    *
*               {                                                           *
*                    ia2 = ia1 + ia1;                                       *
*                    ia3 = ia2 + ia1;                                       *
*                                                                           *
*                    co1 = wn[2 * ia1    ];                                 *
*                    si1 = wn[2 * ia1 + 1];                                 *
*                    co2 = wn[2 * ia2    ];                                 *
*                    si2 = wn[2 * ia2 + 1];                                 *
*                    co3 = wn[2 * ia3    ];                                 *
*                    si3 = wn[2 * ia3 + 1];                                 *
*                    ia1 = ia1 + ie;                                        *
*                                                                           *
*                    for (i0 = j; i0< n; i0 += n1)                          *
*                    {                                                      *
*                        i1 = i0 + n2;                                      *
*                        i2 = i1 + n2;                                      *
*                        i3 = i2 + n2;                                      *
*                                                                           *
*                                                                           *
*                        xh0  = x[2 * i0    ] + x[2 * i2    ];              *
*                        xh1  = x[2 * i0 + 1] + x[2 * i2 + 1];              *
*                        xl0  = x[2 * i0    ] - x[2 * i2    ];              *
*                        xl1  = x[2 * i0 + 1] - x[2 * i2 + 1];              *
*                                                                           *
*                        xh20 = x[2 * i1    ] + x[2 * i3    ];              *
*                        xh21 = x[2 * i1 + 1] + x[2 * i3 + 1];              *
*                        xl20 = x[2 * i1    ] - x[2 * i3    ];              *
*                        xl21 = x[2 * i1 + 1] - x[2 * i3 + 1];              *
*                                                                           *
*                        x[2 * i0    ] = xh0 + xh20;                        *
*                        x[2 * i0 + 1] = xh1 + xh21;                        *
*                                                                           *
*                        xt0  = xh0 - xh20;                                 *
*                        yt0  = xh1 - xh21;                                 *
*                        xt1  = xl0 + xl21;                                 *
*                        yt2  = xl1 + xl20;                                 *
*                        xt2  = xl0 - xl21;                                 *
*                        yt1  = xl1 - xl20;                                 *
*                                                                           *
*                        x[2 * i1    ] = (xt1 * co1 + yt1 * si1) >> 15;     *
*                        x[2 * i1 + 1] = (yt1 * co1 - xt1 * si1) >> 15;     *
*                        x[2 * i2    ] = (xt0 * co2 + yt0 * si2) >> 15;     *
*                        x[2 * i2 + 1] = (yt0 * co2 - xt0 * si2) >> 15;     *
*                        x[2 * i3    ] = (xt2 * co3 + yt2 * si3) >> 15;     *
*                        x[2 * i3 + 1] = (yt2 * co3 - xt2 * si3) >> 15;     *
*                    }                                                      *
*              }                                                            *
*                                                                           *
*              ie <<= 2;                                                    *
*          }                                                                *
*      }                                                                    *
*                                                                           *
*       The conventional Cooley Tukey FFT, is written using three loops.    *
*       The outermost loop "k" cycles through the stages. There are log     *
*       N to the base 4 stages in all. The loop "j" cycles through the      *
*       groups of butterflies with different twiddle factors, loop "i"      *
*       reuses the twiddle factors for the different butterflies within     *
*       a stage. It is interesting to note the following:                   *
*                                                                           *
* ------------------------------------------------------------------------- *
*       Stage#     #Groups     # Butterflies with common     #Groups*Bflys  *
*                                twiddle factors                            *
* ------------------------------------------------------------------------- *
*        1         N/4          1                            N/4            *
*        2         N/16         4                            N/4            *
*        ..                                                                 *
*        logN      1            N/4                          N/4            *
* ------------------------------------------------------------------------- *
*                                                                           *
*       The following statements can be made based on above observations:   *
*                                                                           *
*       a) Inner loop "i0" iterates a variable number of times. In          *
*       particular the number of iterations quadruples every time from      *
*       1..N/4. Hence software pipelining a loop that iterates a variable   *
*       number of times is not profitable.                                  *
*                                                                           *
*       b) Outer loop "j" iterates a variable number of times as well.      *
*       However the number of iterations is quartered every time from       *
*       N/4 ..1. Hence the behaviour in (a) and (b) are exactly opposite    *
*       to each other.                                                      *
*                                                                           *
*       c) If the two loops "i" and "j" are colaesced together then they    *
*       will iterate for a fixed number of times namely N/4. This allows    *
*       us to combine the "i" and "j" loops into 1 loop. Optimized impl-    *
*       ementations will make use of this fact.                             *
*                                                                           *
*       In addition the Cooley Tukey FFT accesses three twiddle factors     *
*       per iteration of the inner loop, as the butterflies that re-use     *
*       twiddle factors are lumped together. This leads to accessing the    *
*       twiddle factor array at three points each sepearted by "ie". Note   *
*       that "ie" is initially 1, and is quadrupled with every iteration.   *
*       Therfore these three twiddle factors are not even contiguous in     *
*       the array.                                                          *
*                                                                           *
*       In order to vectorize the FFT, it is desirable to access twiddle    *
*       factor array using double word wide loads and fetch the twiddle     *
*       factors needed. In order to do this a modified twiddle factor       *
*       array is created, in which the factors WN/4, WN/2, W3N/4 are        *
*       arranged to be contiguous. This eliminates the seperation between   *
*       twiddle factors within a butterfly. However this implies that as    *
*       the loop is traversed from one stage to another, that we maintain   *
*       a redundant version of the twiddle factor array. Hence the size     *
*       of the twiddle factor array increases as compared to the normal     *
*       Cooley Tukey FFT.  The modified twiddle factor array is of size     *
*       "2 * N" where the conventional Cooley Tukey FFT is of size"3N/4"    *
*       where N is the number of complex points to be transformed. The      *
*       routine that generates the modified twiddle factor array was        *
*       presented earlier. With the above transformation of the FFT,        *
*       both the input data and the twiddle factor array can be accessed    *
*       using double-word wide loads to enable packed data processing.      *
*                                                                           *
*       The final stage is optimised to remove the multiplication as        *
*       w0 = 1.  This stage also performs digit reversal on the data,       *
*       so the final output is in natural order.                            *
*                                                                           *
*       The fft() code shown here performs the bulk of the computation      *
*       in place. However, because digit-reversal cannot be performed       *
*       in-place, the final result is written to a separate array, y[].     *
*                                                                           *
*       There is one slight break in the flow of packed processing that     *
*       needs to be comprehended. The real part of the complex number is    *
*       in the lower half, and the imaginary part is in the upper half.     *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀中文字幕| 久久精品国产99久久6| 亚洲电影第三页| 国产一区二区在线电影| 在线亚洲一区观看| 中文字幕欧美国产| 麻豆精品一区二区综合av| 一本到一区二区三区| 久久免费电影网| 免费成人你懂的| 精品视频在线看| 亚洲人成小说网站色在线| 国产福利一区二区三区| 精品裸体舞一区二区三区| 亚洲图片欧美色图| 色婷婷综合五月| 国产精品理伦片| 国产69精品久久777的优势| 精品黑人一区二区三区久久 | 日韩色在线观看| 亚洲国产精品欧美一二99| 99久久婷婷国产综合精品| 国产日韩视频一区二区三区| 免费在线视频一区| 日韩视频在线一区二区| 日韩国产欧美三级| 日韩亚洲欧美在线观看| 午夜国产精品一区| 91.成人天堂一区| 日韩精品91亚洲二区在线观看| 欧美性欧美巨大黑白大战| 亚洲麻豆国产自偷在线| 91久久精品午夜一区二区| 亚洲精品久久久蜜桃| 在线观看精品一区| 日韩精品午夜视频| 日韩欧美美女一区二区三区| 日韩电影网1区2区| 精品免费国产二区三区| 国产大片一区二区| 亚洲视频一区二区在线观看| 色悠悠久久综合| 性做久久久久久| 精品卡一卡二卡三卡四在线| 国产精品18久久久久久vr| 国产蜜臀97一区二区三区| 99在线精品视频| 亚洲国产美国国产综合一区二区| 538在线一区二区精品国产| 玖玖九九国产精品| 欧美极品xxx| 色天天综合色天天久久| 日韩av中文字幕一区二区三区| 欧美va亚洲va| 91网上在线视频| 免费高清视频精品| 国产精品伦一区二区三级视频| 91美女精品福利| 免费在线看一区| 亚洲天堂福利av| 69久久99精品久久久久婷婷 | 亚洲国产电影在线观看| 在线观看成人免费视频| 极品瑜伽女神91| 亚洲欧美日韩国产综合| 制服丝袜中文字幕一区| 99在线精品观看| 蜜桃精品视频在线观看| 亚洲欧美影音先锋| 制服视频三区第一页精品| 成人一区二区三区| 日韩高清不卡在线| 综合色中文字幕| 精品福利一二区| 欧美性色综合网| 9久草视频在线视频精品| 日韩电影一二三区| 一区二区三区在线视频观看 | 国产成人精品一区二区三区四区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩精品欧美日韩精品一| 国产91清纯白嫩初高中在线观看| 午夜精品国产更新| 亚洲色图19p| 欧美韩国日本不卡| 欧美成人三级在线| 欧美日韩亚洲丝袜制服| www.综合网.com| 国产91丝袜在线观看| 久久精品国产亚洲一区二区三区| 一区二区在线观看免费| 国产精品初高中害羞小美女文| 日韩免费看的电影| 91精品国产福利在线观看| 欧美亚洲国产一区二区三区va | 伊人色综合久久天天人手人婷| 久久综合给合久久狠狠狠97色69| 欧美亚洲国产一区二区三区va| caoporen国产精品视频| 国产电影一区二区三区| 精品一二三四区| 日韩精品电影在线| 五月婷婷久久丁香| 天堂av在线一区| 香蕉加勒比综合久久| 亚洲一区在线视频| 亚洲国产视频a| 视频一区欧美精品| 日本亚洲最大的色成网站www| 亚洲成人在线网站| 亚州成人在线电影| 日韩中文字幕不卡| 日本三级韩国三级欧美三级| 日本欧美一区二区| 精品亚洲成a人在线观看| 精品午夜久久福利影院| 久久国产尿小便嘘嘘| 久久99久久精品| 国产高清精品久久久久| 成人app软件下载大全免费| av在线不卡电影| 在线视频一区二区三区| 欧美色偷偷大香| 日韩亚洲欧美成人一区| 日韩免费性生活视频播放| 久久先锋资源网| 中文字幕制服丝袜一区二区三区| 自拍偷自拍亚洲精品播放| 亚洲美女视频一区| 日韩成人午夜精品| 国产毛片精品视频| 成人黄色电影在线 | 欧美国产亚洲另类动漫| 国产精品成人在线观看| 亚洲国产综合视频在线观看| 免费看黄色91| 国产91精品一区二区麻豆网站 | 国产91综合一区在线观看| 99免费精品视频| 色婷婷亚洲婷婷| 欧美丰满少妇xxxbbb| 精品电影一区二区三区| 亚洲欧美自拍偷拍色图| 日韩精品电影在线观看| 国产成人在线视频免费播放| 91尤物视频在线观看| 日韩一区二区中文字幕| 国产精品丝袜一区| 亚洲不卡av一区二区三区| 国产精品一区二区三区乱码| 色哟哟国产精品| 欧美一级在线视频| 亚洲天堂福利av| 韩国视频一区二区| 欧美三级日韩在线| 国产精品视频一二三区| 亚洲午夜精品网| 国产精品一二三在| 91麻豆精品国产自产在线观看一区 | 成人欧美一区二区三区视频网页| 亚洲午夜在线电影| 波多野结衣一区二区三区 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲国产综合人成综合网站| 成人av网站免费| 欧美一区二区日韩| 夜夜嗨av一区二区三区四季av| 另类的小说在线视频另类成人小视频在线 | 国产福利一区二区三区视频在线| 欧美日韩高清不卡| 日韩一区在线免费观看| 国产剧情一区二区三区| 欧美一区午夜精品| 亚洲小说欧美激情另类| 成人福利视频在线看| 久久九九国产精品| 久久精品国产99久久6| 欧美理论在线播放| 亚洲午夜一二三区视频| 91在线云播放| 国产精品色婷婷久久58| 国产高清一区日本| 国产亚洲一区二区三区四区| 免费观看在线综合色| 欧美日本视频在线| 无吗不卡中文字幕| 欧美午夜电影一区| 亚洲午夜国产一区99re久久| 91视频国产资源| 日韩久久一区二区| 91蜜桃在线观看| 一区二区三区中文字幕| 色久优优欧美色久优优| 亚洲欧洲美洲综合色网| 成人精品小蝌蚪| 日韩毛片高清在线播放| 99久久精品免费观看| 亚洲蜜桃精久久久久久久| 91网站在线播放| 亚洲午夜免费电影|