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

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

?? bkfir2_flp32.asm

?? 在ADI的TS系列DSP上編寫的32位定點FIR濾波器的程序
?? ASM
字號:
/*  FIR.asm    32 bit floating point FIR filter.    rev1.0 PM, 9/2003    rev1.1 PM, 12/2003    rev1.2 PM, 7/2004, project passed into VDSP3.5    rev1.3 RG, 5/2005, project passed into VDSP4.0OVERVIEW:=========-this program implements a floating point block FIR-it 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 betweenTS101 and TS201-2 tcl files are provided, one for TS101 and one for TS201. Both of them buildthe 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 programto efficientize the cycle count for TS201 (On this processor they may be even discardedif the cycle count is not of interest). For TS101, the assembly option -align-branch-linesplaced in the project properties tab has the same effect (On TS101 they are a must forIF instructions).This program achives high efficiency and small filter granularityby exploiting high level of data re-use.Efficiency 95%Size 80 wordsM0: 75%, M1: 0%Filter granularity: 4Test for a 72-tap filter. In general, this code computes filters withlength a multiple of 4. Filters with different L's require zero padding.The buffer of  coefficients is accessed with a circular buffer pointerto save one instruction (hence one cycle)  for pointer update.Outer loop unrolled 4 times, with 4 outputs computed simultaneouslyin CBX and CBY. Data misaligned with respect to coefficients isachived by two different multiplications per line.With this high data re-use (each data point is used in 4 multiplications),one can either (a) decrease memory bus utilization, or (b) improve filtergranularity. This program improves filter granularity, and accesses datamostly in single word loads. (There is an alternate version of this programthat decreses mem utilization to 25% using quad data loads, but has filtergranularity of 8.)Restrictions: the length of data and coefficients must be a multiple of 4.I/O FILES USED:===============The data is stored in file data.asm in thefollowing buffers: buff1		-- N samples of input data, zero padded with L trailing zeros coeff_buff	-- L coefficients output		-- N samples of output data computed by this programDESCRIPTION:============This filter is based on computing outputs yi and yi+1 on CBY, and outputsyi+2 and yi+3 on CBX.The trick used here to achieve off by one  asymetry between the comp blocks is toissue different multiplications to each one. So for each filter coefficient, oneissues 4 multiplications, where the 4 data points are rotated from one filtercoefficient to the next. Hence, for each set of 4 multiplications, one only needs toload a single data point.All data loads are broadcast, thereby creating the illusion that both comp blockshave read access to the "same" register file. This way, one can simplify the movementof data between the blocks. For instance, by loading x0 into both xR0 and yR0, thenany comp block can read x0.Computations are mapped according to:             CBX            CBY           ------         ------    r7:     yi+3           yi+1    r6:     yi+2           yiwhere r7 and r6 are the accumulation registers that hold the respective output.This diagram shows the organization for the first few input points:CBX high              c0  c1  c2  c3  c4  c5     ---> yi+3CBX low           c0  c1  c2  c3  c4  c5         ---> yi+2CBY high      c0  c1  c2  c3  c4  c5             ---> yi+1CBY low   c0  c1  c2  c3  c4  c5                 ---> yiinput     x0  x1  x2  x3  x4  x5All the 4 computations associated with coefficient c0 are computed in 2 cycles, andaccumulated on xR7:6 and yR7:6.  After this, all 4 computations of c1 are done in the next2 cycles, and so on.PERFORMANCE:============  EFFICIENCY:  ----------An N=200 sample input with L=72 takes 7461 cycles on TS201 (7417 on TS101), for an efficiency of 97%.Only one stall is present in the LC1 loop. All the other instructions contain2 multiplications, one in Y and the other in X blocks.The expression is 4+N/4*[(L/4-1)*8+9]=NL/2+4+N/4=7254MEMORY MAP:===========      Data buffer with                  Coeff circular buffer      zero pad for filter init:         (negative increments):  ------------------                      |--------|  |  0 	 0   0 	 0 |buff1 <-- j0          | c1  c0 |coeff_buffer                                          |     c2 |  |  0 	 0   0 	 0 |buff1+68		          |        |  |----------------|  | x3  x2  x1  x0 |buff1+72   	          |        |  |             x4 |	       		          |c71 c70 |coeff_buffer+70 <-j1                   	       		            |--------|  |x199        x196|  |----------------|  |                |- at the end of the program, the cycle_count variable contains thecycle count of the main program*************************************************************************/#define   N         200       // number of data points in input#define   L          72       // number of filter coefficients#define   N_MAX     300       // maximum buffer size.section data1;// input data buffer of length N+L.// L-1 leading zeros, and N data points..align 4;.var inputs[N+L-1] = "input.dat";.var temp;//this is a scratch location used in the cache loading process of the inputs buffer.var cycle_count;    // execution cycle counts.section data2;// Coefficients buffer with L entries..align 4;.var coeffs[L] = "coefficients.dat";.var output[N];  // buffer used for storing calculated outputs/************************************************************************/#ifdef __ADSPTS201__    #include <defts201.h>#endif#include "cache_macros.h"/* Main Program Section */.section program;/************************************** Power up code *****************************************/main :powerup:#ifdef __ADSPTS201__/*in the case of TS201, at the beginning of the program thecache must be enabled. The procedure is contained in thecache_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);//cache preload.    j0 = j31 + inputs; LC0 = (L+N)/4;;//due to a TS201 rev0 anomaly, the initialization of LC0 must be at least//4 instruction lines before the end of the loop (jump instruction included)//and the loop must be at least 2 cycles long    nop;nop;;.align_code 4;ini_cache1:    xr3:0 = q[j0+=0];;.align_code 4;    if NLC0E, jump ini_cache1; q[j0+=4] = xr3:0;;    j0 = j31 + coeffs; LC0 = L/4;;//due to a TS201 rev0 anomaly, the initialization of LC0 must be at least//4 instruction lines before the end of the loop (jump instruction included)//and the loop must be at least 2 cycles long    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;;#endifend_powerup://consider a second loop in order to eliminate the effects of starting//with the BTB unloaded. The second iteration gives the right value//for the cycle count  j24 = j31 + 2;;.align_code 4;count_loop://read cycle counter  ini_cycle_count;/************************************** Start of code *****************************************///j0 points to data  j0  = j31 + inputs; LC1 = N/4;;//k1 points in a circular fashion to the coefficients  k1  = k31 + coeffs + (L-2); LC0 = L/4-1;;	kb1 = k31 + coeffs;;	kl1 = k31 + L;;//j2 points to the output buffer  j2  = j31 + output;;//in the following, r31:28 contain the coefficients, r3:0 the input data// Multiplications are indented accoring to the output// that they belong to:////     CBX:           CBY://     yi+2            yi//     yi+3           yi+1  r31:30=cb l[k1+=-2]; r3:0=q[j0+=4];;  r0=[j0+=1];          xfr6=r2*r31; yfr6=r0*r31;;  r29:28=cb l[k1+=-2]; xfr7=r3*r31; yfr7=r1*r31;;  r1=[j0+=1];          xfr4=r3*r30; yfr4=r1*r30;;                       xfr5=r0*r30; yfr5=r2*r30;;.align_code 4;loop:  r2=[j0+=1];      xfr4=r0*r29; yfr4=r2*r29; fr6=r6+r4;;  r31:30=cb l[k1+=-2]; xfr5=r1*r29; yfr5=r3*r29; fr7=r7+r5;;  r3=[j0+=1];      xfr4=r1*r28; yfr4=r3*r28; fr6=r6+r4;;                   xfr5=r2*r28; yfr5=r0*r28; fr7=r7+r5;;  r0=[j0+=1];      xfr4=r2*r31; yfr4=r0*r31; fr6=r6+r4;;  r29:28=cb l[k1+=-2];xfr5=r3*r31; yfr5=r1*r31; fr7=r7+r5;;  r1=[j0+=1];      xfr4=r3*r30; yfr4=r1*r30; fr6=r6+r4;;.align_code 4;  if NLC0E, jump loop;                   xfr5=r0*r30; yfr5=r2*r30; fr7=r7+r5;;  r2=[j0+=-(L-2)]; xfr4=r0*r29; yfr4=r2*r29; fr6=r6+r4;;//here the data for the next 4 filters is fetched  r31:30=cb l[k1+=-2]; xfr5=r1*r29; yfr5=r0*r28; fr7=r7+r5;;  r1:0=l[j0+=2];   xfr4=r1*r28; yfr4=r3*r28; fr6=r6+r4;;  r3:2=l[j0+=2];   xfr5=r2*r28; yfr5=r3*r29; fr7=r7+r5;;//here the data for the next 4 filters begins to be elaborated//stall  r0=[j0+=1];             xfr6=r2*r31; yfr6=r0*r31; fr8=r6+r4;;  r29:28=cb l[k1+=-2];    xfr7=r3*r31; yfr7=r1*r31; fr9=r7+r5;;  r1=[j0+=1];LC0 = L/4-1; xfr4=r3*r30; yfr4=r1*r30;;//store now the outputs.align_code 4;  if NLC1E, jump loop;    xfr5=r0*r30; yfr5=r2*r30; q[j2+=4] = r9:8;;/******************************************* Done ***********************************************///read cycle counter and compute the program's cycle count  comp_cycle_count;  j24 = j24 - 1;;.align_code 4;  if NJEQ, jump count_loop;;main.end:___lib_prog_term:  nop;nop;nop;nop;;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国一区二区三区| 国产精品久久久久久久久久免费看| 日韩免费电影网站| 国产精品国产自产拍在线| 日本成人在线网站| 一本久久a久久精品亚洲| 2023国产一二三区日本精品2022| 亚洲美女视频在线观看| 国产成人在线视频网站| 欧美酷刑日本凌虐凌虐| 亚洲激情自拍视频| 成人av手机在线观看| 欧美v国产在线一区二区三区| 一区二区三区在线视频免费| 国产精品一区二区果冻传媒| 91精品国产91久久综合桃花| 亚洲在线视频免费观看| 99re视频精品| 中文字幕一区二区三区精华液| 狠狠狠色丁香婷婷综合激情 | 亚洲韩国一区二区三区| 成人性视频免费网站| 精品国产乱码久久久久久免费| 亚洲成人资源在线| 欧美日韩一区小说| 夜夜夜精品看看| 91老师国产黑色丝袜在线| 国产精品理论片| 国产suv精品一区二区三区| 精品成人在线观看| 欧美电影一区二区| 亚洲在线中文字幕| 欧美日韩视频不卡| 久久婷婷久久一区二区三区| 久久精品国产秦先生| 欧美大片国产精品| 精品一区二区在线播放| 精品国产乱码久久久久久老虎| 同产精品九九九| 欧美一区二区三区日韩视频| 美女在线观看视频一区二区| 日韩精品影音先锋| 国产美女一区二区三区| 欧美经典一区二区三区| a亚洲天堂av| 亚洲精品videosex极品| 欧美疯狂性受xxxxx喷水图片| 青椒成人免费视频| 国产日韩欧美不卡在线| 91丨九色porny丨蝌蚪| 一区二区三区日本| 欧美一区二区三区系列电影| 国产在线精品一区二区三区不卡 | 亚洲h在线观看| 91精品国产综合久久国产大片| 精一区二区三区| 国产精品久久夜| 欧美日韩在线直播| 国产伦精品一区二区三区免费| 国产精品私房写真福利视频| 91精品福利在线| 日韩高清欧美激情| 国产丝袜在线精品| 欧美中文字幕亚洲一区二区va在线 | 一区二区激情视频| 日韩无一区二区| 成人av网站在线| 日韩国产欧美一区二区三区| 国产日韩一级二级三级| 欧美色综合久久| 国产91丝袜在线播放| 亚洲一二三四在线| 国产日本欧美一区二区| 欧美美女直播网站| 99视频在线精品| 国产在线精品不卡| 亚洲一区二区三区视频在线| 久久影院电视剧免费观看| 欧美在线视频不卡| 国产成人欧美日韩在线电影| 午夜成人免费电影| 亚洲少妇30p| 久久久噜噜噜久久人人看| 欧美精品123区| caoporen国产精品视频| 精品在线免费视频| 亚洲国产裸拍裸体视频在线观看乱了| 欧美一级高清大全免费观看| 色综合久久综合| 丁香网亚洲国际| 麻豆精品新av中文字幕| 亚洲国产精品久久不卡毛片| 欧美激情艳妇裸体舞| 精品成人一区二区| 欧美一区二视频| 欧美日韩国产影片| 欧美少妇一区二区| 一本高清dvd不卡在线观看| 国产精品99久久不卡二区| 日韩avvvv在线播放| 亚洲第一福利一区| 一区二区欧美精品| |精品福利一区二区三区| 国产欧美va欧美不卡在线| 欧美精品一区二区三区高清aⅴ| 欧美日韩中文字幕一区| 日本高清不卡视频| 日本韩国一区二区三区| 91视频91自| 色婷婷av一区二区三区之一色屋| 成人激情av网| 99久久久无码国产精品| 99久久精品国产毛片| zzijzzij亚洲日本少妇熟睡| 成人伦理片在线| 99v久久综合狠狠综合久久| 成年人国产精品| 一本到不卡免费一区二区| 欧美亚洲一区二区在线观看| 欧美性淫爽ww久久久久无| 国产女人18水真多18精品一级做| 精品国精品国产| 久久麻豆一区二区| 国产精品另类一区| 日韩一区在线看| 亚洲制服丝袜一区| 日日骚欧美日韩| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久爱另类一区二区小说| 国产乱理伦片在线观看夜一区| 国产成人av电影在线| 成人小视频在线| 91成人看片片| 日韩免费在线观看| 国产精品无圣光一区二区| 亚洲在线视频网站| 久久97超碰色| 成人综合婷婷国产精品久久蜜臀| 色综合天天天天做夜夜夜夜做| 91黄色免费看| 欧美成人一级视频| 国产精品美女久久久久久| 亚洲午夜久久久久久久久电影网 | 久久精品男人的天堂| 国产精品久久久久四虎| 亚洲一区二区三区精品在线| 久久99久久99小草精品免视看| 国模少妇一区二区三区| 91麻豆自制传媒国产之光| 91精品国产一区二区人妖| 欧美激情艳妇裸体舞| 日韩综合小视频| 国产999精品久久| 欧美在线色视频| 国产欧美一区二区精品忘忧草| 玉米视频成人免费看| 国产一区二区三区最好精华液| 91啪在线观看| 久久香蕉国产线看观看99| 亚洲国产日韩a在线播放性色| 国产主播一区二区三区| 国产色一区二区| 午夜精品久久久久久久久久久 | 亚洲国产欧美一区二区三区丁香婷 | 色妹子一区二区| 久久综合中文字幕| 亚洲成av人在线观看| 成人免费高清在线观看| 欧美va亚洲va在线观看蝴蝶网| 亚洲欧美日韩系列| 成人综合在线观看| 精品国产乱码久久久久久浪潮| 亚洲国产精品嫩草影院| 不卡视频在线看| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲国产sm捆绑调教视频| jlzzjlzz亚洲女人18| 久久先锋影音av鲁色资源网| 日韩av一区二区三区四区| 日本高清无吗v一区| 国产精品久久久久久一区二区三区| 免费观看成人av| 欧美精品乱码久久久久久按摩 | 91精品国产综合久久小美女| 亚洲图片激情小说| 国产suv精品一区二区883| 亚洲精品一区二区在线观看| 三级欧美韩日大片在线看| 欧洲精品视频在线观看| 日韩美女视频一区| 不卡视频在线观看| 中文字幕一区二区三区av| 成人亚洲精品久久久久软件| 国产偷国产偷亚洲高清人白洁| 麻豆国产91在线播放| 精品久久一二三区| 韩国女主播成人在线观看| 欧美大片国产精品| 国产裸体歌舞团一区二区| 国产亚洲福利社区一区|