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

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

?? iir_flp32_pipe.asm

?? 這是我在ADSP tiger sharc 201上面實現的OFDM(標準是wimax)同步算法哦!具有非常高的指令效率.
?? ASM
字號:

/*  iir_flp32_pipe.asm
    Floating point IIR using software pipelining for TS201 AND TS101
    July 2,2003
    32-bit float

	Dec 10, 2003 revision - BL
    Performance optimized/improved to from 2.25 to 2.0 cycles/biquad as Nbiq -> infinity

    Improved to 2.0 cycles/biquad by making all coeffs loads
    quad, extra instruction slot created for loop termination jump.
    This optimization also improves bus utilization to free up additional
    time slots for DMA transfers.


-this program can be compiled and run on TS101 and TS201.
-TS101 has only 2 memory blocks (section 1 and 2) where data buffers may be placed.
-TS201 has 5 memory blocks (section 1, 2, 3, 4, 5) where data buffers may be placed.
-In this program only 2 memory blocks have been used to maintain compatibility between
TS101 and TS201

-2 tcl files are provided, one for TS101 and one for TS201. Both of them build
the correspondent project and save the output buffer into a file output.dat
-.align_code 4 instruction has been introduced throughout the main part of the program
to optimize the cycle count for TS201 (On this processor they may be even discarded
if the cycle count is not of interest). For TS101, the assembly option -align-branch-lines 
placed in the project properties tab has the same effect (On TS101 they are a must for
IF instructions).

-This program implements a real single-sample IIR filter, SECTIONS = Nbiq must be a multiple of 4.
Performance approaches 2.0 cycles/biquad as Nbiq -> infinity.

The overall cycle count of the program may be read at the
address cycle_count in the memory after the execution of the program.

  The example waveform has a sum of 5 sinewaves. Filter coeffs filter 4 out.
  (Four bi-quads per sine to filter). Filter's scalecoef actually should be 
  slightly larger than 1.0 to preserve unity gain. The cycle count is not affected.

  To make use of TigerSharc's parallel processing and to take care of
  computational stalls, software pipelining was used. The number of
  bi-quads is presumed to be a multiple of 4, they are divided into 4 sets
  S1, S2, S3 and S4. Input is denoted X(n), output Y(n) and intermidiate
  results are:

    I1 = S1(X),
    I2 = S2(I1),
    I3 = S3(I2)

(Thus, also, Y = S4(I3)).

The parallel execution structure is:

                     ---------
    X(n)     ->     |    S1    | -> I1(n)      done in X block registers xR0, xR4, xR14, xR16, xR8, xR12
                     ---------
                     ---------                                 ||
    I1(n-1)  ->     |    S2    | -> I2(n-1)    done in Y block registers yR0, yR4, yR14, yR16, yR8, yR12
                     ---------
                     ---------
    I2(n-2)  ->     |    S3    | -> I3(n-2)    done in X block registers xR1, xR5, xR15, xR17, xR9, xR13
                     ---------
                     ---------                                 ||
    I3(n-3)  ->     |    S4    | -> Y(n-3)     done in Y block registers yR1, yR5, yR15, yR17, yR9, yR13
                      ---------

Thus, there is a three-sample delay from input to output.
To make this work, the filter coefficients must be interleaved in sets of 4.

Individual bi-quads are of the form

                    1 + b1*z^(-1) + b2*z^(-2)
    H(z) =  scale * -------------------------
                    1 - a1*z^(-1) - a2*z^(-2)

All the scale coefficients are combined into one scalecoef with a single
multiply at the end.

The recursion is implemented using the canonical form:

    w(n) = x(n) + a1*w(n-1) + a2*w(n-2)
    y(n) = w(n) + b1*w(n-1) + b2*w(n-2)

Note that input x(n) could come as output of previous bi-quad section

Note:
    The performance approaches 2.0 cycles/biquad as Nbiq -> infinity

************************************************************************/

#define        SECTIONS    16
#define        N          256

/************************************************************************/
.section data1;

.align 2;                                                       // align to long
.var delayline[SECTIONS*2] = 0.0, 0.0, 0.0, 0.0,                // filter delay line
                             0.0, 0.0, 0.0, 0.0,
                             0.0, 0.0, 0.0, 0.0,
                             0.0, 0.0, 0.0, 0.0,
                             0.0, 0.0, 0.0, 0.0,
                             0.0, 0.0, 0.0, 0.0,
                             0.0, 0.0, 0.0, 0.0,
                             0.0, 0.0, 0.0, 0.0;

.var input[N] = "indata.dat";                                    // input data
.var output[N];                                                  // output data
.var scalecoef = 1.0;

.var cycle_count;    // execution cycle counts

/************************************************************************/
.section data2;
.align 2;                                                        // align to long
.var coeffs[SECTIONS*4] = "coeffs.dat";                          // coeffs interleaved in sets of 4

/************************************************************************/
#ifdef __ADSPTS201__
  #include <defts201.h>
#endif

#include "cache_macros.h"



.section program;
.global _main;

/************************************** Power up code *****************************************/
powerup:

#ifdef __ADSPTS201__

/*in the case of TS201, at the beginning of the program the
cache must be enabled. The procedure is contained in the
cache_enable macro that uses the refresh rate as input parameter
      -if CCLK=500MHz, refresh_rate=750
      -if CCLK=400MHz, refresh_rate=600
      -if CCLK=300MHz, refresh_rate=450
      -if CCLK=250MHz, refresh_rate=375
*/

  cache_enable(750);

//-------------Optional example to preload cache-----------------------------

    j0 = j31 + coeffs; LC0 = SECTIONS;;
    nop;nop;;
.align_code 4;
ini_cache:
    xr3:0 = q[j0+=0];;
.align_code 4;
    if NLC0E, jump ini_cache; q[j0+=4] = xr3:0;;

//----------------------------------------------------------------------------

#endif


end_powerup:

//read cycle counter

  ini_cycle_count;

/************************************** Start of code *****************************************/
_main:
    j4 = j31+input; nop;;                                        			// j4 -> input                                
    j5 = j31+output; nop;;                                       			// j5 -> output            
    LC0=N; r9:8=r9:8-r9:8; yr10=[j31+scalecoef];;                		// N samples, init accumulators to 0, fetch scale

    j0 = j31+delayline;;                                         		// j0 -> delayline
    j1 = j31+delayline;;                                         		// j1 -> delayline
    k0 = k31+coeffs;;                                            		// k0 -> coeffs

/********************************* Benchmark kernel code ****************************************/
.align_code 4;
main_loop:
        r3=r3-r3; r1:0=q[j0+=4]; r15:14=q[k0+=4];;               		// r3=0, r0=w(n-2), r14 = a2 for S1,S2, r15 = a2 for S3,S4
        r7=r7-r7; xr8=[j4+=1];;                    						// r7=0, xr8=input
        LC1 = SECTIONS/4;;                          					// init counter, r1=w(n-2) for S3,S4

.align_code 4;
biq:                                                             		// Inner loop computations are SIMD, using both X and Y comp blocks
            fr3=r0*r14; fr8=r8+r3; r5:4=q[j0+=4];    r17:16=q[k0+=4];;  // r3=a2*w(n-2), r8=x(n), r4=w(n-1), r16=a1 (S1,S2), r17=a1 (S3,S4)
            fr7=r1*r15; fr9=r9+r7; q[j1+=4]=r5:4;;     					// r7=a2*w(n-2), r9=x(n), r5=w(n-1)
            fr3=r4*r16; fr8=r8+r3;                   r15:14=q[k0+=4];;  // r3=a1*w(n-1), r8=x(n)+a2*w(n-2), store new w(n-2), r14=b2 (S1,S2), r15=b2 (S3,S4)
            fr7=r5*r17; fr9=r9+r7;;     								// r7=a1*w(n-1), r9=x(n)+a2*w(n-2), store new w(n-2)
            fr3=r0*r14; fr12=r8+r3;                  r17:16=q[k0+=4];;  // r3=b2*w(n-2), r12=new w(n), r0=next w(n-2), r16=b1 (S1,S2), r17=b1 (S3,S4)
            fr7=r1*r15; fr13=r9+r7; r1:0=q[j0+=4];;    					// r7=b2*w(n-2), r13=new w(n), r1=next w(n-2)
            fr3=r4*r16; fr8=r12+r3; q[j1+=4]=r13:12; r15:14=q[k0+=4];;  // r3=b1*w(n-1), r8=w(n)+b2*w(n-2), store new w(n-1), r14=next a2 (S1,S2), r15=next a2 (S3,S4)
.align_code 4;
			if NLC1E, jump biq;
            fr7=r5*r17; fr9=r13+r7;;   									// r7=b1*w(n-1), r9=w(n)+b2*w(n-2), store new w(n-1)

.align_code 4;
        fr8=r8+r3; j1=j31+delayline;;                            		// xr8=I1(n), yr8=I2(n-1), setup j1 for next sample
        fr9=r9+r7; j0=j31+delayline;;                            		// xr9=I3(n-2), yr9=Y(n-3), setup j0 for next sample
        yfr12=r9*r10; yr9=xr9;;                                  		// scale output, yr9=I3(n-2)
        xr9=yr8; k0=k31+coeffs;;                                 		// xr9=I2(n-1), setup k0 for next sample

.align_code 4;
        if NLC0E, jump main_loop; yr8=xr8; [j5+=1]=yr12;;   	 		// write ouput data, quad align jumps,yr8=I1(n) 

/******************************************* Done ***********************************************/
//read cycle counter and compute the program's cycle count

  comp_cycle_count;


_main.end:
___lib_prog_term:
    jump ___lib_prog_term (NP);;                                      // done.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷亚洲精品| 色先锋久久av资源部| 亚洲高清在线精品| 又紧又大又爽精品一区二区| 中文字幕亚洲一区二区av在线| 国产日韩成人精品| 国产精品丝袜一区| 成人免费在线视频观看| 亚洲精品网站在线观看| 亚洲精品美腿丝袜| 午夜国产精品一区| 免费欧美高清视频| 国产精品一区在线| 91片黄在线观看| 久久精品99国产精品日本| 国产91露脸合集magnet| 日韩成人av影视| 激情综合五月婷婷| 暴力调教一区二区三区| 在线观看亚洲成人| 日韩女优毛片在线| 国产精品女人毛片| 亚洲成av人影院| 国产一区不卡在线| 91福利在线播放| 717成人午夜免费福利电影| 精品处破学生在线二十三| 中文字幕国产精品一区二区| 一区二区三区在线免费| 青娱乐精品视频在线| 大胆亚洲人体视频| 欧美福利视频导航| 国产网站一区二区| 亚欧色一区w666天堂| 国产福利一区在线观看| 欧美性极品少妇| 久久久久久久久97黄色工厂| 亚洲精品国产视频| 国产真实精品久久二三区| 色老汉一区二区三区| 欧美精品一区二区三区四区| 一区二区三区av电影| 国产一区二区视频在线| 欧美系列一区二区| 国产精品美女www爽爽爽| 日本亚洲电影天堂| 在线视频一区二区三| 欧美国产乱子伦| 久久精品72免费观看| 欧美性欧美巨大黑白大战| 久久精品一区二区三区不卡牛牛| 一区二区三区不卡在线观看| 国产成人精品三级| 欧美xxxxx裸体时装秀| 一区二区日韩电影| 成人国产电影网| 久久老女人爱爱| 免费观看在线色综合| 欧美精品三级日韩久久| 亚洲精品videosex极品| 99久久久国产精品免费蜜臀| 久久久综合精品| 紧缚捆绑精品一区二区| 欧美一区二区在线视频| 五月婷婷久久丁香| 欧美优质美女网站| 一区二区三区91| 日本精品一级二级| 亚洲欧美另类在线| 在线中文字幕一区| 亚洲黄色免费网站| 91福利国产精品| 亚洲国产视频在线| 欧美日韩综合在线免费观看| 亚洲自拍偷拍图区| 欧美丝袜第三区| 日韩中文字幕91| 欧美一级二级三级乱码| 麻豆成人久久精品二区三区红| 欧美精品 国产精品| 亚洲h精品动漫在线观看| 911精品国产一区二区在线| 天天色综合天天| 日韩午夜av一区| 国产精品资源站在线| 中文字幕的久久| 色噜噜狠狠一区二区三区果冻| 一卡二卡三卡日韩欧美| 欧美日本一区二区在线观看| 毛片av一区二区| 久久久久久一级片| 97久久超碰国产精品| 亚洲国产色一区| 精品国产乱子伦一区| 成人一区二区视频| 一区二区三区不卡视频在线观看| 欧美亚洲禁片免费| 美脚の诱脚舐め脚责91| 国产精品私房写真福利视频| 欧美中文字幕一区| 免费成人你懂的| 亚洲国产精华液网站w| 日本电影欧美片| 久久er精品视频| 中文字幕日韩一区| 欧美一级xxx| 91性感美女视频| 日精品一区二区三区| 国产蜜臀av在线一区二区三区 | 成人免费毛片a| 一区二区三区中文在线| 日韩精品一区二区三区中文精品| 风间由美一区二区三区在线观看| 亚洲免费伊人电影| 精品久久国产字幕高潮| 91麻豆国产自产在线观看| 日本不卡一二三| 亚洲欧美在线aaa| 精品三级在线看| 在线一区二区三区四区五区| 国产最新精品精品你懂的| 亚洲精品视频免费看| 精品黑人一区二区三区久久| 在线精品视频小说1| 成人免费视频免费观看| 日本亚洲欧美天堂免费| 亚洲女同女同女同女同女同69| 精品久久五月天| 91精品黄色片免费大全| 91原创在线视频| 国产.欧美.日韩| 久久99这里只有精品| 午夜视频在线观看一区二区| 亚洲欧洲美洲综合色网| 久久蜜臀精品av| 日韩视频国产视频| 欧美精品一二三| 欧美揉bbbbb揉bbbbb| 色美美综合视频| 91视频观看免费| 97精品国产露脸对白| 成人久久视频在线观看| 国产91色综合久久免费分享| 精品制服美女丁香| 久久国产精品99久久人人澡| 亚洲成人av一区| 五月天一区二区| 日本亚洲一区二区| 日韩av电影天堂| 青青青伊人色综合久久| 日本不卡免费在线视频| 琪琪久久久久日韩精品| 日本成人在线看| 日韩精品一级中文字幕精品视频免费观看| 亚洲精品v日韩精品| 一区二区三区在线不卡| 一区二区三区蜜桃| 亚洲一级不卡视频| 亚洲国产日韩a在线播放| 亚洲免费观看在线视频| 亚洲在线视频一区| 午夜在线电影亚洲一区| 蜜桃一区二区三区在线| 国产又粗又猛又爽又黄91精品| 国产一区二区久久| eeuss鲁一区二区三区| 91视频在线观看| 欧美人牲a欧美精品| 日韩情涩欧美日韩视频| 精品国产伦一区二区三区观看体验 | 欧美日韩国产精品自在自线| 91精品视频网| 精品捆绑美女sm三区| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久综合网站| 日本一区二区三区免费乱视频 | 在线观看日韩精品| 9191久久久久久久久久久| 26uuu久久综合| 日韩一区在线看| 天堂久久一区二区三区| 国产一区视频在线看| 色偷偷久久一区二区三区| 欧美精品1区2区3区| 国产亚洲欧美在线| 亚洲一区二区三区四区不卡| 久久er精品视频| 色系网站成人免费| 精品国产91乱码一区二区三区 | 亚洲综合在线视频| 久久精品99国产精品| 成人sese在线| 91精品麻豆日日躁夜夜躁| 国产精品亲子伦对白| 午夜一区二区三区视频| 国产成人精品一区二区三区网站观看| 欧洲中文字幕精品| 久久久一区二区三区| 午夜精品久久久| 91在线播放网址|