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

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

?? fft.asm

?? davinci技術 源碼 視頻監控匯編源碼
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
* ========================================================================= *
*  TEXAS INSTRUMENTS, INC.                                                  *
*                                                                           *
*  NAME                                                                     *
*      fft -- fft                                                           *
*                                                                           *
*                                                                           *
*  REVISION DATE                                                            *
*      06-May-2005                                                          *
*                                                                           *
*   USAGE                                                                   *
*                                                                           *
*       This routine is C-callable and can be called as:                    *
*                                                                           *
*       void fft                                                            *
*       (                                                                   *
*           short * w,                                                      *
*           int nx,                                                         *
*           short * x,                                                      *
*           short * 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 1Q15 fixed-point format.  The following C code illustrates       *
*       one way to generate the desired twiddle-factor array:               *
*                                                                           *
*       #include <math.h>                                                   *
*                                                                           *
*       #ifndef PI                                                          *
*       # define PI (3.14159265358979323846)                                *
*       #endif                                                              *
*                                                                           *
*       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(short *w, int n)                                   *
*       {                                                                   *
*           double M = 32767.5;                                             *
*           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 veriable number of times. In          *
*       particular the number of iterations quadruples every time from      *
*       1..N/4. Hence software pipelining a loop that iterates a vraiable   *
*       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    *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91| 亚洲视频在线一区观看| 国产精品久久久久久久久免费桃花 | 精品久久久久久久久久久久久久久久久 | 欧美制服丝袜第一页| 日韩欧美一级精品久久| 亚洲欧美日韩精品久久久久| 国产综合一区二区| 欧美三区在线视频| 国产精品二三区| 精品写真视频在线观看| 欧美日韩免费一区二区三区 | 91精品国产一区二区人妖| 中文字幕一区二区5566日韩| 日韩极品在线观看| 制服丝袜日韩国产| 亚洲精品久久嫩草网站秘色| 国产91高潮流白浆在线麻豆| 日韩午夜小视频| 日韩vs国产vs欧美| 欧美另类一区二区三区| 一区二区三区视频在线观看| 国产成人精品1024| 久久久久久久久久美女| 久久精品国产澳门| 日韩视频一区二区在线观看| 亚洲 欧美综合在线网络| 色老汉一区二区三区| ㊣最新国产の精品bt伙计久久| 免费高清不卡av| 日韩欧美视频在线| 日韩成人一区二区三区在线观看| 欧美性色黄大片| 亚洲成人资源网| 欧美综合在线视频| 亚洲乱码中文字幕综合| 91视频一区二区| 亚洲免费电影在线| 在线观看免费视频综合| 亚洲二区在线观看| 91精品国产综合久久国产大片| 丝袜美腿亚洲色图| 欧美tickling网站挠脚心| 麻豆精品蜜桃视频网站| 欧美成人性福生活免费看| 精品在线一区二区| 亚洲国产精品国自产拍av| www.欧美日韩国产在线| 亚洲六月丁香色婷婷综合久久 | 欧美三级一区二区| 亚洲精品国产一区二区三区四区在线| 不卡的av在线| 夜夜爽夜夜爽精品视频| 欧美日韩国产首页在线观看| 日本不卡在线视频| 欧美电视剧在线看免费| 国产精品一区三区| 亚洲激情五月婷婷| 538在线一区二区精品国产| 久久99精品国产麻豆不卡| 国产人久久人人人人爽| 色综合久久综合网97色综合| 五月天欧美精品| 国产日韩影视精品| 欧美又粗又大又爽| 精品一区二区三区在线观看国产 | 欧美日韩国产欧美日美国产精品| 日韩 欧美一区二区三区| 久久―日本道色综合久久| 99久久精品免费看国产| 蜜桃视频在线观看一区二区| 中文字幕在线免费不卡| 欧美一卡二卡在线| 99在线精品观看| 蜜桃视频第一区免费观看| 成人欧美一区二区三区视频网页| 在线播放日韩导航| www.视频一区| 另类小说视频一区二区| 亚洲精品中文在线影院| 国产亚洲污的网站| 日韩一区二区三区免费看| caoporen国产精品视频| 美女网站一区二区| 一区二区三区资源| 国产欧美日韩激情| 欧美一级黄色大片| 欧美三区在线视频| 91在线云播放| 国产精品中文欧美| 久久精品国产在热久久| 亚洲一区二区欧美| 亚洲欧洲无码一区二区三区| 久久久久久久av麻豆果冻| 91精品国产综合久久香蕉的特点| 不卡一区二区三区四区| 韩国女主播成人在线观看| 亚洲成人免费视| 亚洲欧美日韩国产综合| 中文一区一区三区高中清不卡| 日韩区在线观看| 欧美三级视频在线播放| 91久久精品一区二区| 99亚偷拍自图区亚洲| 国产99精品国产| 国产精品资源在线| 黄页网站大全一区二区| 蜜臀久久99精品久久久画质超高清 | 国产欧美日韩久久| 久久综合九色欧美综合狠狠| 日韩欧美一区二区在线视频| 欧美日韩精品是欧美日韩精品| 久久久久久久久久久久久久久99| 欧美一区二区福利视频| 欧美日韩aaa| 欧美猛男gaygay网站| 欧美亚洲精品一区| 欧美日韩一区二区三区在线| 欧美视频在线播放| 欧美日韩一区在线| 欧美二区三区91| 日韩西西人体444www| 精品国产百合女同互慰| 久久综合九色综合97婷婷| 国产色产综合产在线视频 | 欧美xxxx老人做受| 久久综合九色欧美综合狠狠| 国产欧美一区二区在线观看| 国产精品女同互慰在线看| 1000精品久久久久久久久| 中文字幕一区二区三区在线播放| 亚洲欧洲日产国产综合网| 一区二区三区在线看| 日本不卡不码高清免费观看| 久久精品久久综合| 成人午夜精品在线| 一本到高清视频免费精品| 欧美日韩亚洲高清一区二区| 日韩三级免费观看| 亚洲国产精品黑人久久久| 亚洲视频狠狠干| 日本中文一区二区三区| 国产一区二区三区四| 91老师片黄在线观看| 欧美一区二区女人| 中文字幕乱码久久午夜不卡| 亚洲综合另类小说| 极品瑜伽女神91| 91亚洲精品一区二区乱码| 国产目拍亚洲精品99久久精品| 亚洲视频在线一区| 男女激情视频一区| 9l国产精品久久久久麻豆| 欧美日韩一区二区三区四区五区| 亚洲精品在线网站| 亚洲老司机在线| 国产乱码精品1区2区3区| 欧美性感一类影片在线播放| 精品国产成人在线影院| 一区二区三区中文在线观看| 日韩成人免费看| 99精品视频在线播放观看| 欧美一级片在线| 亚洲人午夜精品天堂一二香蕉| 日本午夜精品一区二区三区电影 | 欧美日韩色一区| 亚洲国产精华液网站w| 午夜精品久久久久久久久久久| 国产成人日日夜夜| 欧美高清视频一二三区 | 91久久精品一区二区三| 欧美www视频| 亚洲va国产天堂va久久en| 波多野结衣中文一区| 精品免费国产一区二区三区四区| 一区二区久久久久| 成人免费看的视频| 日韩精品一区二区三区视频| 亚洲午夜精品在线| 一本色道久久综合亚洲aⅴ蜜桃| 国产日产欧美一区| 免费久久99精品国产| 欧美狂野另类xxxxoooo| 亚洲乱码国产乱码精品精小说| 黑人精品欧美一区二区蜜桃| 这里只有精品免费| 亚洲午夜成aⅴ人片| 一本大道综合伊人精品热热| 欧美极品aⅴ影院| 国产伦精品一区二区三区免费迷| 欧美一二三区精品| 日韩av电影天堂| 欧美日韩精品福利| 亚洲一卡二卡三卡四卡| 在线亚洲+欧美+日本专区| 亚洲女与黑人做爰| 99精品视频一区| 亚洲欧美国产三级| 欧洲精品在线观看| 亚洲国产视频直播|