📄 fir4.txt
字号:
FIR滤波器设计的原理
FIR滤波器数学表达式可用差分方程(1)来表示:
其中:r是FIR滤波器的抽头数; 是第r级抽头数(单位脉冲响应); 是延时r个抽头的输入信号。
设计滤波器的任务就是寻求一个因果,物理上可实现的系统函数 ,使其频率响应 满足所希望得到的频域指标。
用循环缓冲区和操作数寻址方法实现FIR滤波器
FIR.ASM
.title "FIR.asm"
.mmregs
.def _c_int00
.bss y,1
xn .usect "xn",33
a0 .usect "a0",33
PA0 .set 0
PA1 .set 1
.data
table: .word 9*32768/10000
.word 19*32768/10000
.word 15*32768/10000
.word -12*32768/10000
.word -54*32768/10000
.word -67*32768/10000
.word 0
.word 129*32768/10000
.word 204*32768/10000
.word 88*32768/10000
.word -233*32768/10000
.word -506*32768/10000
.word -405*32768/10000
.word 302*32768/10000
.word 1461*32768/10000
.word 2552*32768/10000
.word 300*32768/1000
.word 2552*32768/10000
.word 1461*32768/10000
.word 302*32768/10000
.word -405*32768/10000
.word -506*32768/10000
.word -233*32768/10000
.word 88*32768/10000
.word 204*32768/10000
.word 129*32768/10000
.word 0
.word -67*32768/10000
.word -54*32768/10000
.word -12*32768/10000
.word 15*32768/10000
.word 19*32768/10000
.word 9*32768/10000
.text
_c_int00: SSBX FRCT
STM #a0,AR1
RPT #32
MVPD table,*AR1+
STM #xn+32,AR3
STM #a0+32,AR4
STM #33,BK
STM #-1,AR0
LD #xn,DP
PORTR PA1,@xn
FIR: RPTZ A,#32
MAC *AR3+0%,*AR4+0%,A
STH A,@y
PORTW @y,PA0
BD FIR
PORTR PA1,*AR3+0%
.END
FIR.CMD
FIR.obj
FIR_V.obj
-o FIR.out
-m FIR.map
MEMORY
{
PAGE 0:
EPROM: org=0E000h, len=1000h
VECS: org=0FF80h, len=0080h
PAGE 1:
SPRAM: org=0060h, len=0020h
DARAM: org=0080h, len=1380h
}
SECTIONS
{
.text :> EPROM PAGE 0
.data :> EPROM PAGE 0
.bss :> SPRAM PAGE 1
xn: align (64) {}> DARAM PAGE 1
a0: align (64) {}> DARAM PAGE 1
.vectors:> VECS PAGE 0
}
FIR_V.ASM
.title "FIR_V.asm"
.ref _c_int00
.sect ".vectors"
B _c_int00
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -