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

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

?? wlan_dec.asm

?? 卷積碼和viterbi譯碼的TI C54代碼
?? 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一区二区三区免费野_久草精品视频
亚洲丶国产丶欧美一区二区三区| 韩国精品久久久| 激情偷乱视频一区二区三区| 国产成人福利片| 91精品国产高清一区二区三区蜜臀 | 免费在线看一区| 91一区一区三区| 国产网红主播福利一区二区| 亚洲夂夂婷婷色拍ww47| 成人国产电影网| 久久综合给合久久狠狠狠97色69| 亚洲宅男天堂在线观看无病毒| 国产成人精品三级麻豆| 日韩欧美国产午夜精品| 亚洲一区二区五区| 99re这里只有精品视频首页| 精品美女一区二区| 日本不卡视频一二三区| 在线观看欧美黄色| 亚洲人成伊人成综合网小说| 色婷婷av一区| 中文字幕日韩一区二区| 成人影视亚洲图片在线| 久久午夜羞羞影院免费观看| 视频一区二区欧美| 欧美午夜精品久久久久久超碰| 欧美国产一区在线| 韩国av一区二区三区| 欧美一区二区三区的| 午夜视频一区在线观看| 欧美三区在线观看| 三级一区在线视频先锋| 欧美日韩国产影片| 午夜精品福利视频网站| 欧美剧在线免费观看网站| 亚洲精品国产一区二区精华液 | 成人激情免费视频| 欧美激情综合在线| 不卡高清视频专区| 一区二区三区四区在线播放 | 亚洲综合免费观看高清完整版 | 久久国产夜色精品鲁鲁99| 日韩欧美精品在线视频| 久久99国产乱子伦精品免费| 日韩一区二区三区观看| 久久精工是国产品牌吗| 久久久久88色偷偷免费 | 久久国产精品第一页| 精品国产一区二区精华| 国内精品视频666| 欧美国产1区2区| 日本精品裸体写真集在线观看| 亚洲一级在线观看| 91精品国产综合久久蜜臀| 精品亚洲成a人| 国产精品视频第一区| 在线精品视频一区二区三四| 日韩va亚洲va欧美va久久| 精品国产a毛片| 99久久99久久精品国产片果冻| 亚洲精品国产a久久久久久| 欧美浪妇xxxx高跟鞋交| 婷婷久久综合九色综合伊人色| 日韩精品一区二区三区三区免费 | 国产精品久久久久久久久免费相片 | 国产精品亚洲综合一区在线观看| 国产精品国产三级国产三级人妇| 久久亚洲精华国产精华液| 91蜜桃婷婷狠狠久久综合9色| 一区二区三区欧美激情| 亚洲精品一区二区三区四区高清| 国产69精品久久99不卡| 亚洲一区二区三区国产| 久久这里只有精品6| 色欧美片视频在线观看在线视频| 日本不卡在线视频| 国产精品福利一区| 日韩欧美国产精品一区| 日本丶国产丶欧美色综合| 久久黄色级2电影| 亚洲综合一区二区三区| 精品国产91洋老外米糕| 色女孩综合影院| 国产精品资源站在线| 丝袜美腿成人在线| 国产精品久久久爽爽爽麻豆色哟哟| 欧美精品日韩综合在线| 99国产欧美另类久久久精品| 美女久久久精品| 亚洲成av人综合在线观看| 中文字幕在线播放不卡一区| 欧美成人一级视频| 欧美日韩免费观看一区三区| 丰满亚洲少妇av| 国产在线一区观看| 日本亚洲一区二区| 亚洲一区精品在线| 亚洲视频一区二区在线| 国产欧美精品一区aⅴ影院| 日韩一区二区三区在线视频| 一本一道久久a久久精品| 国产高清精品网站| 久久精品99久久久| 久久不见久久见免费视频1| 丝袜美腿亚洲一区二区图片| 亚洲观看高清完整版在线观看| 国产精品乱码一区二区三区软件| www国产成人免费观看视频 深夜成人网| 欧美在线观看视频一区二区| caoporn国产精品| 成人网在线播放| 国产精品综合一区二区| 九九国产精品视频| 精品亚洲成av人在线观看| 日韩激情av在线| 七七婷婷婷婷精品国产| 青青青爽久久午夜综合久久午夜| 舔着乳尖日韩一区| 久久99热这里只有精品| 精品一区二区av| 国产经典欧美精品| 成人性生交大片免费看在线播放| 国产成人在线视频免费播放| 国产成人8x视频一区二区| 成人动漫一区二区| 在线免费观看不卡av| 欧美日产在线观看| 欧美videos中文字幕| 久久久.com| 亚洲黄色片在线观看| 亚洲bt欧美bt精品777| 肉色丝袜一区二区| 国产在线精品国自产拍免费| 成人黄色软件下载| 欧美性大战xxxxx久久久| 91精品国产黑色紧身裤美女| 欧美福利视频导航| 26uuu精品一区二区在线观看| 日韩欧美三级在线| 在线播放一区二区三区| 51久久夜色精品国产麻豆| 91精品国产综合久久久蜜臀图片| 欧美年轻男男videosbes| 精品国产乱码久久久久久1区2区| 精品国产凹凸成av人网站| 国产日韩综合av| 国产精品美女一区二区在线观看| 亚洲男帅同性gay1069| 午夜国产不卡在线观看视频| 五月婷婷综合在线| 国产综合成人久久大片91| 美女一区二区久久| av不卡免费电影| 精品视频999| 日韩精品资源二区在线| 国产精品无人区| 玖玖九九国产精品| caoporm超碰国产精品| 欧美综合亚洲图片综合区| 欧美一级片在线看| 依依成人精品视频| 久久精品国产一区二区三区免费看 | 国产精品亲子伦对白| 亚洲免费资源在线播放| 水野朝阳av一区二区三区| 久久精品国产999大香线蕉| 久久99精品久久久久久国产越南| 国产91色综合久久免费分享| 欧美自拍偷拍一区| 日韩一区二区三区免费观看| 一区二区三区免费观看| 美国十次综合导航| 91在线看国产| 欧美一级欧美三级在线观看| 最近中文字幕一区二区三区| 日韩不卡一区二区三区| 99久久国产综合精品麻豆| 成人av资源网站| 久久久精品人体av艺术| 亚洲图片一区二区| 丰满少妇在线播放bd日韩电影| 精品日产卡一卡二卡麻豆| 亚洲欧美日韩在线| 久久99久久久久久久久久久| 色呦呦一区二区三区| 欧美va亚洲va| 亚洲1区2区3区视频| 成人午夜短视频| 精品黑人一区二区三区久久| 亚洲成人资源在线| 色哟哟日韩精品| 久久久久国产精品麻豆ai换脸 | 91看片淫黄大片一级在线观看| 欧美日韩色综合| 国产精品久久久久7777按摩| 久久精品99国产国产精| 色综合久久久久综合99| 中文字幕不卡在线播放| 国产一区二区中文字幕| 日韩欧美激情一区|