利用模块化建模方法实现基于System Generator的控制器导出并多软硬件仿真验证

验证/仿真

34人已加入

描述

摘 要: 利用System Generator软件平台,实现基于模块化建模方法的变换器建模,并简化语言编写控制系统的复杂过程。研究了从MATLAB-Xilinx环境中导出使用模块化建模方法搭建的控制算法。通过MATLAB仿真、软硬件联合仿真和实验进行验证,证明了将控制算法导出使用的可行性。

0 引言

以往的FPGA设计者主要通过Verilog/VHDL语言来实现模型搭建,这对设计者语言上的要求很高。基于模块化设计的模型搭建方法的出现,简化了语言方式建模的复杂过程,使得系统从设计到实现的周期大大缩短,同时也保证了所实现功能的一致性。

Xilinx公司的System Generator软件自带的算法模块为FPGA的设计使用引入了新的方法。结合FPGA自身丰富的触发器资源、大量的I/O引脚资源、高速的CMOS工艺和功耗低等特点,System Generator软件可以将控制系统导出,应用于FPGA集成开发软件之中,简化设计的过程。

完整的系统通过System Generator软件仿真后直接生成硬件语言集成核,下载至FPGA平台中进行测试,使得Verilog/VHDL语言基础薄弱的工程师也可以通过设计、仿真和实验很好地进行FPGA开发工作。

1 基于模块化建模

1.1 Xilinx软件介绍

Xilinx新一代集成开发环境Vivado突出基于知识产权(Intellectual Property,IP)核的设计方法,更加体现系统级设计思想,进一步增强了设计者对FPGA底层布局和布线的干预能力[1]。

开发者可以通过MATLAB/Simulink环境调用Xilinx模块来完成模型搭建,并且通过调用核生成器为所构建的控制模块生成经过优化的网表和知识产权核文件,导出生成相应的工程文件[1]。由MATLAB/Simulink生成的工程文件可以使用Vivado软件进行进一步编辑,最终生成FPGA可以执行的数据流文件。System Generator的这种特性可以使设计的注意力只集中在关键部分。

1.2 模型搭建

图1显示的是基于System Generator模型导出的变换器控制框图,包括模型搭建、模型仿真、控制器导出和实验验证几大部分。

generator

本文以简单的Boost升压电路为例,实现基于System Generator的控制器导出。设定Boost变换器输入电压为12 V,输出电压为24 V,开关频率为40 kHz。

使用Xilinx模块搭建的仿真模型分为主电路和控制电路两个部分。主电路由电源、电感、电容、负载和开关器件等组成,控制电路为采用Xilinx模块搭建的离散PI控制器。对主电路输出电压进行采样处理,然后输送到控制器。控制器输出结果与三角波进行比较得到PWM脉宽调制波来控制主电路开关管的导通与关断,如此进行信号的反馈闭环过程[2]。

在MATLAB-Xilinx模型中,需要将PI控制算法离散化。离散PI有增量式和位置式两种方式,如式(1)与式(2)所描述[3-4],增量式离散PI仅涉及到当前周期误差量与上一周期误差量,使用起来较为方便,是最常使用的离散PI算法。但是增量式PI在实现受限于FPGA中的寄存器周期移位赋值,对于Xilinx模块的使用效果不理想。本文选择位置式离散PI算法,使用离散状态下的累加模块来实现连续状态下的积分功能。累加模块自身带有限幅的功能,大大减少了Xilinx模块使用量[5]。控制器模型图如图2所示。

generator

增量式离散PI算法:

位置式离散PI算法:

式中Kp与Ki分别表示比例增益与积分增益,u表示控制量,e表示控制量与给定量的偏差,k表示不同的周期。

2 仿真模型验证与控制器导出

2.1 仿真结果对比分析

与Simulink模块搭建的控制器不同,Xilinx模块下的控制器是使用PI离散方程搭建的,其运算于离散时间模式下,因此离散控制器的功能性验证尤为重要[6]。同时,基于System Generator模型导出的变换器控制器设计,最终的目的是将模块搭建的控制器转换成IP核来使用,于是,利用Xilinx模块搭建的控制器的功能能否在FPGA中正常运算是十分重要的部分[7]。

针对上面提出的问题,分别进行了MATLAB-Simulink环境、MATLAB-Xilinx环境和硬件在环联合环境下的仿真工作,并对仿真结果进行分析:仿真结果幅值方面,3种仿真模式下的输出结果Udc的幅值是一致的,说明不同方式搭建的控制器仿真模型可以实现同样的功能;算法执行环境方面,同样的仿真结果表明Xilinx模块搭建的控制器算法可以正常运行于FPGA中;仿真结果稳定情况方面,Simulink模型输出比Xilinx模型输出更加稳定,没有抖动。经过分析得出,Xilinx模型存在抖动的原因,是由于System Generator控制管理的Xilinx模块基于离散模式下的算法模块,而POWER GUI控制管理下的Simulink模块工作在连续状态。连续模型与离散模型互相结合工作,导致了输出结果存在抖动情况。联合仿真实现的是控制器IP核于FPGA之中执行运算,同样存在着波动。

2.2 联合仿真分析

联合仿真的原理与本文基于System Generator模型导出的变换器控制设计中心思想一致,重点在于导出环节。在联合仿真过程中,将Xilinx模块搭建的控制器导出成Verilog语言下的集成核,该核在FPGA中完成控制器算法的运算过程[7-9]。

联合仿真是Xilinx模块搭建的控制器的最直接的验证过程,因其在ZedBoard开发板的FPGA环境下实现控制算法仿真,所以联合仿真的结果是控制器算法最真实的体现,是算法功能性验证的最好方法。仿真模型如图3所示。图4显示的是联合仿真集成核,其实现控制算法运算于FPGA过程中的数据反馈。

generator

generator

2.3 模型导出

Xilinx模块搭建而成的控制器,通过System Generator导出成Vivado可以使用的IP核。该IP核仅包括Xilinx模块构成的控制器部分,其由GatewayIN/GatewayOUT来定义端口参数。这些端口参数设定了输入/输出数据的类型、位数等信息,同时包含了离散仿真步长信息。GatewayIN/GatewayOUT起到了连接外部数据和Xilinx模块的关键作用。导出环境下System Generator的信息如图5所示。从图中软件设置信息可以看出,将Boost变换器的控制系统导出成IP核的形式,并针对所拥有的FPGA芯片系列选定了相对应的开发板,同时将Verilog语言作为开发设计的硬件描述语言。其他选项设定为默认设置即可。此处设置了合适的导出对象与导出环境,是整个设计关键的一步。

generator

2.4 Vivado软件处理

经过System Generator导出的Boost控制器,作为一个独立的IP核,可以由Vivado软件进行使用操作。本文中使用Vivado软件,搭建Boost变换器数据处理模型,包括主模块(XADC模数转换模块、数据分离处理模块)和控制模块(IP核),如图6所示。其中模数转换使用ZedBoard板卡自带的模数转换器,借助XADC将输入开发板的模拟量转化为数字量。数据分离模块存在是因为由XADC出来的数据是混乱的(开发板输入n通道的数据,XADC输出1…n.1…n格式的数据),其目的在于将XADC转换出来的数据进行有效分离,以便于后级的运算操作。数据处理模块主要是将数字量进行处理,使其与实际中模拟量的大小相对应,以进行后续的PI控制。

generator

3 实验验证

实验借助了ZedBoard开发板平台上的高精度AD转换器,同时在面包板上搭建的Boost变换器,结合采样调理板形成一个闭环控制系统进行实验。

首先是对Boost主电路上的输出信号进行采样,该信号经过调理板进行处理。调理板出来的信号输送到ZedBoard开发板,在开发板上进行模数转换和进一步数据处理,处理结果经由System Generator导出控制器IP核之后与三角波进行比较,得到PWM波输出。PWM波经过驱动电路然后控制Mosfet的导通与关断。

结合实验结果图7,得到表1。从表1中可以看出,Boost变换器在输入11.5 V~15 V的变化过程中,输出电压可以稳定在24.2 V左右。在变载试验下,输出电压略微下降0.3 V。

generator

generator

4 结束语

结合MATLAB/Simulink环境,使用Xilinx公司提供的System Generator模块库来搭建仿真模型,然后生成Verilog硬件描述语言实现的IP核的控制系统设计方法,使得FPGA设计开发者可以利用Simulink的仿真功能和MATLAB的强大数据分析能力来进行FPGA系统级仿真和行为级分析。相比于以往直接使用Verilog/VHDL语言来进行控制系统的编写,大大简化了不同环节之间的相互连接验证工作,同时提高了功能实现的验证效率,缩短了设计周期。这种设计上的灵活性,在满足要求的同时,也便于对细节的修改,使得设计好的模型可以被重复使用,是FPGA设计的新方向。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分