|
C24X 滤波器函式库(FFT) :SPRC072
数字滤波器在数字信号处理系统中是个相当普遍的配备。大略可分成两种不同的数字滤波器: 有限脉冲响应(finite impulse response, FIR)与无限脉冲响应(infinite impulse response, IIR)滤波器。这两种滤波器都包含在我们的滤波器数据库中。
FIR滤波器需要延迟线(delay line)来作已输入资料的缓冲。现在有两种方法来达成,那就是线性缓冲器与循环缓冲器。您可以下达指令DMOV,来激活线性缓冲延迟线的功能,他还需要设定一个缓冲器在内部DARAM区(B0,B1和B2区)中。 循环缓冲延迟线的功能,可藉由字符反转寻址技术来达成,他还需要适当的缓冲器校准。我们同时提供您一般型,以及固定级数型的FIR滤波器。一般型的FIR滤波器模块以循环指令的型式运作,而固定级数型FIR滤波器则以开回圈的型式运作。因此,一般型的FIR滤波器执行的时间比固定级数型FIR滤波器要长。 我们准备了一套ezFIR滤波器设计套件(MATLAB指令文件),能以互动的方式针对指定的频率响应特性,产生所需的滤波器参数。
IIR滤波器的串结(cascade)组态采用直接型第二式(direct form II)二阶区段(second order section, SOS)架构。这样可以减少对参数量化的敏感度。SOS架构通常属于四次方程式。利用MATLAB给定滤波特性后,即可产生所需的SOS参数值。这些参数可以在带通区产生单位增益,并衰减掉其它频带的部分。虽然输入到输出的增益不会有超过1的情形,在四阶方程式中的中间点增益会因为滤波器的特性不同而受到很大的影响。因此我们准备了一套ezFIR滤波器设计套件(MATLAB指令文件),可以产生经过调整不会发生中间点增益溢位(overflow)的二阶参数值。以下的表格总结了这个数据库中包含的各个模块。
|
模块名称 |
说明 |
|
FIRFILT_GEN |
使用线性缓冲器的一般型FIR滤波器 (循环式指令) |
|
FIRFILT_ORD10 |
使用线性缓冲器的10阶FIR滤波器 |
|
FIRFILT_ORD20 |
使用线性缓冲器的20阶FIR滤波器 |
|
FIRFILT_CGEN |
使用循环式缓冲器的一般型FIR滤波器(循环式指令) |
|
FIRFILT_CORD10 |
使用循环式缓冲器的10阶FIR滤波器 |
|
FIRFILT_CORD20 |
使用循环式缓冲器的20阶FIR滤波器 |
|
IIRBIQ16 |
串结式IIR滤波器(16-bit 延迟缓冲器) |
|
IIRBIQ32 |
串结式IIR滤波器(32-bit 延迟缓冲器) |
注意:
- 有关滤波器模块的文件都以zip檔收藏,相关的pdf档则可以从以下的档案夹c:\tidcs\c24\dsp_tbox\filter\doc 中找到。
- 要使用软件测试台(Software Test Bench ,STB) 的范例,请务必下载STB支持数据库。
软件测试台:
相关的模块都作成软件测试台的型式,以方便您来评估与调用。软件测试台能够以程序代码编译器的项目形式,在现有的EVM跟eZdsp硬件平台上使用。 每一个STB都对应到一个特定的软件模块,指导使用者如何做呼叫,传送变量与数据给模块,以及如何和主系统作连结。在条件允许的状况下,供测试的模块也可以与其它模块一起运作,例如与可提供输入触发的信号产生器作联结等。甚至是与资料纪录(data-logging)模块或EVM-DAC驱动器连结,以观察受测模块对实时环境的反应。这样可以帮助您更真切地体会软件模块的功能以及其可使用性。 运用STB的概念可以简单明了地展示FFT模块的操作。模拟输入信号被一个ADC以20kHz的速度作取样,取样后转出的数据再喂给滤波器模块。滤波器的输入以及滤过的输出将会被纪录,送给EVMDAC与PWMDAC。如此一来,您就可以马上试着简单地调整输入信号的频率,观察其输出的频率响应,来评估滤波器模块的功能。
特性:
- 完整的参考文件(压缩成zip檔的PDF檔,您可以自行下载解压缩)
- 可呼叫"C"语言程序的汇编语言接口,直接ASM接口,对象导向,可重复加载,可多次呼叫的模块。每个模块都有各自的软件测试台(STB), 可提供快速且简单的"自我控制"评估。 STB架构被设计成程序代码编译器(CCS)项目(Project)的形式。
- ezFIR 设计指令文件(MATLAB)可以产生FIR滤波器的滤波参数值。
- ezIIR 滤波器设计指令文件(MATLAB)可以产生IIR滤波器的参数值。
|