DSP实现FIR数字滤波器,用汇编语言如何编写程序

DSP实现FIR数字滤波器,用汇编语言如何编写程序,第1张

线性缓冲区实现FIR滤波器

程序清单:

.title “FIR1.ASM”

.mmregs

.def start

x .usect “x”,8

PA0 .set 0

PA1 .set 1

.data

COEF: .word 1*32768/10

.word 2*32768/10

.word -4*32768/10

.word 3*32768/10

.word -4*32768/10

.word 2*32768/10

.word 1*32768/10

.text

start: SSBX FRCT

STM #x+7,AR2

STM #6,AR0

LD #x+1,DP

PORTR PA1,@x+1

FIR1: RPTZ A,#6

MACD *AR2-,COEF,A

STH A,*AR2

PORTW *AR2+,PA0

BD FIR1

PORTR PA1,*AR2+0

.end

用循环缓冲区实现FIR滤波器

程序清单:

.title “FIR2.ASM”

.mmregs

.def start

.bss y,1

xn .usect “xn”,7

b0 .usect “b0”,7

PA0 .set 0

PA1 .set 1

.data

table: .word 1*32768/10

.word 2*32768/10

.word 3*32768/10

.word 4*32768/10

.word 5*32768/10

.word 6*32768/10

.word 7*32768/10

.text

start: SSBX FRCT

STM #b0,AR1

RPT #6

MVPD table,*AR1+

STM #xn+6,AR2

STM #b0+6,AR3

STM #7,BK

STM #-1,AR0

LD #xn,DP

PORTR PA1,@xn

FIR2: RPTZ A,#6

MAC *AR2+0%,*AR3+0%,A

STH A,@y

PORTW @y,PA0

BD FIR2

PORTR PA1,*AR2+0%

.end

链接命令文件

FIR2.obj

vectors.obj

-o FIR2.out

-m FIR2.map

-e start

MEMORY

{

PAGE0:

EPROM:org=0E000h,

len=1000h

VECS: org=0FF80h,

len=0080h

PAGE1:

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(8){}>DARAM PAGE 1

b0:align(8){}>DARAM PAGE 1

.vections:VECS PAGE 0

}

xiexie

dsp_lib中滤波函数怎么用

滤波函数在dsp_lib中主要有两种,一种是滤波器,另一种是滤波器器件。滤波器可以用来滤除高频噪声,提高信号质量,滤波器器件则可以用来实现更复杂的滤波功能,比如滤波器器件可以用来实现滤波器的可调节功能、陷波功能等。

使用dsp_lib中的滤波函数需要先定义滤波器的类型,然后根据需要设置其参数,最后调用滤波函数来实现滤波功能。例如,要实现一个低通滤波器,首先需要定义一个低通滤波器类型,然后根据需要设置其参数,最后调用dsp_lib中的低通滤波函数来实现滤波功能。

:模拟信号切速率不高,精度要求不高的话,可以用STM32内部ADC ,DMA模式; 通讯速度,串口不够快的话,可以考虑用USB或USB转串口; 数据发送接口方面, STM32 的性能对比 DSP 可以说没有弱点. 如果对比 ADC , mcu 自带的 ADC 速度上也并不差


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8137956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存