DSP 实验FIR滤波器代码

  • 格式:doc
  • 大小:58.50 KB
  • 文档页数:7

1.循环.title " fir.asm ".mmregs.def _c_int00fir_coff .usect "fir_coff",48in_buf .usect "in_buf",48.bss in,160.bss out,160input .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216.word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4.word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E.word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688.word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2.word 0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF.word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216.word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4.word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E.word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688.word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1.word 0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF.datafir_table .word -6,28,46,27,-35,-100,-93,26,191,240,52,-291.word -497,-278,337,888,773,-210,-1486,-1895,-442,2870.word 6793,9445,9445,6793,2870,-442,-1895,-1486,-210,773.word 888,337,-278,-497,-291,52,240,191,26,-93.word -100,-35,27,46,28,-6.text_c_int00: SSBx FRCT;小数乘法编程时,设置FRCT(小数方式)位STM #in,AR1RPT #159MVPD input,*AR1+STM #fir_coff,AR1RPT #47MVPD fir_table,*AR1+STM #in_buf,AR1RPT #47ST #0,*AR1+STM #in_buf+47,AR2STM #fir_coff+47,AR3STM #48,BKSTM #-1,AR0STM #out,AR6STM #in,AR5STM #159,AR7MVDD *AR5+,*AR2+0%FIR2: ;FIR滤波运算RPTZ A,#47MAC *AR2+0%,*AR3+0%,A ;STH A,*AR6+MVDD *AR5+,*AR2+0%;用最新的样本值替代最旧的样本值BANZ FIR2,*AR7-NOPNOPend: B end.end2.线性缓冲区法.title " fir.asm ".mmregs.def _c_int00fir_coff .usect "fir_coff",48in_buf .usect "in_buf",48.bss in,160.bss out,160input .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216.word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4.word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E.word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688.word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2.word 0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF.word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216.word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4.word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E .word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688 .word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1 .word 0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF .datafir_table .word -6,28,46,27,-35,-100,-93,26,191,240,52,-291.word -497,-278,337,888,773,-210,-1486,-1895,-442,2870.word 6793,9445,9445,6793,2870,-442,-1895,-1486,-210,773.word 888,337,-278,-497,-291,52,240,191,26,-93.word -100,-35,27,46,28,-6.text_c_int00: SSBx FRCT;小数乘法编程时,设置FRCT(小数方式)位STM #in,AR1RPT #159MVPD input,*AR1+STM #fir_coff,AR1RPT #47MVPD fir_table,*AR1+STM #in_buf,AR1RPT #47ST #0,*AR1+STM #in,AR5STM #in_buf,AR2MVDD *AR5+,*AR2STM #in_buf+47,AR2STM #out,AR6STM #159,AR7FIR2: ;FIR滤波运算RPTZ A,#47MACD *AR2-,fir_table,A ;STH A,*AR6+MAR *AR2+ ;为了调整间接寻址的指?MVDD *AR5+,*AR2 ;用最新的样本值替代最旧的样本值STM #in_buf+47,AR2BANZ FIR2,*AR7-NOPNOPend: B end.end3.系数对称法链接文件MEMORY{PAGE 0: /*定义程序存贮区*/EPROM:org=0090H len=0F70H /*定义EPROM区,起始地址0090H,长度0F70H*/VECS: org=0080H len=0010H /*定义VECS区,起始地址0080H,长度0010H*/PAGE 1: /*定义数据存贮区*/SPRAM:org=1000H len=1000H /*定义SPRAM区,起始地址1000H,长度1000H*/DARAM:org=2000H len=2000H /*定义DARAM区,起始地址2000H,长度2000H*/}SECTIONS{.vector: {} > VECS PAGE 0.text: {} > EPROM PAGE 0.data: {} > DARAM PAGE 1.bss: {} > DARAM PAGE 1fir_coff: align(64) {} > EPROM PAGE 0x_new: align(32) {} > EPROM PAGE 0x_old: align(32) {} > EPROM PAGE 0}主代码:.title " fir.asm ".mmregs.def _c_int00fir_coff .usect "fir_coff",48x_new .usect "x_new",24x_old .usect "x_old",24.bss in,160.bss out,160input .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216 .word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4 .word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E .word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688 .word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2.word 0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216 .word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4 .word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E .word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688 .word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1 .word 0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF .datafir_table .word -6,28,46,27,-35,-100,-93,26,191,240,52,-291.word -497,-278,337,888,773,-210,-1486,-1895,-442,2870.word 6793,9445,9445,6793,2870,-442,-1895,-1486,-210,773.word 888,337,-278,-497,-291,52,240,191,26,-93.word -100,-35,27,46,28,-6.text_c_int00: SSBx FRCT;小数乘法编程时,设置FRCT(小数方式)位STM #in,AR1RPT #159MVPD input,*AR1+STM #fir_coff,AR1RPT #47MVPD fir_table,*AR1+STM #x_new,AR1RPT #23ST #0,*AR1+STM #x_old,AR1RPT #23ST #0,*AR1+STM #in,AR5STM #x_new,AR2MVDD *AR5+,*AR2STM #x_new,AR2STM #x_old+23,AR3STM #-1,AR0STM #24,BKSTM #out,AR6STM #159,AR7FIR2: ;FIR滤波运算ADD *AR2+0%,*AR3+0%,ARPTZ B,#23FIRS *AR2+0%,*AR3+0%,fir_table ;STH B,*AR6+MAR *+AR2(2)% ;为了调整间接寻址的指?MAR *AR3+%MVDD *AR2,*AR3+0%MVDD *AR5+,*AR2 ;用最新的样本值替代最旧的样本值BANZ FIR2,*AR7-NOPNOPend: B end.end4.高通滤波.title " fir.asm ".mmregs.def _c_int00fir_coff .usect "fir_coff",35in_buf .usect "in_buf",35.bss in,160.bss out,160input .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216.word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4.word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E.word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688.word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2.word 0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF.word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1.word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216.word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4.word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E.word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688.word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1.word 0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF.datafir_table .word -170,144,0,-246,193,293,-482,0,727,-554,-682,1373.word 0,-2271,1937,2975,-9764,12963,-9764,2975,1937,-2271.word 0,1373,-682,-554,727,0,-482,293,193,-246.word 0,144,-170.text_c_int00: SSBx FRCT;小数乘法编程时,设置FRCT(小数方式)位STM #in,AR1RPT #159MVPD input,*AR1+STM #fir_coff,AR1RPT #34MVPD fir_table,*AR1+STM #in_buf,AR1RPT #34ST #0,*AR1+STM #in_buf+34,AR2STM #fir_coff+34,AR3STM #35,BKSTM #-1,AR0STM #out,AR6STM #in,AR5STM #159,AR7MVDD *AR5+,*AR2+0%FIR2: ;FIR滤波运算RPTZ A,#34MAC *AR2+0%,*AR3+0%,A ;STH A,*AR6+MVDD *AR5+,*AR2+0%;用最新的样本值替代最旧的样本值BANZ FIR2,*AR7-NOPNOPend: B end.end。