⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsp1.txt

📁 基于TMS320C54X语音信号去噪和编码系统:语音信号的u/A律压缩程序 硬件上以:TMS320C54X+TLC320AD50为主实现
💻 TXT
字号:
基于TMS320C54X语音信号去噪和编码系统:语音信号的u/A律压缩程序

硬件上以:TMS320C54X+TLC320AD50为主实现

*******************************************************************

    .mmregs
    .ref  start
    .data
    .bss  speechin,1024,0,0  ; 为变量speechin申请1024个空间
    .bss  speechsave,1024,0,0  ; 为变量speechsave申请1024个空间
    .bss  speechout,1024,0,0  ; 为变量speechout申请1024个空间
    .text
start:    LD   #1023,A    ; A为speechin数据的个数
    STM  speechin,AR3   ; AR3指向speechin的首地址
loop:    STL  A,*AR3+    ; 初始化speechin的内容为1~1024
    SUB     #1,A
    BC  loop,ANEQ
    NOP    
    STM  1D02h,AR7   ; 初始化AR7寄存器
    STM  #1023,*AR7
    STM  speechin,AR3
    STM  speechsave,AR4   ; AR4指向speechsave的首地址
loop1:
    STM     0,AR2
    BIT  *AR3,15-9
    RSBX    OVM    ; 判断数据的正负
    NOP
    BC  positive,NTC   ; 正数直接通过,直接到positive
    STM  #1,AR2    ; 负数做符号处理
    NEG     A
    LD   #1FFh,B    ; 1FFh=10232/2的取整
    AND    B,A
    STL  A,*AR3
positive:   BIT  *AR3,15-8   ; 测试第8位
    NOP
    NOP
    BC   next1,NTC
    LD   #0F0h,B    ; 0F0h=1FFh/2的取整
    LD  *AR3,A
    AND     B,A
    ST   7,*AR4
    B   cmpssover
next1:   BIT  *AR3,15-7   ; 测试第7位
    NOP
    NOP
    BC   next2,NTC
    LD   #78h,B    ; 78h=0F0/2的取整
    AND     B,A
    RSBX    C
    ROL     A
    ST   6,*AR4
    B   cmpssover
next2:   BIT  *AR3,15-6   ; 测试第6位
    NOP
    NOP
    BC   next3,NTC
    LD   #3Ch,B    ; 3Ch=78h /2的取整
    AND     B,A
    RSBX    C
    ROL A
    ROL A
    ST   5,*AR4
    B   cmpssover
next3:         BIT  *AR3,15-5   ; 测试第5位
    NOP
    NOP
    BC   next4,NTC
    LD   #1Eh,B    ; 1E h=3Ch /2的取整
    AND     B,A
    RSBX    C
    RPT  #2
    ROL A
    ST   4,*AR4
    B   cmpssover
next4:   BIT  *AR3,15-4   ; 测试第4位
    NOP
    NOP
    BC   next5,NTC
    LD   #0Fh,B    ; 0F h=1E h /2的取整
    AND     B,A
    RSBX    C
    RPT  #3
    ROL A
    ST   3,*AR4
    B   cmpssover
next5:          BIT  *AR3,15-3   ; 测试第3位
    NOP
    NOP
    BC   next6,NTC
    LD   #7h,B    ; 7 h=0F h /2的取整
    AND     B,A
    RSBX    C
    RPT  #4
    ROL  A
    ST   2,*AR4
    B   cmpssover
next6:   BIT  *AR3,15-2   ; 测试第2位
    NOP
    NOP
    BC   next7,NTC
    LD   #3h,B    ; 3 h=7 h /2的取整
    AND     B,A
    RSBX    C
    RPT  #5
    ROL  A
    ST   1,*AR4
    B   cmpssover
next7:   LD   #1h,B    ; 1 h=3 h /2的取整
    AND     B,A
    RSBX    C
    RPT  #6
    ROL  A
    ST   0,*AR4
cmpssover:          ; 压缩子程序
    LDM  AR2,B
    BC   nchgsign,BEQ
    LD   *AR4,B
    RSBX    OVM
    NEG     B
    STL  B,*AR4
nchgsign:
    LD   #0Fh,B
    AND    *AR4,B
    OR  B,A
    STL  A,*AR4
    NOP
    LD   *AR3+,A
    LD  *AR4+,A
    LD  *AR7,A
    SUB  #1,A
    STL  A,*AR7
    BC  loop1,ANEQ
    NOP
    STM  #1023,*AR7
    STM  speechsave,AR4
    STM  speechout,AR3
loop2:   STM  0,AR2
    LD   #0Fh,B
    LD   *AR4,A
    AND  B,A
    BIT  *AR4,15-1   ; 测试第1位
    NOP
    NOP
    BC   nchgsign2,NTC
    STM  1,AR2
    RSBX OVM
    NEG  A
    AND  B,A
nchgsign2:   BC   dcmpssover,AEQ
    STM  1D00h,AR5
    STL   A,*AR5
    STM  1D01h,AR6
    LD   #7,A
    SUB  *AR5,A
    STL   A,*AR6
    
    LD   *AR4,A
    LD      #0F0h,B
    AND    B,A
    LD   #2,B
    RSBX C
    RPT   *AR5
    ROL  B
    ROR B
    RPT  *AR6
    ROR A
    ROL A
dcmpssover:   
    ADD  A,B
    LDM  AR2,A
    BC   nchgsign3,AEQ
    RSBX OVM
    NEG  B
nchgsign3:   
    STL  B,*AR3
    NOP 
    LD   *AR3+,A
    LD  *AR4+,A
    LD  *AR7,A
    SUB  #1,A
    STL  A,*AR7
    BC  loop2,ANEQ
    NOP 
finish:            B       finish

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -