法律状态公告日
法律状态信息
法律状态
2019-02-22
授权
授权
2016-09-21
实质审查的生效 IPC(主分类):H04L7/04 申请日:20160406
实质审查的生效
2016-08-24
公开
公开
技术领域
本发明涉及电力系统数据通讯领域,尤其涉及一种基于RMII接口的SMV/GOOSE报文的FPGA实现方法。
背景技术
SMV是Sampled Measured Value的缩写,采样测量值,也称SV(Sampled Value),一种用于实时传输数字采样信息的通信服务。采样值(SMV)报文在数据链路层的传输都是基于IEEE802.3的以太网结构。
GOOSE是Generic Object Oriented Substation Event的缩写,面向通用对象的变电站事件,是IEC 61850标准中用于满足变电站自动化系统快速报文需求的机制。
随着以太网交换机芯片的集成度越来越高,I/O口引脚的数目增加,功耗也随着增加。传统的MII(Media Independent Interface,媒体独立接口)接口有16个引脚,此接口也可以实现SMV/GOOSE的发送,但是会造成芯片尺寸的增加和功耗的增大,并加大了PCB设计的复杂度。严重消耗了FPGA的硬件资源,并给硬件布局布线带来的相当大的困难,对于合并单元的升级造成障碍,加大了合并单元的成本。
发明内容
本发明的目的就是为了解决上述问题,提供一种基于RMII接口的SMV/GOOSE报文的FPGA实现方法,能够保证瞬时数据的传输要求,SMV接口可以高效、快速的将波形数据进行外传,减小数据传输的延时时间,GOOSE接口可以充分保证数据的传输时效性。
为了实现上述目的,本发明采用如下技术方案:
基于RMII接口的SMV/GOOSE报文的FPGA实现方法,包括以下步骤:
步骤一、对FPGA内部寄存器进行初始化,将报文数据缓存至发送缓冲区,等待发送使能信号;
步骤二、接收到使能信号后,发送使能端拉高,首先发送前导数据,用于接收方实现同步及提取时钟信息,接着发送帧起始定界符SFD信号,用于通知接收方有效数据的开始;
步骤三、报文数据按SMV/GOOSE报文帧格式依次发送帧头部分和应用协议数据单元;
步骤四、当报文数据达到要发送的长度时,数据传输结束。
所述步骤二中,前导数据为7个字节的0x55,SFD信号为1个字节的0xd5。
每当物理层芯片时钟下降沿时,通过TXD[1:0]端口发送出2bit数据,每发送完一个字 节,计数器加一。
所述步骤三中帧头部分包括目的地址、源地址、优先级标记、以太网类型码、APPID(application identification,应用标识)以及长度(Length,SMV/GOOSE的字节长度)。
应用协议数据单元包括控制信息及采样数据。
所述步骤三的传送方法为,将缓冲区中报文数据送至发送端口,进入报文传输状态,将报文数据按字节存放至发送缓冲寄存器,同时将要发送字节输出到CRC(Cyclic RedundancyCode,循环冗余校验码)校验模块,4个物理层PHY时钟后,发送完一个字节数据,同时将CRC值更新,送回发送控制模块,等待下一字节数据。
CRC校验模块用来检验除前导同步码、帧起始定界符和帧校验序列以外内容在传输过程中是否出现错误。
所述步骤四中,当计数器值等于要发送的长度时表明报文发送完毕,此时将最后的CRC校验值通过TXD端口送出,数据传输结束。
在基准时钟REF_CLK的下降沿输出TXD[1:0]数据,然后在接下来的上升沿将数据发送出去,保证足够长时间的数据建立和保持时间;分别发送同步帧数据和SFD信号以及数据,并在数据发送完后紧跟着发送CRC校验码数据,完成整个以太网数据的发送过程。
基于RMII接口的SMV/GOOSE报文的FPGA实现系统,包括发送控制模块和双口RAM芯片,所述发送控制模块的两个输出端分别与双口RAM芯片的R_Clk读时钟端口和R_En读使能端口连接,发送控制模块的一个输出端通过地址产生器与双口RAM芯片的RData_Ad数据地址端口连接,还有一个输出端口直接连接RMII接口;
所述双口RAM芯片输出Data_out端口直接连接RMII接口的同时还通过并行CRC32连接RMII接口;
上层控制器的一个输出端直接连接发送控制模块的输入端,另外的四个输出端分别连接双口RAM芯片的W_En端口、Data_In端口、WData_Ad端口及W_Clk端口。
本发明的有益效果:
保证瞬时数据的传输要求,SMV接口可以高效、快速的将波形数据进行外传,减小数据传输的延时时间。GOOSE接口可以充分保证数据的传输时效性。
附图说明
图1为本发明所提供的方法的流程图;
图2为RMII的发送时序;
图3为整个数据的发送时序图;
图4为程序占用资源图;
图5为SMV报文;
图6为程序原理图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
如图1所示,基于RMII接口的SMV/GOOSE报文的FPGA实现方法,包括:
步骤一:对FPGA内部寄存器进行初始化,将报文数据缓存至发送缓冲区;等待发送使能信号;
步骤二:接收到使能信号后,发送使能端TX_EN拉高,进入数据传输状态;每当PHY芯片时钟下降沿通过TXD[1:0](发送数据线)端口发送出2bit数据,每发送完一个字节,计数器加一;首先发送7个字节的“0x55”(Preamble),用于接收方实现同步及提取时钟信息,接着发送为1个字节的“0xd5”(SFD),用于通知接收方有效数据的开始;
步骤三:将缓冲区中报文数据送至发送端口,进入报文传输状态。将报文数据按字节存放至发送缓冲寄存器,同时将要发送字节输出到CRC校验模块,4个PHY时钟后,发送完一个字节数据,同时将CRC值更新,送回发送控制模块,等待下一字节数据。报文数据按SMV/GOOSE报文帧格式依次发送帧头部分(目的地址、源地址、优先级标记、以太网类型码、APPID以及Length等)、APDU(应用协议数据单元,包括控制信息及采样数据);
步骤四:当计数器值等于Length时表明报文发送完毕,此时将最后的CRC校验值通过TXD端口送出,数据传输结束。
RMII的发送时序如图2所示,在REF_CLK的下降沿输出TXD[1:0]数据,然后在接下来的上升沿将数据发送出去,保证足够长时间的数据建立和保持时间。分别发送同步帧数据和SFD信号以及数据,并在数据发送完后紧跟着发送CRC校验码数据,完成整个以太网数据的发送过程。
如图3所示,整个数据的发送时序图,CPU将需要发送的数据填入发送缓冲区以后,使能(TxEn_Phy)拉高,然后发送7个字节的“0x55”,用于接收方实现同步及提取时钟信息;发送SFD为1个字节的“0xd5”,用于通知接收方有效数据的开始,发送完前导数据和SFD以后,发送以太网帧头,之后将缓冲区域的数据按照PHY时钟进行发送,每发送完一个字节计算一次CRC的值,直到数据发送完毕,输出CRC的值,此时SMV/GOOSE报文发送完成。
如图4所示,总共消耗172个逻辑门,占用1%的内存,消耗内存较少,所占用FPGA的总资源较少。
如图5所示,使用Wireshark抓包工具获取SMV报文,然后我们就能知道MAC目的地址为0xffffffffffff,源地址为0x010CCD040001,SMV报文对应的以太网类型为0x88ba,APPID为0x4000,长度Length为0x0077(119);紧接着为4个字节的保留字,0x60为APDU标记,0x6d为APDU的长度,0x80为ASDU数目标记,0x01为ASDU数目长度,0x82为采样值计数器标记,0x02代表采样值计数器长度有2个字节,0x0521代表采样值计数器值(即SmpCnt值为1313),每次取得新采样值时加1,在采样值被时钟信号同步(即SmpSynch=True)且同步信号出现时计数器应置0;0x83为配置版本号标记,0x04表示配置版本号长度有4个字节,即紧接着的0x00000001,表明配置版本号值为1,接下来的0x85代表采样值同步标记,Length=0x01,Value=0x01;采样值被时钟信号同步则置为1,否则置为0;0x87为采样值序列标记,0x30则代表采样值序列长度有64个字节,并配置了8路数据,每一路数据占8个字节,前四个字节表示数据的值域,后四个字节表示数据的品质位。
编译环境:
FPGA采用的是Altera公司生产的CycloneIII系列的EP3C10E144C8,此芯片共有144个引脚封装,10320个逻辑门单元,414K内部存储器和94个I/O口。实现中采用Verilog HDL硬件描述语言进行描述,使用模块化设计构建整个并行硬件处理系统。Verilog HDL适合算法级、寄存器传输级、逻辑级、门级和版图级等各个层次的电路设计和描述。如图6所示,给出了报文发送硬件实现结构框图,通过写时钟和写使能将SMV采样序列值的8个通道的数据填充进去,之后将缓冲区域的数据通过RMII接口行发送,每发送完一个字节计算一次CRC的值,直到数据发送完毕,输出CRC的值,此时SMV/GOOSE报文发送完成。原理图如图6所示。
MAC层数据发送模块的设计
1,定义输入输出接口,输入接口为Phy_Clk(模块输入时钟),Phy_Tran_En(数据包发送触发信号),Crc_In(校验值输入);输出接口为Data_Out(数据输出)Clk_CRC32Out(校验时钟),PhyTx_En(发送使能信号),Phy_Txd(发送数据线)。
2,定义寄存器和参数。寄存器包括:reg DataValid_CRC32Out(校验数据有效有效标志位)reg Calc_CRC32Out(校验数据计算有效标志位),reg Clk_CRC32Out(校验数据计算时钟位),reg RmiiTx_En(RMII接口,输出使能控制位),reg PhyTx_En(RMII接口,输出使能线),reg[1:0]Phy_Txd(RMII接口,输出数据线),reg TxEn_Flag(数据包发送使能标志位),reg[9:0]TxData_Count(包含APPID数据发送计数),reg[`ADDR_SZ-1:0]TxAllData_Count(所有数据发送计数,帧头除外)reg[2:0]TxPreaSfd_Count(数据帧首部发送计数包括字节同步 码和SFD),reg[1:0]TxByte_Count(字节发送计数,一个字节拆成4部分发送,小端形式,低位在前),reg[2:0]TxCrc_Count,(四字节CRC数据发送计数),reg[1:0]State_Send(状态机寄存器,reg[`ADDR_SZ-1:0]Length(数据发送的总长度);内部相关参数包括:parameterPreamble=8'h55(Preamble前导码),parameter SFD=8'hD5(SFD,帧起始定界符),parameterSFDCountEnd=3'd7(SFD所在地址位置),parameter LengthByteAdd=10'd21(数据长度所在地址以0..开头),发送状态机参数:parameter State_PreaSfd=2'd0(发送帧头),parameterState_MAC802=2'd1(发送数据帧),parameter State_FCS=2'd2(发送校验序列)。
3,初始化寄存器。
4,发送帧头和数据,接收到使能信号后,发送使能端TX_EN拉高,进入数据传输状态;每当PHY芯片时钟下降沿通过TXD[1:0]端口发送出2bit数据,每发送完一个字节,计数器加一;首先发送7个字节的“0x55”(Preamble),用于接收方实现同步及提取时钟信息,接着发送为1个字节的“0xd5”(SFD),用于通知接收方有效数据的开始;将缓冲区中报文数据送至发送端口,进入报文传输状态。将报文数据按字节存放至发送缓冲寄存器,同时将要发送字节输出到CRC校验模块,4个PHY时钟后,发送完一个字节数据,同时将CRC值更新,送回发送控制模块,等待下一字节数据。报文数据按SMV/GOOSE报文帧格式依次发送帧头部分(目的地址、源地址、优先级标记、以太网类型码、APPID以及Length等)、APDU(应用协议数据单元,包括控制信息及采样数据);
5,当计数器值等于要发送的长度时表明报文发送完毕,此时将最后的CRC校验值通过TXD端口送出,数据传输结束。
按照以上的原理具体的程序如下所示。
CRC校验模块的设计
CRC校验模块用来检验除前导同步码、帧起始定界符和帧校验序列以外内容在传输过程中是否出现错误,程序的实现如下:
目前以太网物理层功能通常是直接采用专业的物理层芯片来完成。物理层为以太网上的各个设备之间的数据通信提供了传输介质及互连设备,并且向数据链路层设备提供标准接口。IEEE802.3给出了MAC层与PHY层接口的标准定义,常用的接口有MII、RMII、GMII等。
MII(Media Independent Interface)即媒体独立接口。它是IEEE-802.3定义的以太网行业标准。它包括一个数据口,以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。“介质无关”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常
RMII(Reduced Media Independent Interface)即简化的MII接口,在数据的收发上它比MII接口少了一倍的信号线,一般要求是50M的总线时钟。RMII一般用在多端口的交换机上,它不是每个端口安排收发两个时钟,而是所有的数据端口公用一个时钟用于所有端口的收发,节省了不少的端口数目。RMII的接口有7根数据线,比MII少了一倍。工作。支持10/100M的物理环境,工作频率为5M/50M。
智能变电站作为智能电网建设的核心环节,是智能电网安全稳定运行的基础。由于电子式互感器在智能变电站中的应用,改变了传统变电站保护测控装置直接模拟采样并进行数据运算的方式,对装置软、硬件平台及数据接收处理方法提出了新的要求。所以研究适用于RMII接口发送SMV/GOOSE的方法具有重要的意义。此外,通过RMII接口发送SMV/GOOSE,采用SMV对采样点进行快速传输,保证数据的实时性,解决了大数据的吞吐能力。采用GOOSE数据传输协议,可对事件信息进行快速传输,减小通信延时,有助于对电网状态的实时把控。通过SMV和GOOSE高速接口可以对实时的波形数据及遥信位置进行外传,此接口适用于上层应用需要波形数据,并且对数据延时有较高要求的场合。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
机译: 接口总线协议,用于管理分布式微处理器接口系统中的事务,该接口与基于marco-cell的设计实现为ASIC或FPGA面包板
机译: 分布式微处理器系统与基于宏单元的设计相接口,该设计实现为ASIC或FPGA面包板以及相关的通用总线协议
机译: 分布式微处理器系统与基于宏单元的设计相接口,该设计实现为ASIC或FPGA面包板以及相关的通用总线协议