作者:Jens Sorensen, Shane O’Meara, and Dara O’Sullivan
这是由两部分组成的系列中的第 2 部分。第1部分讨论了在电机控制应用中使用sinc滤波器解调Σ-Δ编码数据。阐述了同步sinc滤波器脉冲响应对脉宽调制(PWM)的重要性,并提出了同步策略;但是,同步方案使得难以正确配置系统。
在本系列的第2部分中,提出了一种针对同步优化的新型sinc滤波器结构。该滤波器可提高需要对反馈链进行严格定时控制的应用中的测量性能。然后,第 2 部分继续讨论使用 HDL 代码实现 sinc滤波器,以及如何针对 FPGA 实现优化滤波器。最后,介绍了在基于FPGA的三相伺服驱动器上进行的测量。
针对同步优化的 Sinc 滤波器
如第1部分所述,通过将sinc滤波器脉冲响应与PWM正确对齐,可以实现无混叠Σ-Δ测量。虽然该方法很简单,但很难(在许多情况下甚至不可能)找到提供所需结果的系统配置。为了说明这一点,假设sinc滤波器和PWM模块共享一个以f f运行的公共系统时钟源。.sys.调制器时钟,f麦克利克,然后由公式1确定。
其中 D麦克利克是调制器时钟的时钟分频器。类似地,PWM频率f。普瓦姆,由公式 2 确定。
其中 D脉宽调制是确定PWM频率的时钟分频器。最后,sinc滤波器的抽取率(数据速率)由公式3给出。
其中 D12 月是抽取时钟的时钟分频器。为了避免脉冲响应和PWM周期之间的漂移,PWM周期内必须有一个整数个抽取周期:
其中 N 是整数。通过组合等式2、等式3和等式4:
显然,只有有限的时钟缩放器选择,Dx,满足公式 5。此外,大多数情况下,时钟缩放器的选择方式有严格的限制。例如,系统可能需要以特定的PWM频率(例如,10 kHz)运行或使用特定的调制器时钟(例如,20 MHz)。另一个复杂因素是选择调制器时钟时的选项数量有限。例如,如果 f.sys为 100 MHz,是 D 唯一合理的选择麦克利克落在 5 到 10 的有限整数范围内(20 MHz 低至 10 MHz)。
鉴于所有这些限制,很难(如果不是不可能的话)找到在脉冲响应和PWM之间提供所需对齐的时钟刻度。通常的情况是,用户被迫选择满足公式5的时钟缩放器,而不是选择产生所需PWM频率、调制器时钟和信噪比(SNR)的时钟刻度。此外,如果其中一个频率随时间变化,则无法找到有效的配置。这在多轴系统中很常见,其中单个运动控制器同步网络中的多个电机控制器。
虽然对准方案提供了出色的测量性能,但它可能被证明是不切实际的。在下一节中,将介绍一种新型的sinc滤波器。该滤波器提供最佳的测量性能,同时允许用户独立选择所有时钟分频器。
冲洗 Sinc 过滤器
传统的三阶sinc滤波器如图1所示。滤波器通过调整系统时钟来生成ADC的调制器时钟,作为回报,ADC产生到滤波器的1位数据流。滤波器功能本身由三个级联积分器组成,1/(1 – z–1),时钟速率与调制器和三个级联微分器相同,1 – z–1,在抽取的时钟上计时。
图1.传统的三阶sinc滤波器。
sinc滤波器和ADC通过连续向两者施加时钟来工作。因此,滤波器以抽取时钟确定的固定速率连续输出数据。滤波器的数据速率通常高于电机控制算法的更新速率,因此许多滤波器输出被抑制。只有当脉冲响应以理想测量为中心时,输出才会被捕获并用作反馈。
使用空间矢量调制时,相电流在每个PWM周期中仅取其平均值两次。在此之后,每个PWM周期只有两个可能的无混叠sinc数据输出,因此无需让滤波器连续运行。实际上,仅在需要反馈时才启用测量,然后在所有其他时间禁用测量就足够了。换言之,测量工作在开关模式下,与传统ADC没有什么不同。
开关工作模式的一个问题是调制器和滤波器时钟来自同一系统时钟。这意味着滤波器和ADC都以开关模式工作,不建议这样做,因为这会导致性能降低。原因是ADC中的调制器是具有一定建立时间和阻尼的高阶系统。因此,当首次向ADC施加时钟时,调制器需要建立,然后才能信任输出比特流。为了解决这些问题,提出了一种新的滤波器结构(见图2)。
图2.Sinc滤波器设计用于开关操作和所有状态的冲洗。
作为标准sinc滤波器,该内核由三个级联积分器和三个级联微分器组成。但是,该滤波器具有允许新操作模式的几个功能。首先,滤波器具有新的时钟发生器功能,可将调制器时钟与积分器时钟分开。这样就可以连续为ADC提供时钟,但只能在获得测量时启用积分器时钟。其次,过滤器具有新的过滤器控制功能。参照同步脉冲,控制模块处理操作滤波器所需的所有时序和触发。滤波器控制器的主要功能是刷新滤波器,这涉及初始化所有滤波器状态,定时器在开始新测量之前进行过滤,以及在正确的实例上启用/禁用积分器时钟。最后,滤波器具有新的缓冲器和中断控制单元,该单元对输出数据进行分类并捕获正确的测量值。缓冲器和中断单元还通过中断来通知电机控制应用,当新的测量准备被使用时。图3中的时序图显示了滤波器的工作原理。
图3.sinc滤波器在开关模式下工作的时序图。
为了开始测量,将同步脉冲(同步脉冲)施加到滤波器控制器。通常,该脉冲表示新的PWM周期的开始。同步脉冲启动一个定时器,该定时器配置为在所需测量点之前正好 1.5 个抽取周期失效。此时,积分器时钟和抽取时钟使能,滤波过程开始。经过3个抽取周期(三阶sinc滤波器的建立时间)后,缓冲器和中断控制器捕获数据输出并置位中断。在图3中,请注意测量如何以同步脉冲为中心。该序列在下一个同步脉冲处重复,但一旦滤波器启动,调制器时钟保持导通。
所提出的sinc滤波器解决了传统sinc滤波器的同步问题。滤波器及其工作模式不对PWM频率、调制器时钟或抽取率做出任何假设。它适用于所有系统配置,即使PWM频率随时间变化也是如此。由于滤波器在每次测量时都会有效复位,因此它对时钟之间的漂移也不敏感。
单弦滤波器的HDL实现
作者发现,一些公开的sinc滤波器HDL示例存在对滤波器性能产生负面影响或导致意外行为的缺点。本节将讨论一些实现问题,以及如何设计HDL代码以在FPGA上获得最佳性能。
集成商
在最纯净的形式中,sinc3滤波器由三个级联积分器和三个级联微分器组成,见图1。首先,考虑 z 域中的纯积分器2:
其中 u 是输入,y 是输出。积分器具有差分方程:
这个一阶方程等效于累加器,非常适合在FPGA等时钟逻辑中实现。一种常见的实现方法是D型触发器累加器,如图4所示。
图4.实现带有D型触发器的蓄能器。
该电路可以在FPGA上实现,只有很少的逻辑门。现在,当级联三个纯积分器时,z域中的传递函数由公式8定义。
三个级联积分器的差分方程如公式9所示:
请注意样本 n 处的输入如何影响样本 n 处的输出。
如果三个积分器使用图4中的D型翻转累加器实现,则结果如图5所示。
图5.三个级联累加器采用 D 型触发器实现。
由于这是一个时钟电路,输入的变化需要几个时钟才能影响输出。当检查级联累加器的差分方程时,这一点变得更加清晰(参见公式10)。
这个差分方程与纯积分器的差分方程完全不同(参见公式9)。使用累加器时,输入需要两个时钟才能影响输出,而对于纯积分器,输入会立即影响输出。为了说明这一点,图6分别显示了在样品编号5处应用单位步进时公式9和公式10的阶跃响应。正如所怀疑的那样,与积分器相比,累加器延迟了两个样本。
图6.三个级联积分器和三个级联累加器的阶跃响应。
在大多数公开可用的sinc滤波器示例中,建议使用D型触发器累加器实现积分器。这样做的主要论点是门数少,但轻量级实现是有代价的。与滤波器的群延迟相比,两个调制器时钟的额外延迟似乎微不足道,但延迟会影响滤波器衰减更高频率的能力,因此,累加器实现提供的有效位数比纯积分器少。此外,所提出的冲洗sinc滤波器需要一个理想的传递函数才能正常工作。出于这些原因,任何sinc滤波器实现都不应依赖于累加器来实现积分器级。
为了获得理想的sinc3响应,提出了与公式9差值的直接实现。结果如图 7 所示。请注意框图如何由两部分组成:时钟逻辑部分(触发器)和组合部分(求和)。这种实现需要更多的门,但它具有所需的滤波器性能和延迟。
图7.实现三个级联集成器。
差异化因素
与积分器类似,许多公开提供的sinc滤波器示例错误地实现了微分器级,从而导致滤波器性能降低和意外延迟。本节讨论差异化器阶段,并就如何实现FPGA以获得最佳性能提出建议。首先,考虑公式11中z域中的纯微分器和公式12中的相应差分。2
为了在FPGA上实现差异化,最常用的是D型触发器,请参见图8。
图8.采用 D 型触发器实现的差分器。
以下 HDL 代码片段说明了实现三个 D 型触发器微分器的常用方法。这里使用了伪Verilog,但这些原则也适用于其他语言。
图9.三个微分器作为时钟逻辑实现。
与任何时钟分配一样,首先计算所有右侧语句并分配给左侧语句。3一切都是计时的,所有作业都是并行更新的。这是一个问题,因为输出项(yx[n]) 依赖于延迟项 (u[n-1] 和 yx[n-1])首先更新。因此,前面的 Verilog 代码段实现了逻辑,如图 10 所示。
图 10.通过时钟分配实现的差异化因素。
由于时钟分配,微分器的延迟是六个时钟,而不是预期的三个时钟。由于微分器与抽取时钟一起计时,这有效地使滤波器的群延迟和建立时间加倍。但是,它也会影响滤波器的衰减,并且频率响应不是理想的三阶坟弦的频率响应。图10中的实现常见于已发布的sinc滤波器示例中,但强烈建议选择一种模拟理想微分器阶段的方法。
前面的Verilog代码片段可以分为两部分:计算电流输出的组合部分和更新延迟状态的时钟逻辑部分。这种分离使得将组合部分移动到始终时钟块之外成为可能,如图 11 所示的代码片段所示。
图 11.三个微分器作为时钟逻辑和组合逻辑的混合实现。
使用组合赋值,没有与 y 计算相关的额外延迟x总延迟从 6 个时钟降低到理想的 3 个时钟。推荐的微分器实现方案框图如图12所示。
图 12.使用时钟逻辑和组合逻辑混合实现三个级联微分器。
通过结合所提出的级联积分器和微分器的实现方案,sinc滤波器在衰减和延迟方面获得了理想的特性。所有基于Σ-Δ的测量都将受益于优化的滤波器实现,尤其是依赖于了解确切滤波器延迟的刷新sinc。
测量
所提出的 Σ-Δ 测量系统已与基于 Xilinx Zynq-7020 SoC 的伺服电机控制器一起实施和测试。®®4该系统由一个 60 V 三相永磁伺服电机 (Kinco SMH40S5)和三相开关电压源逆变器。SoC 运行磁场定向电机控制算法,以及用于实时捕获测量数据的软件。
对于相电流测量,该系统具有两个隔离式Σ-Δ型ADC (ADuM7701),后接两个三阶sinc滤波器。sinc滤波器是使用本文中讨论的设计建议实现的,包括刷新sinc工作模式。为了进行比较,将介绍传统的连续运行过滤器和冲洗过滤器的测量结果。
虽然控制系统具有闭环磁场定向控制,但所有测量均使用开环控制进行。闭合电流环路对测量噪声很敏感,噪声将通过电流环路耦合。通过开环操作,可以消除电流控制器的任何影响,从而可以直接比较结果。
除了模式配置和与PWM的对齐外,测量都是使用相同的配置完成的,包括抽取率,设置为125。因此,测量结果的任何差异都可能导致sinc3脉冲响应是否与PWM正确对齐。控制算法以10 kHz执行,调制器时钟为12.5 MHz。
具有连续sinc滤波器操作的未对齐脉冲响应
在第一个示例中(见图13a),脉冲响应与PWM波形无关。图13b显示了当电机停止但电源逆变器在所有相位上以50%的占空比切换时的两相电流测量结果。在这种操作模式下,测量显示测量的噪声水平。图13b显示了电机以600 rpm开环运行时的相电流。电机有四个极对,因此电气周期为 25 ms。两张图都显示出显著的噪声,会严重影响任何闭环电流控制器的性能。噪声电平与基波相电流的大小无关,因此轻负载时的噪声相对较差。本例中的噪声是由未对齐的sinc滤波器脉冲响应引起的,它对sinc滤波器的抽取率(衰减)几乎没有增加。
图 13.sinc滤波器脉冲响应与PWM不一致的连续工作模式。
通过连续 Sinc 滤波器操作实现一致的脉冲响应
图14显示了每个PWM周期的抽取周期为整数个且脉冲响应与理想测量点对齐时的测量结果。图 14 中的结果与图 13 中的结果直接相当。
比较图13和图14时,滤波器使用相同的抽取率,但噪声水平显著降低。这些示例说明了系统配置和同步对于充分利用基于Σ-Δ的信号链的性能是多么重要。
图 14.连续工作模式,sinc滤波器脉冲响应与PWM对齐。
冲洗 Sinc 过滤器
虽然图14中连续工作的sinc滤波器的结果令人满意,但滤波器仍然难以找到支持同步的配置。虽然可以将连续工作的sinc滤波器与PWM同步,但这通常不切实际。这个问题可以通过冲洗sinc过滤器解决。
图15显示了冲洗sinc滤波器的测量结果。滤波器配置为仅围绕理想测量点运行 3 个抽取周期。正如预期的那样,性能类似于图14中的连续工作滤波器。
为了进行比较,冲洗过滤器使用与连续运行过滤器完全相同的配置。不同之处在于,连续工作的滤波器必须使用这种配置,否则性能会下降,如图13中的结果所示。另一方面,冲洗过滤器将在任何可能的系统配置下保持其最佳性能。
图 15.冲洗 sinc 滤波器,其 sinc 滤波器脉冲响应与 PWM 对齐。
未对齐、连续工作的sinc滤波器(图13a)的噪声幅度约为16位信号中的120个计数。这相当于噪声引起的大约低7位的损失。冲洗sinc滤波器(图15a)的噪声电平约为16位信号中的5个计数,对应于噪声损失不到3位。
总结
基于Σ-Δ的相电流测量广泛用于电机驱动器,但要获得最佳性能,需要正确配置整个系统。本文讨论了可能导致性能不佳的来源以及如何正确设置系统。
配置系统以实现最佳电流反馈性能可能具有挑战性,在某些情况下甚至是不可能的。为了解决这个问题,提出了一种新型的sinc滤波器。滤波器在开关模式下工作,保证在任何系统配置下的最佳性能。
在FPGA上实现sinc滤波器需要开发HDL代码。本文讨论了几种降低滤波器延迟和增加衰减的实现技术。
最后,本文介绍了几个测量结果,说明了冲洗sinc滤波器同步和性能的重要性。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !