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

📄 zhy_209.asm

📁 IIR滤波器的DSP的实现
💻 ASM
字号:
***************************************************************
*  IIR滤波器的DSP的实现                                       *
*  2阶IIR滤波器的单操作数指令实现方法                         *
*  IIR滤波器可用较少的阶数获得较好的选择性,所用的存储单元少,  *
*  运算次数少.但是在有限精度的运算中,可能出现不稳定现象.而且  *
*  选则性好,相位的非线性失真越严重.在线性相位要求不敏感的场合 *
*  (如语音通信)选用IIR滤波器较为合适                          *
*  对于2阶标准形式IIR滤波器由反馈通道和前向通道组成           *
*      反馈通道: x0   = w(n) = x(n) + A1*x1 + A2*x2           *
*      前向通道: y(n) = B0*x0 + B1*x1 + B2*x2                 *
*-------------------------------------------------------------*
*  程序来源:DSP技术与应用实例(赵红怡)     Page 208            *
*                                            lvlishan         *
*                                            2009 04 18       *
***************************************************************
		.title  "IIR1,ASM"
		.mmregs
		.def    _c_int00
x0      .usect  "x",1
x1      .usect  "x",1
x2      .usect  "x",1
y0      .usect  "x",1
B2      .usect  "COEF",1
B1      .usect  "COEF",1
B0      .usect  "COEF",1
A2      .usect  "COEF",1
A1      .usect  "COEF",1
y_out   .usect  "y_out",200
PA0     .set    0
PA1     .set    1
		.data
table:  .word   0              ;x(n-1)
		.word   0              ;x(n-2)
		.word   1*32768/10     ;B2
		.word   2*32768/10     ;B1
		.word   3*32768/10     ;B0
		.word   5*32768/10     ;A2
		.word   -4*32768/10    ;A1
		.text
_c_int00:
		LD      #x0,DP        ;设置DP指针
		SSBX    FRCT          ;设置又符号小数乘法
		STM     #x1,AR1       ;传送两个初始化数据x(n-1),x(n-2)
		RPT     #1
		MVPD    #table,*AR1+
		STM     #B2,AR1       ;传送系数B2,B1,B0,A2,A1
		RPT     #4
		MVPD    #table+2,*AR1+
		NOP
		STM     #y_out,AR2
		NOP
IIR1:   ;PORTR   PA1,@x0       ;输入数据x(n),此处的x0表示输入的新数据
		NOP ;add a input toggle probe point here 在此处增加输入探针
		NOP
		NOP
		NOP
        LD      #x0,DP        ;设置DP指针                     ;计算反馈通道
		LD      @x0,16,A      ;x0*1  --> 
		LD      @x1,T
		MAC     @A1,A         ;A + x1*A1 --> A
		LD      @x2,T
		MAC     @A2,A         ;A + x2*A2 --> A
		STH     A,@x0         ;更新x0 ,此处的x0表示反馈通道所求的和
		                      ;计算前向通道
		MPY     @B2,A         ;x2*B2 --> A
		LTD     @x1 ;同时更新数据
		MAC     @B1,A         ;A + x1*B1 --> A
		LTD     @x0 ;同时更新数据
		MAC     @B0,A         ;A + x0*B0 --> A
		STM     #x1,AR3
		;STH     A,@x0         ;更新x0 ,此处的x0表示滤波器的输出数据
		STH     A,@y0
		STH     A,*AR2+
		NOP ;add a output toggle probe point here 在此处增加输出探针
		BD      IIR1
		NOP
		NOP
		;PORTW   @x0,PA0       ;输出滤波器的结果
		.end

⌨️ 快捷键说明

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