📄 clida.s54
字号:
*-------------------------------------------------------------------------*
* *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES: *
* "COPYRIGHT 2001 MIKET DSP SOLUTIONS, ALL RIGHTS RESERVED" *
* *
*-------------------------------------------------------------------------*/
.mmregs
.include "clidi.h54"
*--------------------- local defs ----------------------------------------*/
_CORR .set (22*170+2*17)
.sect ".ftext"
en2log .macro added
add #1, a
exp a
ld #(0x780+added), b
norm a
ld a, -16, a
add a, -5, b
mac #-512, b, a
.endm
*--------------------- public vars ---------------------------------------*/
*--------------------- local vars ----------------------------------------*/
*--------------------- local functions -----------------------------------*/
;-------------------------------------------------------------------------
.global __en2log
; .sym _cpd_en2log, _cpd_en2log, 32, 2, 0
;-------------------------------------------------------------------------
__en2log
; S32 slEn = a
;
ssbx sxm
add #1, a
exp a
ld #0, b
norm a
ld a, -16, a
add a, -5, b
mac #-512, b, a
ret
*-------------------------------------------------------------------------*/
.global _clid_move_data_in
.sym _clid_move_data_in, _clid_move_data_in, 32, 2, 0
_clid_move_data_in
*-------------------------------------------------------------------------*/
;CLID_tDb *pDb, a
;CLID_tSc *pSc, sp(1)
;S16 *psIn sp(2)
;
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
ld *ar2(#(CLID_tDb.sCurrBitLen)), a;
stl a, *ar3(#(CLID_tSc.sCurrBitLen));
ld *ar2(#(CLID_tDb.sBits)), a;
stl a, *ar3(#(CLID_tSc.sBits));
ld *ar2(#(CLID_tDb.sAlignment)), a;
stl a, *ar3(#(CLID_tSc.sAlignment));
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asBpSav))
mar *+ar5(#(CLID_tSc.asBp))
rpt #(CLID_BPF_SSZ-1)
mvdd *ar4+, *ar5+;
mvdk *ar2(#(CLID_tDb.Cfg.sNormShift)), t
mvdk *sp(2), ar4
stm #(ICLID_FR_SZ-1), brc
rptb L_clid_move_data_in-1
ld *ar4+, ts, a
stl a, *ar5+
L_clid_move_data_in
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asLpISav));
mar *+ar5(#(CLID_tSc.asLpI));
rpt #(CLID_LPF_SSZ-1);
mvdd *ar4+, *ar5+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asLpQSav));
mar *+ar5(#(CLID_tSc.asLpQ));
rpt #(CLID_LPF_SSZ-1);
mvdd *ar4+, *ar5+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asMfISav));
mar *+ar5(#(CLID_tSc.asMfI));
rpt #(CLID_MF_SSZ-1);
mvdd *ar4+, *ar5+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asMfQSav));
mar *+ar5(#(CLID_tSc.asMfQ));
rpt #(CLID_MF_SSZ-1);
mvdd *ar4+, *ar5+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asOutSav));
mar *+ar5(#(CLID_tSc.asOut));
rpt #(CLID_OUT_SSZ-1);
mvdd *ar4+, *ar5+;
ret;
;
*-------------------------------------------------------------------------*/
.global _clid_bp_filter
.sym _clid_bp_filter, _clid_bp_filter, 32, 2, 0
_clid_bp_filter
*-------------------------------------------------------------------------*/
;CLID_tDb *pDb, a
;CLID_tSc *pSc sp(1)
;
mvdk *sp(1), ar2
ssbx sxm
mvmm ar2, ar3
mar *+ar3(#(CLID_tSc.asBp));
mvmm ar2, ar4
mar *+ar4(#(CLID_tSc.asLpI + CLID_LPF_SSZ));
mvmm ar2, ar5
mar *+ar5(#(CLID_tSc.asLpQ + CLID_LPF_SSZ));
stm #(ICLID_FR_SZ-1), brc
rptb L_clid_bp_filter-1
rptz a, #CLID_BPF_SZ-1
macp *ar3+, _CLID_asBpfI, a
add #1, 14, a
sth a, 1, *ar4+
mar *+ar3(#(-CLID_BPF_SZ))
rptz a, #CLID_BPF_SZ-1
macp *ar3+, _CLID_asBpfQ, a
add #1, 14, a
sth a, 1, *ar5+
mar *+ar3(#(1-CLID_BPF_SZ))
L_clid_bp_filter
ret;
*-------------------------------------------------------------------------*/
.global _clid_convert_baseband
.sym _clid_convert_baseband, _clid_convert_baseband, 32, 2, 0
_clid_convert_baseband
*-------------------------------------------------------------------------*/
;CLID_tDb *pDb, xar0
;CLID_tSc *pSc xar1
;
mvdk *sp(1), ar2
ssbx sxm
ssbx frct
mvmm ar2, ar3
mar *+ar3(#(CLID_tSc.asLpI + CLID_LPF_SSZ));
mvmm ar2, ar4
mar *+ar4(#(CLID_tSc.asLpQ + CLID_LPF_SSZ));
stm #_CLID_as1700, ar5
stlm a, ar2
nop
nop
mar *+ar2(#(CLID_tDb.sEven))
bitf *ar2, #1;
stm #20, ar0 ; latency for xc
xc 2, tc
mar *+ar5(#40)
xorm #1, *ar2
stm #0, bk
stm #(ICLID_FR_SZ-1), brc
rptb L_clid_convert_baseband-1
mpy *ar4, *ar5, a
mpy *ar3, *ar5+0%, b
masr *ar3, *ar5, a
macr *ar4, *ar5, b
sth a, *ar3+
sth b, *ar4+
mar *+ar5(#(-19))
L_clid_convert_baseband
rsbx frct
ret;
*-------------------------------------------------------------------------*/
.global _clid_resample_6k
.sym _clid_resample_6k, _clid_resample_6k, 32, 2, 0
_clid_resample_6k
*-------------------------------------------------------------------------*/
;CLID_tDb *pDb, a
;CLID_tSc *pSc sp(1)
;
mvdk *sp(1), ar4
ssbx sxm
ssbx frct
pshm ar6
nop
nop
mvmm ar4, ar2
mar *+ar2(#(CLID_tSc.asLpI)); psFromI
mvmm ar4, ar3
mar *+ar3(#(CLID_tSc.asLpQ)); psFromQ
mvmm ar4, ar5
mar *+ar5(#(CLID_tSc.asMfI+CLID_MF_SSZ)); psToI
mvmm ar4, ar6
mar *+ar6(#(CLID_tSc.asMfQ+CLID_MF_SSZ)); psToQ
stm #(_CLID_asLpf24 + 2), ar4
stm #3, ar0
stm #0, bk
stm #(ICLID_FR_SZ/4-1), brc
rptb L_clid_resample_6k - 1
; pair 0
; I
rptz a, #CLID_LPF_SZ-2
mac *ar2+, *ar4+0%, a
macr *ar2+, *ar4+0%, a
mar *+ar4(#(-CLID_LPF_SZ*3))
mar *+ar2(#(1-CLID_LPF_SZ))
sth a, *ar5+
; Q
rptz a, #CLID_LPF_SZ-2
mac *ar3+, *ar4+0%, a
macr *ar3+, *ar4+0%, a
mar *+ar4(#(-CLID_LPF_SZ*3-1))
mar *+ar3(#(1-CLID_LPF_SZ))
sth a, *ar6+
; pair 1
; I
rptz a, #CLID_LPF_SZ-2
mac *ar2+, *ar4+0%, a
macr *ar2+, *ar4+0%, a
mar *+ar4(#(-CLID_LPF_SZ*3))
mar *+ar2(#(1-CLID_LPF_SZ))
sth a, *ar5+
;Q
rptz a, #CLID_LPF_SZ-2
mac *ar3+, *ar4+0%, a
macr *ar3+, *ar4+0%, a
mar *+ar4(#(-CLID_LPF_SZ*3-1))
mar *+ar3(#(1-CLID_LPF_SZ))
sth a, *ar6+
;pair 2
;I
rptz a, #CLID_LPF_SZ-2
mac *ar2+, *ar4+0%, a
macr *ar2+, *ar4+0%, a
mar *+ar4(#(-CLID_LPF_SZ*3))
mar *+ar2(#(2-CLID_LPF_SZ))
sth a, *ar5+
;Q
rptz a, #CLID_LPF_SZ-2
mac *ar3+, *ar4+0%, a
macr *ar3+, *ar4+0%, a
mar *+ar4(#(-CLID_LPF_SZ*3+2))
mar *+ar3(#(2-CLID_LPF_SZ))
sth a, *ar6+
L_clid_resample_6k
popm ar6
rsbx frct
ret;
*-------------------------------------------------------------------------*/
.global _clid_matched_filter
.sym _clid_matched_filter, _clid_matched_filter, 32, 2, 0
_clid_matched_filter
*-------------------------------------------------------------------------*/
;CLID_tDb *pDb = a
;CLID_tSc *pSc = sp(1)
;
mvdk *sp(1), ar2
ssbx sxm
nop
frame #-4
mvmm ar2, ar3
mar *+ar3(#(CLID_tSc.asMfI)); psFromI
mvmm ar2, ar4
mar *+ar4(#(CLID_tSc.asMfQ)); psFromQ
mvmm ar2, ar5
mar *+ar5(#(CLID_tSc.asOut+CLID_OUT_SSZ)); psTo
stm #(CLID6_FR_SZ - 1), brc
rptb L_clid_matched_filter-1
rptz a, #CLID_MF_SZ-1
macp *ar3+, #_CLID_asMfI, a
sth a, *sp(0)
mar *+ar3(#(-CLID_MF_SZ))
rptz a, #CLID_MF_SZ-1
macp *ar4+, #_CLID_asMfI, a
sth a, *sp(1)
mar *+ar4(#(-CLID_MF_SZ))
rptz a, #CLID_MF_SZ-1
macp *ar3+, #_CLID_asMfQ, a
sth a, *sp(2)
mar *+ar3(#(1-CLID_MF_SZ))
rptz a, #CLID_MF_SZ-1
macp *ar4+, #_CLID_asMfQ, a
sth a, *sp(3)
mar *+ar4(#(1-CLID_MF_SZ))
ld *sp(1), t
mpy *sp(2), b
ld *sp(0), t
mas *sp(3), b
abs b, a
add #1, a
exp a
nop
norm a
ld a, -5, a
ld a, -16, a
mac #-512, a
add #30*512, a
xc 1, blt
neg a
xc 1, beq
ld b, a
add *ar2(#(CLID_tSc.sAlignment)), a
stl a, *ar5+
L_clid_matched_filter
frame #4
mar *ar5-;
rptz a, #(CLID6_FR_SZ-1)
add *ar5-, a
add #1, 8, a
stl a, -9, *ar2(#(CLID_tSc.sAverage))
ret;
*-------------------------------------------------------------------------*/
.global _clid_match_byte
.sym _clid_match_byte, _clid_match_byte, 32, 2, 0
_clid_match_byte
*-------------------------------------------------------------------------*/
; S16 *psIn = a
; U16 *puByte = sp(1) (where to put uByte)
;
stlm a, ar2
ssbx sxm
ld #0, a
mvdk *sp(1), ar3
mvmm ar2, ar4
mar *+ar4(#(-2))
stm #(10-1), brc
frame #-1
stm #5, ar0
stm #0, bk
st #1, *sp(0) ; mask
st #0, *ar3
rptb L_clid_match_byte-1
rptz b, #(5-1)
macp *ar4+, _CLID_asShape, b
bit *ar2+0%, 15-15
sub b, a
nop
xc 1, ntc
add b, 1, a
ld *ar3, b
xc 1, ntc
or *sp(0), b
stl b, *ar3
ld *sp(0), b
ld b,1,b
stl b, *sp(0)
L_clid_match_byte
nop
frame #1
ld a, -8, a
ret
*-------------------------------------------------------------------------*/
.global _clid_move_data_out
.sym _clid_move_data_out, _clid_move_data_out, 32, 2, 0
_clid_move_data_out
*-------------------------------------------------------------------------*/
;CLID_tDb *pDb = a
;CLID_tSc *pSc = sp(1)
;
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
ld *ar3(#(CLID_tSc.sCurrBitLen)), a;
stl a, *ar2(#(CLID_tDb.sCurrBitLen));
ld *ar3(#(CLID_tSc.sBits)), a;
stl a, *ar2(#(CLID_tDb.sBits));
ld *ar3(#(CLID_tSc.sAlignment)), a;
stl a, *ar2(#(CLID_tDb.sAlignment));
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asBpSav));
mar *+ar5(#(CLID_tSc.asBp+ICLID_FR_SZ));
rpt #(CLID_BPF_SSZ-1)
mvdd *ar5+, *ar4+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asLpISav));
mar *+ar5(#(CLID_tSc.asLpI+ICLID_FR_SZ));
rpt #(CLID_LPF_SSZ-1)
mvdd *ar5+, *ar4+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asLpQSav));
mar *+ar5(#(CLID_tSc.asLpQ+ICLID_FR_SZ));
rpt #(CLID_LPF_SSZ-1)
mvdd *ar5+, *ar4+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asMfISav));
mar *+ar5(#(CLID_tSc.asMfI+CLID6_FR_SZ));
rpt #(CLID_MF_SSZ-1)
mvdd *ar5+, *ar4+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asMfQSav));
mar *+ar5(#(CLID_tSc.asMfQ+CLID6_FR_SZ));
rpt #(CLID_MF_SSZ-1)
mvdd *ar5+, *ar4+;
mvmm ar2, ar4
mvmm ar3, ar5
mar *+ar4(#(CLID_tDb.asOutSav));
mar *+ar5(#(CLID_tSc.asOut+CLID6_FR_SZ));
rpt #(CLID_OUT_SSZ-1)
mvdd *ar5+, *ar4+;
ret;
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -