AD9361 FIR 滤波器设计

通过MATLAB,使用AD9361 Filter Design Wizard App设计Tx/Rx FIR滤波器,生成的.fir文件可以在 AD936x 配置软件(AD936x Evaluation Software) 2.5节 ,采用自定义Rx/Tx FIR 系数文件时使用

得到的.c文件可以用在 **AD9361 ADI官方例程( No-OS ) (未完成 )**中 ,在SW部分通过ad9361_set_rx_fir_config和ad9361_set_tx_fir_config 函数配置FIR

参考资料

1. AD9361的MATLAB滤波器设计向导

2. AD9361 No-OS Software


一、安装

下载地址AD9361 Filter Design Wizard App
在这里插入图片描述
该地址有MATLAB App安装程序(mlappinstall)和 压缩文件(zip或tarball)可以使用

该mlappinstall文件和平时安装 MATLAB APP 一样,安好后如下图所示,可以在MATLAB中的APP中打开
在这里插入图片描述
或者将.zip文件解压后,在MATLAB命令行运行命令“ AD9361_Filter_Wizard”
在这里插入图片描述

二、使用说明

在这里插入图片描述

2.1 Device Settings

我们可以自定义配置FIR滤波器,或者如果自己的需求和一些常规LTE应用配置类似,可以直接采用自带的LTE默认参数配置文件。

Store Filter Settings :可以将自己喜欢的参数设置保存起来,以后使用时所有参数将自动填充,不需要重新配置

Data :30.72 MHz 采样率

Clock 和 PLL:ADC、DAC时钟和PLL。根据数据采样率、滤波器的内插和抽取因子,可以确定ADC_CLK,进而确定DAC_CLK和PLL。可以与 AD936x 配置软件介绍 上 2.4 采样率与带宽相互学习,加深理解。

  • DAC_CLK可以设置为ADC_CLK,也可以设置为ADC_CLK/2。
  • PLL Div :PLL = PLL Div * ADC_CLK

2.2 magnitude specification 幅度 和frequency specifications 频率

在这里插入图片描述

Apass :通带平坦度(通带衰减) 0.1dB

Astop :阻带衰减 80dB

Fpass :通带边界频率 9 MHz

Fstop :阻带边界频率 11 MHz

2.3 AD936x Decimation/Interpolation Rate 内插/抽取 速率

FIR : Rx/Tx FIR 滤波器 抽取或内插因子

HBs : 半带滤波器 抽取或内插因子

2.4 生成滤波器

这些参数都设计好后,点击 Filter Design 中的 Design Filter设计滤波器 ,设计完成后,可以在GUI的上半部分看到滤波器的幅度谱,其中指定的Fpass、Fstop、Apass和Astop参数在图中突出以红线显示。

  • 横轴是0到数据速率的一半。

在幅度谱下方的右侧,是“ Filter Results”部分,显示了实际的Apass,Astop,FIR抽头数和通带组延迟方差。从 Filter Results 可以看出,设计的该滤波器是否满足需求。

如果想知道滤波器的更多细节,可以点击“ FVTool to 15.36”或“FVTool ConverterRate/2”按钮,启动MathWorks提供的“滤波器可视化工具”(fvtool)。 APP在两个不同的频率范围内提供此工具:一个是从0 Hz到数据速率的一半“ FVTool to 15.36”,另一个是从0 Hz到转换器(A/D或D/A)速率的一半“ FVTool ConverterRate/2”。

2.4.1 FVTool to half of the data rate

如果主要对通带感兴趣,可以选“ FVTool to 15.36”按钮,可以看到以下三幅图:1)FIR滤波器的幅值响应 2)Analog+HB +设计的FIR滤波器的幅值响应 3)Group delay

除了幅值响应外,还可以使用左上角的工具栏(红色框内)查看其他响应,包括相位响应、群时延响应、脉冲响应、阶跃响应、极点/零点等。
1)FIR滤波器的幅值响应 。
在这里插入图片描述

2)Analog+HB +设计的FIR滤波器的幅值响应
在这里插入图片描述
3)Group delay,已计算出群时延方差并在图中标出
在这里插入图片描述

2.4.2 FVTool ConverterRate/2

如果对整个频段感兴趣,可以选“FVTool ConverterRate/2”按钮,可以看到Analog+HB +设计的FIR滤波器的幅值响应
在这里插入图片描述

2.5 高级功能

在这里插入图片描述

如上图绿框所示,勾选Advanced后,APP提供了更多的高级选项。

Phase Equalization (相位均衡) :如果想让FIR滤波器进行相位均衡,可以勾选“相位均衡”选项。相位均衡的主要目的是减少由模拟滤波器、数字滤波器和FIR滤波器带来的通带群时延方差,以便对于不同频率的信号,它们在通过滤波器链时将延迟几乎相同的时间。
在这里插入图片描述

勾选Phase Equalization后,重新点击Design Filter,APP将执行FIR设计文件的相位均衡部分,从而得到更新的FIR滤波器设计。进行相位均衡后的 group delay如上图所示, 通过相位均衡 group delay variance 从6.3163ns 降到了 0.204695ns

  • 由于相位均衡时APP会试图找到一个最优的 target delay(产生最小群时延方差),相位均衡过程可能要花费几分钟。
  • 设计过程完成后,“Filter Options”部分会显示一个更新的Target delay (相位均衡之前该数字为0)
    在这里插入图片描述

Astop (FIR) :它指定了FIR的衰减(不是复合响应),对应于设计文件中的“dBstop_FIR”输入。大多数情况下不需要此参数,可以将其保留为0。如果确实需要使用它,直接在那里输入所需参数。

Fcutoff (Analog) :它指定了模拟巴特沃斯滤波器的截止频率。默认情况下,此参数由APP根据输入的Fpass和Fstop来计算,可以将计算结果保持原样。如果确实想使用它,可以直接输入所需参数。

HB1/HB2/HB3 :半带滤波器的内插或抽取因子

Use Internal FIR :某些情况下由于功耗的限制,可能不便使用AD936x上的FIR滤波器,而希望在FPGA上实现FIR滤波器,该APP也可以满足此要求。如果决定不使用AD936x 的FIR,不勾选“ Use Internal FIR”选项,如下图所示,然后点击“ Design Filter”。
在这里插入图片描述

  • 不使用AD936x上的FIR滤波器时,FIR抽头的数量不再受任何限制,FIR将进行最小阶数设计。比较上图结果部分中的FIR抽头,如果不使用AD936x 内部的 FIR,抽头从128降低到108。

Generate HDL :不使用AD936x上的FIR滤波器时,当设计好FPGA使用的FIR后,会新增Generate HDL选项,APP可以生成HDL代码,点击“Generate HDL”,将调用“ fdhdltool”功能,弹出 Generate HDL对话框,如下图所示。配置好后点击“Generate”,生成HDL。

  • 具体HDL生成方式的选项后续设计 脉冲成型滤波器(未完成) 中讲解。
    在这里插入图片描述

三、保存和应用

如果APP生成的FIR滤波器符合需求,可以通过以下几种方式保存设计好的FIR滤波器。
在这里插入图片描述

3.1 Save to Workspace

将对象保存到工作区,后续可以将设计的滤波器链与其他一些MATLAB函数或Simulink模型一起使用,通过“Save to Workspace”按钮将其保存在工作区中。保存好且退出APP后,在MATLAB工作区可以找到名为“ AD9361_Tx_Filter_object”或“ AD9361_Rx_Filter_object”的mfilt.cascade对象。

3.2 Coefficients to ftr File

将系数保存为ftr文件,可以在IIO示波器中使用此设计的FIR滤波器,通过“Coefficients to ftr File”按钮来保存FIR系数。需要先设计好Tx FIR 和 Rx FIR,然后才能使用该按钮,如果只设计了Rx FIR或Tx FIR ,此按钮是灰色,不能使用。
在这里插入图片描述

上图红色框中的含义一会在生成 .c 文件中讲解,红色框部分的内容可以替换成下述内容

Tx Filter,Rx Filter
GAIN=0,GAIN=2

在这里插入图片描述
得到的fir文件可以在 AD936x 配置软件(AD936x Evaluation Software) 2.5节 采用自定义RxFIR 系数文件时使用。

3.3 Coefficients to c File

保存为c文件,得到两个配置函数,文件具体内容如下,可以在 ADI 给的AD9361官方例程( No-OS )中,通过ad9361_set_rx_fir_config和ad9361_set_tx_fir_config 函数配置FIR。

在这里插入图片描述
将 AD9361 Filter Design Wizard 生成的两个函数,替换到官方例程给出的配置滤波器函数(如下图所示)
在这里插入图片描述
进而可以通过zynq中的arm将滤波器系数写到AD9361中


下面讲解一下APP生成的函数各部分含义,Tx类似
AD9361_RXFIRConfig rx_fir_config = {
	3, // rx
	-6, // rx_gain
	2, // rx_dec
	{-12,-15,-22,-8,9,28,24,1,-28,-31,-2,42,57,21,-43,-76,-38,50,109,73,-44,-138,-111,36,177,169,-10,-210,-235,-26,247,321,86,-273,-419,-167,294,538,283,-297,-673,-434,280,832,641,-228,-1016,-916,130,1239,1302,48,-1522,-1873,-362,1926,2834,986,-2643,-4912,-2652,4728,14235,20875,20875,14235,4728,-2652,-4912,-2643,986,2834,1926,-362,-1873,-1522,48,1302,1239,130,-916,-1016,-228,641,832,280,-434,-673,-297,283,538,294,-167,-419,-273,86,321,247,-26,-235,-210,-10,169,177,36,-111,-138,-44,73,109,50,-38,-76,-43,21,57,42,-2,-31,-28,1,24,28,9,-8,-22,-15,-12}, // rx_coef[128]
	128, // rx_coef_size
	{983040000,491520000,245760000,122880000,61440000,30720000}, // rx_path_clks[6]
	25820686 // rx_bandwidth
};

rx : 可以为 1、2或3,1 配置Rx1通道滤波器 ,2 配置Rx2通道滤波器,3 配置Rx1和Rx2通道滤波器

rx_gain :Rx FIR具有−12 dB,−6 dB, 0 dB,或+6 dB的可编程增益

rx_dec : Rx FIR 滤波器抽取系数,1,2,4 可选

rx_coef[128] : 滤波器系数

rx_coef_size : 抽头数

rx_path_clks[6] : 接收路径时钟,依次为 PLL、HB3(ADC)、HB2、HB1、FIR、Data 速率

rx_bandwidth : Rx 带宽 ,与模拟LPF有关

  • 16
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
STM32 AD FIR滤波是指在STM32系列微控制器中通过模拟数字转换器(AD)和有限脉冲响应(FIR滤波器来实现信号处理。 首先,STM32系列微控制器内置了高性能的模拟数字转换器(ADC),可将模拟信号转换为数字信号。然后,通过FIR滤波器对这些数字信号进行处理。 有限脉冲响应(FIR滤波器是一种常见的数字滤波器,其特点是滤波器的响应仅对有限长的输入信号产生影响。这使得FIR滤波器非常适合嵌入式系统中。 在STM32系列微控制器中,AD FIR滤波通常用于对模拟信号进行预处理,以去除噪声、滤除不需要的频率成分和平滑信号。这对许多应用场景非常重要,例如音频处理、通信、传感器数据处理等。 为了实现AD FIR滤波,首先需要配置微控制器的ADC模块,设置采样率、分辨率和参考电压等参数,以确保有效地转换模拟信号为数字数据。然后,使用FIR滤波器算法,设置滤波器的系数和滤波器长度。 通过将ADC模块和FIR滤波器结合起来,可以实现对模拟信号的实时滤波处理。STM32系列微控制器的硬件加速功能可以提高滤波器的运算效率,确保在实时应用中能够快速响应和处理信号。 总之,STM32 AD FIR滤波通过结合内置的模拟数字转换器和有限脉冲响应滤波器,提供了一种高效信号处理的解决方案。它广泛应用于各种嵌入式系统中,提供了滤波、特征提取和数据预处理等功能,为各种应用领域带来了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值