一种用于fpga中实现数据无冲突实时存取的方法

文档序号:6433325阅读:495来源:国知局
专利名称:一种用于fpga中实现数据无冲突实时存取的方法
技术领域
本发明涉及一种电力系统继电保护设备采用光纤进行的同步串行通信,属工业通信技术领域。
背景技术
电力系统继电保护设备是当电力系统中的电气元件发生故障或不正常运行时,快速而准确地使断路器跳闸或发出信号的自动装置。智能变电站中广泛采用的电子式电流互感器、电子式电压互感器使得微机继电保护设备和这些一次设备的互联方式由传统的电缆传输模拟量转变为使用光纤通信传输数字信号,因此光纤通信技术已经成为实现现代继电保护设备的基础技术之一。电子式互感器与继电保护设备之间的光纤通信通常采用同步串行通信方式,同步串行通信中数据都是以帧为单元进行传输,每帧数据包含帧头、有效数据、CRC校验,有的通信协议中还要求有帧尾。在电子式互感器中的光纤传输是定时和实时的,与继电保护设备的采样计算定时周期可能不完全同步,因为继电保护设备对可靠性的高要求,为了保证继电保护设备能及时、准确、无丢失地获得互感器上的所有采样数据,同时针对FPGA片内存储单元的特点,需要在技术上对串行通信的数据接收和存储进行特殊的处理。

发明内容
本发明的目的是通过两级缓冲区和缓冲区描述符的方式,解决异步数据链之间的无冲突、实时交互和数据存取。利用该技术在FPGA内实现不同带宽、不同速率下数据的实时、准确交互,避免了异步数据链同时对数据存储区进行访问时易发生碰撞而导致数据出错、错位等情况。为了实现上述目的,本发明提供以下技术方案
FPGA中采用两级缓冲作为数据池,分别为一级缓冲区和二级缓冲区,利用两个相同或不同容量的一级缓冲区和二级缓冲区,以及描述二级缓冲信息和状态的缓冲区描述符,解决两侧数据不同步的情况下易发生的数据出错、错位等问题,实现异步数据的无碰撞、实时、准确存取。所述二级缓冲区内还包含描述二级缓冲信息和数据状态的缓冲区描述符。使用缓冲区描述符方式指示数据缓冲区内的数据状态,便于外部处理器在合适的时间对数据缓冲区进行操作。所述缓冲区描述符包含数据长度、CRC校验结果、数据准备好信息。一级缓冲区接收光纤接收器输出串行数据,保存有效数据;
利用二级缓冲区存取的空闲时间,将一级缓冲区内的所有数据搬移到二级缓冲区内。所述二级缓冲区中分为多个缓冲区域,每个缓冲区域对应一独立的所述缓冲区描述符,用于指示该区域当前数据状态,处理器可任何时刻读取所述缓冲区描述符状态,根据所述数据是否准备好和所述CRC校验结果的信息判断是否可以从所述二级缓冲区读取数据,以及所需读取的数据长度。本发明所达到的有益效果
通过两级缓冲区和缓冲区描述符的方式,实现了异步数据链之间的无冲突、实时交互和数据存取。在FPGA内实现不同带宽、不同速率下数据的实时、准确交互,避免了异步数据链同时对数据存储区进行访问时易发生碰撞而导致数据出错、错位等情况。本发明的方法简单可靠,成本低,灵活性高;适用于多种串行数据帧的数据实时保存和读取,同样也适用于两侧异步的并行数据的情况;缓冲区大小可根据实际使用条件进行灵活设置;一级缓存向二级缓存并行、高速搬移数据,因是利用二级缓存的空闲时间,不占用处理器总线处理时间;二级缓存在FPGA容量允许的条件下可任意设置,保证所有串行接收的数据不丢失,满足继电保护设备应用需求。


图1是在FPGA中实现数据无冲突实时存取的框图。
具体实施例方式下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。图1是在FPGA中实现的数据无冲突实时存取方法的原理框图,FPGA中包括一级缓冲区和二级缓冲区,二级缓冲区分割成多个数据区,可根据实际使用配置大小和块数。以接收为例,同步串行通信中的解码器根据实际使用的线路码型,从接收的码流中恢复原始数据和时钟,在时钟的控制下,将串行输入的数据转换成并行数据,或将并行输入的数据组合成更大宽度的并行数据,保存在一级缓冲区的FIFO中,当接收到一帧完整的数据且CRC校验通过后,或是已接收一组完整的数据后,FPGA内部的状态机电路将一级缓冲区FIFO中的数据以芯片的系统时钟速率高速搬移到空闲的二级缓冲区中,并将相应缓冲区的缓冲区描述符(Buffer Descriptor,简称BD)标志位置位,供处理器访问。处理器读取缓冲区描述符BD的状态,若缓冲区描述符BD中的标志位置位,表示数据已准备好,就可以将二级缓冲区内的数据读走,并将标志位清零,供FPGA判断二级缓冲区是否空闲可用。 处理器按顺序依次检查所有的缓冲区描述符BD,只要有数据就读走。FPGA存数据时也是依次读取缓冲区描述符BD状态,找到第一个空闲的缓冲区,就将数据保存在其中。结合以串行数据流形式输入和并行数据形式输出的在FPGA内数据存取的时序, 进一步说明本发明的方法。FPGA中的解码电路从输入的码流中分离出收时钟rx_clk和收数据rX_data,然后按照收时钟rx_clk的节拍对收数据rX_data进行采样,当检出帧头后, 接收标志rx_ing置位,表示当前是串行接收状态,串行数据组合成并行数据写入一级缓冲区FIFO中。当一帧数据结束时,接收标志rx_ing清零,同时帧结束标志frame_end置位, FPGA内的状态机启动,将一级缓冲区FIFO内的数据搬移到空闲的二级缓冲区RAM中,并将数据保存基地址、数据长度、数据准备好等信息写入到相应的缓冲区描述符BD中。处理器对FPGA的RAM访问时,先读取缓冲区描述符BD的内容,若“数据准备好”位为1,就从该缓冲区描述符BD的数据保存基地址所指向的RAM区读取数据,读取指定长度的数据后,处理器将该缓冲区描述符BD的“数据准备好”位清零,将缓冲区释放,供一级缓冲区使用。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
权利要求
1.一种用于FPGA中实现数据无冲突实时存取的方法,其特征是,FPGA中以两级缓冲作为数据池,分别为一级缓冲区和二级缓冲区,包含以下步骤一级缓冲区接收光纤接收器输出串行数据,保存有效数据;利用二级缓冲区存取的空闲时间,将一级缓冲区内的所有数据搬移到二级缓冲区内。
2.根据权利要求1所述的用于FPGA中实现数据无冲突实时存取的方法,其特征是,所述二级缓冲区内还包含描述二级缓冲信息和数据状态的缓冲区描述符。
3.根据权利要求2所述的用于FPGA中实现数据无冲突实时存取的方法,其特征是,所述缓冲区描述符包含数据长度、CRC校验结果、数据准备好信息。
4.根据权利要求3所述的用于FPGA中实现数据无冲突实时存取的方法,其特征是,所述二级缓冲区中分为多个缓冲区域,每个缓冲区域对应一独立的所述缓冲区描述符,用于指示该区域当前数据状态,处理器可任何时刻读取所述缓冲区描述符状态,根据所述数据是否准备好和所述CRC校验结果的信息判断是否可以从所述二级缓冲区读取数据,以及所需读取的数据长度。
全文摘要
本发明公开了一种用于FPGA中实现数据无冲突实时存取的方法,FPGA中以两级缓冲作为数据池,分别为一级缓冲区和二级缓冲区,包含以下步骤一级缓冲区接收光纤接收器输出串行数据,保存有效数据;利用二级缓冲区存取的空闲时间,将一级缓冲区内的所有数据搬移到二级缓冲区内。本发明基于两级缓冲和缓冲区描述符的方式实现了FPGA中异步数据链之间的无冲突、实时交互和数据存取。
文档编号G06F13/40GK102331981SQ20111027543
公开日2012年1月25日 申请日期2011年9月16日 优先权日2011年9月16日
发明者周华良, 夏雨, 姚吉文, 姜雷, 胡钰林 申请人:国电南瑞科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1