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

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

?? fft32.asm

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

/*  fft32.asm

	July 2004 PM

	This is assembly routine for the Complex radix-2 C-callable FFT on TigerSHARC 
	family of DSPs only. It elaborates on complex only inputs. The real case has been excluded

	I. Description of Calling.

		1. Inputs:
			j4 -> input (ping-pong buffer 1)
			j5 -> ping-pong buffer 1
      		j6 -> ping-pong buffer 2
			j7 -> output
			
			//j27+0x18 -> N = Number of points

		2. C-Calling Example:
			fft32(&(input), &(ping_pong_buffer1), &(ping_pong_buffer2), &(output), N);

		3. Limitations:
			a. All buffers must be aligned on memory boundary which is a multiple of 4.
			b. N must be between 32 and MAX_FFT_SIZE.
			c. If memory space savings are required and input does not have to be
			   preserved, ping_pong_buffer1 can be the same buffer as input.
			d. If memory space savings are required, output can be the same buffer
			   as ping_pong_buffer2 if the number of FFT stages is even (i.e. 
			   Log2(N) is even) or the same as ping_pong_buffer1 if the number of
			   FFT stages is odd (i.e. Log2(N) is odd).

		4. MAX_FFT_SIZE can be selected via #define. Larger values allow for more choices
		   of N, but its twiddles will occupy more memory.
    5. This C - callable function can process up to 64K blocks of data on TS201 
        (16K blocks on TS101) because C environment itself necessitates memory. 
        Therefore, if more input points are necessary, assembly language development 
        may become a must. On TS201, a block of memory is 128K words long, so 
        maximum N is 64K complex points. TS101 contains only 2 blocks of data memory 
        of 64K words and 4 buffers must be accommodated. 
        Therefore, maximum N is 16K complex words.

	
	II. Description of the FFT algorithm.

		1. The input data is treated as complex interleaved N-point.
		2. Due to re-ordering, no stage can be done in-place.
		3. The bit reversal and the first two stages are combined into
		   a single loop. This loop takes data from input and stores it
		   in the ping-pong buffer1.
		4. Each subsequent stage ping-pongs the data between the two ping-pong
		   buffers. The last stage uses FFT output buffer for its output.
		5. Although the FFT is designed to be called with any point size
		   N <= MAX_FFT_SIZE by subsampling the twiddle factors, for ADSP-TS20x
		   processors, the best cycle optimization is achieved when MAX_FFT_SIZE=N.
		   For ADSP-TS101 all choices of MAX_FFT_SIZE are equally optimal.



	III.For all additional details regarding this algorithm and code, see EE-218
	    application note, available from the ADI web site.		   

*/
//************************************ Includes **********************************

 /*                
#define mPUSHQ(arg) \
  Q[k27 += -4] = arg;;

#define mPOPQ(arg) \
  k27 = k27 + 4;;  \
  arg = Q[k27 += 0];;

#define mENTER \
  j26 = j27 - 0x40; k26 = k27 - 0x40;; \
  [j27 += 0xFFFFFFF4] = cJMP; k27 = k27 - 0x04;;

#define mRETURN \
  cjmp = [j26 + 0x40];; \
  cjmp(ABS)(NP); j27:24 = Q[j26 + 0x44]; k27:24 = Q[k26 + 0x44];;

*/

  
//************************* Externs *************************************
#include "SS_SYN.h"
//#include "FFTDef.h"
 #ifdef __ADSPTS201__
   #include "defts201.h"
 #endif  

//********************************* FFT Routine *********************************
.section program;

.global _FFT32;

//.extern _twiddles;

.align_code 4;

_FFT32:
//			j4	=FFT_input;;
//			j5 	=ping_pong_buffer1;;
//     		j6 	=ping_pong_buffer2;;
//			j7 	=FFT_output;;
//			k4	=_twiddles;;

//********************************** Prologue ***********************************
/*
	mENTER
    mPUSHQ(xR31:28)
	mPUSHQ(xR27:24)
	mPUSHQ(yR31:28)
	mPUSHQ(yR27:24)
	*/
	
	     [j27+=4]=   cjmp ;     [k27+=4]=    yr0 ;;
             [j27+=4]=    lc0 ;     [k27+=4]=    yr0 ;;
             [j27+=4]=    lc1 ;     [k27+=4]=    yr0 ;;
             [j27+=4]=    jl0 ;     [k27+=4]=    kl0 ;;
             [j27+=4]=    jb0 ;     [k27+=4]=    kb0 ;;
             
            q[j27+=4]=  xr3:0 ;    q[k27+=4]=  yr3:0 ;;
            q[j27+=4]=  xr7:4 ;    q[k27+=4]=  yr7:4 ;;
            q[j27+=4]= xr11:8 ;    q[k27+=4]= yr11:8 ;;
            q[j27+=4]=xr15:12 ;    q[k27+=4]=yr15:12 ;; 
            q[j27+=4]=xr19:16 ;    q[k27+=4]=yr19:16 ;; 
            q[j27+=4]=xr23:20 ;    q[k27+=4]=yr23:20 ;;
            q[j27+=4]=   j3:0 ;    q[k27+=4]=   k3:0 ;;
            q[j27+=4]=  j11:8 ;    q[k27+=4]=  k11:8 ;;
            
//************************************ Setup *************************************
_FFTStages1and2:

  //j11 = [j27 + 0x18];;                                  // j11=N
	j11=FFT_size;;
	//xr3=j11; k7=k31+_twiddles;;
	xr3=j11; k7=k31+k4;;
	k1=j11; j8=lshiftr j11;;														// k1=N, j8=N/2
	j9=lshiftr j8; xr0=MAX_FFT_SIZE; xr3=LD0 r3;;								// j9=N/4, compute the twiddle stride
	k8=lshiftr k1; xr0=LD0 r0; xr1=j11;;
	k8=lshiftr k8; xr1=LD0 r1; xr2=(31-3);;										// k8=N/4, Compute Stages-3
	k0=j4; k10=lshiftr k8; xr1=r1-r0; xr0=lshift r0 by -32;;					// k0->input, xr1=bit difference between MAX and N
	k10=lshiftr k10; xr0=bset r0 by r1; xr30=r2-r3;;							// k10=N/16, xr30=Stages-3
	k10=k10-1; xr0=lshift r0 by 2; LC1=xr30;;									// k10=N/16-1, LC1=Stages-3
	k9=xr0; k4=k31+(MAX_FFT_SIZE/4-1);;
	k4=not k4; j10=lshiftr j9;;													// initial twiddles pointer mask, j10=N/8

//****************** Bit Reverse and Stages 1 & 2 ******************************

	k5=lshiftr k1;;																// k5=N/2
	j0=j31+j6; k6=k6-k6;;														// j0->ping_pong_buffer2
	j1=j0+j9; LC0=k10;;															// j1->ping_pong_buffer2+N/4, LC0=N/16-1
	j2=j1+j9; k1=k0+k5;;														// j2->ping_pong_buffer2+N/2, k1->input+N/2
	j3=j2+j9; k2=k1+k5;;														// j3->ping_pong_buffer2+3N/4, k2->input+N
	j12=j3+j9; k3=k2+k5;;														// j12->ping_pong_buffer2+N, k3->input+3N/2
	j13=j12+j9; k5=lshiftr k5;;													// j13->ping_pong_buffer2+5N/4, k5=N/4
	j14=j13+j9; r1:0=q[k0+k6];;													// j14->ping_pong_buffer2+3N/2
	j15=j14+j9; r3:2=q[k2+k6];;													// j15->ping_pong_buffer2+7N/4
	
	r5:4=q[k1+k6];;
	r7:6=q[k3+k6];;
	
	k6=k6+k5 (br); fr0=r0+r2, fr20=r0-r2;;
	r9:8=q[k0+k6]; fr2=r1+r3, fr29=r1-r3;;
	r11:10=q[k2+k6]; fr4=r4+r6, fr21=r4-r6;;
	r13:12=q[k1+k6]; fr5=r5+r7, fr28=r5-r7;;
		
	r15:14=q[k3+k6]; fr18=r8+r10, fr22=r8-r10;;			
	k6=k6+k5 (br); fr19=r9+r11, fr31=r9-r11;;			
	fr26=r12+r14, fr23=r12-r14;;						
	fr27=r13+r15, fr30=r13-r15;;						
		
	fr20=r20+r28, fr28=r20-r28;;						
	fr29=r29+r21, fr21=r29-r21;;						
	fr22=r22+r30, fr30=r22-r30;;						
	fr31=r31+r23, fr23=r31-r23;;						
	
.align_code 4;
_Stages1and2Loop:
		r1:0=q[k0+k6]; q[j2+=4]=yr23:20; fr16=r0+r4, fr24=r0-r4;;
		r3:2=q[k2+k6]; q[j3+=4]=xr23:20; fr17=r2+r5, fr25=r2-r5;;
		r5:4=q[k1+k6]; q[j14+=4]=yr31:28; fr18=r18+r26, fr26=r18-r26;;
		r7:6=q[k3+k6]; q[j15+=4]=xr31:28; fr19=r19+r27, fr27=r19-r27;;
		
		k6=k6+k5 (br); q[j0+=4]=yr19:16; fr0=r0+r2, fr20=r0-r2;;
		r9:8=q[k0+k6]; q[j1+=4]=xr19:16; fr2=r1+r3, fr29=r1-r3;;
		r11:10=q[k2+k6]; q[j12+=4]=yr27:24; fr4=r4+r6, fr21=r4-r6;;
		r13:12=q[k1+k6]; q[j13+=4]=xr27:24; fr5=r5+r7, fr28=r5-r7;;
		
		r15:14=q[k3+k6]; fr18=r8+r10, fr22=r8-r10;;			
		k6=k6+k5 (br); fr19=r9+r11, fr31=r9-r11;;							
		fr26=r12+r14, fr23=r12-r14;;						
		fr27=r13+r15, fr30=r13-r15;;						
		
		fr20=r20+r28, fr28=r20-r28;;
		fr29=r29+r21, fr21=r29-r21;;						
		fr22=r22+r30, fr30=r22-r30;;						
.align_code 4;
		if NLC0E, jump _Stages1and2Loop;
		fr31=r31+r23, fr23=r31-r23;;						
		
	q[j2+=4]=yr23:20; fr16=r0+r4, fr24=r0-r4;;
	q[j3+=4]=xr23:20; fr17=r2+r5, fr25=r2-r5;;
	q[j14+=4]=yr31:28; fr18=r18+r26, fr26=r18-r26;;
	q[j15+=4]=xr31:28; fr19=r19+r27, fr27=r19-r27;;
		
	q[j0+=4]=yr19:16;;
	q[j1+=4]=xr19:16;;
	q[j12+=4]=yr27:24;;
	q[j13+=4]=xr27:24;;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线看片a免费观看| 91精品国产综合久久精品app| 亚洲激情六月丁香| 精品欧美一区二区在线观看| 色综合色综合色综合色综合色综合| 日韩国产一区二| 亚洲日本韩国一区| 精品国产91乱码一区二区三区| 日本精品视频一区二区三区| 国产露脸91国语对白| 日韩精品亚洲一区| 亚洲一区二区偷拍精品| 国产欧美精品国产国产专区| 欧美一级高清大全免费观看| 在线亚洲高清视频| 99热在这里有精品免费| 国产主播一区二区| 男男视频亚洲欧美| 亚洲成人动漫精品| 一区二区三区中文字幕| 国产精品欧美综合在线| 久久人人超碰精品| 精品日韩欧美在线| 欧美一卡2卡三卡4卡5免费| 色拍拍在线精品视频8848| 国产电影精品久久禁18| 精品一区二区精品| 男女性色大片免费观看一区二区| 偷拍亚洲欧洲综合| 亚洲成国产人片在线观看| 亚洲色欲色欲www在线观看| 国产欧美日韩不卡| 国产欧美日韩精品在线| 国产清纯美女被跳蛋高潮一区二区久久w | 国产欧美一区二区精品性色超碰| 日韩精品资源二区在线| 日韩欧美国产成人一区二区| 欧美高清hd18日本| 欧美丰满嫩嫩电影| 正在播放亚洲一区| 欧美一区二区三区在线视频| 91精品国产乱码| 欧美一级xxx| 精品毛片乱码1区2区3区| 亚洲精品一区二区三区蜜桃下载| 欧美精品一区二区不卡| 久久日一线二线三线suv| 日韩精品一区二区三区中文精品| 欧美大片一区二区| 精品久久国产字幕高潮| 久久毛片高清国产| 亚洲国产岛国毛片在线| 国产精品国产a| 亚洲图片有声小说| 卡一卡二国产精品 | 日韩一级成人av| 91精品一区二区三区在线观看| 91精品国产免费| 精品999久久久| 中文字幕免费观看一区| 最新日韩在线视频| 亚洲1区2区3区4区| 老司机精品视频一区二区三区| 韩国成人精品a∨在线观看| 成人一区在线看| 在线日韩国产精品| 日韩女优电影在线观看| 日本一区二区动态图| 亚洲女同一区二区| 婷婷国产v国产偷v亚洲高清| 老司机免费视频一区二区三区| 国v精品久久久网| 欧美在线一二三| 日韩美女视频一区二区在线观看| 国产精品入口麻豆原神| 亚洲福利国产精品| 国产激情一区二区三区| 91色婷婷久久久久合中文| 欧美久久久久久蜜桃| 久久人人超碰精品| 亚洲一卡二卡三卡四卡无卡久久| 极品美女销魂一区二区三区| 成人av网站免费观看| 欧美日韩国产小视频| 久久久精品人体av艺术| 亚洲精品菠萝久久久久久久| 久久99精品国产.久久久久久 | 成人黄色一级视频| 欧美人与性动xxxx| 国产性色一区二区| 亚洲成人自拍网| 国产不卡在线播放| 欧美日韩mp4| 最新不卡av在线| 秋霞成人午夜伦在线观看| 不卡的av在线播放| 日韩欧美一级在线播放| 亚洲欧美乱综合| 国产成人精品一区二区三区四区| 欧美怡红院视频| 欧美激情在线观看视频免费| 日韩精品五月天| 91免费观看国产| 亚洲精品在线电影| 日韩成人一级大片| 91成人网在线| 中文字幕av一区二区三区高| 蜜臀99久久精品久久久久久软件| 色天天综合久久久久综合片| 久久久精品欧美丰满| 美女一区二区久久| 欧美三级韩国三级日本一级| 国产精品免费视频观看| 国产一区二区三区四| 欧美一区二区三区在线看| 亚洲成年人网站在线观看| 一本大道av伊人久久综合| 欧美激情一区二区| 国产乱码精品一区二区三区av| 欧美一二区视频| 青青草伊人久久| 欧美日韩国产美| 亚洲国产另类av| 欧美三级在线播放| 一区二区三区精品| 99久久婷婷国产综合精品 | 国产午夜亚洲精品不卡| 秋霞电影一区二区| 91精品国产综合久久精品| 亚洲福利视频一区| 欧美视频中文字幕| 一区二区三区精品视频在线| 在线观看亚洲a| 一区二区三区资源| 欧美性大战久久久| 亚洲第一福利视频在线| 欧美片网站yy| 日韩av中文在线观看| 91精品欧美福利在线观看| 日韩av在线播放中文字幕| 欧美人妖巨大在线| 免费观看一级欧美片| 日韩一区二区三区在线视频| 男男视频亚洲欧美| 欧美变态tickling挠脚心| 精品在线一区二区三区| 久久精品无码一区二区三区| 懂色一区二区三区免费观看| 国产精品美女久久久久久久久久久| 国产成人精品亚洲777人妖| 中文字幕av在线一区二区三区| www.久久久久久久久| 亚洲曰韩产成在线| 在线播放91灌醉迷j高跟美女 | 国产91精品一区二区| 亚洲国产精品v| 色菇凉天天综合网| 亚洲成人自拍网| 欧美电影免费观看高清完整版在线 | 国产99久久久国产精品潘金网站| 中文字幕不卡一区| 91麻豆swag| 亚洲国产日韩一区二区| 欧美日韩不卡一区| 韩国女主播成人在线观看| 欧美国产日韩a欧美在线观看| 色视频欧美一区二区三区| 日本不卡一二三| 日本一区二区久久| 日本韩国一区二区三区视频| 秋霞国产午夜精品免费视频| 久久久久久一级片| 色偷偷成人一区二区三区91| 日韩精品一二三区| 日本一区免费视频| 欧美午夜电影网| 精品亚洲成av人在线观看| 国产精品丝袜一区| 欧美三级三级三级爽爽爽| 国产一区二区三区免费看| 亚洲欧美日韩成人高清在线一区| 日韩欧美一二三| 91在线观看视频| 日产国产欧美视频一区精品| 久久精品日韩一区二区三区| 欧美三级日韩在线| 国产成人精品亚洲777人妖| 午夜精品久久久久久久99樱桃| 国产婷婷一区二区| 3atv在线一区二区三区| 成人av免费网站| 日韩va亚洲va欧美va久久| 国产精品久久久久影院老司| 欧美一区二区不卡视频| 91免费精品国自产拍在线不卡| 久久99国产精品成人| 亚洲欧美偷拍三级| 国产日韩av一区| 精品久久久久久亚洲综合网| 欧美日韩久久一区二区|