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的联合仿真调试说明文档。

ID:78999651044433674玩电的和尚

Simulink与modelsim调试说明文档
Simulink与modelsim调试说明文档 1
1. 1注意事项 2
2. 2matlab环境设置 2
2.1. 配置matlab的工作环境 2
3. 3modelsim环境设置 2
3.2. 查看modelsim的工作目录 2
3.3. 编译自动化仿真脚本文件 3
4. 4启动simulink仿真 3
4.1. HDL Cosimulation模块配置说明 3

1.注意事项

1.simulink与modelsim的联合仿真有版本要求的:不同版本的matlab软件可以联合调试的modelsim版本也不同.这里建议采用matlab2017b与modelsim SE-64 10.4进行联合仿真.
2.HDL Cosimulation与Simulink进行数据交换时,数据的格式必须匹配才行.对于Verilog中的一位数据,比如复位信号,时钟信号,simulink要输入这些信号进HDL Cosimulation信号类型必须改为Boolean类型的.其他是多少位数据的信号,simulink在要输入这些信号进HDL Cosimulation时,信号类型必须改为对应位数的整型数据类型.一般不能将double等浮点型数据输入进HDL Cosimulation.
3.在每次启动Simulink仿真前,最好进行一次modelsim编译,以免导致有时输出波形不正常.
2.matlab环境设置

在进行联合仿真时,我们只需启动matlab即可,modelsin可以从matlab中调用.
2.1.配置matlab的工作环境

当matlab启动完成后,我们首先需要做的是更改matlab的工作目录.这里我们更改为如图1所示.
3.modelsim环境设置

在配置modelsim时,我们需要从matlab的命令窗口中输入 vsim(‘socketsimulink’,4449)即可启动modelsim软件.

3.1.

3.2.查看modelsim的工作目录

当modelsim启动完成后,在modelsim的命令窗口中输入ls即可查看当前modelsim的工作目录在哪.如果之前我们设置好了matlab的工作目录,这里modelsim的工作目录将和前者一致.并且modelsim会在命令栏中给出当前modelsim工作目录下所包含的所有文件.
3.2.1.

3.3.编译自动化仿真脚本文件

当我们编写好自动化测试脚本文件.do后,在modelsim命令栏中输入
do simulink_run.do即可编写我们设计好的FPGA工程文件.
4.启动simulink仿真

当modelsim完成控制回路的代码编译后,启动simulink,打开仿真文件Digital_buck_with_FPGA.mdl.然后启动仿真即可完后联合仿真.接下来可以在modelsim或者simulink中查看关键电路波形.
4.1.HDL Cosimulation模块配置说明

1.对于Ports栏,我们选择Auto Fill完成此模块引脚的设置,但是要说明在使用Auto Fill功能之前必须在modelsim中编译过我们所需的FPGA工程文件,否则无法进行自动化引脚分配.当导入所有引脚后,我们还需进行细微的调整,比如Clk时钟信号可以不设置为引脚引出,后续我们在说明为什么.在进行微调后,需要设置Output信号的采样时间Sample Time,其中此数值的设置一般与Power Gui中Discrete 仿真的Sample Time一致.
2.对于Clocks栏,一般设置我们FPGA工程的时钟信号输入,因此在Ports一栏我们不用将其引出.在Clock Edge一栏中,我们选择Rising 即可,Period为时钟的周期值,比如我们这里可以设置为1/60e6,即表示60Mhz的时钟输入.
3.对于对于Timescales一栏,simulink的仿真时间一般与Modelsim的仿真时间时一致的.因此是一一对应的关系,所以在空格出写入1,单位选择s.
4.对于Connection一栏,我们选择Connect method为socket,Port Number or Severice为4449.其余默认即可.
5.对于Simulation一栏,我们默认配置即可.无需改动.