针对同步优化的新型sinc滤波器结构,快来了解下

针对同步优化的新型sinc滤波器结构,快来了解下
本⽂提出⼀种针对同步优化的新型sinc滤波器结构。该滤波器可在需要严格控制反馈链时序的应⽤中提⾼测量性能。接着,还将讨论采⽤HDL代码实现sinc滤波器的⽅法,以及如何在FPGA实现上优化滤波器。最后,给出在⼀个基于FPGA的3相伺服驱动器上执⾏的测量结果。
针对同步优化的sinc滤波器
通过正确对齐sinc滤波器对PWM的脉冲响应,可以实现⽆混叠的∑-Δ测量。尽管该⽅法很简单,但是很难(在很多情况下不可能)到⼀个理想的系统配置。为了说明这⼀点,假设sinc滤波器和PWM模块共⽤同⼀个以f sys 运⾏的系统时钟源。调制器时钟 f mclk 则由公式1确定。
其中Dmclk是调制器时钟的时钟分频数。同样,PWM频率f pwm 由公式2确定。
其中D PWM 是确定PWM频率的时钟分频数。最后,sinc滤波器的抽取率(数据速率)由公式3确定。
其中D dec 是抽取后时钟的时钟分频数。为了避免脉冲响应和PWM周期之间的漂移,⼀个PWM周期内包含的抽取周期数量必须为整数:
其中N为整数。合并公式2、公式3和公式4可得:
显然,只有有限选择的时钟缩放⽐例D x 可满⾜公式5。此外,时钟缩放⽐例的选择⽅法往往也受到严格限制。例如,系统可能需要以⼀定的PWM频率(例如10kHz)运⾏或使⽤⼀定的调制器时钟(例如20MHz)。另⼀个⿇烦是进⾏调制器时钟选择时,可选数值有限。例如,如果f sys 为100 MHz,则D mclk 仅有的合理选择应为5到10之间有限范围内的整数(从20MHz低⾄10MHz)。
考虑到所有这些限制,很难(即便有可能)到可在脉冲响应和PWM之间实现所需对齐的时钟缩放⽐例。通常会发⽣的情况是,⽤户被迫选择满⾜公式5的时钟缩放⽐例,⽽⾮选择可产⽣所需PWM频率、调制器时钟和信噪⽐(SNR)的时钟缩放⽐例。⽽且,如果其中⼀个频率随时间发⽣变化,则⽆法到有效的配置。这种情况在多轴系统中⾮常普遍,在这些系统中,单个运动控制器会对⽹络中的多个电机控制器进⾏同步。
虽然对齐⽅案可提供出⾊的测量性能,但事实证明它不切实际。以下章节将介绍⼀种新型sinc滤波器。该滤波器可提供出⾊的测量性能,同时允许⽤户独⽴选择所有时钟分频数。
刷新式sina滤波器
传统的三阶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滤波器在开关模式下的时序图。
为了开始测量,将同步脉冲(sync pulse)施加于滤波器控制器。通常,此脉冲表⽰⼀个新的PWM周期的开始。同步脉冲启动⼀个计时器,该计时器被配置为恰好在所需测量点之前1.5个抽取周期处失效。积分器时钟和抽取时钟在这⼀点启⽤,滤波过程开始。经过3个抽取周期(三阶sinc滤波器的建⽴时间)后,缓冲和中断控制器捕获数据输出并置位中断。请注意在图3中测量值如何以同步脉冲为中⼼。该序列在下⼀个同步脉冲处重复,但是调制器时钟在滤波器开始⼯作后就⼀直保持开启状态。
上述sinc滤波器解决了常规sinc滤波器的同步问题。该滤波器及其⼯作模式⽆需对PWM频率、调制器时钟或抽取率做出任何假设。即使PWM频率随时间变化,它也可以与所有系统配置同样配合良好。由于每次测量都会有效重置滤波器,因此它对时钟之间的漂移也不敏感。
sina滤波器的HDL实现
作者发现,⼀些公开可⽤的sinc滤波器HDL⽰例具有⼀些缺点,会对滤波器的性能产⽣负⾯影响或导致意外⾏为。本章节将讨论⼀些实现问题以及如何设计HDL代码以在FPGA上获得最佳性能。
积分器
最纯正的sinc3滤波器由三阶级联积分器和三阶级联微分器组成(参见图1)。⾸先,考虑z-domain 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中相应的差分。
要在FPGA上实现微分器,最常⽤的⽅法是采⽤D型触发器(参见图8)。

本文发布于:2024-09-24 20:31:48,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/96014.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时钟   实现   公式   积分器   调制器   测量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议