FPGA板上基于Simulink与ModelSim联合仿真验证的Buck闭环设计及调试

FPGA板上基于Simulink与ModelSim联合仿真验证的Buck闭环设计及调试

simulink与modelsim联合仿真buck闭环设计 主电路用simulink搭建,控制电路完全有verilog语言实现(包括DPWM,PI补偿器) 适用于验证基于fpga的电力电子变换器控制,由于控制回路完全由verilog语言编写,因此仿真验证通过,可直接下载进fpga板子,极大缩短了开发数字电源的研发周期。 buck变换器指标如下: (*额定输入电压*) Vin->20, (*最大输入电压*) Vin_max->25, (*最小输入电压*) Vin_min->15, (*输出电压*)Vo>10, (*开关频率*)fs->50*10^3, (*输出功率*)Po->100, (*最小占空比*)Dmin->0.1, (*额定占空比*)D ->0.5, (*最大占空比*) Dmax->0.6, (*额定输出电流*) Io-> 10 包括:buck主电路以及控制回路设计文档,仿真文件。 以及simulink与modelsim的联合仿真调试说明文档。

搞数字电源的朋友们有没有遇到过这样的情况?辛辛苦苦在FPGA上写完控制算法,烧进板子发现炸管了...这时候要是能在仿真阶段就把软硬件联调搞定该多好。今天就带大家玩个骚操作——用Simulink和ModelSim搞联合仿真,让数字控制回路和模拟主电路实时对打。

先看主电路搭建,Simulink里咱们直接甩出buck三件套:输入电容、MOS管搭的开关桥臂、LC滤波网络。这里有个小细节要注意,开关管的驱动信号必须接上死区发生器,毕竟实际硬件里可没有理想开关。我习惯用Transport Delay模块模拟驱动信号的传播延时,参数就按FPGA实际时钟周期来算:

% 死区时间计算(假设FPGA时钟50MHz) deadtime = 3*(1/50e6); % 3个时钟周期 set_param('buck_model/MOS_driver','DelayTime',num2str(deadtime));

控制回路这边全用Verilog硬刚。DPWM模块是数字控制的核心,这里分享个寄存器渐近式生成法,比直接计数器方案精度高。关键代码长这样:

module DPWM ( input clk, input [15:0] duty, output reg pwm ); reg [15:0] acc_reg; always @(posedge clk) begin acc_reg <= acc_reg[15:0] + duty; pwm <= (acc_reg < duty); // 妙用溢出特性 end endmodule

这段代码实现了Σ-Δ调制的16位精度PWM,别看代码行数少,实测谐波特性比传统计数器方案低12dB。原理就是通过累加器溢出自动生成等效占空比,每次累加duty值,当累加器超过最大值时自动归零,同时输出高电平。

PI补偿器才是真考验,这里祭出抗饱和积分法。注意q格式定点数处理,直接上代码:

reg signed [17:0] integral; // Q3.15格式 always @(posedge clk) begin if(!sat_flag) begin integral <= integral + (error * Ki) >>> 8; end output <= (error * Kp) + integral[17:2]; end

这里有个骚操作——用右移替代除法,既省资源又防溢出。积分项单独用18位寄存器,最后取高16位输出,相当于自动做了精度保持。遇到输出限幅时通过sat_flag锁定积分器,完美解决积分饱和问题。

simulink与modelsim联合仿真buck闭环设计 主电路用simulink搭建,控制电路完全有verilog语言实现(包括DPWM,PI补偿器) 适用于验证基于fpga的电力电子变换器控制,由于控制回路完全由verilog语言编写,因此仿真验证通过,可直接下载进fpga板子,极大缩短了开发数字电源的研发周期。 buck变换器指标如下: (*额定输入电压*) Vin->20, (*最大输入电压*) Vin_max->25, (*最小输入电压*) Vin_min->15, (*输出电压*)Vo>10, (*开关频率*)fs->50*10^3, (*输出功率*)Po->100, (*最小占空比*)Dmin->0.1, (*额定占空比*)D ->0.5, (*最大占空比*) Dmax->0.6, (*额定输出电流*) Io-> 10 包括:buck主电路以及控制回路设计文档,仿真文件。 以及simulink与modelsim的联合仿真调试说明文档。

联合仿真配置才是重头戏,在Simulink里扔个HDL Cosimulation模块,配置好ModelSim的执行路径。重点来了:一定要把仿真步长设为开关周期的1/10以下,我一般设200ns。仿真启动时会自动唤醒ModelSim,看着两个软件互相传数据特别带感。

调试时建议先断开电压环,单独测试DPWM波形。曾经掉过坑——发现占空比到0.6就上不去,查了三天居然是Verilog里duty寄存器位宽不够,超过最大值自动回零了。所以务必在testbench里加边界值测试:

initial begin duty = 16'h6666; // 0.6对应Q16值 #100ms; duty = 16'h0000; #100ms; $stop; end

最后上干货:按这个流程跑下来,从仿真到FPGA实测的电压调整率误差能控制在0.8%以内。关键是数字控制部分完全复用仿真代码,不用重新验证。实测波形显示,输入电压在15-25V跳变时,输出电压纹波始终小于50mV,动态响应时间仅3个开关周期。

这种方法最适合需要快速迭代的数字电源项目,特别是做 LLC、移相全桥这些复杂拓扑的朋友。下次可以试试在PI里塞个非线性环节,搞点自适应参数的花活。记住,仿真时流的汗,就是调试时少炸的管啊!

Read more

白嫖专业版!Github Copilot Pro竟然可以免费使用

今天有个好消息要和大家分享: GitHub Copilot 已在 Visual Studio Code 上免费开放! 无论是谁,都能畅享 AI 助力下的高效开发新体验! 如何免费在vscode中使用copilot * 下载最新版本的 VS Code https://code.visualstudio.com/Download 如果下载慢,可以通过下面的网盘链接获取: https://pan.quark.cn/s/3fb6dcedfed8 * 打开vscode编译器,按照下面步骤操作 这时候就可以看到账户已经启用Copilot Free copilot Free 和copilot Pro主要功能对比 功能FreePro消息和互动每月最多 50 个无限实时代码建议每月最多 2,000无限上下文感知编码支持和解释支持支持VS Code 中的多文件编辑支持支持切换模型支持支持GitHub 中的代码审查不支持支持拉取请求中的 Copilot Workspace不支持支持VS Code 中的 Java

Llama-Factory微调的跨平台支持:如何在多种操作系统上运行

Llama-Factory微调的跨平台支持:如何在多种操作系统上运行 作为一名开发者,你是否遇到过这样的困扰:好不容易在Windows上配置好了Llama-Factory微调环境,换到Mac或Linux系统又要重新折腾?不同操作系统间的环境差异常常让人头疼。本文将为你介绍Llama-Factory的跨平台支持能力,让你轻松在Windows、MacOS和Linux系统上运行大模型微调任务。 这类任务通常需要GPU环境,目前ZEEKLOG算力平台提供了包含Llama-Factory的预置环境,可快速部署验证。但如果你更倾向于本地开发,Llama-Factory的跨平台特性也能帮你省去大量配置时间。 为什么需要跨平台微调解决方案 在实际开发中,我们经常需要在不同设备间切换工作环境: * 办公室的Windows工作站 * 家中的MacBook Pro * 云服务器上的Linux系统 传统微调方案面临的主要问题包括: * 不同系统的Python环境管理方式差异大 * CUDA和PyTorch版本兼容性问题 * 系统依赖库安装方式不同 * 文件路径格式不一致 Lla

VSCode + Copilot

VSCode + Copilot

1、Copilot的介绍         Git Hub Copilot是一款人工智能协作编程工具,它能帮助我们更快速、更高效地编写代码。 2、Copilot安装 (1)Copilot是以VSCode的插件形式存在,直接搜索下载安装即可。 * 第一次使用时VSCode会自动安装Copilot的插件。 (2)在VSCode中安装Copilot时,会获得两个扩展程序: * GitHub Copilot:在我们输入代码时会提供即时的代码建议。 * GitHub Copilot Char:一款配套插件,可提供基于人工智能的对话式辅助服务。 3、插件配置 (1)插件下载后需要登录账号才能使用,建议登录GitHub账号。 (2)登录GitHub账号可能需要kexue上网。 4、插件功能及使用 (1)代码补全功能。 (2)聊天会话功能。 (3)缺陷:现在可以免费使用,但是有一定的额度。

Neo4j:图数据库使用入门

Neo4j:图数据库使用入门

文章目录 * 一、Neo4j安装 * 1、windows安装 * (1)准备环境 * (2)下载 * (3)解压 * (4)运行 * (5)基本使用 * 2、docker安装 * 二、CQL语句 * 1、CQL简介 * 2、CREATE 命令,创建节点、关系、属性 * 3、MATCH 命令,查询 * 4、return语句 * 5、where子句 * 6、创建关系 * 7、delete删除节点和关系 * 8、remove删除标签和属性 * 9、set添加、更新属性 * 10、ORDER BY排序 * 11、UNION合并 * 12、