基于FPGA的仿真数据存取方法及装置与流程

文档序号:12464302阅读:346来源:国知局
基于FPGA的仿真数据存取方法及装置与流程

技术领域

本发明涉及总线仿真测试技术领域,具体涉及一种用于高速总线仿真设备的基于FPGA的仿真数据存取方法及装置。



背景技术:

高速总线仿真设备主要应用在航电总线仿真与测试系统中,用于航电系统研制过程中进行半实物联合仿真测试、实物仿真测试等。航电系统使用于恶劣的环境,确保航电系统设备功能的完备性以及性能的可靠性是航电系统研制过程中的核心任务。在航电系统研制的过程中,需要在地面进行各种仿真试验,以验证整个航电系统功能,性能是否达标。

随着航电总线系统的发展,新一代高速航电总线在支持节点数量、通信带宽方面均大幅提高,这也加大了高速总线仿真设备的设计难度,仿真数据的存储管理是其中的一个主要难点。



技术实现要素:

为了解决上述现有技术的难点,本发明提出了一种用于高速总线仿真设备的基于FPGA的存储管理方法及装置。

根据本发明的一个方面,提供了一种基于FPGA的仿真数据存取方法,其包括以下步骤:

S1:建立缓冲区状态表,缓冲区状态表用来描述存储器中各个缓冲区的状态,状态表中的每一位都记录对应存储器中一个缓冲区的状态;

S2:建立子地址状态表,子地址状态表的每一个表项记录仿真设备当前仿真的一个子地址下数据缓冲区的描述信息;

S3:收到仿真数据存入或读取申请时提取其中的节点地址、子地址信息;

S4:以节点地址、子地址信息作为输入参数,经哈希压缩映射算法得出子地址状态表入口地址;

S5:根据所述入口地址查找子地址状态表,获取子地址的记录表项以及缓冲区地址,将仿真数据存入所述缓冲区地址对应的缓冲区或从所述缓冲区地址对应的缓冲区读取仿真数据;

S6:存入或读取完毕后更新缓冲区状态表及子地址状态表表项信息。

根据本发明的另一个方面,提供了一种基于FPGA的仿真数据存取装置,其包括:

缓冲区状态表建立模块,用来建立缓冲区状态表来描述存储器中各个缓冲区的状态,状态表中的每一位都记录对应存储器中一个缓冲区的状态;

子地址状态表建立模块,用来建立子地址状态表,子地址状态表的每一个表项记录仿真设备当前仿真的一个子地址下数据缓冲区的描述信息;

子地址状态表入口地址获取模块,用来在收到仿真数据存入或读取申请时,提取其中的节点地址、子地址信息,以节点地址、子地址信息作为输入参数,经哈希压缩映射算法得出子地址状态表入口地址;

数据存取模块,用来根据所述入口地址查找子地址状态表,获取子地址的记录表项以及缓冲区地址,将仿真数据存入所述缓冲区地址对应的缓冲区或从所述缓冲区地址对应的缓冲区读取仿真数据,并在存入或读取完毕后更新缓冲区状态表及子地址状态表表项信息。

本发明与现有技术相比,有以下优点:

上位机不参与仿真数据的存储器管理,减轻了上位机的负担,降低了上位机软件的设计难度,利用FPGA内部各模块并行工作的特点,提升了效率。

使用本发明进行仿真数据的存取可以同时仿真几百到几千个通道,大幅提高了单一仿真设备支持并行仿真的节点数量。

采用了存储器小片管理,动态分配的方案,相比于采用固定大小缓冲区分配方案提高了存储器的使用效率。

附图说明

图1示出本发明的原理示意图。

图2示出本发明的子地址状态表的表项定义示意图。

图3示出本发明的子地址下数据缓冲区管理示意图。

图4示出本发明的仿真数据存入流程图。

图5示出本发明的仿真数据读取流程图。

具体实施方式

本发明的基于FPGA的仿真数据存储管理方法,用于高速总线仿真设备实现多个节点,每个节点下多个子通道并行仿真功能时仿真数据的管理。仿真数据的来源包括但不限于运行在通用计算机,嵌入式计算机,DSP处理器,ARM处理器,power pc处理器等,其与FPGA的接口包括但不限于PCIE,rapid io,AXI及自定义互联总线等,使用的存储器可以为DRAM,SRAM,FPGA内Block ram等。

下面结合附图对本发明作进一步详细描述。

图1是本发明的用于高速总线仿真设备的基于FPGA的仿真数据存储管理方法的原理示意图。

其中,存储器空间大小根据实际应用分配,要求为连续的存储空间,存储器以固定大小的分块进行管理,分块的大小可以根据高速总线仿真设备所实现的协议特点确定,通常根据总线协议设定,一般要求大于该协议最大帧长度,且要求为字节。每个分块都作为一个数据缓冲区。

在FPGA逻辑中建立缓冲区状态表,使用FPGA内部Block ram资源实现。缓冲区状态表用来描述存储器中各个分块(缓冲区)的状态,状态表中的每一位都记录对应存储器中一个缓冲区的状态。若该缓冲区分块被占用,对应的记录位为1,反之若该缓冲区分块未被占用,对应的记录位为0。

在FPGA逻辑实现待用缓冲区查询,新的数据存入前首先需获取一个未被占用的缓冲区地址,待用缓冲区查询模块提前查询缓冲区状态表,获取一定数量的待用缓冲区地址存入待用数据缓冲区表中待使用,此种方式避免了每次新数据存入都去查询缓冲区状态表,提升了效率。

存入待用数据缓冲区表中的指针对应的缓冲区在缓冲区状态表中记录位将被置1,表明此缓冲区已被占用。

数据缓冲区在子地址缓冲区链表中释放出来后,将该缓冲区在缓冲区状态表中的记录位置0,表明此缓冲区已被回收,可供使用。

本发明主要用于高速数据总线仿真多节点多子通道,例如FC-AE-1553总线协议中节点地址位宽为24bit,子地址(子通道)位宽为32bit。总线仿真设备通常会同时仿真多个节点,节点的地址不做限制,同时每个节点下会支持多个子地址,子地址的值不做限制。仿真时需要为每个节点下的每个子地址都要建立一个数据缓冲区记录。

在FPGA逻辑中建立子地址(子通道)状态表,使用FPGA内部Block ram资源实现,子地址状态表每一个表项记录着仿真设备当前仿真的一个子地址下数据缓冲区的描述信息,记录信息格式如图2所示,子地址状态表的深度决定了仿真设备同时支持仿真的仿真节点,子地址的数量。

在FPGA逻辑中采用哈希压缩映射算法,由于节点地址和子地址拼接后的寻址空间远远大于子地址状态表的地址空间,无法建立直接映射,因此采用哈希算法进行压缩映射。将节点地址与子地址拼接经过哈希算法得到固定长度的key,将得到的key作为该子地址数据缓冲区描述信息在子地址状态表中的存储器地址,其中key的长度应与子地址状态表的深度一致。

在FPGA逻辑中完成对每个子地址(子通道)下数据缓冲区的管理,子地址下缓冲区采用一维链表管理方式,示意图如图3所示。在子地址对应的子地址状态表项中记录着该缓冲区下数据缓冲区中头缓冲区地址,尾缓冲区地址,缓冲区个数等。在存储器中的每个缓冲区中有单独区域存放缓冲区链表中下一数据缓冲区地址指针信息。新申请的数据缓冲区编入链表尾部;头缓冲区数据使用后,释放该缓冲区并更新头缓冲区地址。

仿真数据的存入流程如图4所示,具体步骤如下:

步骤1,收到下行仿真数据包后提取节点地址,子地址信息;

步骤2,以节点地址,子地址信息作为输入参数,经哈希压缩映射算法得出子地址状态表入口地址;

步骤3,在子地址状态表中进行匹配查找,若查找到匹配项,进行下一步;若未查找到匹配项且该地址未被占用,则在此地址建立这个子地址的记录表项;若未查找到匹配项且该地址已被占用,则根据冲突算法计算下一入口地址,然后重复步骤3;

步骤4,在待用缓冲区表中获取一个缓冲区地址,将仿真数据存入该数据缓冲区;若此子地址下目前无缓冲区,则将此数据缓冲区地址作为缓冲区链表的头缓冲区地址;否则,将此缓冲区加入缓冲区链表尾部,对应的操作是在当前尾缓冲区的特定描述区填入此缓冲区地址,数据长度信息;

步骤5,将该数据缓冲区在缓冲区状态表中记录位置1;

步骤6,更新子地址状态表表项信息,包括头缓冲区地址,头缓冲区数据长度,尾缓冲区地址,缓冲区个数等,若其中某项信息未变化可不更新。

仿真数据的读取流程如图5所示,具体步骤如下:

步骤1,收到仿真数据读取申请,提取节点地址,子地址信息;

步骤2,以节点地址,子地址信息作为输入参数,经哈希压缩映射算法得出子地址状态表入口地址;

步骤3,在子地址状态表中进行匹配查找,若查找到匹配项,若子地址状态表表项中记录的缓冲区个数为0,则返回错误信息,否则进行下一步;若未查找到匹配项且该地址未被占用,则返回错误信息,此种情况表明该子地址下未建立缓冲区记录;若未查找到匹配项且该地址已被占用,则根据冲突算法计算下一入口地址,然后重复步骤3;

步骤4,在子地址状态表项中获取头缓冲区地址,头缓冲区数据长度等信息,读取对应外部存储器中缓冲区的数据,同时获得了下一数据缓冲区的地址;

步骤5,完成后释放该缓冲区,对应操作是将该数据缓冲区在缓冲区状态表中记录位置0。

步骤6,更新子地址状态表表项信息,包括头缓冲区地址,头缓冲区数据长度,缓冲区个数等。

通过本发明的仿真数据存储管理方法,可实现多节点,多子地址(子通道)仿真数据的管理,支持的节点,子地址的数量主要由子地址状态表的深度决定,FPGA内Block ram资源十分丰富,根据FPGA型号不同,可轻易实现几k到十几k深度,因此可实现几百到几千个子地址的管理。同时每个子地址下的缓冲区实现动态分配,用完立即释放,存储器使用效率非常高。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1