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

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

?? wlan_dec.asm

?? viterbi譯碼在DSP上的實現,采用c54x
?? ASM
字號:
;****************************************************************
; Filename:    wlan_dec.asm
; Function:    viterbi decoder
; Version:     1.00
; Processor:   C54xx
; Author:      LiuKai		vikingpro@163.com
; Description: Implements the 802.11 convolutional decoder
;              C-callable
;
; Useage:      wlan_viterbi_dec(ushort frame_sz,
;                             	int *m,
;                             	int *sd,
;                             	int *trans
;                             	int *output)
;
;  Viterbi decoder for 802.11
;
;  Frame processing--starts traceback at state 0, assuming 6 tail bits
;  have been added.
;
;
;****************************************************************

	.mmregs

; Far-mode adjustment
; -------------------

         .if __far_mode
OFFSET   .set  2
         .else
OFFSET   .set  1
         .endif


FRAME_SZ       .set 2

REG_SAVE_SZ    .set 2

PARAM_OFFSET   .set FRAME_SZ + REG_SAVE_SZ + OFFSET       
      
      .asg    0 + REG_SAVE_SZ + FRAME_SZ, RETURN_ADDR ; 
      .asg    0 + PARAM_OFFSET, metric_sz
      .asg    1 + PARAM_OFFSET, old_m
      .asg    2 + PARAM_OFFSET, sd
      .asg    3 + PARAM_OFFSET, trans    
      .asg    4 + PARAM_OFFSET, output
      .asg    5 + PARAM_OFFSET, m
      .asg    6 + PARAM_OFFSET, new_m
      
; Local variables
; --------------      
       
       .asg    0, DIFF
       .asg    0, ONE
       .asg    1, SUM

; Register usage
; --------------
	.asg    AR0, temp
	.asg	AR1, trans_ptr
	.asg	AR2, sd_ptr
	.asg	AR3, m_ptr
	.asg	AR4, newm_ptr
	.asg	AR5, oldm_ptr
	.asg	AR6, out_ptr

	.asg	BRC, rptb_cnt

;**************************************************************************
	.global _wlan_viterbi_dec
_wlan_viterbi_dec


; Preserve registers
; ------------------
	pshm	ar1
	pshm	ar6

;                                    
; And establish local frame                               
; Set sign extension mode                                 
; Set FRCT bit:                                           
;----------------------------------------------------------------


	FRAME	#-(FRAME_SZ)	    ; 1 cycle

        SSBX    SXM                 ; sign extension on
        SSBX    C16                 ; accumulators in dual 16 bit mode


;
; Copy arguments to their local locations as necessary        
;----------------------------------------------------------------

   	  LD *sp(old_m), B
   	  ADD *sp(metric_sz), -1, B
   	  STL B, *sp(new_m)
   	  ADD *sp(metric_sz),-2, B
   	  STL B, *sp(m)
   
   
      MVDK   *sp(trans), trans_ptr               ; 2 cycles
      MVDK   *sp(sd), sd_ptr                     ; 2 cycles
      MVDK   *sp(m), m_ptr                       ; 2 cycles
      MVDK   *sp(new_m), newm_ptr                ; 2 cycles
      MVDK   *sp(old_m), oldm_ptr                ; 2 cycles
      MVDK   *sp(output), out_ptr                ; 2 cycles

    
;
; Set loop count by subtracting 1 from frame_sz and      
; storing into block repeat count register                   
;----------------------------------------------------------------

        SUB     #1, A                            ; 2 cycles
        STLM    A, rptb_cnt                      ; 1 cycle
        STLM    A, temp

BFLY_DIR .macro  
         DADST   *oldm_ptr, A             ; A = Old_Met(2*j)+T // Old_met(2*j+1)-T
         DSADT   *oldm_ptr+%, B           ; B = Old_Met(2*j)-T // Old_met(2*j+1)+T
         CMPS    A,*newm_ptr+%            ; New_Met(j) = MAX(Old_Met(2*j)+T,Old_Met(2*j+1)-T)
                                     	  ; TRN = TRN << 1
                                     	  ; If (Old_Met(2*j)+T =< Old_Met(2*j+1)-T) Then TRN[0]=1
         CMPS    B,*m_ptr+%            	  ; New_Met(j+8) = MAX(Old_Met(2*j)-T,Old_Met(2*j+1)+T)
                                     	  ; TRN = TRN << 1
                                     	  ; If (Old_Met(2*j)-T =< Old_Met(2*j+1)+T) Then TRN[0]=1
         .endm

BFLY_REV .macro
         DSADT   *oldm_ptr, A             ; A = Old_Met(2*j)-T // Old_met(2*j+1)+T
         DADST   *oldm_ptr+%, B           ; B = Old_Met(2*j)+T // Old_met(2*j+1)-T
         CMPS    A,*newm_ptr+%            ; New_Met(j) = MAX(Old_Met(2*j)-T,Old_Met(2*j+1)+T)
                                     	  ; TRN = TRN << 1
                                     	  ; If (Old_Met(2*j)-T =< Old_Met(2*j+1)+T) Then TRN[0]=1
         CMPS    B,*m_ptr+%            	  ; New_Met(j+8) = MAX(Old_Met(2*j)+T,Old_Met(2*j+1)-T)
                                     	  ; TRN = TRN << 1
                                     	  ; If (Old_Met(2*j)+T =< Old_Met(2*j+1)-T) Then TRN[0]=1
         .endm
;***************************************************************************
VITERBI_DECODER

        STM     #128,BK              ; the circular buffer size is 2*status = 2*64
        NOP
        ST      #0100, *oldm_ptr+%       ; give state zero an initial bias, 0100 is octal
        NOP
        NOP
        LD      #0000h, A           ; all other states are set to zero
        RPT     #127-1               
        STL    A, *oldm_ptr+%

        RPTB    DECODE_END-1        ; do i=0,188
         LD		*AR2+,16,A
         SUB	*AR2,16,A,B
         STH	B,*sp(DIFF)
         ADD	*AR2+,16,A,B
         STH	B,*sp(SUM)
         
         ; 0~3, 32~35
         LD     *sp(SUM), T         ;  new_metric(0)&(32)
         BFLY_DIR                   ;  new(0)  = MAX[ old(0)+sum, old(1)-sum ]
         			    ;  new(32) = MAX[ old(0)-sum, old(1)+sum ]                    
         			    		         			              			    
         LD     *sp(DIFF), T	    ;	new_metric(1)&(33)
         BFLY_REV                   ;   new(1)  = MAX[ old(2)-diff, old(3)+diff ]
         			    ;   new(33) = MAX[ old(2)+diff, old(3)-diff ]         			    
         			     
         LD     *sp(SUM), T         ;  new_metric(2)&(34)
         BFLY_DIR		    ;  new(2)  = MAX[ old(4)+sum, old(5)-sum ]
         			    ;  new(34) = MAX[ old(4)-sum, old(5)+sum ]
         			    
         LD     *sp(DIFF), T	    ;  new_metric(3)&(35)
         BFLY_REV                   ;  new(3)  = MAX[ old(6)-diff, old(7)+diff ]
         			    ;  new(35) = MAX[ old(6)+diff, old(7)-diff ]
         			    	    
         ; 4~7, 36~39 
	 LD     *sp(SUM), T	    ;  new_metric(4)&(36)
         BFLY_REV                   ;  new(4)  = MAX[ old(8)-sum, old(9)+sum ]
         			    ;  new(36) = MAX[ old(8)+sum, old(9)-sum ]
         			    
         			    
         LD     *sp(DIFF), T	    ;  new_metric(5)&(37)
         BFLY_DIR                   ;  new(5)  = MAX[ old(10)+diff, old(11)-diff ]
         			    ;  new(37) = MAX[ old(10)-diff, old(11)+diff ]
         			    	
         			    		    
         LD     *sp(SUM), T	    ;  new_metric(6)&(38)
         BFLY_REV                   ;  new(6)  = MAX[ old(12)-sum, old(13)+sum ]
         			    ;  new(38) = MAX[ old(12)+sum, old(13)-sum ]
         			    
         			    
         LD     *sp(DIFF), T	    ;  new_metric(7)&(39)
         BFLY_DIR                   ;  new(7)  = MAX[ old(14)+diff, old(15)-diff ]
         			    ;  new(39) = MAX[ old(14)-diff, old(15)+diff ]
         			    			    
         ST    TRN, *AR1+           ;  store the transition register
         ;=========================================================

         ; 8~11, 40~43
         LD     *sp(SUM), T	    ;  new_metric(8)&(40)
         BFLY_REV                   ;  
         			             			    
         LD     *sp(DIFF), T	    ;  new_metric(9)&(41)
         BFLY_DIR                   ;           			    	
         			    		    
         LD     *sp(SUM), T	    ;  new_metric(10)&(42)
         BFLY_REV                   ;           			    
         			    
         LD     *sp(DIFF), T	    ;  new_metric(11)&(43)
         BFLY_DIR                   ;  old(22), old(23)
                  
         ; 12~15, 44~47
         LD     *sp(SUM), T         ;  new_metric(12)&(44)
         BFLY_DIR                   ;        			     
         			    
         LD     *sp(DIFF), T	    ;  new_metric(13)&(45)
         BFLY_REV                   ;            			    
         			     
         LD     *sp(SUM), T         ;  new_metric(14)&(46)
         BFLY_DIR		    ; 
         			    
         LD     *sp(DIFF), T	    ;  new_metric(15)&(47)
         BFLY_REV                   ;  old(30), old(31
         
         ST    TRN, *AR1+           ;  store the transition register
         ;==========================================================

         ; 16~19, 48~51
         LD     *sp(DIFF), T	    ;  new_metric(16)&(48)
         BFLY_DIR                   ;  old(32), old(33) 
         
         LD     *sp(SUM), T	    	;  new_metric(17)&(49)
         BFLY_REV                   ;
         
         LD     *sp(DIFF), T	    ;  new_metric(18)&(50)
         BFLY_DIR                   ;  
         
         LD     *sp(SUM), T	    ;  new_metric(19)&(51)
         BFLY_REV		    ;
                  
         ; 20~23, 52~55
         LD     *sp(DIFF), T	    ;  new_metric(20)&(52)
         BFLY_REV                   ;  old(40), old(41)
         
         LD     *sp(SUM), T	    ;  new_metric(21)&(53)
         BFLY_DIR                   ; 
         
         LD     *sp(DIFF), T	    ;  new_metric(22)&(54)
         BFLY_REV                   ;  
         
         LD     *sp(SUM), T	    ;  new_metric(23)&(55)
         BFLY_DIR                   ; 
         
         ST    TRN, *AR1+           ;  store the transition register
         ;==========================================================

         ; 24~27, 56~59
         LD     *sp(DIFF), T	    ;  new_metric(24)&(56)
         BFLY_REV                   ;  old(48), old(49)
         
         LD     *sp(SUM), T	    	;  new_metric(25)&(57)
         BFLY_DIR                   ; 
         
         LD     *sp(DIFF), T	    ;  new_metric(26)&(58)
         BFLY_REV                   ;  
         
         LD     *sp(SUM), T	    ;  new_metric(27)&(59)
         BFLY_DIR
         
         ; 28~31, 60~63
         LD     *sp(DIFF), T	    ;  new_metric(28)&(60)
         BFLY_DIR                   ;  old(56), old(57)
         
         LD     *sp(SUM), T	    	;  new_metric(29)&(61)
         BFLY_REV                   ;
         
         LD     *sp(DIFF), T	    ;  new_metric(30)&(62)
         BFLY_DIR                   ;  
         
         LD     *sp(SUM), T	    	;  new_metric(31)&(63)
         BFLY_REV
         
         MAR   *+m_ptr(32)%         ;  advance pointer by 32
         MAR   *+newm_ptr(32)%      ;  advance pointer by 32
         ST    TRN, *AR1+           ;  store the transition register

DECODE_END                          ; end do (i loop)

;**************************************************************************
;  Trace back routine
;**************************************************************************
;  A accumulator = STATE value
;  B accumulator = temp storage
;  ONE = 1
;  AR1 = number of output words to compute
;  AR2 = pointer to STATE_TRANS array
;  m_ptr = pointer to end of output array
;  K = constraint length, K = 7 in 802.11 
;  MASK = 2^(K-5) - 1 = 3 = 011( binary)
;**************************************************************************
TRACE_BACK_INIT
        ST      #1, *sp(ONE)
        LDM     temp, B
        SUB		#6,B			; K-1 = 6
        SFTL	B,-4,A
        STLM	A,AR1			; init i counter (# output words)
        SFTL    A,4
        SUB		A,B
        STLM	B,BRC			; init bit counter (only 9 bits for 1st loop
        
        LDM     temp, B
        ADD		#1,	B
        SFTL    B,2,A			; A = B * 2
        ADD     *sp(trans), A		; address of end of transition table
        STLM    A, AR2                  ; AR2 =  #STATE_TRANS+ bits*4 -1 
        LD      #0,A                    ; init STATE to zero (final state=0 due to tail bits)
		
TRACE_BACK                              ; Do i=1,0
        RPTB    TBACK_END-1             ;   Do j=15,0
                                        ;      Calculate bit position in transition word
         SFTL   A,-5,B                  ;       B = STATE>>(K-2) , K=7
         AND    *sp(ONE),B              ;       B = B&1 = msb of STATE
         ADD    A,1,B                   ;       B = B+A<<1 = 2*STATE + msb of STATE
         STLM   B,T                     ;       T = B (bit position)
         								;       address of end of transition table
         SFTL 	A,-3,B 	 				;		B = A/8 = State/8
	 AND 	#3,B 					; 	B = B&MASK = (K-5)lsb’s of State/8
	 STLM 	B,AR0 					; 	AR0 = index for transition word
	 MAR 	*+AR2(-4) 				; 	reset pointer to start of table, 2^(K-5) = 4
	 MAR 	*AR2+0 					; 	add offset to point to correct transition word
	 BITT 	*AR2-0 					; 	Test bit in transition word, reset to table star
	 	
         ROLTC  A                       ;      Rotate decision into STATE
TBACK_END                               ;   enddo (j loop) 
        STL     A,*out_ptr+             ;   store packed output
        BANZD   TRACE_BACK,*AR1-        ;   repeat j loop if frame not finished
        STM     #15,BRC                 ;   init bit counter for next word
                                        ; enddo (i loop)

_end:
;      
; Restore stack to previous value, FRAME, etc..            
;----------------------------------------------------------------

RETURN:
 

 
	FRAME  #(FRAME_SZ)				  ; 1 cycle
      	popm	ar6
	popm	ar1

        .if __far_mode
           FRETD                                          ; 4 cycles
        .else
	   RETD                                           ; 3.0 cycles
        .endif
        RSBX     FRCT                                     ; delay slot 1 cycle
	  NOP

;END


;end of file. please do not remove. it is left here to ensure that no lines of code are removed by any editor

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久欧美中文字幕| 国产日韩亚洲欧美综合| 精品精品欲导航| 国产精品久久久久久久久免费相片| 婷婷开心激情综合| av电影在线观看一区| 日韩欧美亚洲一区二区| 亚洲日本欧美天堂| 春色校园综合激情亚洲| 欧美一卡二卡在线观看| 亚洲午夜av在线| 99精品国产99久久久久久白柏| 欧美精品一区在线观看| 婷婷中文字幕综合| 欧洲一区二区三区在线| 国产精品美日韩| 激情深爱一区二区| 日韩精品一区二区三区在线播放 | 国产成人午夜电影网| 欧美日韩小视频| 亚洲欧美电影一区二区| 成人h版在线观看| 国产亚洲成aⅴ人片在线观看| 日韩电影一二三区| 欧美日韩一区在线观看| 亚洲人成网站色在线观看| 不卡的av电影在线观看| 亚洲国产精品激情在线观看| 国产精品911| 国产无遮挡一区二区三区毛片日本| 裸体一区二区三区| 日韩欧美一级二级三级久久久| 午夜久久久影院| 欧美精品九九99久久| 性做久久久久久久免费看| 欧美色综合久久| 日韩在线观看一区二区| 在线播放亚洲一区| 成人性色生活片| 国产欧美日韩在线看| 成人午夜大片免费观看| 一区在线观看视频| 色网综合在线观看| 亚洲电影中文字幕在线观看| 欧美精品18+| 免费高清在线一区| 久久久久国产精品人| 岛国精品一区二区| 一区二区三区成人在线视频| 91高清在线观看| 午夜精品久久久久久不卡8050| 欧美精品丝袜中出| 麻豆国产91在线播放| 国产亚洲人成网站| 91一区二区三区在线观看| 亚洲国产婷婷综合在线精品| 337p亚洲精品色噜噜狠狠| 寂寞少妇一区二区三区| 国产精品亲子伦对白| 欧美伊人久久大香线蕉综合69 | 欧美韩日一区二区三区四区| a在线欧美一区| 午夜精品久久久久久久| 久久一区二区视频| 色噜噜夜夜夜综合网| 青青草一区二区三区| 国产亚洲一区二区在线观看| 91免费小视频| 韩国v欧美v亚洲v日本v| 亚洲欧美日韩在线| 亚洲高清不卡在线观看| 日韩一级二级三级| 99久久99久久免费精品蜜臀| 午夜激情久久久| 亚洲国产成人午夜在线一区| 欧美综合色免费| 国产麻豆日韩欧美久久| 亚洲成年人影院| 国产精品人成在线观看免费| 欧美美女一区二区| 成人黄色大片在线观看| 免费观看在线综合| 一区二区三区四区av| 国产亚洲福利社区一区| 91 com成人网| 在线国产亚洲欧美| 成人小视频免费在线观看| 免费人成黄页网站在线一区二区 | 成人午夜av电影| 美女精品一区二区| 亚洲午夜电影在线观看| 中文字幕在线播放不卡一区| 精品国偷自产国产一区| 欧美视频在线一区二区三区| 丁香亚洲综合激情啪啪综合| 日本成人在线网站| 午夜伦理一区二区| 洋洋av久久久久久久一区| 欧美高清在线一区二区| 2023国产精华国产精品| 欧美一区二区三区白人| 欧美三级中文字幕| 在线精品视频小说1| 99久久精品国产一区二区三区| 国产一区二区三区最好精华液| 日本少妇一区二区| 日韩精品每日更新| 亚瑟在线精品视频| 五月天中文字幕一区二区| 亚洲一区二区偷拍精品| 一级日本不卡的影视| 亚洲视频一二三| 国产精品视频九色porn| 久久精品人人做人人综合| 久久久精品天堂| 久久综合色之久久综合| 国产亚洲综合性久久久影院| 日韩精品中文字幕一区| 欧美电视剧免费全集观看| 日韩一级黄色片| 久久精品视频在线看| 久久久美女毛片| 日本一区二区三级电影在线观看 | 最新高清无码专区| 亚洲欧美偷拍另类a∨色屁股| 亚洲欧洲国产日本综合| 自拍偷拍亚洲激情| 自拍偷在线精品自拍偷无码专区 | 国产精品综合在线视频| 国产精品一区二区在线看| 丁香啪啪综合成人亚洲小说 | 欧美丝袜自拍制服另类| 欧美精品乱人伦久久久久久| 日韩午夜激情电影| 日本一区二区三区高清不卡 | 91一区二区三区在线观看| 92精品国产成人观看免费 | 亚洲最新在线观看| 丝袜亚洲精品中文字幕一区| 久久精品999| 国产aⅴ综合色| 91黄色免费看| 欧美一级欧美三级在线观看| 久久久久久一二三区| 综合激情成人伊人| 日韩成人精品在线观看| 国产精品亚洲第一区在线暖暖韩国| 成人免费高清在线观看| 欧美剧情片在线观看| 精品剧情在线观看| 亚洲男同性恋视频| 蜜臀久久99精品久久久画质超高清| 国产一区二区视频在线| 欧美最猛性xxxxx直播| 精品国产乱码久久久久久免费 | 国产高清无密码一区二区三区| 国产不卡免费视频| 欧美三级午夜理伦三级中视频| 在线观看日韩国产| 欧美日韩精品一区二区| 日韩一级视频免费观看在线| 欧美成人欧美edvon| 亚洲啪啪综合av一区二区三区| 亚洲成人精品在线观看| 国产精品色哟哟| 石原莉奈在线亚洲三区| 国产盗摄女厕一区二区三区| 欧美色大人视频| 国产欧美日韩在线| 美国欧美日韩国产在线播放| 91成人免费在线| 国产免费观看久久| 久热成人在线视频| 欧美视频一二三区| 亚洲美女屁股眼交3| 国产真实乱对白精彩久久| 欧美高清视频不卡网| 亚洲欧美自拍偷拍色图| 国产成人免费av在线| 欧美xingq一区二区| 天天做天天摸天天爽国产一区| 日本黄色一区二区| 中文字幕在线播放不卡一区| 国产精品亚洲а∨天堂免在线| 欧美一区二区三区免费观看视频| 亚洲一区二区成人在线观看| 99re这里只有精品首页| 国产精品久久夜| 国产原创一区二区| 日韩精品一区二区三区视频播放 | 一区二区欧美精品| fc2成人免费人成在线观看播放| 亚洲精品一区二区三区蜜桃下载 | 亚洲国产日韩综合久久精品| 91一区二区三区在线观看| 国产精品视频一二三| 国产91富婆露脸刺激对白| 2欧美一区二区三区在线观看视频| 日韩avvvv在线播放| 51精品秘密在线观看|