首页 / 专利库 / 软件 / 软件套件 / 一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法

一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法

阅读:1发布:2020-07-04

专利汇可以提供一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种支持多个FC-AE-1553 节点 并行工作的节点卡及其实现方法,涉及FC-AE-1553通信技术领域,节点卡内集成有1个NC节点和k个NT节点,且k+1个FC-AE-1553节点可以独立地并行工作。节点卡包括光模 块 和支持PCI-E总线 接口 的FPGA,节点卡通过PCI-E接口与计算机主机通信,计算机主机内安装有驱动和应用 软件 ,FPGA连接 应用软件 和光模块。FPGA包括FC-AE-1553会话状态机、读写 请求 调度模块、PCI-E接口模块、寄存器模块、完成报文处理模块、 帧 发送调度模块、帧接收处理模块、帧发送FIFO、帧接收FIFO、光纤通道收发模块。本发明解决传统FC-AE-1553网络中节点卡只作为NC节点或NT节点导致的功能单一和FC-AE-1553网络结构复杂、体积大、成本高的问题。,下面是一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法专利的具体信息内容。

1.一种支持多个FC-AE-1553节点并行工作的节点卡,包括光模,其特征在于,还包括支持PCI-E总线接口并与光模块连接的的FPGA,节点卡内集成有1个NC节点和k个NT节点,且k+1个FC-AE-1553节点可独立地并行工作。
2.根据权利要求1所述的一种支持多个FC-AE-1553节点并行工作的节点卡,其特征在于,所述节点卡通过PCI-E接口与计算机主机通信,计算机主机内安装有驱动和应用软件,FPGA连接应用软件和光模块;其中:
驱动,用于为节点卡内的NC节点和k个NT节点均分配一个独立的缓存空间,每个节点被分配的缓存空间包括发送数据缓存、接收数据缓存、会话描述符缓存和会话描述符指针缓存,其中:
发送数据缓存,用于封装时填充帧的Payload数据;
接收数据缓存,用于接收处理帧时存储帧的Payload数据;
会话描述符缓存,用于存储每个会话的会话描述符:应用软件每生成一次会话,将该会话的会话描述符填入NC节点的会话描述符缓存,通知NC会话状态机读取会话描述符并开启会话;NC会话状态机或NT会话状态机完成一次会话后,生成当前会话的会话描述符并写入对应节点的会话描述符缓存;每个节点均拥有一套用于判断会话是否完成并且应用软件及FPGA均已知的会话描述符读写指针,会话描述符读写指针包括会话描述符写指针和会话描述符读指针;应用软件生成的会话描述符由会话模式、D_ID、发送数据量/接收数据量、数据在缓存存放的起始地址组成;NC会话状态机或NT会话状态机生成的会话描述符由数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID和会话状态信息组成;
会话描述符指针缓存:用于存放NC节点和k个NT节点完成会话后更新的会话描述符写指针,以通知应用软件当前会话已完成;
应用软件,用于生成会话时将待发送数据和会话描述符放入驱动缓存、会话结束后从驱动缓存中提取会话数据和会话描述符。
3.根据权利要求1所述的一种支持多个FC-AE-1553节点并行工作的节点卡,其特征在于,所述FPGA包括FC-AE-1553会话状态机、读写请求调度模块、PCI-E接口模块、寄存器模块、完成报文处理模块、帧发送调度模块、帧接收处理模块、帧发送FIFO、帧接收FIFO、光纤通道收发模块,其中:
FC-AE-1553会话状态机。包括用于实现NC节点功能的NC会话状态机和用于实现NT节点功能的NT会话状态机,用于开启会话时读取会话描述符、帧封装发送与接收处理、完成会话时生成并存储会话描述符,其中,帧包括命令帧、数据帧和状态帧;
读写请求调度模块,轮询调度来自NC会话状态机和NT1~NTk会话状态机的存储器读请求和存储器写请求,仲裁出一个存储器读请求或存储器写请求作为当前服务的请求,并通知PCI-E接口模块将仲裁出的请求组成对应的TLP报文送往PCI-E总线;
PCI-E接口模块,用于为读写请求调度模块轮询仲裁出的存储器读请求或存储器写请求组建对应的存储器读请求TLP报文或存储器写请求TLP报文,并将组成的存储器读请求TLP报文或存储器写请求TLP报文送往PCI-E总线,同时,PCI-E接口模块从PCI-E总线提取完成报文送往完成报文处理模块;
寄存器模块,用于存储应用软件可配置的寄存器,包括NC节点和NT节点的FC_ID和若干个组播FC_ID构成的FC_ID路由表、NC节点开启会话的会话描述符写指针、NC节点和NT节点各自缓存空间中的各类缓存的基地址、NC会话状态机的工作模式;
完成报文处理模块,用于将PCI-E接口模块送来的完成报文送往对应的NC会话状态机或NT会话状态机;
帧发送调度模块,用于从NC会话状态机和k个NT会话状态机的帧发送FIFO中轮询仲裁出一个作为当前服务的FIFO,并从该FIFO中读取一帧送往光纤通道收发模块;
帧接收处理模块,用于存储应用软件配置的NC节点和k个NT节点的FC_ID和若干个组播FC_ID构成的FC_ID路由表,以及在每接收到一帧后,根据该帧的D_ID查询FC_ID路由表,将此帧写入对应的某个节点的帧接收FIFO或者复制写入多个节点的帧接收FIFO;其中,FC_ID路由表由FC_ID及k+1位路由组成,k+1位路由从高到低分别表示是否要将当前接收帧送往NC节点或NT1~NTk节点的帧接收FIFO中;当NC会话状态机处于监控模式时,当前帧除了会被帧接收处理模块写入对应节点的帧接收FIFO外,还会复制一份写入NC节点的帧接收FIFO中;当NC会话状态机处于非监控模式时,若当前帧的D_ID不在FC_ID路由表内,则帧接收处理模块丢弃该帧;
帧发送FIFO:用于存储NC会话状态机或NT会话状态机发送的帧,每个节点的会话状态机均对应有一个帧发送FIFO;
帧接收FIFO:用于存储帧接收处理模块接收的帧,每个节点的会话状态机均对应有一个帧接收FIFO;
光纤信道收发模块:用于实现数据的串/并转换、8b/10b编解码和位宽变换。
4.根据权利要求3所述的一种支持多个FC-AE-1553节点并行工作的节点卡,其特征在于,所述NC会话状态机的工作模式为监控模式或非监控模式,在非监控模式下,NC会话状态机作为NC节点,发挥网络控制的功能;在监控模式下,NC会话状态机作为网络中的监控节点,监听网络所有流量。
5.一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,其特征在于,包括以下步骤:
步骤1、初始化节点卡:为每张节点卡的NC节点和k个NT节点分配独立的缓存空间,选择使能NC节点,并为使能NC节点和各NT节点配置单播FC_ID和组播FC_ID及其路由;
步骤2、应用软件一次生成多个会话,将每个会话的会话描述符和会话数据分别连续写入NC节点的会话描述符缓存和发送数据缓存,更新NC节点的会话描述符写指针并通知NC会话状态机开启会话;其中,会话描述符包括会话模式、D_ID、发送数据量/接收数据量、数据在缓存存放的起始地址;
步骤3、NC会话状态机从NC节点的会话描述符缓存中读取并解析会话描述符,按照会话过程完成帧的封装发送与接收处理;根据会话过程和发送数据量/接收数据量,判断是继续封装发送或等待接收处理下一帧,还是当前会话已完成;
步骤4、NT会话状态机从NC会话状态机发送的命令帧中提取会话信息,包括会话模式和发送数据量/接收数据量,并按照会话过程完成帧的封装发送与接收处理;NT会话状态机每封装发送完或接收处理完一帧后,根据会话模式和使能NC节点指定的发送数据量/接收数据量判断是继续封装发送或等待接收处理下一帧,还是当前会话已完成;
步骤5、NC会话状态机和NT会话状态机发送完所有帧或接收完所有帧或会话超时结束后,向自己的会话描述缓存中写入此次会话生成的会话描述符,包括数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID和会话状态信息,同时,NC会话状态机和NT会话状态机更新自己的会话描述符写指针,以通知应用软件当前会话已完成并进行下一次会话;
步骤6、应用软件从有更新会话描述符写指针的NC节点和NT节点的缓存空间中提取相应的会话描述符和会话数据,并送往后级处理。
6.根据权利要求5所述的一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,其特征在于,实现方法基于一种基于会话描述符读写指针的会话通知机制完成,具体为:
根据会话通知方向,会话描述符读写指针包括以下两种:
第一种:用于应用软件通知FPGA开启会话的会话描述符写指针和会话描述符读指针,即应用软件生成会话后,更新NC节点的会话描述符写指针以通知FPGA中的NC节点开启会话,NC节点检测到自己的会话描述符读指针与会话描述符写指针不同时,表示有会话未开启;
第二种:用于FPGA中的NC节点和NT节点通知应用软件会话完成的会话描述符写指针和会话描述符读指针,即某个节点完成会话后会更新自己的会话描述符写指针,应用软件检测到该节点的会话描述符读指针与会话描述符写指针不同时,则表示该节点有会话已完成;
会话通知方向包括应用软件通知FPGA开启会话方向和FPGA通知应用软件会话结束方向。
7.根据权利要求5所述的一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,其特征在于,所述FC-AE-1553会话状态机在内部完成不带Payload数据的帧的封装发送及接收处理;FC-AE-1553会话状态机封装带Payload数据的帧时,要向该FC-AE-1553会话状态机对应的节点的发送数据缓存发起存储器读请求,并从完成报文中提取有效负载填充该帧的Payload字段;接收处理带Payload数据的帧时,要向该FC-AE-1553会话状态机对应的节点的接收数据缓存发起存储器写请求,将Payload数据存入该对应节点的接收数据缓存。
8.根据权利要求5所述的一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,其特征在于,所述读写请求调度模块的采用轮询调度算法对来自FC-AE-1553会话状态机的存储器读请求和存储器写请求进行调度,包括两轮轮询:
第一轮轮询:从NC会话状态机和NT1~NTk会话状态机的存储器读请求和存储器写请求中分别选出一个存储器读请求和存储器写请求;
第二轮轮询:从第一轮轮询选出的存储器读请求和存储器写请求中选出一种请求作为当前服务的请求,并通知PCI-E接口模块组成对应的存储器读请求TLP报文或存储器写请求TLP报文:
对于存储器读请求,读写请求调度模块将为当前服务的存储器读请求标注上节点编号,通知PCI-E接口模块在组成存储器读请求TLP报文时,将Tag字段填充为对应节点的编号值,以区分不同节点的存储器读请求TLP报文。
9.根据权利要求5所述的一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,其特征在于,所述完成报文处理模块和PCI-E接口模块均遵循Tag字段值0~k分别对应NC节点、NT1节点、...、NTk节点的规则,具体为:PCI-E接口模块为读写请求调度模块轮询仲裁出的存储器读请求组建存储器读请求TLP报文时,会将对应的存储器读请求TLP报文的Tag字段填为对应的节点的编号;完成报文处理模块从接收到的完成报文中提取Tag字段时,根据当前完成报文的Tag字段值,按上述规则将完成报文送往对应的NC会话状态机或NT会话状态机。

说明书全文

一种支持多个FC-AE-1553节点并行工作的节点卡及其实现

方法

技术领域

[0001] 本发明涉及FC-AE-1553通信技术领域,具体涉及一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法

背景技术

[0002] 光纤通道(Fiber Channel,FC)是由美国国际信息技术标准委员会(INCITS)于1998年制定的一种高速串行通信协议。MIL-STD-1553B总线是由美国国防部于1978年公布的军用命令/响应式多路复用数据总线。作为FC-AE(Fiber  Channel Avionics Environment,光纤通道航空电子环境)协议簇中的一员,FC-AE-1553协议是由MIL-STD-
1553B总线协议映射到光纤通道协议的适用于FC网络的一种命令/响应式网络通信协议,具有高可靠性、高带宽、强实时性、强兼容性等特点,被广泛用于航空航天等军用电子环境中通信设备之间的数据传输和指挥控制等技术领域。
[0003] FC-AE-1553网络是由FC-AE-1553节点卡和FC交换机等设备组成的网络,在传统的FC-AE-1553网络中,一张FC-AE-1553节点卡只作为FC-AE-1553网络中的一个节点,且每个FC-AE-1553节点只能作为NC(Network Controller,网络控制器)或者NT(Network Terminal,网络终端)节点。目前,提出了一种可互换实现NC或NT的节点卡设计方法,但节点卡的NC和NT功能是互斥的,即同一时刻节点卡只能作为NC节点或NT节点,需要用户切换节点卡的NC和NT功能,相当于还是一张节点卡对应一个节点,一张节点卡不能具有多个可以同时并行工作的节点。
[0004] 然而,在一个大型FC-AE-1553网络中,随着FC-AE-1553节点数量增多,FC-AE-1553网络结构更加复杂,网络的监控与管理工作变得更加繁琐;同时,随着节点卡和交换机数目的增多,搭建FC-AE-1553网络的成本也会随之增高,同时搭建整个网络系统所需的物理空间也会急剧增大,这也一定程度上阻碍了诸如军用小型无人机等对体积、重量要求较高的军用飞行控制系统向轻小型化方向发展。

发明内容

[0005] 本发明的目的在于:为解决传统FC-AE-1553网络中节点卡只作为NC节点或NT节点导致的功能单一和FC-AE-1553网络结构复杂、体积大、成本高的问题,本发明提出了一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法。
[0006] 本发明采用的技术方案如下:
[0007] 一种支持多个FC-AE-1553节点并行工作的节点卡,包括光模,还包括支持PCI-E总线接口并与光模块连接的的FPGA,节点卡内集成有1个NC节点和k个NT节点,且k+1个FC-AE-1553节点可独立地并行工作。
[0008] 进一步地,所述节点卡通过PCI-E接口与计算机主机通信,计算机主机内安装有驱动和应用软件,FPGA连接应用软件和光模块;其中:
[0009] 驱动,用于为节点卡内的NC节点和k个NT节点均分配一个独立的缓存空间,每个节点被分配的缓存空间包括发送数据缓存、接收数据缓存、会话描述符缓存和会话描述符指针缓存,其中:
[0010] 发送数据缓存,用于封装时填充帧的Payload数据;
[0011] 接收数据缓存,用于接收处理帧时存储帧的Payload数据;
[0012] 会话描述符缓存,用于存储每个会话的会话描述符:应用软件每生成一次会话,将该会话的会话描述符填入NC节点的会话描述符缓存,通知NC会话状态机读取会话描述符并开启会话;NC会话状态机或NT会话状态机完成一次会话后,生成当前会话的会话描述符并写入对应节点的会话描述符缓存;每个节点均拥有一套用于判断会话是否完成并且应用软件及FPGA均已知的会话描述符读写指针,会话描述符读写指针包括会话描述符写指针和会话描述符读指针;应用软件生成的会话描述符由会话模式、D_ID、发送数据量/接收数据量、数据在缓存存放的起始地址组成;NC会话状态机或NT会话状态机生成的会话描述符由数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID和会话状态信息组成;
[0013] 会话描述符指针缓存:用于存放NC节点和k个NT节点完成会话后更新的会话描述符写指针,以通知应用软件当前会话已完成;
[0014] 应用软件,用于生成会话时将待发送数据和会话描述符放入驱动缓存、会话结束后从驱动缓存中提取会话数据和会话描述符。
[0015] 进一步地,所述FPGA包括FC-AE-1553会话状态机、读写请求调度模块、PCI-E接口模块、寄存器模块、完成报文处理模块、帧发送调度模块、帧接收处理模块、帧发送FIFO、帧接收FIFO、光纤通道收发模块,其中:
[0016] FC-AE-1553会话状态机,包括用于实现NC节点功能的NC会话状态机和用于实现NT节点功能的NT会话状态机,用于开启会话时读取会话描述符、帧封装发送与接收处理、完成会话时生成并存储会话描述符,其中,帧包括命令帧、数据帧和状态帧;
[0017] 读写请求调度模块,轮询调度来自NC会话状态机和NT1~NTk会话状态机的存储器读请求和存储器写请求,仲裁出一个存储器读请求或存储器写请求作为当前服务的请求,并通知PCI-E接口模块将仲裁出的请求组成对应的TLP报文送往PCI-E总线;
[0018] PCI-E接口模块,用于为读写请求调度模块轮询仲裁出的存储器读请求或存储器写请求组建对应的存储器读请求TLP报文或存储器写请求TLP报文,并将组成的存储器读请求TLP报文或存储器写请求TLP报文送往PCI-E总线,同时,PCI-E接口模块从PCI-E总线提取完成报文送往完成报文处理模块;
[0019] 寄存器模块,用于存储应用软件可配置的寄存器,包括NC节点和NT节点的FC_ID和若干个组播FC_ID构成的FC_ID路由表、NC节点开启会话的会话描述符写指针、NC节点和NT节点各自缓存空间中的各类缓存的基地址、NC会话状态机的工作模式;
[0020] 完成报文处理模块,用于将PCI-E接口模块送来的完成报文送往对应的NC会话状态机或NT会话状态机;
[0021] 帧发送调度模块,用于从NC会话状态机和k个NT会话状态机的帧发送FIFO中轮询仲裁出一个作为当前服务的FIFO,并从该FIFO中读取一帧送往光纤通道收发模块;
[0022] 帧接收处理模块,用于存储应用软件配置的NC节点和k个NT节点的FC_ID和若干个组播FC_ID构成的FC_ID路由表,以及在每接收到一帧后,根据该帧的D_ID查询FC_ID路由表,将此帧写入对应的某个节点的帧接收FIFO或者复制写入多个节点的帧接收FIFO;其中,FC_ID路由表由FC_ID及k+1位路由组成,k+1位路由从高到低分别表示是否要将当前接收帧送往NC节点或NT1~NTk节点的帧接收FIFO中;当NC会话状态机处于监控模式时,当前帧除了会被帧接收处理模块写入对应节点的帧接收FIFO外,还会复制一份写入NC节点的帧接收FIFO中;当NC会话状态机处于非监控模式时,若当前帧的D_ID不在FC_ID路由表内,则帧接收处理模块丢弃该帧;
[0023] 帧发送FIFO:用于存储NC会话状态机或NT会话状态机发送的帧,每个节点的会话状态机均对应有一个帧发送FIFO;
[0024] 帧接收FIFO:用于存储帧接收处理模块接收的帧,每个节点的会话状态机均对应有一个帧接收FIFO;
[0025] 光纤信道收发模块:用于实现数据的串/并转换、8b/10b编解码和位宽变换。
[0026] 进一步地,所述NC会话状态机的工作模式为监控模式或非监控模式,在非监控模式下,NC会话状态机作为NC节点,发挥网络控制的功能;在监控模式下,NC会话状态机作为网络中的监控节点,监听网络所有流量。
[0027] 一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,包括以下步骤:
[0028] 步骤1、初始化节点卡:为每张节点卡的NC节点和k个NT节点分配独立的缓存空间,选择使能NC节点,并为使能NC节点和各NT节点配置单播FC_ID和组播FC_ID及其路由;
[0029] 步骤2、应用软件一次生成多个会话,将每个会话的会话描述符和会话数据分别连续写入NC节点的会话描述符缓存和发送数据缓存,更新NC节点的会话描述符写指针并通知NC会话状态机开启会话;其中,会话描述符包括会话模式、D_ID、发送数据量/接收数据量、数据在缓存存放的起始地址;
[0030] 步骤3、NC会话状态机从NC节点的会话描述符缓存中读取并解析会话描述符,按照会话过程完成帧的封装发送与接收处理;根据会话过程和发送数据量/接收数据量,判断是继续封装发送或等待接收处理下一帧,还是当前会话已完成;
[0031] 步骤4、NT会话状态机从NC会话状态机发送的命令帧中提取会话信息,包括会话模式和发送数据量/接收数据量,并按照会话过程完成帧的封装发送与接收处理;NT会话状态机每封装发送完或接收处理完一帧后,根据会话模式和使能NC节点指定的发送数据量/接收数据量判断是继续封装发送或等待接收处理下一帧,还是当前会话已完成;
[0032] 步骤5、NC会话状态机和NT会话状态机发送完所有帧或接收完所有帧或会话超时结束后,向自己的会话描述缓存中写入此次会话生成的会话描述符,包括数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID和会话状态信息,同时,NC会话状态机和NT会话状态机更新自己的会话描述符写指针,以通知应用软件当前会话已完成并进行下一次会话;
[0033] 步骤6、应用软件从有更新会话描述符写指针的NC节点和NT节点的缓存空间中提取相应的会话描述符和会话数据,并送往后级处理。
[0034] 进一步地,实现方法基于一种基于会话描述符读写指针的会话通知机制完成,具体为:
[0035] 根据会话通知方向,会话描述符读写指针包括以下两种:
[0036] 第一种:用于应用软件通知FPGA开启会话的会话描述符写指针和会话描述符读指针,即应用软件生成会话后,更新NC节点的会话描述符写指针以通知FPGA中的NC节点开启会话,NC节点检测到自己的会话描述符读指针与会话描述符写指针不同时,表示有会话未开启;
[0037] 第二种:用于FPGA中的NC节点和NT节点通知应用软件会话完成的会话描述符写指针和会话描述符读指针,即某个节点完成会话后会更新自己的会话描述符写指针,应用软件检测到该节点的会话描述符读指针与会话描述符写指针不同时,则表示该节点有会话已完成;
[0038] 会话通知方向包括应用软件通知FPGA开启会话方向和FPGA通知应用软件会话结束方向。
[0039] 进一步地,所述FC-AE-1553会话状态机在内部完成不带Payload数据的帧的封装发送及接收处理;FC-AE-1553会话状态机封装带Payload数据的帧时,要向该FC-AE-1553会话状态机对应的节点的发送数据缓存发起存储器读请求,并从完成报文中提取有效负载填充该帧的Payload字段;接收处理带Payload数据的帧时,要向该FC-AE-1553会话状态机对应的节点的接收数据缓存发起存储器写请求,将Payload数据存入该对应节点的接收数据缓存。
[0040] 进一步地,所述读写请求调度模块的采用轮询调度算法对来自FC-AE-1553会话状态机的存储器读请求和存储器写请求进行调度,包括两轮轮询:
[0041] 第一轮轮询:从NC会话状态机和NT1~NTk会话状态机的存储器读请求和存储器写请求中分别选出一个存储器读请求和存储器写请求;
[0042] 第二轮轮询:从第一轮轮询选出的存储器读请求和存储器写请求中选出一种请求作为当前服务的请求,并通知PCI-E接口模块组成对应的存储器读请求TLP报文或存储器写请求TLP报文:
[0043] 对于存储器读请求,读写请求调度模块将为当前服务的存储器读请求标注上节点编号,通知PCI-E接口模块在组成存储器读请求TLP报文时,将Tag字段填充为对应节点的编号值,以区分不同节点的存储器读请求TLP报文。
[0044] 进一步地,所述完成报文处理模块和PCI-E接口模块均遵循Tag字段值0~k分别对应NC节点、NT1节点、...、NTk节点的规则,具体为:PCI-E接口模块为读写请求调度模块轮询仲裁出的存储器读请求组建存储器读请求TLP报文时,会将对应的存储器读请求TLP报文的Tag字段填为对应的节点的编号;完成报文处理模块从接收到的完成报文中提取Tag字段时,根据当前完成报文的Tag字段值,按上述规则将完成报文送往对应的NC会话状态机或NT会话状态机。
[0045] 综上所述,由于采用了上述技术方案,本发明的有益效果是:
[0046] 1、本发明中,每张节点卡内集成了k+1个可以并行工作的FC-AE-1553节点,解决了传统的每个FC-AE-1553节点卡只作为一个NC或者作为一个NT节点而造成节点功能单一的问题,简化了FC-AE-1553网络结构,减小了FC-AE-1553网络系统的体积,降低了FC-AE-1553网络所需的成本。
[0047] 2、本发明中,在FC-AE-1553网络需要的NC节点或者NT节点数量一定的情况下,当一张节点卡可以包含更多的NC节点和NT节点时,整个网络中的节点卡和交换机的数量也会随之减少,从而可以达到简化网络结构、提高了FC-AE-1553网络的监控与管理效率。
[0048] 3、本发明中,FC-AE-1553网络中包含更少的节点卡和交换机等网络设备,极大地降低了搭建整个FC-AE-1553网络系统的成本,也较大幅度地节省了FC-AE-1553网络中网络设备占用的总空间。附图说明
[0049] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0050] 图1为本发明的整体设计框图
[0051] 图2为存储器读请求、存储器写请求和完成报文格式;
[0052] 图3为实施例一的FC-AE-1553网络结构图;
[0053] 图4为实施例一中节点卡1、节点卡2内部配置的FC_ID路由表;
[0054] 图5为实施例一中会话1和会话2的会话过程示意图。

具体实施方式

[0055] 为了使本发明的目的、技术方案及优点更加清楚明自,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056] 需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0057] 以下结合实施例对本发明的特征和性能作进一步的详细描述。
[0058] 实施例1
[0059] 本发明较佳实施例提供的一种支持多个FC-AE-1553节点并行工作的节点卡及其实现方法,其中,一张节点卡集成有1个NC节点和k个NT节点,且k+1个FC-AE-1553节点可以独立地并行工作。如图1所示,节点卡包括光模块和支持PCI-E总线接口的FPGA,节点卡通过PCI-E接口与计算机主机通信,计算机主机内安装有驱动和应用软件,FPGA连接应用软件和光模块。应用软件用于生成会话时将待发送数据和会话描述符放入驱动缓存(即开启会话)、会话结束后从驱动缓存中提取会话数据和会话描述符(即结束会话),驱动用于为节点卡内的NC节点和k个NT节点均分配一个独立的缓存空间。其中,驱动用于为节点卡内的NC节点和k个NT节点均分配一个独立的缓存空间,每个节点被分配的缓存空间包括发送数据缓存、接收数据缓存、会话描述符缓存和会话描述符指针缓存,其中:
[0060] 发送数据缓存,用于封装帧时填充帧的Payload数据。
[0061] 接收数据缓存,用于接收处理帧时存储帧的Payload数据。
[0062] 会话描述符缓存,用于存储每个会话的会话描述符:应用软件每生成一次会话,将该会话的会话描述符填入NC节点的会话描述符缓存,通知NC会话状态机读取会话描述符并开启会话;NC会话状态机或NT会话状态机完成一次会话后,生成当前会话的会话描述符并写入对应节点的会话描述符缓存。每个节点均拥有一套用于判断会话是否完成并且应用软件及FPGA均已知的会话描述符读写指针,会话描述符读写指针包括会话描述符写指针和会话描述符读指针。应用软件生成的会话描述符由会话模式、D_ID、发送数据量/接收数据量、数据在缓存存放的起始地址组成;NC会话状态机或NT会话状态机生成的会话描述符由数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID和会话状态信息组成。
[0063] 会话描述符指针缓存:用于存放NC节点和k个NT节点完成会话后更新的会话描述符写指针,以通知应用软件当前会话已完成。
[0064] 应用软件用于生成会话时将待发送数据和会话描述符放入驱动缓存(即开启会话)、会话结束后从驱动缓存中提取会话数据和会话描述符(即结束会话)。
[0065] FPGA包括FC-AE-1553会话状态机、读写请求调度模块、PCI-E接口模块、寄存器模块、完成报文处理模块、帧发送调度模块、帧接收处理模块、帧发送FIFO、帧接收FIFO、光纤通道收发模块。其中:
[0066] FC-AE-1553会话状态机:包括用于实现NC节点功能的NC会话状态机和用于实现NT节点功能的NT会话状态机,用于开启会话时读取会话描述符、帧封装发送与接收处理、完成会话时生成并存储会话描述符。本发明中,“帧”为命令帧、数据帧和状态帧的统称,即待发送或接收的帧可以是这三种帧的任意一种,命令帧、数据帧和状态帧均包含SOF、帧头、Payload数据(可为0字节)、CRC、EOF,帧头包括D_ID、OX_ID等。对于不带Payload数据的帧的封装发送及接收处理,FC-AE-1553会话状态机在内部完成。FC-AE-1553会话状态机封装带Payload数据的帧时,要向该FC-AE-1553会话状态机对应的节点的发送数据缓存发起存储器读请求,并从完成报文提取有效负载填充该帧的Payload字段;接收处理带Payload数据的帧时,要向该FC-AE-1553会话状态机对应的节点的接收数据缓存发起存储器写请求,并将Payload数据存入该节点的接收数据缓存。其中,NC会话状态机可配置为监控模式或非监控模式,在非监控模式下,NC会话状态机作为NC节点,发挥网络控制的功能;在监控模式下,NC会话状态机作为网络中的监控节点,监听网络所有流量。
[0067] 读写请求调度模块:轮询调度来自NC会话状态机和NT1~NTk会话状态机的存储器读请求和存储器写请求,仲裁出一个存储器读请求或存储器写请求作为当前服务的请求,并通知PCI-E接口模块将仲裁出的请求组成对应的TLP报文送往PCI-E总线。读写请求调度模块用于解决多个NC会话状态机或NT会话状态机同时发起存储器读请求和存储器写请求而PCI-E模块只能串行处理存储器读请求或存储器写请求的问题,包含两轮轮询:
[0068] 第一轮轮询:从NC会话状态机和NT1~NTk会话状态机的存储器读请求和存储器写请求中分别选出一个存储器读请求和存储器写请求。
[0069] 第二轮轮询:从第一轮轮询选出的存储器读请求和存储器写请求中选出一种请求作为当前服务的请求,并通知PCI-E接口模块组成对应的存储器读请求TLP报文或存储器写请求TLP报文。
[0070] 特别地,对于存储器读请求,读写请求调度模块会为当前服务的存储器读请求标注上节点编号(NC节点、NT1~NTk节点分别对应编号0~k),通知PCI-E接口模块在组成存储器读请求TLP报文时,将Tag字段填充为对应的节点的编号值,以区分不同节点(NC节点和NT1~NTk节点)的存储器读请求TLP报文。
[0071] PCI-E接口模块:用于为读写请求调度模块轮询仲裁出的存储器读请求或存储器写请求组建对应的存储器读请求TLP报文或存储器写请求TLP报文,并将组成的存储器读请求TLP报文或存储器写请求TLP报文送往PCI-E总线,同时,PCI-E接口模块从PCI-E总线提取完成报文送往完成报文处理模块。其中,存储器读请求TLP报文的Tag字段填入对应节点编号0~k,以区分不同NC节点和NT节点的存储器读请求TLP报文。
[0072] 寄存器模块:用于存储应用软件可配置的寄存器,包括NC节点和NT节点的FC_ID和若干个组播FC_ID构成的FC_ID路由表、NC节点开启会话的会话描述符写指针、NC节点和NT节点各自缓存空间中的各类缓存的基地址、NC会话状态机的工作模式(监听模式或非监听模式)。
[0073] 完成报文处理模块:用于将PCI-E接口模块送来的完成报文送往对应的NC会话状态机或NT会话状态机。完成报文处理模块和PCI-E接口模块均遵循Tag字段值0~k分别对应NC节点、NT1节点、...、NTk节点的规则。PCI-E接口模块为读写请求调度模块轮询仲裁出的存储器读请求TLP报文时,会将对应的存储器读请求TLP报文的Tag字段填为对应的节点的编号;完成报文处理模块会从接收到的完成报文中提取Tag字段,根据当前完成报文的Tag字段值,按上述规则将完成报文送往对应的NC会话状态机或NT会话状态机。
[0074] 帧发送调度模块:与NC会话状态机和k个NT状态机所对应的k+1个帧发送FIFO以及光纤通道收发模块相连,从NC会话状态机和k个NT会话状态机的帧发送FIFO中轮询仲裁出一个作为当前服务的FIFO,并从该FIFO中读取一帧送往光纤通道收发模块。
[0075] 帧接收处理模块:用于存储应用软件配置的NC节点和k个NT节点的FC_ID和若干个组播FC_ID构成的FC_ID路由表,以及在每接收到一帧后,根据该帧的D_ID查询FC_ID路由表,然后将此帧写入对应的某个节点的帧接收FIFO(单播)或者复制写入多个节点的帧接收FIFO(组播或广播)。帧接收处理模块中,FC_ID路由表由FC_ID及k+1位路由组成,其中,k+1位路由从高到低分别表示是否要将当前接收帧送往NC节点或NT1~NTk节点的帧接收FIFO中,例如:NT1节点和NT2节点的组播FC_ID对应的路由为0110...0。特别地,当NC会话状态机处于监控模式时,当前帧除了会写入对应节点的帧接收FIFO外,还会复制一份写入NC节点的帧接收FIFO中。当NC会话状态机处于非监控模式时,若当前帧的D_ID不在FC_ID路由表内,则会被帧接收处理模块丢弃。
[0076] 帧发送FIFO:用于存储NC会话状态机或NT会话状态机发送的帧,每个节点的会话状态机均对应有一个帧发送FIFO,每个节点的会话状态机的接口信号与对应的帧发送FIFO的接口信号相连。
[0077] 帧接收FIFO:用于存储帧接收处理模块接收的帧,每个节点的会话状态机均对应有一个帧接收FIFO,每个节点的会话状态机的接口信号与对应的帧接收FIFO的接口信号相连。
[0078] 光纤信道收发模块:用于实现数据的串/并转换、8b/10b编解码和位宽变换,具体为:发送方向上:将待发送帧从并行信号经位宽变换、8b/10b编码和并/串转换转化为串行电信号送往光模块。接收方向上:将光模块送来的串行电信号经串并转换、8b/10b解码和位宽变换转换为并行信号并从中提取完整的帧送往帧接收处理模块。
[0079] 本发明提出的一种支持多个FC-AE-1553节点并行工作的节点卡实现方法,包含一种基于会话描述符读写指针的会话通知机制,根据会话通知方向(包括应用软件通知FPGA开启会话方向和FPGA通知应用软件会话结束方向),会话描述符读写指针分为两种:第一种是作为使能的NC节点才拥有的一套用于开启会话的会话描述符读写指针,即用于应用软件通知FPGA开启会话的会话描述符写指针和会话描述符读指针,应用软件生成会话后,更新使能NC节点的会话描述符写指针以通知FPGA中的NC节点开启会话,使能NC节点检测到自己的会话描述符读指针与会话描述符写指针不同时,则表示有会话未开启。第二种是节点卡内包含的所有节点均拥有的一套用于判断会话是否完成并且应用软件及FPGA均已知的会话描述符读写指针,当一方更新会话描述符写指针或会话描述符读指针时,会通知另一方更新对应的指针,即为用于FPGA中的NC节点和NT节点通知应用软件会话完成的会话描述符写指针和会话描述符读指针,某个节点完成会话后会更新自己的会话描述符写指针,应用软件检测到该节点的会话描述符读指针与会话描述符写指针不同时,则表示该节点有会话已完成。
[0080] 发送方向上,FC-AE-1553会话状态机对带有Payload数据的命令帧、数据帧和状态帧的封装,需要从FC-AE-1553会话状态机对应的节点的发送数据缓存读取数据以填充帧的Payload字段,对不带Payload数据的命令帧和状态帧,则在FC-AE-1553会话状态机内部完成封装。接收方向上,FC-AE-1553会话状态机在处理带Payload数据的命令帧、数据帧和状态帧时,需要将帧的Payload数据写入FC-AE-1553会话状态机对应的节点的接收数据缓存中,对不带Payload的命令帧和状态帧,则在FC-AE-1553会话状态机内部处理完成。下面结合各个模块介绍节点卡发送方向和接收方向数据的处理过程。
[0081] 节点卡在发送方向上的数据处理过程如下:
[0082] (I-a)、FC-AE-1553会话状态机处理应用软件一次生成多个会话组成的会话描述符组,并根据会话描述符组中各会话的会话描述符完成命令帧、数据帧和状态帧的封装,若当前待发送的帧带有Payload数据或当前NC会话状态机需要读取会话描述符,FC-AE-1553会话状态机向读写请求调度模块发起存储器读请求,同时将需要读取的缓存空间的地址和长度送往读写请求调度模块。反之,若当前待发送的帧不带Payload数据或NC会话状态机读取到待发送的帧中不包含会话描述符,FC-AE-1553会话状态机内部完成帧的封装,不向读写请求调度模块发起存储器读请求,帧封装完成后,将其写入对应节点的帧发送FIFO,跳转至步骤(I-f)。此外,数据和会话描述符存放的起始地址从寄存器模块获取(针对NT节点)或从会话描述符中提取(针对NC节点),每个节点的会话状态机内部会计算从缓存空间读取数据的地址,其长度由接收或发送的数据量决定。
[0083] (I-b)、读写请求调度模块采用轮询调度算法对来自FC-AE-1553会话状态机的存储器读请求进行调度,仲裁出一个NC节点或NT节点发起的存储器读请求作为当前服务的存储器读请求,并为其标注上节点编号(NC节点、NT1~NTk节点分别对应编号0~k),待读写请求调度模块处理存储器读请求时,将仲裁出的存储器读请求的地址和长度及其对应的节点编号送往PCI-E接口模块。
[0084] (I-c)、PCI-E接口模块为读写请求调度模块仲裁出的存储器读请求组建存储器读请求TLP报文,存储器读请求TLP报文格式如图2所示,其中,Address、Length和Tag字段分别填入读写请求调度模块发送来的存储器读请求的地址、长度和节点编号。同时,PCI-E接口模块从PCI-E总线上提取完成报文,并将完成报文送往完成报文处理模块。其中,从PCI-E总线上提取的完成报文具体为响应存储器读请求的报文,即PCI-E总线每收到一次存储器读请求,将从发送数据缓存读取的数据封装在完成报文中并返回给FPGA。
[0085] (I-d)、完成报文处理模块提取完成报文的Tag字段,按照Tag值0~k分别对应NC节点、NT1节点、...、NTk节点的规则,将完成报文送到对应的NC会话状态机或NT会话状态机。
[0086] (I-e)、FC-AE-1553会话状态机接收完成报文,若完成报文的有效负载存储的是会话描述符,则FC-AE-1553会话状态机在内部完成处理,即从有效负载中提取会话描述符,不往帧发送FIFO中写入任何数据;否则,FC-AE-1553会话状态机从完成报文提取有效负载来填充帧的Payload字段,并将SOF、帧头、Payload数据、CRC、EOF写入自己的帧发送FIFO,其中,SOF、帧头、CRC、EOF均在FC-AE-1553会话状态机内部生成。
[0087] (I-f)、帧发送调度模块采用轮询调度算法对NC会话状态机和k个NT会话状态机的帧发送FIFO进行轮询调度,仲裁出一个节点的帧发送FIFO作为当前服务的FIFO,并从中读取一帧送往光纤通道收发模块。
[0088] (I-g)、光纤通道收发模块将帧发送调度模块发送来的帧由并行信号经位宽变换、8b/10b编码和并/串转换转换为串行电信号并送往光模块。
[0089] 节点卡在接收方向上的数据处理过程如下:
[0090] (II-a)、光纤通道收发模块将光模块发送来的串行电信号经串/并转换、8b/10b解码和位宽变换转换为并行数据,并从并行数据中提取出帧送往帧接收处理模块。
[0091] (II-b)、帧接收处理模块从光纤通道收发模块发送来的帧中提取D_ID字段值,并按FC_ID路由表进行查表,根据查表得到的路由送往对应的某个节点的帧接收FIFO(单播)或者某些节点的帧接收FIFO(组播或广播)。节点卡内的NC节点作为网络的监控节点时,帧接收处理模块还会将接收到的帧写入该NC节点的NC会话状态机的帧接收FIFO中。
[0092] (II-c)、NC会话状态机或NT会话状态机检测到各自对应的帧接收FIFO不为空时,就从帧接收FIFO中读取帧:若当前处理的帧带有Payload数据或当前处理的帧需被送往监控模式下的NC会话状态机,则将该帧的Payload数据或完整一帧存入对应节点的接收数据缓存中,NC会话状态机或NT会话状态机向读写请求调度模块发起存储器写请求,同时将写入接收数据缓存的地址和Payload数据的长度送往读写请求调度模块,然后执行步骤(II-d)和(II-e);反之,NC会话状态机或NT会话状态机将接收的帧在自身内部处理完毕,不写入接收数据缓存,也不进行步骤(II-d)和(II-e)。
[0093] (II-d)、读写请求调度模块采用轮询调度算法从来自NC会话状态机和NT会话状态机的存储器写请求中仲裁出一个存储器写请求作为当前服务的存储器写请求,待当前模块处理仲裁出的存储器写请求时,将该存储器写请求的地址和长度送往PCI-E接口模块。
[0094] (II-e)、PCI-E接口模块为读写请求调度模块仲裁出的存储器写请求组建存储器写请求TLP报文,存储器写请求TLP报文格式如图2所示,其中,Address、Length分别填入读写请求调度模块发送来的地址和长度;同时,PCI-E接口模块从当前服务的节点的帧接收FIFO中读取帧的Payload数据,用于填充存储器写请求TLP报文的负载字段。
[0095] 如图3所示,本实施例以一个由两张FC-AE-1553节点卡(节点卡1和节点卡2)和一台FC交换机构成的FC-AE-1553网络为例,进一步说明本发明提出的一种支持多个FC-AE-1553节点并行工作的节点卡实现方法。节点卡1和节点卡2内部均包含有1个NC节点和8个NT节点,节点卡1内的节点分别命名为NC1、NT1~NT8,节点卡2内的节点分别命名为NC2、NT9~NT16,FC交换机配置端口2与端口10之间的路由,将节点卡1、节点卡2分别连接FC交换机的端口2、端口10。节点卡1和节点卡2并行工作的具体步骤如下:
[0096] 步骤1、初始化节点卡,具体操作如下:
[0097] (1-1)、应用软件根据用户配置选择使能NC1节点、NT1~NT8节点、NT9~NT16节点以及不使能NC2节点,即配置NC1节点作为FC-AE-1553网络的控制节点,配置NC2节点作为FC-AE-1553网络的监控节点。
[0098] (1-2)、初始化节点卡驱动:为2个NC节点和16个NT节点随机分配一个独立的缓存空间,并为使能NC1节点、NT1~NT16节点配置单播FC_ID和组播FC_ID及其路由,配置用于应用软件检测NC节点和NT节点是否完成会话的会话描述符读写指针,并初始化该会话描述符读写指针为0。
[0099] (1-3)、初始化节点卡FPGA部分:配置节点卡1和节点卡2的FC_ID路由表,如图4所示,其中,FFFB02是NT9和NT10的组播ID;配置用于NC节点检测应用软件是否生成会话的会话描述符读写指针,并初始化该会话描述符读写指针为0。
[0100] 步骤2、应用软件一次生成多个会话,将每个会话的会话描述符连续写入NC节点的会话描述符缓存,更新NC节点的会话描述符写指针并通知NC会话状态机开启会话。以本实施例的2个会话为例,步骤2具体操作如下:
[0101] (2-1)、应用软件一次生成2个会话,将NC节点待发送的数据放入NC节点的发送数据缓存中或将NC节点请求NT节点发送的数据放入NT节点的发送数据缓存。会话1和会话2的会话过程如图5所示,其中,会话1:NC-NT模式(NC1-NT9、NT10),组播,使能NC1节点发送4096B数据,Payload数据按最大2048B切割。会话2:NT-NC模式(NT9-NC1),单播,使能NC1节点请求NT9节点发送512B数据,Payload数据按最大128B切割,NT9节点已在自己的发送数据缓存中放好数据。
[0102] (2-2)、应用软件将会话描述符填入NC节点的会话描述符缓存中。对于会话1,应用软件向使能NC1节点的发送数据缓存连续放入4096B数据,然后将会话1的会话描述符连续放入使能NC1节点的会话描述符缓存。对于会话2,NT9节点先在自己的发送数据缓存中放好数据后,应用软件紧接着会话1的会话描述符,将会话2的会话描述符连续放入使能NC1节点的会话描述符缓存中。
[0103] (2-3)、在会话1和会话2的会话描述符均放入使能NC1节点的会话描述符缓存后,应用软件更新使能NC1节点的会话描述符写指针为2,以通知使能NC1节点开启会话。
[0104] 本实施例中,NC1会话状态机的会话描述符读指针为0,而会话描述符写指针为2,二者相差2表示缓存内有2个会话未开启,NC1会话状态机会先从会话描述符缓存读取会话1的会话描述符,然后根据会话描述符信息封装并发送命令帧和数据帧,发送完命令帧和数据帧后,等待NT9节点和NT10节点回复状态帧。
[0105] 步骤3~8主要阐述会话1的会话过程,会话2的实现过程将在后面做简要描述。
[0106] 步骤3、NC1会话状态机检测到应用软件更新会话描述符写指针后,从会话描述符缓存读取一个会话描述符,按照会话过程完成帧的封装发送与接收处理。根据会话过程和发送数据量/接收数据量,判断是继续封装发送或等待接收处理下一帧,还是当前会话已完成。
[0107] 步骤3的具体过程描述如下:
[0108] (3-1)、NC1会话状态机检测到自己的会话描述符写指针与会话描述符读指针不一致时,向使能NC1节点的会话描述符缓存发起存储器读请求:NC1会话状态机从会话描述符缓存读取会话1的会话描述符,其过程为上述发送方向数据处理过程的(I-a)~(I-d)。
[0109] (3-2)、NC1会话状态机从存有会话描述符的完成报文中解析出会话描述符,包括会话模式、D_ID、发送数据量/接收数据量、数据在缓存存放的起始地址,其中,当前会话为NC-NT模式,D_ID为FFFB02,发送数据量/接收数据量为4096B。
[0110] (3-3)、NC1会话状态机按照用户设定的最大帧长切割数据,即在封装带Payload数据的命令帧和数据帧时,每次请求从发送数据缓存读取的数据量不超过设定的最大帧长;在封装不带Payload数据的命令帧时,该命令帧的封装在NC1会话状态机内部完成,无需从发送数据缓存读取数据。具体如下:
[0111] 首先,NC1会话状态机需要从发送数据缓存连续取4096B的数据发送给NT9节点和NT10节点(FFFB02为NT9节点和NT10节点的组播FC_ID),Payload数据按2048B进行切割,即NC1会话状态机按如图5所示的会话过程发送一个带2048B的Payload数据的命令帧和数据帧。
[0112] 然后,NC1会话状态机封装并发送命令帧和数据帧。首先封装命令帧:基于会话描述符,命令帧帧头在FC-AE-1553会话状态机内部生成,NC1会话状态机需要从使能NC1节点的发送数据缓存读取2048B的数据来填充命令帧的Payload字段,从缓存取数据的具体过程为上述发送方向数据过程的(I-a)~(I-d)。NC1会话状态机收到完成报文后,将完整的一帧(包括SOF、帧头、Payload、CRC、EOF)写入使能NC1节点的帧发送FIFO。命令帧从帧发送FIFO读出到传输到链路的过程为上述发送方向数据处理过程的步骤(I-f)、(I-g)。数据帧的封装及发送过程与上述命令帧类似,不再赘述。
[0113] 命令帧和数据帧封装好并写入使能NC1节点的帧发送FIFO后,NC1会话状态机跳转到等待NT9节点和NT10节点回复状态帧的状态。NC1会话状态机每封装发送完或接收处理完一帧后,根据会话模式和发送数据量/接收数据量判断是继续封装发送或等待接收处理下一帧,还是当前会话结束。
[0114] FC交换机按FC_ID路由表对端口2发出的命令帧和数据帧进行转发,这两帧的D_ID(0xFFFB02)是NT9节点和NT10节点的组播路由,FC交换机会将命令帧和数据帧转发到端口10。
[0115] 步骤4:NC1会话状态机开启会话后,本地或对端的NT会话状态机从NC1会话状态机发送的命令帧中提取会话模式和发送数据量/接收数据量信息,并按照会话过程完成帧的封装发送与接收处理。NT会话状态机每封装发送完或接收处理完一帧后,根据会话模式和NC指定的发送数据量/接收数据量判断是继续封装发送或等待接收处理下一帧,还是当前会话已完成。步骤4的具体过程描述如下:
[0116] (4-1)、NT会话状态机接收命令帧并解析命令帧的相关信息,包括会话模式、发送数据量/接收数据量。
[0117] (4-2)、NT会话状态机按用户设定或者NC请求的最大帧长切割数据,即在封装带Payload数据的命令帧、状态帧和数据帧时,每次请求从发送数据缓存读取的数据量不超过设定的最大帧长;当用户设置命令帧、状态帧不带Payload数据或当前NT会话状态机对应的NT节点的发送数据缓存无有效数据时,命令帧、状态帧的封装均在状态机内部完成,不需要从发送数据缓存读取数据。具体为:节点卡2的NT9节点和NT10节点接收处理命令帧和数据帧,首先处理命令帧,然后再处理数据帧,数据帧的处理过程与命令帧相似,本实施例中不再赘述。命令帧的处理过程如下:
[0118] 首先,从光纤通道收发模块到FC-AE-1553会话状态机之间的处理过程见上述接收方向数据处理过程的步骤(II-a)和(II-b);其中,帧接收处理模块提取命令帧的FC_ID为FFFB02,按如图4所示的路由表查表得到路由01100_0000,即需要将命令帧写入NT9和NT10的帧接收FIFO;同时考虑到NC2节点作为监控节点,帧接收处理模块还会将命令帧写入NC2节点的帧接收FIFO。
[0119] 然后,NT9会话状态机和NT10会话状态机从帧接收FIFO中读出命令帧的帧头并提取会话信息:当前会话模式为NC-NT模式,使能NC1节点共需要发送4096B的数据。同时,当前已接收的命令帧带2048B的Payload数据,NT9会话状态机和NT10会话状态机需要将2048B的Payload数据分别存储到NT9节点和NT10节点的接收数据缓存,具体过程见上述接收方向数据处理过程的步骤(II-d)、(II-e)。此外,NC2会话状态机在监控模式下也会将NC2节点的帧接收FIFO的命令帧写入到NC2节点的接收数据缓存,具体过程见上述接收方向数据处理过程的步骤(II-d)、(II-e)。与非监控模式不同的是,监控模式下NC2节点往接收数据缓存写入的是完整一帧而不只是帧的Payload数据,NC2节点的会话描述符和会话描述符指针也不是用来描述一次会话,而是描述一帧,每写完一帧后会写一个会话描述符并更新一次自己的会话描述符指针。
[0120] 再次,处理完命令帧和数据帧后,NT9会话状态机、NT10会话状态机已接收完NC指定接收的4096B数据,根据会话过程,NT9会话状态机、NT10会话状态机内部还会封装一个状态帧并将其写入NT9节点和NT10节点的帧发送FIFO,用于向NC回复状态帧,状态帧的发送过程见上述发送方向数据处理过程中的步骤(I-f)、(I-g)。对于NT9节点和NT10节点来说,会话1已完成。
[0121] 最后,NT9节点和NT10节点完成会话后,NT9会话状态机和NT10会话状态机分别向NT9节点、NT10节点的会话描述符缓存写入此次会话的会话描述符,包括数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID、会话状态信息;然后更新NT9节点、NT10节点的会话描述符写指针为1。
[0122] 步骤5:NC会话状态机和NT会话状态机发送完所有帧或接收完所有帧或会话超时结束后,向自己的会话描述缓存中写入此次会话生成的会话描述符,会话描述符包括数据在缓存存放的起始地址、发送数据量/接收数据量、OX_ID、会话状态信息。写入会话描述符之后,NC会话状态机和NT会话状态机更新自己的会话描述符写指针,以通知应用软件当前会话已完成。
[0123] FC交换机将NT9节点和NT10节点回复的状态帧从端口10转发到端口2,同时,FC交换机将这两个状态帧又转发到端口10,并将这两个状态帧按上述接收方向数据处理过程送往NC2节点的接收数据缓存。
[0124] 节点卡1对NT9节点和NT10节点回复的状态帧的处理过程见上述接收数据处理过程的步骤(II-a)~(II-c),当NC1会话状态机处理完NT9节点和NT10节点回复的状态帧时,对于NC1会话状态机来讲,会话1已完成,NC1会话状态机会向会话描述符缓存写入会话描述符,并更新会话描述符写指针为1。
[0125] 步骤6:应用软件检测到NC节点和NT节点的会话描述符写指针更新时,会从对应节点的缓存空间中提取相应的会话描述符和会话数据并送往后级处理。具体如下:
[0126] 节点卡1和节点卡2的应用软件中存储着使能NC1节点、NT1~NT8节点、NC2节点和NT9~NT16节点的会话描述符读指针。会话1完成后,节点卡1的应用软件检测到使能NC1节点的会话描述符读指针(为0)比使能NC1节点的会话描述符写指针(为1)差1时,知道当前使能NC1节点完成一次会话,则会先读取一个会话描述符,再根据会话描述符提取会话状态信息并送后级处理,如在界面实时显示。
[0127] 节点卡2的应用软件在会话1完成后的处理过程和节点卡1相似,稍有不同的是:节点卡2的NT9节点和NT10节点将接收到的命令帧和数据帧的Payload数据也写入接收数据缓存,因此应用软件在读取会话描述符时,除了会提取会话描述符中的会话状态信息外,还会根据数据在缓存存放的起始地址和接收数据量提取会话数据,并将会话状态信息和会话数据送后级处理,如在界面实时显示。此外,由于NC2节点作为网络的监控节点,NC2节点每接收一帧会写一个会话描述符,在会话1完成后,NC2节点的会话描述符写指针更新为4,应用软件会根据会话描述符中的数据在缓存存放的起始地址和接收数据量字段读取完整的命令帧、数据帧以及NT9节点、NT10节点回复的状态帧,并送后级处理。
[0128] 会话2的实现过程与步骤3~8相似,待会话2也完成后,使能NC1节点的会话描述符写指针更新为2,表示当前应用软件生成的两个会话均已完成。
[0129] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈