您现在的位置是:主页 > 电路技术 > 数字电路 >


基于 FPGA 的有源配电网实时仿真器高速网络通讯接口设计

2020-03-25 23:08数字电路 人已围观

简介本文针对基于 FPGA 的实时仿真器与计算机系统之间通信困难的问题,考虑有源配电网实时仿真器实时输出多路信号、仿真参数下载需求,提出了实时仿真器与计算机之间的以太网接口设...

  本文针对基于 FPGA 的实时仿真器与计算机系统之间通信困难的问题,考虑有源配电网实时仿真器实时输出多路信号、仿真参数下载需求,提出了实时仿真器与计算机之间的以太网接口设计方法,并以 Altera 公司 Stratix V 系列 FPGA 开发的仿真器为硬件环境设计了网络通信软硬件平台,选择含光伏发电单元的有源配电网进行了仿真测试,实现了仿真参数的在线修改与多路仿真结果的实时传输显示, 并通过与PSCAD/EMTDC 仿真结果对比,充分验证了网络接口设计的正确性和有效性。
  

  1 有源配电网实时仿真器框架

  
  本文根据有源配电网构成元件的物理属性,将整个网络划分为电气系统与控制系统,其中电气系统采用节点分析法进行求解,控制系统采用顺序法求解, 二者并行求解,从而形成有源配电网实时仿真基本框架。本文设计的网络通信接口是对该框架下,基于FPGA 的有源配电网实时仿真器的进一步发展和完善,其整体功能设计架构如图 1 所示,分为六个功能模块,分别是全局仿真控制模块、电气系统求解模块、控制系统求解模块、电气与控制系统数据交互接口模块、仿真结果输出模块以及网络接口模块。
  图 1 实时仿真器的硬件设计
  图 1 实时仿真器的硬件设计
  
  在实现基于 FPGA 的实时仿真计算时,需要完成仿真参数配置、求解计算以及仿真结果存储与显示。其中,仿真参数具体包括:
  
  1)节点导纳矩阵;
  
  2)RLC 元件的定值与初始状态;
  
  3)线路的参数与初始状态;
  
  4)断路器的初始状态与动作条件;
  
  5)分布式电源与电力电子元件的参数;
  
  6)待观测节点编号及相应观测量;
  
  7)其它参数,包括仿真步长、元件节点编号等。
  
  FPGA 实时仿真器能够完成仿真过程的计算,而仿真参数的预先设定及仿真结果的存储与显示则需要依赖上位机实现。
  

  2高速网络接口设计

  
  本文在基于 FPGA 的有源配电网实时仿真器的基础上实现了网络接口模块,用于实现上位机与实时仿真器间的通讯,包括在仿真开始前通过上位机对实时仿真器进行参数配置,在仿真开始时向实时仿真器发出开始命令和在仿真进行中将实时仿真器的多路输出结果回传至上位机显示。FPGA  实时仿真平台的整体网络数据与共享 RAM 互相传送;仿真结果保存模块将实时仿真器的实时数据流保存到共享 RAM 中,然后由网络通信处理器进一步处理;存储器总线接口模块将共享RAM 中的数据传送至存储器总线上,实现对实时仿真器内部各存储器的重编程;网络通信处理器对共享 RAM 中的网络数据进行处理,实现各种网络协议。MAC 模块采用Altera 公司设计的三速以太网核心,用于与以太网芯片实现接口。
  图 2  系统结构
  图 2  系统结构
  
  2.1多模块高速DMA 结构
  
  为了让网络接口能够处理多种网络协议,本文设计了一种网络通信处理器处理网络数据。网络通信处理器采用 16 位字长、125 MHz 频率,与以太网模块的时钟一致,并使用了较为精简的指令集设计以节省硬件资源。
  
  为了避免处理器进行大量内存复制,网络接口中的共享 RAM 可以被多个模块直接访问。由于实际FPGA 中的 RAM 最多有两个端口,为了实现多个模块对共享 RAM 的存取,需要以时分复用的形式共享RAM 端口。网络通信处理器采用 4 个时钟周期完成一条指令,即指令译码、取第一操作数、取第二操作数、计算并保存结果 4 个步骤,规定第一操作数不能位于共享RAM 中,从而在 4 个时钟中为网络数据收发模块留出了 2 个时钟的空间。在指令译码、取第一操作数步骤时,网络数据收发模块可以使用 RAM 端口读取和写入。当共享RAM 的端口为 32 位宽时,单个端口的数据带宽为 4 Gbps,刚好能满足千兆以太网的全双工通信需求并为网络通信处理器留出 2 Gbps 的内存带宽,同时非流水线的处理器设计进一步减少了处理器的资源占用。
  
  2.2内存管理与分配方法
  
  为了克服中断处理方式的不足并完善 DMA 的管理机制,在网络接口模块中设置内存管理器,将共享RAM 划分为 8 个区域,每个区域能够容纳一个标准大小的以太网包文。内存管理器中分别对应 8 个区域设置 8 个状态变量,包括空闲状态、接收网络数据状态、发送网络数据状态、接收仿真结果状态、网络通信处理器状态和存储器总线访问状态。内存管理器与其它模块之间互相连接,各模块向内存管理器发出内存申请信号,内存管理器经过处理后向各模块发回当前处理的RAM 区域编号。各模块对内存管理器为其分配的RAM 区域进行DMA 操作,操作结束后向内存管理器发送控制信号将当前处理的 RAM 区域移交至下一个模块并申请一个新的 RAM 区域,准备继续处理下一个数据包文。该过程无需网络通信处理器参与。
  
  网络接口模块实时传送仿真结果数据的流程图如图 3 所示。仿真结果保存模块向内存管理器申请空闲内存并写入仿真结果。当缓冲区已满时,由处理器加上 UDP、IPv6 和以太网头部,再由网络数据发送模块发送。整个过程不断循环,直到仿真停止。
  
  当某个模块申请一个 RAM 区域时,根据状态变量的当前状态,可能有多个 RAM 区域同时满足要求。通过在内存管理器内部设置优先选择器从多个 RAM 区域中选择一个作为该模块申请到的 RAM 区域。优先选择器同时作为网络接口模块实时性保证的重要组件。在内存管理器中,网络数据接收使用高位优先选择器,而其它模块均使用低位优先选择器,当共享RAM 中有多个区域同时处于空闲状态时,仿真结果保存模块申请到的 RAM 区域比网络数据接收申请到的RAM 区域更低,仿真结果保存模块所输出的实时数据流将被网络通信处理器和网络数据发送模块优先处理。同时,在网络通信处理器中相应配置了 8 套寄存器组,当内存管理器为其分配的 RAM 区域变更时,在1 个指令周期内就能切换至相应的寄存器组继续处理, 使得接收自以太网的网络数据在网络通信处理器中的处理能够随时被实时数据流打断,保证实时数据流的优先处理和传输。只要网络通信处理器能在下一个实时数据包到来前完成当前实时数据包的处理,就不会因处理来自以太网的非实时数据耗时过长而失去实时性。
  图 3 仿真结果数据的发送流程
  图 3 仿真结果数据的发送流程
  
  2.3存储器重编程总线与接口
  
  实时仿真器在开始仿真前,需要向其内部的存储器写入仿真参数。这些存储器为数众多,且大小、位宽、端口数量都各有区别。为了向这些存储器写入数据,需要设置一个存储器重编程总线。总线有 32 个数据位和 1 个控制位。当控制位为 1 时,总线上传输控制信号,否则传输数据。总线上的控制信号的具体内容也通过数据位传输,分为准备写入、写入完成和总线空闲三种。准备写入信号包括三个参数,分别为存储器的编号、存储器内部地址和要写入数据的长度。由于总线只有单向的信号传输,可以在发送端与接收端之间插入任意数量的缓冲寄存器,消除传输延时对实时仿真器工作频率的影响。
  
  在总线与存储器之间设置一个接口模块用来将总线上传输的数据转换为存储器需要的位宽,并实现多个存储器对总线的共享使用。接口模块当收到准备写入信号时,比较总线上的存储器编号与自身的编号, 如果一致,则根据总线上的存储器内部地址和要写入数据的长度配置自身的计数器并准备在总线传输数据时发出写入信号。
  图 4 存储器与实时仿真器连接方式
  图 4 存储器与实时仿真器连接方式
  
  网络通信处理器负责进行网络接口与计算机之间的网络协议处理。针对实时仿真器这样的资源受限环境,可以用TFTP(trivial file transfer protocol)实现文件传输。TFTP 协议是一种基于 UDP 协议的文件传输协议,它可以实现局域网环境下的文件传输,而且它的实现仅需要较少的存储空间。TFTP 协议的包文可以分为读取请求( RRQ )、写入请求( WRQ )、数据(DATA)、回应(ACK)和错误(ERROR)。计算机向实时仿真器发送写入请求(WRQ),其中包含要写入的文件名。网络接口模块收到 WRQ  包文后与计算机建立连接并发回ACK 包文。此后,计算机不断将文件数据通过 DATA 包文传送至网络接口模块,每次传输 512 字节,网络接口模块收到 DATA 包文后回复相应的ACK 包文。当计算机发送最后一个DATA 包文时, 其包含的数据长度小于 512 字节,表示传输结束。为了保证数据的可靠传输,TFTP 传输软件设置了超时限制,当计算机在规定时限内没有收到 ACK 包文时,会重新发送上一个包文,直到收到 ACK 包文。
  
  2.4实时仿真器的人机交互方案
  
  在硬件方面上,计算机一般通过直接连接或专用千兆交换机的方式连接至实时仿真器,以确保实时数据流的可靠传输。计算机与实时仿真器组成局域网后, 计算机和实时仿真器分别被分配一个 IPv6 地址,通过IPv6 协议互相访问。FPGA 中的网络通讯处理器支持ICMPv6 协议,可以实现 IPv6 地址自动分配,并可响应 ICMPv6 邻居查询包文,上位机无需配置静态路由或静态 IP 地址,实现即插即用。
  
  在仿真开始前,将算例的参数数据通过 TFTP 传输软件传输至实时仿真器。需要开始仿真时,计算机向 FPGA 实时仿真器发送开始包文,FPGA 实时仿真器收到后立即开始实时仿真,并将开始包文的源 IP 地址、源 MAC 地址、源 UDP 端口等信息保存于全局变量中,在发回仿真结果时,将获取到的相关信息填入UDP、IPv6 与以太网协议头部,从而将仿真结果以 UDP 包文的形式不断传输至计算机。计算机将接收到的数据保存至内存空间,并绘制成实时波形图在屏幕上展示。
  
  为了检测实时数据流在经过局域网传输时可能出现的包文丢失,每个包文都附带了一个 64 位的时钟计数值,若出现包文丢失,计算机将检测到不连续的包文,从而在屏幕上显示提示信息。同时,计算机可以向网络接口发送命令包文更改采样频率,让网络接口每隔一定的仿真步长采样一次,从而在避免出现包文丢失的情况下获取尽可能多的实时数据。

Tags: FPGA 

标签云