FIR滤波器程序设计
- 格式:doc
- 大小:196.00 KB
- 文档页数:15
FIR滤波器设计C语言程序FIR滤波器设计C语言程序1. 引言2. FIR滤波器原理FIR滤波器的输入输出关系可以表示为以下方程:y[n] = h[0]x[n] + h[1]x[n-1] + + h[M]x[n-M]其中,y[n]为输出信号,x[n]为输入信号,h为FIR滤波器的系数向量,M为滤波器的阶数。
3. 窗函数法设计FIR滤波器窗函数法是一种简单有效的FIR滤波器设计方法,其思想是通过加窗和傅里叶变换来确定滤波器系数。
步骤如下:1. 确定滤波器的阶数M,一般通过信号频率响应要求来确定。
2. 选择一个窗函数(如矩形窗、汉宁窗等)。
3. 根据窗函数的性质和滤波器的阶数,计算出滤波器的理想频率响应h_ideal。
4. 使用傅里叶变换将理想频率响应转换为时间域的滤波器系数h。
5. 对h进行归一化处理,得到最终的滤波器系数。
4. C语言程序实现下面给出一个简单的C语言程序,实现了FIR滤波器的设计过程。
cinclude <stdio.h>include <math.h>define N 1000 // 输入信号长度define M 50 // 滤波器阶数void fir_filter(float x, float h, float y) {int i, j;for (i = 0; i < N; i++) {y[i] = 0;for (j = 0; j < M; j++) {if (i >= j) {y[i] += h[j] x[i j];}}}}int mn() {float x[N]; // 输入信号float h[M]; // 滤波器系数float y[N]; // 输出信号int i;// 输入信号和滤波器系数for (i = 0; i < N; i++) {x[i] = sin(2 M_PI 1000 i / N) + sin(2 M_PI 2000 i / N); // 两个正弦信号叠加}for (i = 0; i < M; i++) {h[i] = 1.0 / M; // 简单的均值滤波器}// 调用FIR滤波函数fir_filter(x, h, y);// 输出滤波后的信号for (i = 0; i < N; i++) { printf(\。
FIR滤波器设计实验报告实验报告:FIR滤波器设计一、实验目的:本实验旨在通过设计FIR滤波器,加深对数字信号处理中滤波器原理的理解,掌握FIR滤波器的设计方法和调试技巧。
二、实验原理:在窗函数法中,常用的窗函数有矩形窗、三角窗、汉明窗和黑曼窗等。
根据实际需求选择适当的窗口函数,并通过将窗口函数应用到理想低通滤波器的冲激响应中,得到FIR滤波器的冲激响应。
三、实验步骤:1.确定滤波器的阶数和截止频率。
2.选择适当的窗口函数,如汉明窗。
3.计算出理想低通滤波器的冲激响应。
4.将选定的窗口函数应用到理想低通滤波器的冲激响应中。
5.得到FIR滤波器的冲激响应。
四、实验结果:假设要设计一个阶数为10的FIR滤波器,截止频率为800Hz,采样频率为1600Hz。
1.选择汉明窗作为窗口函数。
2.根据采样频率和截止频率计算出理想低通滤波器的冲激响应。
假设截止频率为f_c,则理想低通滤波器的冲激响应为:h(n) = 2f_c * sinc(2f_c * (n - (N-1)/2))其中,sinc(x)为正弦函数sin(x)/x。
3.将汉明窗应用到理想低通滤波器的冲激响应中,得到FIR滤波器的冲激响应。
具体计算过程如下:h(n) = w(n) * h_ideal(n)其中,w(n)为汉明窗:w(n) = 0.54 - 0.46 * cos(2πn/(N-1))h_ideal(n)为理想低通滤波器的冲激响应。
4.计算得到FIR滤波器的冲激响应序列。
五、实验总结:本次实验通过设计FIR滤波器,加深了对数字信号处理中滤波器原理的理解。
掌握了FIR滤波器的设计方法和调试技巧。
通过设计阶数为10的FIR滤波器,截止频率为800Hz,采样频率为1600Hz的实例,了解了窗函数法设计FIR滤波器的具体步骤,并得到了滤波器的冲激响应。
【备注】以上内容仅为参考,具体实验报告内容可能根据实际情况有所调整。
实验四FIR数字滤波器的设计
FIR(有限冲击响应)数字滤波器是一种常见的数字信号处理器件,
可以用于滤波、降噪等应用。
下面是一种FIR数字滤波器的设计流程:
1.确定滤波器的需求:首先确定需要滤除的频率范围和滤波的类型,
例如低通、高通、带通、带阻等等。
2.设计滤波器的频率响应:根据滤波器的需求,设计其理想的频率响应。
可以使用窗函数、最小二乘法等方法获得一个理想的滤波器响应。
3.确定滤波器的阶数:根据设计的频率响应,确定滤波器的阶数。
阶
数越高,滤波器的响应越陡峭,但计算复杂度也会增加。
4.确定滤波器的系数:根据滤波器的阶数和频率响应,计算滤波器的
系数。
可以使用频域窗函数或时域设计方法。
5.实现滤波器:根据计算得到的滤波器系数,实现滤波器的计算算法。
可以使用直接形式、级联形式、传输函数形式等。
6.评估滤波器的性能:使用所设计的FIR滤波器对输入信号进行滤波,评估其滤波效果。
可以使用频率响应曲线、幅频响应、群延时等指标进行
评估。
7.调整滤波器设计:根据实际的滤波效果,如果不满足需求,可以调
整滤波器的频率响应和阶数,重新计算滤波器系数,重新实现滤波器。
以上是FIR数字滤波器的基本设计流程,设计过程中需要考虑滤波器
的性能、计算复杂度、实际应用需求等因素。
一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。
其中,fir数字滤波器作为一种常见的数字滤波器类型,具有稳定性强、相位响应线性等特点,在数字信号处理领域得到了广泛的应用。
本文将基于matlab软件,探讨fir数字滤波器的设计原理、方法和实现过程,以期能够全面、系统地了解fir数字滤波器的设计流程。
二、fir数字滤波器的基本原理fir数字滤波器是一种有限长冲激响应(finite impulse response, FIR)的数字滤波器,其基本原理是利用线性相位特性的滤波器来实现对数字信号的筛选和处理。
fir数字滤波器的表达式为:$$y(n) = \sum_{k=0}^{M}h(k)x(n-k)$$其中,y(n)为输出信号,x(n)为输入信号,h(k)为滤波器的系数,M为滤波器的长度。
fir数字滤波器的频率响应特性由其系数h(k)决定,通过设计合适的系数,可以实现对不同频率成分的滤波效果。
三、fir数字滤波器的设计方法fir数字滤波器的设计方法主要包括窗函数法、频率抽样法、最小最大法等。
在matlab中,可以通过信号处理工具箱提供的fir1函数和firls函数等来实现fir数字滤波器的设计。
下面将分别介绍这两种设计方法的基本原理及实现步骤。
1. 窗函数法窗函数法是fir数字滤波器设计中最为常见的方法之一,其基本原理是通过对理想滤波器的频率响应进行窗函数加权来满足设计要求。
在matlab中,可以使用fir1函数实现fir数字滤波器的设计,其调用格式为:h = fir1(N, Wn, type)其中,N为滤波器的阶数,Wn为滤波器的截止频率,type为窗函数的类型。
通过调用fir1函数,可以灵活地设计出满足特定要求的fir数字滤波器。
2. 频率抽样法频率抽样法是fir数字滤波器设计中的另一种重要方法,其基本原理是在频域上对理想滤波器的频率响应进行抽样,并拟合出一个最优的滤波器。
FIR数字滤波器设计实验_完整版本实验旨在设计一种FIR数字滤波器,以滤除信号中的特定频率成分。
下面是完整的实验步骤:材料:-MATLAB或其他支持数字信号处理的软件-计算机-采集到的信号数据实验步骤:1.收集或生成需要滤波的信号数据。
可以使用外部传感器采集数据,或者在MATLAB中生成一个示波器信号。
2. 在MATLAB中打开一个新的脚本文件,并导入信号数据。
如果你是使用外部传感器采集数据,请将数据以.mat文件的形式保存,并将其导入到MATLAB中。
3.对信号进行预处理。
根据需要,你可以对信号进行滤波、降噪或其他预处理操作。
这可以确保信号数据在输入FIR滤波器之前处于最佳状态。
4.确定滤波器的设计规范。
根据信号的特性和要滤除的频率成分,确定FIR滤波器的设计规范,包括滤波器的阶数、截止频率等。
你可以使用MATLAB中的函数来帮助你计算滤波器参数。
5. 设计FIR滤波器。
使用MATLAB中的fir1函数或其他与你所使用的软件相对应的函数来设计满足你的规范条件的FIR滤波器。
你可以选择不同的窗函数(如矩形窗、汉宁窗等)来平衡滤波器的频域和时域性能。
6. 对信号进行滤波。
将设计好的FIR滤波器应用到信号上,以滤除特定的频率成分。
你可以使用MATLAB中的conv函数或其他相应函数来实现滤波操作。
7.分析滤波效果。
将滤波后的信号与原始信号进行比较,评估滤波效果。
你可以绘制时域图、频域图或其他特征图来分析滤波效果。
8.优化滤波器设计。
如果滤波效果不理想,你可以调整滤波器设计参数,重新设计滤波器,并重新对信号进行滤波。
这个过程可能需要多次迭代,直到达到最佳的滤波效果。
9.总结实验结果。
根据实验数据和分析结果,总结FIR滤波器设计的优点和缺点,以及可能的改进方向。
通过完成以上实验步骤,你将能够设计并应用FIR数字滤波器来滤除信号中的特定频率成分。
这对于许多信号处理应用都是非常重要的,如音频处理、图像处理和通信系统等。
FIR滤波器设计与实现一、FIR滤波器的设计原理y(n)=b0*x(n)+b1*x(n-1)+b2*x(n-2)+...+bM*x(n-M)其中,b0、b1、..、bM是滤波器的系数,M是滤波器的阶数。
在设计FIR滤波器时,需要确定滤波器的截止频率、滤波器类型(低通、高通、带通、带阻)以及滤波器的阶数。
通常情况下,滤波器的阶数越高,滤波器的性能越好,但计算复杂度也越高。
1.确定滤波器的截止频率和滤波器类型。
根据信号的频谱特性和滤波器的要求,确定滤波器的截止频率和滤波器类型。
2.确定滤波器的阶数。
根据滤波器的设计要求和计算资源的限制,确定滤波器的阶数。
3.计算滤波器的系数。
通过设计方法(如窗函数法、频率采样法、最优化法等),计算滤波器的系数。
4.实现滤波器。
根据计算得到的滤波器系数,使用差分方程或直接形式等方法实现FIR滤波器。
二、FIR滤波器的实现方法1.差分方程形式差分方程形式是FIR滤波器的一种常见实现方法,它基于差分方程对输入信号进行逐点计算。
根据滤波器的差分方程,可以使用循环结构对输入信号进行滤波。
2.直接形式直接形式是另一种常见的FIR滤波器实现方法,它基于滤波器的系数和输入信号的历史值对输出信号进行逐点计算。
直接形式的计算过程可表示为:y(n)=b0*x(n)+b1*x(n-1)+b2*x(n-2)+...+bM*x(n-M)其中,b0、b1、..、bM是滤波器的系数,x(n)、x(n-1)、..、x(n-M)是输入信号的历史值。
直接形式的优点是计算过程简单,缺点是计算量比较大,特别是当滤波器的阶数较高时。
除了差分方程形式和直接形式外,还有其他一些高级实现方法如离散余弦变换(DCT)和快速卷积等,它们能够进一步提高FIR滤波器的计算效率和性能。
总结:本文介绍了FIR滤波器的设计原理和实现方法。
FIR滤波器采用离散时间信号的卷积运算,通过确定截止频率、滤波器类型和阶数,计算滤波器系数,并使用差分方程或直接形式等方法实现滤波器。
fir数字滤波器设计流程英文回答:Designing a FIR (Finite Impulse Response) digitalfilter involves several steps. I will explain the processin detail below.1. Specify the filter requirements: The first step isto clearly define the desired characteristics of the filter. This includes the filter type (low-pass, high-pass, band-pass, or band-stop), cutoff frequencies, passband ripple, stopband attenuation, and any other relevant specifications.For example, let's say I want to design a low-pass FIR filter with a cutoff frequency of 1 kHz, a passband rippleof 0.1 dB, and a stopband attenuation of 60 dB.2. Choose a filter design method: There are various methods available for FIR filter design, such as windowing, frequency sampling, and least squares. The choice of methoddepends on the desired filter characteristics and design constraints.Continuing with our example, I decide to use the windowing method for simplicity.3. Select a window function: In windowing, a window function is applied to the ideal impulse response of the filter to obtain a finite-length impulse response. Commonly used window functions include Hamming, Hanning, and Blackman.In our case, I choose the Hamming window function.4. Determine the filter length: The length of thefilter determines the trade-off between frequencyresolution and time-domain performance. Longer filters provide better frequency resolution but require more computational resources.To determine the filter length, I use a formula that takes into account the desired cutoff frequency and thewindow function.5. Generate the ideal impulse response: Using the desired filter characteristics and the determined filter length, I generate the ideal impulse response of the filter. This is done by applying the appropriate mathematical equations or algorithms.In our example, I generate the ideal impulse responseof the low-pass filter.6. Apply the window function: The next step is to apply the selected window function to the ideal impulse response. This is done by multiplying the window function with the ideal impulse response.For our low-pass filter, I multiply the Hamming window function with the ideal impulse response.7. Normalize the filter coefficients: The filter coefficients are normalized to ensure that the filter response meets the desired specifications. This istypically done by dividing the coefficients by the sum of their absolute values.In our case, I normalize the filter coefficients to ensure the passband ripple and stopband attenuation are within the specified limits.8. Implement the filter: Finally, the designed filter can be implemented in hardware or software for signal processing applications. This involves programming thefilter coefficients into a digital signal processor (DSP) or using a software library for FIR filtering.In conclusion, the process of designing a FIR digital filter involves specifying the filter requirements, choosing a design method, selecting a window function, determining the filter length, generating the ideal impulse response, applying the window function, normalizing the filter coefficients, and implementing the filter.中文回答:设计一个有限脉冲响应(FIR)数字滤波器涉及多个步骤。
实验6FIR滤波器设计FIR (Finite Impulse Response)滤波器是一种数字滤波器,其输出信号仅取决于振荡器的输入以前的有限个值。
FIR滤波器设计的目的是通过调整滤波器的系数以实现所需的频率响应。
在FIR滤波器设计中,首先确定滤波器的类型和频率响应的规格。
常见的滤波器类型有低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
频率响应的规格由滤波器的截止频率、通带增益和阻带衰减等参数决定。
FIR滤波器的设计步骤如下:1.确定滤波器的类型和频率响应规格。
根据应用的需求,选择适当的滤波器类型和定义频率响应的参数。
2.确定滤波器的阶数。
阶数决定了滤波器的复杂度和性能。
一般而言,阶数越高,滤波器的性能越好,但计算复杂度也越高。
3.根据频率响应规格和系统设计的约束,选择一种滤波器设计方法。
常见的设计方法有窗函数法、频率采样法、最小均方误差法等。
4.设计滤波器的理想频率响应。
根据所选的设计方法,确定滤波器的理想频率响应。
这通常是一个分段线性函数,其中包括通带增益和阻带衰减。
5.将理想频率响应转换为时域的冲激响应。
这可以通过将理想频率响应进行反傅里叶变换来实现。
6.通过选择合适的窗函数,对冲激响应进行窗函数变换。
窗函数的选择是设计滤波器性能的重要因素。
7.通过窗函数变换得到滤波器的系数。
通过将窗函数变换应用于冲激响应,可以得到设计滤波器的系数。
这些系数确定了滤波器的时间响应和频率响应。
8.可选地,通过优化算法对滤波器的系数进行优化。
优化算法可以用来进一步改善滤波器的性能。
常用的优化算法包括加权最小二乘方法、梯度下降法等。
9.实现滤波器。
将设计好的滤波器系数应用于输入信号,得到滤波器输出。
可以使用编程语言或滤波器设计工具来实现滤波器。
10.验证滤波器的性能。
通过将滤波器应用于不同的输入信号,检验滤波器输出是否符合设计要求。
可以使用频谱分析工具和滤波器性能评估指标来评估滤波器的性能。
FIR滤波器设计是数字信号处理中重要的课题之一、设计一个性能良好的FIR滤波器需要对滤波器原理和设计方法有深入的了解,以及熟练的使用滤波器设计工具和编程工具。
DSP的FIR设计低通滤波C语言编写FIR(有限脉冲响应)滤波器是一种常用的数字滤波器,用于数字信号处理中的滤波操作。
FIR滤波器的设计通常包括两个主要步骤:滤波器的规格化和滤波器系数的计算。
滤波器的规格化是指确定滤波器的采样频率,截止频率以及陷波增益等参数。
在设计低通FIR滤波器时,我们需要确定滤波器的截止频率。
假设我们希望设计一个截止频率为Fs/4的低通FIR滤波器,其中Fs是采样频率。
根据滤波器设计的基本原理,我们可以得到滤波器的频率响应公式为:H(k) = (2 * Fs/4 * sin(2 * pi * Fs/4 * k))/(pi * k)其中,k是从0到N-1的整数序列,N是滤波器的长度。
经过频域设计,我们可以通过计算滤波器的频率响应公式来获得滤波器的系数。
接下来,我们将使用C语言编写一个低通FIR滤波器的代码示例。
在这个示例中,我们将实现一个截止频率为Fs/4的低通FIR滤波器,采样频率为Fs。
代码如下:```c#include <stdio.h>#include <stdlib.h>#include <math.h>//定义滤波器的长度#define N 51//定义采样频率//定义滤波器的截止频率#define Fc (Fs/4)//计算滤波器的系数void calculateCoefficients(float* coefficients)float sum = 0;for (int k = 0; k < N; k++)if (k == N/2)coefficients[k] = 2 * Fc/Fs;} elsecoefficients[k] = (sin(2.0 * M_PI * Fc * (k - N/2) / Fs)) / (M_PI * (k - N/2));}sum += coefficients[k];}//归一化滤波器的系数for (int k = 0; k < N; k++)coefficients[k] /= sum;}//应用滤波器void applyFilter(float* input, float* output, float* coefficients, int length)for (int n = 0; n < length; n++)output[n] = 0;for (int k = 0; k < N; k++)if (n - k >= 0)output[n] += input[n - k] * coefficients[k];}}}int mai//定义输入信号和输出信号的长度int length = 100;//为输入信号和输出信号分配内存空间float* input = (float*)malloc(length*sizeof(float));float* output = (float*)malloc(length*sizeof(float));//为滤波器的系数分配内存空间float* coefficients = (float*)malloc(N*sizeof(float));//生成输入信号for (int n = 0; n < length; n++)input[n] = sin(2.0 * M_PI * 1000 * n / Fs);}//计算滤波器的系数calculateCoefficients(coefficients);//应用滤波器applyFilter(input, output, coefficients, length); //打印输出信号for (int n = 0; n < length; n++)printf("%f\n", output[n]);}//释放内存空间free(input);free(output);free(coefficients);return 0;```在上面的代码示例中,我们首先定义了滤波器的长度、采样频率以及截止频率。
FIR数字滤波器的设计
FIR(有限冲激响应)数字滤波器的设计主要包括以下几个步骤:
1.确定滤波器的要求:根据应用需求确定滤波器的类型(如低通、高通、带通、带阻等)和滤波器的频率特性要求(如截止频率、通带波动、阻带衰减等)。
2.确定滤波器的长度:根据频率特性要求和滤波器类型,确定滤波器的长度(即冲激响应的系数个数)。
长度通常根据滤波器的截止频率和阻带宽度来决定。
3.设计滤波器的冲激响应:使用一种滤波器设计方法(如窗函数法、频率抽样法、最小二乘法等),根据滤波器的长度和频率特性要求,设计出滤波器的冲激响应。
4.计算滤波器的频率响应:将设计得到的滤波器的冲激响应进行傅里叶变换,得到滤波器的频率响应。
可以使用FFT算法来进行计算。
5.优化滤波器的性能:根据频率响应的实际情况,对滤波器的冲激响应进行优化,可以通过调整滤波器的系数或使用优化算法来实现。
6.实现滤波器:将设计得到的滤波器的冲激响应转化为差分方程或直接形式,并使用数字信号处理器(DSP)或其他硬件进行实现。
7.验证滤波器的性能:使用测试信号输入滤波器,检查输出信号是否满足设计要求,并对滤波器的性能进行验证和调整。
以上是FIR数字滤波器的一般设计步骤,具体的设计方法和步骤可能因应用需求和设计工具的不同而有所差异。
在实际设计中,还需要考虑滤波器的实时性、计算复杂度和存储资源等方面的限制。
FIR滤波器程序设计中文摘要21世纪是数字化的时代,随着信息处理技术的飞速发展,DSP(数字信号处理器)技术逐渐发展成为一门主流技术,它在电子信息、通信、软件无线电、自动控制、仪表技术、信息家电等高科技领域得到了越来越广泛的应用。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛,工程上常用它来做信号处理、数据传送和抑制干扰等。
同时DSP的出现和迅速发展也促进了数字滤波器的发展,并为数字滤波器的硬件实现提供了更多的选择。
本课题主要应用MATLAB软件设计FIR数字滤波器,并对所设计的滤波器进行仿真;应用DSP集成开发环境—CCS调试汇编程序,用TMS320C5402来实现了FIR数字滤波。
具体工作包括:对FIR数字滤波器的基本理论进行了分析和探讨;采用MATLAB软件来学习数字滤波器的基本知识,计算数字滤波器的系数,研究算法的可行性,对FIR低通数字滤波器进行前期的设计和仿真;系统介绍了TI公司TMS320C54x系列数字信号处理器的硬件结构、性能特点和DSP的集成开发环境CCS;应用DSP集成开发环境—CCS调试汇编程序,用TMS320C5402来实现了FIR数字滤波。
关键词:频率抽样,FIR滤波器,Matlab,TMS320C5402,CCS,仿真FIR滤波器程序设计1设计任务和目的1.1设计题目FIR滤波器程序设计1.2设计目的1)掌握DSP编程的过程和指令的使用;2)熟悉运用CCS集成开发环境进行仿真和TMS320C5402的基本功能和使用方法;3)熟悉FIR滤波器的实现方法和设计过程。
2设计思路DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器。
由于它由具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统。
数字滤波器的设计可分为5个独立的阶段:滤波器技术规范、系数计算、实现结构、误差分析和滤波器实现。
滤波器技术规范与应用有关,且应该包括振幅和相位特性的规范。
系数计算本质上就是求出满足所期望的规范的h(n)值。
计算FIR滤波器系数最常用的方法有三种:窗口方法,频率抽样方法,最佳方法。
窗口方法是最容易的,但是缺乏灵活性,特别是当通带波纹和阻带波纹不同时更是如此。
频率抽样方法非常适合FIR滤波器的递归实现,频率抽样法也适合那些除了要求标准频率选择性滤波器(低通、高通、带通和带阻)之外的滤波器。
最佳方法是最高效和灵活的一种设计方法。
三中最常用的FIR滤波器结构是横向结构、频率抽样结构和快速卷积结构。
横向结构包含一个使用滤波器系数的直接卷积;频率抽样结构直接同系数计算的频率抽样方法相联系。
结构的选择与具体的应用有关。
此处选择横向结构。
长字长的或者高阻带衰减的FIR滤波器的性能可能会受到有限字长的影响。
例如,系数量化后他们的频率响应可能会发生变化。
因而应当对这些滤波器的特性进行检查以确保允许的合适的字长。
在完成好前四步后,通常要考虑实现问题,以及考虑软件编程或选择结构的硬件实现。
而我们主要考虑软件的实现过程。
3 FIR滤波器设计步骤流程图图2-1 FIR滤波器设计步骤流程图FIR滤波器程序设计4软件流程图图4-1 qgf.asm程序流程5设计部分5.1硬件的整体设计和规划CPU选择TI公司的16位定点DSP,具体型号为TMS320C5402是为实现低功耗、高性能而专门设计的定点DSP芯片,其主要应用时无限通信系统等。
TMS320C5x的主要特点包括:运算速度快,内部有一个算术逻辑单元,2个累加器、2个加法器、1个乘法器、1个桶形移位器、4条内部总线和2个地址产生器。
内部还集成了维特比加速器,用于提高维特比编译码的速度。
它是低功耗方式,可以在3.3V或2.7V电压下工作,3个低功耗方式可以节省DSP的功耗,TMS320C5402特别适合于无线移动设备。
5.2 FIR滤波器的特点数字滤波器是由一系列滤波器系数定义的方程。
这些方程构成数字滤波程序部分,滤波程序接收原始数据,并且输出滤波后的数据。
这种程序的最大优点在于滤波器的再设计不需要硬件方面的更改,只要简单地改变滤波器的系数表即可完成滤波器特性的修改。
数字滤波程序可在任何处理器上实现,但最有效的是在专门设计用来进行高速滤波或其他DSP处理的硬件上实现。
DSP硬件可使非常复杂的任务在极短的时间内完成,因此它经常作为大计算量的系统核心。
DSP具的有较大灵活性,可以进行编程或再编程来执行许多功能而不需要修改硬件,这或许是DSP系统最主要的特征,同时拥有优良的性能,DSP可以执行许多模拟系统不可能完成的性能,例如可以实现线性相位响应,复杂的自适应滤波算法可以利用DSP技术来实现。
5.2 FIR滤波器的结构选择首先对其结构进行选择,结构的选择取决于多种因素和折中考虑,其中包含实现的容易程度,也就是软件和硬件的复杂度,求冲击响应或传递函数系数的难易程度,以及它们对系数量化的相对敏感度。
在实际中,系数描述的精度受限于所用处理器的字长。
使用有限的位数来表示描述每个系数趋向于将零从期望的位置移出,这会导致频率响应上的偏差。
响应中偏差的大小取决于位数和所用的结构。
横向结构非常易于编程,且可由大多数DSP芯片有效的实现,因为这些芯片有针对横向FIR滤波器的指令。
直接构造是实现非递归滤波器的最常用方法,它的最主要的优点是其简单性,要求的器件最少,且数据的存储不复杂。
串联结构对系统误差和量化噪声不敏感,但是系数值需要做更大的努力才能求出,且程序设计不适合DSP芯片的结构。
快速卷积结构能提供出比他方法更好的计算优势,但需要有效的FFT。
对于窄带频率选择滤波器来说,频率抽样结构比等价的横向结构计算更有效,在此滤波器中,仅有相对少量的频率抽样值不为零,因此每输出一个值仅需非常少的乘法。
然而,频率抽样结构可能要求更为复杂的编程,因为在其差分方程中固有的对数据的复杂索引。
为了避免稳定问题,频率抽样结构的零点和极点应该位于单位圆稍内一点。
当要求FIR滤波器递归实现时,这种结构是一种自然的选择。
这种结构易于模块化,并有利于并行处理。
总之,除非规范要求采用频率抽样结构,或者需要计算数据的谱采用快速卷积,那么采用横向结构不失为一个好的选择。
采用横向结构,对于这种结构,滤波器的输入x(n)与输出y(n)之间的关系如下:FIR 滤波器程序设计下面两个公式刻画出基本的FIR 滤波器1()()()N i y n h i x n i -==-∑(5-1) 对式(4-1)进行Z 变换,整理后可以得到FIR 滤波器的传递函数为:110()()()()N i Y z H z h i z X z --===∑(5-2)图5-1所示是FIR 滤波器的一般结构。
图5-1 FIR 滤波器结构图式中h(i)(i=0,1,…,N-1),是滤波器的冲击响应系数。
符号1z -代表一个抽样延迟或单位时间延迟。
对于横向结构,每一个输出抽样值y(n)的计算要求:N-1个存储位置来保存N-1个输入抽样值;N 个存储位置来保存N 个系数;N 个乘法器;N-1个加法器。
H(z)是滤波器的传递函数,N 是滤波器长度,即滤波器系数的数目。
式(5-1)是FIR 时域差分方程,它使用非递归形式描述了FIR 滤波器:当前输出信号y(n)只是过去和当前的输入值x(n)的函数。
那么做x(n-1)到x(n-N)的加权和。
当FIR 滤波器利用这种形式实现时,即直接根据(5-1)式进行计算,那么滤波器总是稳定的。
式(5-2)是滤波器的传递函数,它提供了分析滤波器的一种方法,例如评估频率响应。
FIR 滤波算法实际上是一种乘法累加运算。
它不断输入样本,经延时1z -,作乘法累加,再输出滤波结果y(n)。
系统的单位冲激响应h(n)在有限个n 值处不为零; 系统函数H(z)在|z|>0处收敛,在|z|>0处只有零点,有限z平面只有零点,而全部极点都在z=0处。
、结构主要是非递归结构,FIR 滤波器最主要的特点是没有反馈回路,因此它是无条件稳定系统。
它的单位脉冲响应h(n)是一个有限长序列,脉冲响应顾名思义,滤波器的脉冲响应就是滤波器对脉冲输入的响应;换句话讲,当滤波器的输入为单位脉冲时,滤波器的输出就是单位脉冲响应。
脉冲响应反映了滤波器的基本特性,由于所有的数字信号可以由脉冲函数构成,所以脉冲响应可用来求各种输入时的输出。
如果h(n)是实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则滤波器具有线性相位特性的充要条件。
对于非递归FIR 滤波器,系数的存储空间和算术运算次数几乎减少了2倍,对于递归滤波器系数转变为简单整数,提高了处理速度。
在线性相位滤波器中,所有频率分量通过滤波器时会遇到同样大小的延迟,即没有相位失真。
5.3 FIR 滤波器的延迟用线性缓冲区法实现在这里用线性缓冲区法实现1z - ,它的优点是新老数据在存储器中存放的位置直接明了,算法便于理解,以幅度特性随意设计的同时,保证精确、严格的线性相位,由于FIR 滤波器的单位脉冲响应h(n)是有限长序列,因此FIR 滤波器没有不稳定问题,FIR 滤波器一般为非递归结构,因此在有限精度运算下,不会出现递归型结构中的极限震荡等不稳定现象,误差较小,可以用FFT 实现过滤信号,可大大提高运算效率。
其特点是:对于N 级的FIR 滤波器,在数据存储区中开辟一个称之为滑窗的N 个单元的缓冲区,存放最新的N 个输入样本。
从最老的样本开始,每读一个样本后,将此样本向下移位。
读完最后一个样本后,输入最新样本至缓冲区的顶部。
以上过程,可以用N=6的线性缓冲区存储器图来说明,如图5-2所示。
图中线性缓冲区顶部是存储器的低地址单元,底部为高地址单元。
参看图5-2(a),当第一次执行50()()()i y n h i x n i ==-∑ 时,由ARx 指向线性缓冲区的底部,并开始取数、运算。
每次乘法累加运算之后,还要将该数据向下(高地址)移位。
求得y(n)以后,从I/O 口输入一个新数据x(n+1)至线性缓冲区的顶部单元,再将ARx 指向底部单元,开始第二次执行50(1)()()i y n h i x n i =+=-∑ ,如图5-2(b)所示。
之后,再计算y(n+2)……依次循环下去。
FIR滤波器程序设计图5-2 N=6的线性缓冲区存储器图5.4 误差问题因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应。
所产生的误差主要包括:系数量化引起的误差以及运算过程中的舍入误差,还有溢出误差。
任何一种近似方法得到得滤波器系数通常精确到小数点的几位。