?? zhy_209.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 + -