17.08.2013 Views

第43 期 - Xilinx

第43 期 - Xilinx

第43 期 - Xilinx

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

手 把 手 课 堂 : F P G A 1 0 1<br />

入的数据样本通过精心同步的数学运算与滤波器系数相结<br />

合,不过这取决于滤波器的类型和实现策略,随后数据样<br />

本进入下一个处理阶段。如果数据源和终点都是模拟信<br />

号,则数据样本必须首先通过 A/D 转换器,结果则必须馈<br />

通给 D/A 转换器。<br />

最简单的 FIR 滤波器的构造采用一系列延迟元件、乘<br />

法器和加法器树或加法器链来实现。<br />

下面的等式是单通道 FIR 滤波器的数学表达:<br />

该等式中的各项代表着输入样本、输出样本和系数。<br />

假设 S 为连续输入样本流,Y 为经滤波后产生的输出样本<br />

流,n 和 k 对应特定的瞬时时间。则如果要计算时间 n 时<br />

的输出样本 Y(n),需要在 N 各时间点的样本群组,即<br />

S(n)、S(n-1)、s(n-2)…s(n-N+1)。N 输入样本群组乘以 N<br />

系数,加总后得出最终结果 Y。<br />

图 2 是一个简单的 31 抽头 FIR 滤波器(长度<br />

N=31)的方框图。<br />

在选择滤波器的理想长度和系数值时,有多种设计工<br />

具可供使用。其目的是通过选择适当的参数来实现所需的<br />

滤波器性能。参数选择最常用的设计工具是 MATLAB ® 。<br />

一旦选定参数,就可以按照数学等式完成实现。<br />

<br />

实现 FIR 滤波器的基本步骤包括:<br />

1. 对输入的数据流采样<br />

<br />

S (n)<br />

k0 k k1 k k1 k k3<br />

k30 <br />

12<br />

Z -1 Z -1 Z -1 Z -1<br />

S<br />

y(n)<br />

图 2 - 长度为 31 抽头的 FIR 滤波器<br />

38 赛灵思中国通讯 43 <strong>期</strong><br />

<br />

2. 在缓冲区组织输入样本,以便让每个采集到的样本<br />

与每项滤波器系数相乘<br />

3. 让每个数据样本与每项系数相乘,并累加结果<br />

4. 输出滤波结果。<br />

使用“相乘累加法”在处理器上实现 FIR 滤波器的典<br />

型 C 语言程序,如下列代码所示:<br />

/*<br />

*采集输入的数据样本<br />

*/<br />

datasample = input();<br />

/*<br />

*将新数据样本导入缓冲器<br />

*/<br />

S[n] = datasample;<br />

/*<br />

*将每个数据样本与每项系数相乘并累加结果<br />

*/<br />

y = 0;<br />

for (i = 0; i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!