FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-所有问题-其他-正文

想用ZYNQ FPGA做‘电机FOC(磁场定向控制)’实时控制系统,在PL部分实现SVPWM和Clarke/Park变换,如何确保控制环路的高确定性低延迟?

FPGA学号1FPGA学号1
其他
13小时前
0
0
1
这是我的毕业设计题目,打算用ZYNQ的PS跑速度环PI控制,PL实现电流环和PWM生成。最担心的是PS和PL之间的通信延迟会引入抖动,影响控制性能。请问在硬件架构设计上,如何规划数据流(比如用AXI Stream DMA)才能让电流采样、坐标变换、SVPWM生成这个链路的延迟最小且固定?有没有类似项目的开源参考或设计要点分享?
FPGA学号1

FPGA学号1

这家伙真懒,几个字都不愿写!
493902
分享:
使用FPGA做‘实时音频处理效果器’(如混响、均衡)项目,在实现高精度数字滤波器时,如何平衡定点数精度、资源消耗和实时性要求?上一篇
芯片行业的‘算法工程师(硬件加速方向)’在日常工作中,与纯软件算法工程师和硬件设计工程师的协作模式是怎样的?下一篇
回答列表总数:3
  • FPGA学号3

    FPGA学号3

    简单说下我的经验。你想用DMA,但DMA本身有延迟不确定性,因为要竞争AXI总线。对于电流环这种需要微秒级响应的,最好避免。

    更“硬核”一点的做法:把速度环PI也放到PL里。这样整个FOC都在PL里跑,PS彻底沦为“配置和监控终端”。PL内部用状态机或者一个小型软核(比如MicroBlaze)来调度整个算法流程,时序绝对可控。

    如果还是想用PS跑速度环,那数据交换点要尽可能少。比如,PS每速度环周期(比如1ms)计算一次电流给定,通过一个深度为1的AXI Stream FIFO(或Mailbox IP)发给PL的电流环。PL每个电流环周期(比如100us)去读这个FIFO,读不到就用旧值。这样,即使PS偶尔慢了一点,也不会影响PL电流环的硬实时性,只是给定值更新慢了一拍,系统仍是稳定的。

    设计要点:在PL里为整个实时链路留一个“旁路”或“调试接口”,能把关键信号(如Ia, Ib, Id, Iq)用另一个非实时的DMA流送到PS,方便你用SDK抓波形看效果,这对调试至关重要。开源项目可以关注一下“VHDL FOC”或“ZYNQ FOC”,有些硕士论文会把整个系统开源,是很好的起点。

    13小时前
  • Verilog小白

    Verilog小白

    同学你好,我也做过类似的项目。确保低延迟和确定性的关键就四个字:硬件加速。别让数据在PS和PL之间来回跑。

    具体步骤:
    1. 在Vivado里,用HLS或者直接写RTL,把Clarke、Park、IPark、SVPWM以及电流PI都做成硬件模块(IP核)。
    2. 这些模块之间全部用AXI-Stream接口互联。Stream是单向的、点对点的,没有总线仲裁,延迟固定。
    3. ADC数据通过一个FIFO或者直接接进这个处理链。PI控制器输出直接接到你的PWM发生器(比如基于计数器的比较模块)。
    4. PS只干两件事:一,通过AXI-Lite总线初始化配置所有IP核(比如设置PI的Kp, Ki);二,运行速度环,算出电流指令值(Iq_ref, Id_ref)。这个指令值怎么给PL呢?最好用AXI-Stream从PS发到PL,或者用共享的BRAM。用DMA模式,PS写一次,PL那边就能立即在下一控制周期使用,延迟是一个固定周期。

    注意事项:一定要用PL的时钟来同步所有实时信号。PS过来的配置或指令,要用PL时钟打两拍同步,避免亚稳态。计算模块尽量流水线化,虽然增加几个时钟周期延迟,但吞吐量高,且延迟依然是固定的。

    13小时前
  • 单片机新手

    单片机新手

    毕业设计做这个挺有挑战的,但思路是对的,PS跑慢环,PL跑快环。核心痛点就是你说的,PS和PL之间的延迟抖动。

    我的建议是,把整个电流环(包括Clarke/Park变换、反变换和PI调节器)都放在PL里,做成一个纯数据流的硬件模块。PS只通过AXI-Lite配置PI参数和读取状态,完全不参与实时数据流。这样,从ADC采样到PWM输出的整个链路都在PL内部,延迟就是纯粹的组合逻辑和流水线延迟,是纳秒级且完全确定的。

    数据流可以这样规划:用AXI Stream把ADC采样数据(比如通过XADC或外部ADC IP)灌进来,后面紧跟着你的变换和PI模块,最后输出SVPWM的占空比到定时器。全部用Stream接口手拉手连接,中间不要经过任何总线或DMA缓冲。DMA只在需要把一些调试数据(比如电流波形)非实时地送到PS内存时才用。

    开源参考可以看看OpenCore的“FOC IP Core”,或者去GitHub搜“FPGA FOC”,有几个用Verilog/VHDL写的项目,虽然不一定直接用于ZYNQ,但硬件架构可以参考。

    13小时前
我要回答answer.notCanPublish
回答被采纳奖励100个积分
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
请先登录