有限冲激响应滤波器FIR算法硬件实现 下载本文

内容发布更新时间 : 2024/12/23 14:31:32星期一 下面是文章的全部内容请认真阅读。

------------------------------------------------------------------------------------------------

本实验程序在AD中断中对AD进行连续采样。由于需要进行实时混频,所以交替转换通道0和通道1(ICETEK-F2812-EDU实验箱上ADCIN0和ADCIN1)。汇编语言实现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

——————————————————————————————————————

------------------------------------------------------------------------------------------------

五,硬件框图: 六,程序流程图:

七,调试过程及步骤 1, 实验准备 (1)连接实验设备。

(2)准备信号源进行AD输入。 ①取出试验箱附带的信号线

②用一根信号线连接试验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN0”插座注意插头要插牢,到底。这样,信号源波形输出A的输出波形即可送到ICETEK-F2812A板的AD输入通道0。

③用一根信号线连接试验箱左侧信号源的波形输出B端口和“A/D输入”模块的“ADCIN1”插座注意插头要插牢,到底。这样,信号源波形输出B的输出波形即可送到ICETEK-F2812A板的AD输入通道1。

④设置波形输出A:

-向内侧按波形频率选择按钮,直到标有正弦波的指示灯 点亮。 -上下调节波形频率选择旋钮,直到标有100-1KHz的指示灯亮。

-调节幅值调整旋钮,将波形输出A的幅值调到适当位 置。 ⑤设置波形输出B:

-向内侧按波形频率选择按钮,直到标有正弦波的指示灯 点亮。

——————————————————————————————————————

------------------------------------------------------------------------------------------------

-上下调节波形频率选择旋钮,直到标有1KHz-10KHz的指示灯亮。

-调节幅值调整旋钮,将波形输出B幅值调到适当位置。 2,设置Code Computer Studio 2.21在硬件(Emulator)方式下行。 3,启动Code Computer Studio 2.21选择菜单Debug>Reset CPU 4,打开工程文件:工程目录:D\\dsp\\t8\\mixerfir\\mixerfir.pjt 5,编译、下载程序,选择菜单Debug->Go Main 。使程序运行到main函数入口位置。

6,观察窗口—打开程序adc.c,查看源代码。

7,运行程序观察结果按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8键实现A,B两信号源分屏显示。

8,观察动态效果,调节信号源输出,观察滤波器输出。改变信号源输入的波形,频率参数,观察动态结果。 9,退出CCS 八,实验结果 (a)有错误 (b)K6键 (c)K7键实现混频

(d)K8实现A,B的分频显示 九,结果分析

实验过程中遇到的问题及解决方法

1, 硬件(cc2000)初始化时提示错误,未初始换成功。原因有

——————————————————————————————————————