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

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

?? viterbi_dec.asm

?? GSM信道譯碼 測試條件:上行DSP時鐘@169MHz--->(STM #0xC007,CLKMD) SDCCH---->抽取比特固定為1bit需要時間1.2ms(vite
?? ASM
字號:
;****************************************************************
; Function:    viterbi decoder
; Version:     1.00
; Processor:   C54xx
; Description: Implements the GSM convolutional decoder
;              C-callable
;
; Useage:         GSM_viterbi(ushort frame_sz,
;                             int *m,
;                             int *sd,
;                             int *trans
;                             int *output
;                             )
;
;
;
;  Viterbi decoder for GSM
;
;  Frame processing--starts traceback at state 0, assuming 4 tail bits
;  have been added.
;
;
; Copyright Texas instruments Inc, 2001
;****************************************************************

	.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, old_m
 ;     .asg    1 + PARAM_OFFSET, sd
 ;     .asg    2 + PARAM_OFFSET, trans    
 ;     .asg    3 + PARAM_OFFSET, output
 ;     .asg    4 + PARAM_OFFSET, m
 ;     .asg    5 + PARAM_OFFSET, new_m
      
      
      .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
;*******************************************
;;維特比譯碼引入全局變量:Viterbi_time和Viterbi_bit	10_25
;*******************************************	
      .bss 	_output_words,1
      .global	_output_words
      
      .bss  	_first_bits,1
      .global 	_first_bits
;**************************************************************************
	.global _GSM_viterbi
_GSM_viterbi


; 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 #16, B
     ; STL B, *sp(new_m)
     ; ADD #8, B
     ; STL B, *sp(m)

   	  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     #32,BK              ; the circular buffer size is 32
        ST      #0100, *oldm_ptr+%  ; give state zero an initial bias
        LD      #0000h, A           ; all other states are set to zero
        RPT     #31-1               
        STL    A, *oldm_ptr+%

        RPTB    DECODE_END-1        ; do i=0,188
;;;計算蝴蝶型的距離(軟判決)
         LD     *AR2+,16,A          ;  A = SD(2*i)
         SUB    *AR2,16,A,B         ;  B = SD(2*i)-SD(2*i+1)
         STH    B,*sp(DIFF)         ;  store to DIFF
         ADD    *AR2+,16,A,B        ;  B = SD(2*i)+SD(2*i+1)
         STH    B,*sp(SUM)          ;  store the SUM
;;;;計算蝶型距離結束
         LD     *sp(SUM), T         ;  load first branch metric to the T reg
         BFLY_DIR                   ;  new_metric(0)&(8)
         BFLY_REV                   ;  new_metric(1)&(9)
         BFLY_DIR                   ;  new_metric(2)&(10)
         BFLY_REV                   ;  new_metric(3)&(11)

         LD     *sp(DIFF), T        ;  load second branch metric to the T reg
         BFLY_DIR                   ;  new_metric(4)&(12)
         BFLY_REV                   ;  new_metric(5)&(13)
         BFLY_DIR                   ;  new_metric(6)&(14)
         BFLY_REV                   ;  new_metric(7)&(15)

         MAR   *+m_ptr(8)%          ;  advance pointer by 8
         MAR   *+newm_ptr(8)%       ;  advance pointer by 8
         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
;**************************************************************************

TRACE_BACK_INIT
        ST      #1, *sp(ONE)
        LDM     temp, A
        ADD     *sp(trans), A
        STLM    A, AR2                  ; AR2 =  #STATE_TRANS+189-1 
        LD      #0,A                    ; init STATE to zero (final state=0 due to tail bits)
        ;STM     #15-1,AR1               ; init i counter (# output words)       
         MVDK *(_output_words),AR1
        ;STM     #12-1,BRC                ; init bit counter (only 9 bits for 1st loop)
        MVDK *(_first_bits),BRC		; init bit counter (only 9 bits for 1st loop

TRACE_BACK                              ; Do i=11,0
        RPTB    TBACK_END-1             ;   Do j=15,0
                                        ;      Calculate bit position in transition word
         SFTL   A,-3,B                  ;       B = STATE>>(K-2)
         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)
         NOP                            ;       (one cycle of latency between STLM and BITT)
         BITT   *AR2-                   ;      Test bit in transition word & point to next transition word
         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精品视频| 欧美亚洲另类激情小说| 久久久99精品免费观看| 午夜伦理一区二区| 99在线精品观看| 欧美精品一区二区三区在线| 亚洲一区二区三区中文字幕| 国产东北露脸精品视频| 欧美一区二区啪啪| 一区二区三区电影在线播| 成人av先锋影音| 久久久影院官网| 精品在线播放免费| 91精品一区二区三区久久久久久 | 欧美国产精品专区| 美女诱惑一区二区| 欧美妇女性影城| 亚洲成人动漫av| 色噜噜久久综合| 国产精品国产三级国产| 国产综合久久久久影院| 日韩区在线观看| 久久电影国产免费久久电影| 欧美日韩国产高清一区二区三区| 最新国产精品久久精品| 成人午夜免费av| 中文字幕不卡在线| 成人性生交大合| 国产精品乱码一区二区三区软件| 国内精品久久久久影院一蜜桃| 91精品福利在线一区二区三区| 亚洲电影在线播放| 欧美日韩在线综合| 日韩精品亚洲专区| 欧美一区二区三区四区久久| 奇米影视一区二区三区小说| 精品国产乱码久久久久久浪潮| 五月综合激情网| 制服丝袜中文字幕亚洲| 日本中文字幕一区二区视频| 正在播放一区二区| 美日韩一区二区| 久久综合给合久久狠狠狠97色69| 国产综合色在线视频区| 国产欧美1区2区3区| 成人午夜看片网址| 亚洲视频免费看| 欧美丝袜丝nylons| 看片网站欧美日韩| 中文一区二区完整视频在线观看| jiyouzz国产精品久久| 一区二区在线观看不卡| 制服.丝袜.亚洲.中文.综合| 国产一区91精品张津瑜| 中文字幕中文在线不卡住| 欧美亚洲自拍偷拍| 国产综合久久久久久鬼色| **网站欧美大片在线观看| www.日韩在线| 性欧美疯狂xxxxbbbb| 精品国产伦一区二区三区免费| 风流少妇一区二区| 夜夜嗨av一区二区三区中文字幕| 91麻豆精品久久久久蜜臀| 国产一区二区免费在线| 亚洲精品免费电影| 日韩一区二区精品| a美女胸又www黄视频久久| 亚洲大片在线观看| 亚洲国产精品二十页| 6080亚洲精品一区二区| 成人午夜视频网站| 日韩电影免费在线观看网站| 国产精品乱码久久久久久| 91麻豆精品国产91| 日韩一区二区三区观看| 成人黄色av电影| 免费视频一区二区| 亚洲精品第1页| 26uuuu精品一区二区| 一本到不卡免费一区二区| 免费的国产精品| 一区二区三区欧美视频| 国产欧美日韩在线看| 欧美一区二区三区人| 一道本成人在线| 国产大陆精品国产| 蜜桃精品视频在线| 亚洲综合在线第一页| 欧美高清在线视频| 精品国产乱码91久久久久久网站| 欧美性色欧美a在线播放| 高清不卡一二三区| 国产一区二区91| 蜜臀久久99精品久久久久宅男| 一区二区三区国产| **性色生活片久久毛片| 国产性色一区二区| 久久综合九色综合欧美98| 欧美一级在线视频| 777奇米成人网| 欧美色中文字幕| 91久久线看在观草草青青| 成人污视频在线观看| 国产一区二区免费在线| 精品一二三四在线| 久久超碰97人人做人人爱| 日韩精品亚洲一区| 日韩精品国产精品| 日本视频在线一区| 免费视频最近日韩| 久久99精品国产.久久久久| 日本不卡不码高清免费观看| 午夜欧美在线一二页| 午夜国产精品一区| 日韩高清一区二区| 看电影不卡的网站| 色综合色狠狠天天综合色| 成人黄页在线观看| 99精品视频在线免费观看| 成人av第一页| 91黄色免费网站| 欧美日韩视频在线观看一区二区三区 | 91久久久免费一区二区| 91小视频在线免费看| 色吧成人激情小说| 欧美日韩高清影院| 欧美大片拔萝卜| 国产日韩欧美不卡在线| 1000精品久久久久久久久| 亚洲精品va在线观看| 日韩综合小视频| 美女www一区二区| 高清不卡在线观看av| 91香蕉视频mp4| 欧美日韩亚洲不卡| 日韩欧美一区二区久久婷婷| 精品国产1区二区| 国产精品狼人久久影院观看方式| 中文字幕欧美一| 日韩激情视频在线观看| 精品亚洲aⅴ乱码一区二区三区| 国产精品一区免费视频| 色综合久久88色综合天天6| 欧美日韩成人综合| 欧美激情一区三区| 亚洲午夜精品在线| 国产成人精品亚洲777人妖| 91老师国产黑色丝袜在线| 欧美人xxxx| 中文字幕在线观看一区二区| 午夜a成v人精品| 菠萝蜜视频在线观看一区| 欧美久久久久久久久久| 亚洲最新在线观看| 国产乱淫av一区二区三区| 色先锋aa成人| 久久久久高清精品| 亚洲与欧洲av电影| 风流少妇一区二区| 欧美男女性生活在线直播观看| 久久久久97国产精华液好用吗| 中文字幕在线一区| 国产在线播放一区| 欧美亚洲国产一卡| 国产精品高潮呻吟| 精品一区二区三区视频在线观看| 91在线国内视频| 国产日韩欧美精品一区| 午夜精品一区二区三区免费视频| 国产91精品一区二区麻豆亚洲| 欧美剧在线免费观看网站| 中文字幕亚洲一区二区va在线| 久久国产精品第一页| 欧美挠脚心视频网站| 国产精品久久久久久户外露出 | 亚洲人成7777| 国产一区二区三区精品视频| 91精品欧美一区二区三区综合在 | 亚洲第一主播视频| 色综合久久中文综合久久牛| 久久久精品人体av艺术| 九色综合国产一区二区三区| 777欧美精品| 日韩精品免费视频人成| 在线播放一区二区三区| 夜夜嗨av一区二区三区中文字幕| www.欧美.com| 国产精品色呦呦| 不卡的看片网站| 国产精品盗摄一区二区三区| 成人av在线播放网址| 日本一区二区三区dvd视频在线| 国产在线播精品第三| 久久蜜桃av一区精品变态类天堂| 九色综合狠狠综合久久|