一种双端口虚拟fifo数据交换的方法

文档序号:6340433阅读:252来源:国知局
专利名称:一种双端口虚拟fifo数据交换的方法
技术领域
本发明涉及一种机载计算机中多处理器系统之间的数据交换方法,尤其涉及一种 实现双端口虚拟FIFO的数据写入与读出方法。
背景技术
在机载计算机中,数据获取及交换是多处理器系统的重要组成部分。各智能接口 模块接收主处理器模块的各种控制命令,然后根据控制命令实时采集接口数据并及时将数 据提供给主处理器模块。多处理器系统数据交换的传统解决方法在接口模块上设计双端 口存储器电路,然后在双端口存储器上为各功能模块划分单/双缓冲数据区来解决多处理 器模块之间的数据交换。随着机载系统的快速发展,机载计算机集中的功能越来越多,智能 接口模块具有的功能越来越多,导致数据交换要求的通讯数据量很大,传统解决方法很难 满足这一系列要求。

发明内容
为了解决背景技术中所存在的技术问题,本发明提出了一种双端口虚拟FIFO数 据交换的方法,适用于机载计算机中多处理器系统之间的数据交换。本发明的技术解决方案是一种双端口虚拟FIFO数据写入的方法,其特殊之处在 于所述方法包括以下步骤1)获取FIFO信号量;2)判断待发送的数据块长度与FIFO长度的关系;3)获取FIFO的头指针和尾指针,通过获取到的头指针和尾指针判断数据块的长 度是否小于FIFO当前待写入空间的长度;若是,则进行步骤4);4)计算数据块的校验和;5)在当前头指针所指的位置依次写入数据块的长度、数据块与校验和,并移动头 指针;6)释放FIFO信号量。 上述步骤2~)的具体步骤是2. 1)判断数据块的长度是否小于FIFO的长度,若是,则进行步骤2.2 ;若否,则直 接进行步骤6);2. 2)判断数据块的长度是否为0,若否,则进行步骤幻;若是,则直接进行步骤 6);2.3)判断FIFO是否队列满,若否,则进行步骤3);上述步骤幻的具体步骤是3. 1)获取FIFO的头指针(head)和尾指针(tail);3. 2)判断头指针和尾指针的大小关系当头指针大于尾指针时,将头指针向后移 动待写入数据的长度后的位置大于头指针或者小于尾指针时,该数据块可写入FIFO;当头
3指针小于尾指针时,将头指针向后移动待写入数据的长度后的位置大于头指针并小于尾指 针时,该数据块可写入FIFO。一种双端口虚拟FIFO数据读出的方法,其特殊之处在于所述方法包括以下步 骤1)获取FIFO信号量;2)获取FIFO的头指针、尾指针,根据获取到的头指针、尾指针判断FIFO是否有新 数据块需要接收;3)读取需要接收的数据块的长度,即当前头指针处的数据,然后根据数据块长度 依次读出数据块内容和校验和;4)释放FIFO信号量。上述步骤2)中判断FIFO是否有新数据块需要接收的具体步骤是2. 1)判断头指针和尾指针是否相等,如果头指针和尾指针不相等,则FIFO中有数 据需要接收;2. 2)根据约定算法(例如计算所有数据的异或)计算该数据块的校验和,然后将 读出的校验和计算的校验和进行比较,如果相同则该数据块有效,保存该数据块,否则抛弃 该数据块,并移动尾指针;本发明的优点是(1)双端口存储器在机载计算机中使用很普遍,因此物理实现很方便,而且硬件电 路设计技术成熟、接口设计简单;(2)采用环形设计,保证高吞吐数据量,并设定状态信息单元,保证数据交换的高 效性;(3)使用信号量机制来控制双端口访问带来的竞争,提高了数据访问的可靠性;(4)在一个双端口存储器中可以根据用户的需求定义多个虚拟FIFO,并且每个 FIFO的起始位置和长度可以由用户自定义,使用灵活;(5)虚拟FIFO的操作方式(字节,字,双字)可根据用户需求进行选择,而且可根 据用户需求定义数据块算法,增加数据传输的可靠性。


图1是双端口虚拟FIFO的功能区划分示意图;图2是双端口虚拟FIFO数据写入流程图;图3是双端口虚拟FIFO数据读出流程具体实施例方式参见图1,双端口虚拟FIFO的功能区划分为(1)虚拟FIFO数据管理区,用于保存 FIFO头指针、FIFO尾指针、FIFO的工作状态、记录FIFO的尺寸等其他相关信息;(2)虚拟 FIFO数据区,用于保存待交换的数据;参见图2,一种双端口虚拟FIFO数据交换的方法,FIFO数据写入操作的步骤如 下1)获取FIFO信号量;
2)判断待发送数据块的合理性2. 1)判断数据块(msg[])的长度(Ien)是否小于FIFO的长度(fifo_siZe);若 是,进行步骤2. 2);2. 2)判断数据块的长度是否为0,若否,则进行步骤3);2.3)判断FIFO队列是否满(如果尾指针的下一个位置等于头指针,表示队列 满);3)判断待发送数据块可行性,判断数据块的长度(Ien)是否小于FIFO当前待写入 空间的长度3. 1)获取FIFO的头指针(head)和尾指针(tail);3. 2)当头指针大于尾指针时,tmp为将头指针向后移动待写入数据的长度后的位 置,当tmp大于head或者tmp小于tail时,该数据块可写入FIFO ;当头指针小于尾指针时, tmp为将头指针向后移动待写入数据的长度后的位置,当tmp大于head并且tmp小于tail 时,该数据块可写入FIFO;4)根据约定好的算法(例如计算所有数据的异或)计算数据块的校验和;5)在目前头指针所指的位置依次写入数据块的长度、数据块与校验和,并移动头 指针;6)释放FIFO信号量。参见图3,一种双端口虚拟FIFO数据交换的交换方法,FIFO数据读出操作的步骤 如下1)获取FIFO信号量;2)判断FIFO有新数据块如果头指针和尾指针不相等,说明FIFO中有数据需要 接收;3)获取数据块读取数据块的长度即当前头指针处的数据,然后根据长度依次读 出数据块内容和校验和,根据约定算法(例如计算所有数据的异或)计算该数据块的校验 和,然后将读出的校验和计算的校验和进行比较,如果相同说明该数据块有效,那么保存该 数据块,否则抛弃该数据块,并移动尾指针;4)释放FIFO信号量。
权利要求
1.一种双端口虚拟FIFO数据写入的方法,其特征在于所述方法包括以下步骤1)获取FIFO信号量;2)判断待发送的数据块与获取到的FIFO信号量的大小关系;3)获取FIFO的头指针和尾指针,通过获取到的头指针和尾指针判断数据块的长度是 否小于FIFO当前待写入空间的长度;若是,则进行步骤4);4)计算数据块的校验和;5)在当前头指针所指的位置依次写入数据块的长度、数据块与校验和,并移动头指针;6)释放FIFO信号量。
2.根据权利要求1所述的双端口虚拟FIFO数据写入的方法,其特征在于所述步骤2) 的具体步骤是.2.1)判断数据块的长度是否小于FIFO的长度,若是,则进行步骤2. 2 ;若否,则直接进 行步骤6);.2.2)判断数据块的长度是否为0,若否,则进行步骤3);若是,则直接进行步骤6);.2.3)判断FIFO是否队列满,若否,则进行步骤3);
3.根据权利要求2所述的双端口虚拟FIFO数据写入的方法,其特征在于所述步骤3) 的具体步骤是.3. 1)获取FIFO的头指针和尾指针;.3.2)判断头指针和尾指针的大小关系当头指针大于尾指针时,将头指针向后移动待 写入数据的长度后的位置大于头指针或者小于尾指针时,该数据块可写入FIFO;当头指针 小于尾指针时,将头指针向后移动待写入数据的长度后的位置大于头指针并小于尾指针 时,该数据块可写入FIFO。
4.一种双端口虚拟FIFO数据读出的方法,其特征在于所述方法包括以下步骤(1)获取FIFO信号量;(2)获取FIFO的头指针、尾指针,根据获取到的头指针、尾指针判断FIFO是否有新数据 块需要接收;(3)读取需要接收的数据块的长度,即当前头指针处的数据,然后根据数据块长度依次 读出数据块内容和校验和;(4)释放FIFO信号量。
5.根据权利要求4所述的双端口虚拟FIFO数据读出的方法,其特征在于所述步骤2) 中判断FIFO是否有新数据块需要接收的具体步骤是.2. 1)判断头指针和尾指针是否相等,如果头指针和尾指针不相等,则FIFO中有数据需 要接收;.2. 2)根据约定算法(例如计算所有数据的异或)计算该数据块的校验和,然后将读出 的校验和计算的校验和进行比较,如果相同则该数据块有效,保存该数据块,否则抛弃该数 据块,并移动尾指针。
全文摘要
本发明提出了一种双端口虚拟FIFO数据写入的方法,包括以下步骤1)获取FIFO信号量;2)判断待发送的数据块长度与FIFO长度的关系;3)获取FIFO的头指针和尾指针,通过获取到的头指针和尾指针判断数据块的长度是否小于FIFO当前待写入空间的长度;若是,则进行步骤4);4)计算数据块的校验和;5)在当前头指针所指的位置依次写入数据块的长度、数据块与校验和,并移动头指针;6)释放FIFO信号量。本发明的一种双端口虚拟FIFO数据交换的方法,适用于机载计算机中多处理器系统之间的数据交换。
文档编号G06F15/163GK102147786SQ20101061256
公开日2011年8月10日 申请日期2010年12月29日 优先权日2010年12月29日
发明者张珏辉, 韩嫚丽, 高杨 申请人:中国航空工业集团公司第六三一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1