一种基于PCIe高速通信协议的可拓展式联合仿真方法
文献发布时间:2024-04-18 19:58:21
技术领域
本发明属于电力电子系统实时仿真领域,具体是一种基于PCIe高速通信协议的可拓展式联合仿真方法。
背景技术
近年来,随着SiC、GaN等功率器件开关频率的显著提高,电气装置的功重比得以显著提升,但高度电力电子化所带来的高动态响应和低惯量等问题对电气系统的稳定性和可靠性带来了严峻的挑战。为了保障新型电力电子化电气系统的稳定可靠运行,科研人员常常会采用理论分析-仿真-实验的科学研究模式进行开发。其中,仿真作为连接理论和实验的桥梁,在新型电力系统开发的过程中具有至关重要的作用。运用仿真技术辅助电力电子系统的设计,不仅可以降低开发费用、缩短开发周期,而且还具有可重复性、且能在一定程度上避免事故的发生。但高频化的电力电子系统中电子元器件和电路的工作频率越来越高,许多开关器件动作频率已高达百KHz,对仿真平台的仿真步长提出了更加严苛的要求。
目前主流的电力电子系统仿真软件主要有MATLAB/Simulink、Pspice等,但是这些软件大都基于串行的处理器,属于离线仿真。离线仿真不能实时反应系统的运行状况,在处理损耗、温度等问题上的效果也不尽人意。现有的离线仿真平台,无论是在仿真速度,还是在仿真精度上,都很难满足高频电力电子系统的仿真需求。如今的电力电子大系统中功率开关器件的开关频率显著提高,ns级别的仿真步长才能实现电力电子大系统的实时仿真,Simulink基于CPU实现的仿真步长在20μs以上。
因而学者们提出了实时仿真技术。实时仿真技术具有多方面的优点,它对系统的动态过程响应时间更短,仿真速度更快,而且能够实时地甚至超实时地模拟系统的多时间尺度静动态性能。因此,该技术能够满足高频电力电子系统的仿真需求。
FPGA的高度并行运算能力和它纳秒级的仿真速度,使其能满足高频电力电子系统仿真实时性的要求,目前市场上所有成熟的仿真平台都配置了不同型号的FPGA作为核心计算单元。FPGA芯片里面的PCIe通信代码编写,即下位机编程,是程序设计的核心。FPGA里面的PCIe代码一般会采用VHDL或者Verilog进行编写,难度比较大,尤其是涉及到PCIe DMA这类复杂的通信协议,开发难度和工作量会非常大,因此需要使用成熟的IP核。Xillybus将Xilinx或Altera公司的底层PCIe接口IP core,接入到由Xillybus设计的Xillybus IPcore,然后再通过四线握手的Application FIFO接口将收发TX、RX通道映射出来到FPGA。而后只需按照标准的四线握手操作对应的FIFO缓冲区即可,下位机的PCIe总通信线程如图3所示。Xillybus官方提供了4个版本的PCIe DMA通信IP核,分别是A版本、B版本、XL版本和XXL版本。其中,B版本在X4模式下是800MB/s(6.4Gbps),在X8模式下是1.6GB/s;而XL和XXL版本对应的传输速度则分别是B版本的2倍和4倍,如XXL版本可以实现目前Xilinx最新款的KU芯片PCIe最高传输带宽6.6GB/s。
因电力电子领域的实时仿真属于电磁特性仿真,对于大系统来说,其仿真规模和复杂程度进一步增加,考虑到成本和物理结构的限制,采用更强处理能力,更高集成度的计算内核来增加计算资源的效果相对有限。即使FPGA具备极高的运行速度,但随着仿真的系统越来越庞大,在单个FPGA中也会达到实时仿真的瓶颈。
发明内容
针对当前电力电子领域中实时仿真技术的仿真速度不够高、通信延迟大、不适用于高精度且高速的仿真应用、无法满足电力电子领域大系统实时仿真等问题,本发明提供一种基于PCIe高速通信协议的可拓展式联合仿真方法。该仿真方法设计了一个多FPGA分布式实时仿真平台,采用上位机与多个FPGA的分布式实时联合仿真方案,以减少每个FPGA所承担的运算量,在满足实时仿真的基础上,运行速度较快,仿真结果可靠。
本发明解决所述技术问题的技术方案是,设计一种基于PCIe高速通信协议的可拓展式联合仿真方法,该方法包括下述步骤:
步骤一:将电力电子大系统分割成若干子系统,根据子系统的数量选用对应数量的FPGA;在仿真程序中建立子系统的结构模型与运行逻辑,并将各子系统所对应的仿真程序分别烧入到对应的FPGA中,建立子系统仿真模型;同时,在各子系统的仿真程序中写入PCIe通信代码;
步骤二:在上位机中根据FPGA的数量,设置对应数量的内存缓冲区,内存缓冲区与FPGA一一对应,一个内存缓冲区只接收对应FPGA上传的数据;并在上位机中设置各子系统仿真模型参数输入端口;
步骤三:通过LabVIEW编写上位机中的数据交互程序,使得上位机成为分布式FPGA数据交互的终端,以实现将各FPGA上传的数据进行接收和解析,以及将数据下发给对应的FPGA中;所述数据交互程序将FPGA中的仿真计算结果打包为U8类型,且使FPGA上传和接收的数据皆为U8类型;
步骤四:通过PCIe显卡拓展坞将FPGA与TypeC雷电4.0拓展坞连接,TypeC雷电4.0拓展坞与上位机的雷电4.0接口连接,完成仿真平台搭建;在上位机中通过各子系统仿真模型参数输入端口对各FPGA中的子系统仿真模型的输入参数进行配置,FPGA中的仿真程序根据输入参数进行仿真计算,并将输出结果通过PCIe通信代码传送给上位机,上位机将仿真计算结果存储在对应的内存缓冲区;
步骤五:当某子系统仿真模型的输入参数包含另一子系统仿真模型的输出结果时,通过上位机中的数据交互程序,读取对应的内存缓冲区内的仿真计算结果,并通过PCIe_DMA将其下发到对应的FPGA中,以使该FPGA中的仿真程序进行仿真计算;
步骤六:将步骤五中的计算输出结果通过PCIe通信代码传送给上位机,上位机将仿真计算结果存储在与该FPGA对应的内存缓冲区;
步骤七:当每个子系统仿真模型的仿真计算完成时,得到电力电子大系统的目标参数的一个仿真输出结果;
步骤八:保持各FPGA中的子系统仿真模型的输入参数不变,重复步骤四到步骤七的计算过程,直至目标参数的仿真输出结果无变化,即得电力电子大系统的目标参数的仿真值。
与现有技术相比,本发明有益效果在于:本发明基于PCIe高速通信协议的可拓展式联合仿真方法,采用上位机与分布式FPGA构成联合仿真平台,并利用PCIe通信协议来实现FPGA间的数据通讯。相较于传统的串口、USB、以太网等通信方式,PCIe通信可以实现超高的总线通信带宽,为实时仿真的FPGA板卡间超高速的数据交互提供了媒介,有效减小了板卡间的通信延迟,使得FPGA仿真板卡具有优越的级联能力,能够支撑大规模电力电子系统仿真的需求。该联合仿真平台结构简单,没有I/O接口上的彼此连接,数据交互在上位机进行,更易于拓展,且通信延迟在10ns之内,通信延迟更低,仿真效率较高,仿真结果可靠。
附图说明
图1为本发明一种基于PCIe高速通信协议的可拓展式联合仿真方法一种实施例的仿真平台结构示意图。
图2为本发明一种基于PCIe高速通信协议的可拓展式联合仿真方法一种实施例的PC端与分布式FPGA的数据交互方式示意图。
图3为本发明一种基于PCIe高速通信协议的可拓展式联合仿真方法的FPGA的一种实施例的PCIe总线通信线程示意图。
图4为本发明一种基于PCIe高速通信协议的可拓展式联合仿真方法一种实施例的PC端的控制中心界面示意图(运行前)。
图5为本发明一种基于PCIe高速通信协议的可拓展式联合仿真方法一种实施例的PC端的控制中心界面示意图(运行后)。
图6为实施例1中的航空发电系统在Simulink软件中得到Vdc(即Simulink ModelVdc)仿真结果和采用本发明仿真方法得到Vdc(即FPGA Model Vdc)仿真结果的对比图。
图7为实施例1中的航空发电系统在Simulink软件中得到Vo(即Simulink ModelVo)仿真结果和采用本发明仿真方法得到Vo(即FPGAModel Vo)仿真结果的对比图。
图8为实施例1中的航空发电系统的结构示意图。
图3中:
1-FPGAPCIe IP核用户时钟,默认是100MHz;
2-PCIe Socket CLIP输出状态端口(LED);
3-数值至布尔数组转换;
4-索引数组;
5-LED1、LED2、LED3的I/O节点;
6-布尔类型Ture;
7-逻辑非;
8-逻辑或;
9-PCIe Socket CLIP上行(FPGA-->Host)通道;
10-使用握手类型的缓存数据为U8类型的FIFO读取;
11-条件结构;
12-PCIe Socket CLIP下行(Host-->FPGA)通道;
13-反馈节点;
14-使用握手类型的缓存数据为U8类型的FIFO写入。
图4与图5中:
wm(rad/min):电机角速度;
Vref:发电机参考电压;
flux:磁链;
L:电感;
R:负载电阻;
C:电容值;
Vdc:发电机系统输出电压;
Vo:Buck电路输出电压;
P:电机极对数。
具体实施方式
下面结合附图对本发明的技术方案进行详细说明。
本发明提供一种基于PCIe高速通信协议的可拓展式联合仿真方法,该仿真方法包括下述步骤:
步骤一:将电力电子大系统分割成若干子系统,根据子系统的数量选用对应数量的FPGA;在仿真程序中建立子系统的结构模型与运行逻辑,并将各子系统所对应的仿真程序分别烧入到对应的FPGA中,建立子系统仿真模型;同时,在各子系统的仿真程序中写入PCIe通信代码,此通信代码使得各FPGA可以将上位机下发的数据包进行接收并解析,也可将各FPGA中仿真的数据通过PCIe传送给上位机。
步骤二:在上位机中根据FPGA的数量,设置对应数量的内存缓冲区,内存缓冲区与FPGA一一对应,一个内存缓冲区只接收对应FPGA上传的数据;并在上位机中设置各子系统仿真模型参数输入端口。
步骤三:通过LabVIEW编写上位机中的数据交互程序,使得上位机成为分布式FPGA数据交互的终端,以实现将各FPGA上传的数据进行接收和解析,以及将数据下发给对应的FPGA中。
步骤四:通过PCIe显卡拓展坞将FPGA与TypeC雷电4.0拓展坞连接,TypeC雷电4.0拓展坞与上位机的雷电4.0接口连接,完成仿真平台搭建。在上位机中通过各子系统仿真模型参数输入端口对各FPGA中的子系统仿真模型的输入参数进行配置,FPGA中的仿真程序根据输入参数进行仿真计算,并将输出结果通过PCIe通信代码传送给上位机,上位机将仿真计算结果存储在对应的内存缓冲区。
步骤五:当某子系统仿真模型的输入参数包含另一子系统仿真模型的输出结果时,通过上位机中的数据交互程序,读取对应的内存缓冲区内的仿真计算结果,并通过PCIe_DMA(即PCIe的DMA数据传输方式)将其下发到对应的FPGA中,以使该FPGA中的仿真程序进行仿真计算。
步骤六:将步骤五中的计算输出结果通过PCIe通信代码传送给上位机,上位机将仿真计算结果存储在与该FPGA对应的内存缓冲区。
步骤七:当每个子系统仿真模型的仿真计算完成时,得到电力电子大系统的目标参数的一个仿真输出结果。
步骤八:保持各FPGA中的子系统仿真模型的输入参数不变,重复步骤四到步骤七的计算过程,直至目标参数的仿真输出结果无变化,即得电力电子大系统的目标参数的仿真值。
所述TypeC雷电4.0拓展坞支持PCIe连接频宽为32GB/s,支持线长长达2米,最多可拓展出4个雷电4.0接口,并且该拓展坞支持菊花链拓扑。所述FPGA支持PCIe 2.0X8接口,可以实现6.6GB/s。
所述FPGA内的PCIe通信代码为Xillybus的PCIe DMA通信IP核,传输带宽为800MB/s。
当该电力电子系统需要增加子系统时,增加FPGA与上位机中内存缓冲区内的数量,并修改上位机中的数据交互程序即可实现拓展应用。
通过上位机中的数据交互程序将FPGA中的仿真计算结果打包为U8类型,使FPGA上传和接收的数据皆为U8类型,传输延迟在10ns内。
实施例1
本实施例提供一种基于PCIe高速通信协议的可拓展式联合仿真方法,该方法包括下述步骤:
步骤一:将航空发电系统分割成3个子系统,分别为发电机系统、Buck电路系统和负载系统,如图8所示;选用3个FPGA,命名为FPGA_1、FPGA_2、FPGA_3,在仿真程序中建立子系统的结构模型与运行逻辑,并将各子系统所对应的仿真程序分别烧入到对应的FPGA中,建立子系统仿真模型;同时,在各子系统的仿真程序中写入PCIe通信代码,此通信代码使得各FPGA可以将PC端下发的数据包进行接收并解析,也可将各FPGA中仿真的数据通过PCIe传送给PC端。
步骤二:在PC端中分别设置三个10MB的内存缓冲区,命名为Memory_buffer_1、Memory_buffer_2、Memory_buffer_3。每一个内存缓冲区与一个FPGA对应。并在PC端设置各子系统仿真模型参数输入端口。
步骤三:通过LabVIEW编写上位机中的数据交互程序,使得上位机成为分布式FPGA数据交互的终端,以实现将各FPGA上传的数据进行接收和解析,以及将数据下发给对应的FPGA中。
步骤四:通过三个PCIe显卡拓展坞将三个个FPGA与一个TypeC雷电4.0拓展坞连接,TypeC雷电4.0拓展坞与PC端的雷电4.0接口连接,完成仿真平台搭建。在接通电源前将FPGA插入到PCIe显卡拓展坞上方的PCIe接口,下位机供电后,重启PC,重启后PC端成功识别PCIe设备,下位机(FPGA)的LED1和LED3开始闪烁表明下位机(FPGA)与上位机(PC)可以正常进行通信。
在上位机中通过各子系统仿真模型参数输入端口对各FPGA中的子系统仿真模型的输入参数进行配置:电机角速度wm设置为6000;FPGA_1中发电机参考电压Vref设置为270;磁链flux设置为0.41;倍频系数设置为1;电机极对数设置为4;电感L设置为5.28;电容C设置为500;FPGA_2中发电机参考电压Vref设置为48;负载电阻R设置为100。
利用FPGA中的仿真程序根据输入参数进行仿真计算,并将各FPGA之间需要交互的输出结果通过PCIe传送给PC端,PC端将这些仿真计算结果存储在对应的内存缓冲区。
步骤五:当某子系统仿真模型的输入参数包含另一子系统仿真模型的输出结果时,通过PC端的数据交互程序,读取对应的内存缓冲区内的仿真计算结果,并通过PCIe_DMA将其下发到对应的FPGA中,以使该FPGA中的仿真程序进行仿真计算。
步骤六:将步骤五中的计算输出结果通过PCIe传送给PC端,PC端将仿真计算结果存储在与该FPGA对应的内存缓冲区。
步骤七:当每个子系统仿真模型的仿真计算完成时,得到电力电子大系统的目标参数的一个仿真输出结果。
步骤八:保持各FPGA中的子系统仿真模型的输入参数不变,重复步骤四到步骤七的计算过程,直至目标参数的仿真输出结果无变化,即得电力电子大系统的目标参数的仿真值。
多FPGA分布式的仿真平台开始工作后,在PC端观察所观测变量的数值及其波形图。通过PCIe_DMA将更改后的参数写入对应FPGA的子系统仿真模型中,进而测试航空发电系统在其中某一参数改变后的稳定性,相关参数如图4中的参数配置栏所示。当系统运行稳定后,在PC端更改负载数值以改变负载的大小,可以立即观察到参数变化对所观测值的影响,如图5所示。
为验证本发明仿真方法的可行性,将该航空发电系统的结构在Simulink中进行搭建与仿真,模型的各参数的取值与本发明实施例1中的相同,稳定后的仿真结果为:发电机系统的输出电压Vdc数值保持270V不变,Buck电路的输出电压Vo数值保持48V不变。MATLAB/Simulink基于串行的处理器,属于离线仿真。离线仿真不能实时反应系统的运行状况,在处理损耗、温度等问题上的效果也不尽人意。
将该航空发电系统在Simulink软件中的Vdc(发电机系统输出电压)仿真结果与采用本发明仿真方法得到的Vdc(发电机系统输出电压)仿真结果进行对比如图6所示,在启动阶段,采用Simulink软件与采用本发明仿真方法得到的Vdc数据相似,最大误差仅为0.37%。启动阶段过后,两种方法的数据一致。
将该航空发电系统在Simulink软件中的Vo(Buck电路输出电压)仿真结果与采用本发明仿真方法得到的Vo(Buck电路输出电压)仿真结果进行对比,如图7所示,在启动阶段,采用Simulink软件与采用本发明仿真方法得到的Vo数据很相似,本发明仿真方法的启动阶段Vo的峰值电压为48.8V,而采用Simulink软件的为48.6V,误差仅为0.4%。当进行突减负载至50%额定负载时,本发明仿真方法的Vo波形几乎没有波动。综上,可验证本发明基于PCIe高速通信协议的可拓展式联合仿真方法的可行性。
本发明未述及之处适用于现有技术。
- 一种基于主从式的电力通信联合仿真平台及仿真方法
- 一种基于PCIE交换网络的嵌入式高速SATA存储阵列系统