基于FC网络的一种接口模块设计与实现

时间:2022-08-05 11:26:19

基于FC网络的一种接口模块设计与实现

摘 要: 介绍一种基于FC网络的接口模块的设计方案,从系统结构、原理设计、软件架构等多方面进行描述。该方案具有处理能力高、传输带宽大、拓扑结构灵活等特点。

关键词: FC网络;接口模块;设计与实现

针对航空电子系统的应用特点,ANSI标准协会下属的T11组织制定了FC-AE标准。该标准包含五种协议:ASM(Anonymous Subscriber Messaging)、FC-LP(Fibre Channel Lightweight

Protocol)、RDMA(Remote Direct Memory Acess)、MILSTD-1553和VI(Virtual Interface)。其中FC-LP协议支持低延迟、低开销的实体之间的通信。该协议避免数据缓冲区多次拷贝,降低了软件开销提高通信效率,使通信协议具有很好的移植性。本文就是介绍了基于该协议的一种FC网络总线接口模块设计与实现。

1 应用背景

在某系统中,分机I要将实时采集到的信号经过处理后传输给分机II,并同时能够接受分机II返回的控制命令,这就需要在分机I和分机II之间建立实时可靠的连接。由于分机I和分机II距离较远,系统要求使用FC网络,且分机之间的通信速率33MB/s,数据块时钟频率为30MHz,结合所有的需求提出了以下设计方法。

2 原理设计

每路LVDS对应两片16位双口RAM IDT70V28,数据宽度采用32位方式,容量为64K×32。当收到本路的LVDS输入有效信号后,开始向双口RAM写数据。CPU与双口RAM之间的存储器接口数据宽度为32位。根据LVDS数据传输要求,需要CPU与存储器接口至少提供33MB/s的数据传输率。双口RAM数据宽度为32位,访问频率不低于100ns,数据带宽为40MB/S,这样用于传输328KB数据需要用时8.2ms。数据在写入40KB后即可开始进行双口RAM另一段数据读取并通过FC发送出去。另外在设计时双口RAM容量大于接收的LVDS数据容量,多余空间也可作为数据缓冲区。在发送LVDS数据时,RS422和RS232接口的接收数据将缓存在内部FIFO或SDRAM中,待FC空闲时再发送。

处理器选用MPC8245,该处理器没有专门的I/O空间,因此存储器和I/O端口统一进行编址。整个系统地址空间分为四个区[1]:局部存储器、PCI存储器、PCI IO空间和ROM存储器空间。而ROM存储器空间又分成四个区域,分别提供四个不同的片选信号。为了满足运行接口模块程序及应用的容量要求,设计了64位64MB时钟频率66MHz的SDRAM,以及8MB的程序的固化存储空间。同时在局部总线上还设计实现4路RS422和2路RS232来实现串行通信接口通信。在PCI总线上设计实现了FC接口电路和以太网接口电路。

3 软件设计

FC-3层是FC的公共服务层,定义了一些通用服务功能,如带宽频率分片、搜索组和多播等通用服务。

FC-2、FC-1和FC-0层这三层共同组成了FC物理层标准,称之为FC-PH。其中FC-0层定义了FC节点物理端口的特性,包括传输介质、传输速率、接收机和发送机的物理特性、电气特性、光特性、链路长度以及其它一些物理特性。

FC-1层规定数据的编解码方式、发送机和接收机状态以及同步获取等,也称为传输协议层。

光纤通道通信系统划分成五层协议:应用层、驱动层、传输层、数据链路层和物理层。如图6所示,每个电子设备或模块(简称为主机)与嵌入式FCI模块构成接口模块。

其中,物理层与数据链路层由FCI硬件实现;传输管理由FCI上的固化传输软件和驻留在主机上驱动程序共同完成,应用层由用户调用驱动程序提供的API函数实现。

应用层是通信系统的最高层次,它实现通信系统管理功能(如初始化、维护、重构等)和数据解释功能(如描述数据交换的含义、有效性、范围、格式等)。

驱动层是应用层与底层硬件的软件接口。为实现应用层的管理功能,驱动层应能控制节点内FCI的初始化、启动、停止、连接、断开、启动其自测试,监控其工作状态,控制其和节点主机的数据交换,提供应用层标准接口函数。

传输层控制FC网络上的数据传输,传输层的任务包括信息管理、故障处理等。

数据链路层按照FC-2层规定,控制FC网络上交换、序列与帧的传输。

物理层按照FC-0和FC-1层规定,处理FC网络物理介质上的位流传输。

接口模块硬件实现数据链路和物理层功能,负责执行固件实现网络管理、数据通信和故障处理,提供驱动软件邮箱命令和队列命令接口。驱动软件运行在主机处理机环境,通过调用硬件系统的固件接口,实现FCI配置、网络管理、数据通信、故障处理等功能,并为上层应用提供一套低延迟访问接口的API函数,生成目标系统下的静态连接库。应用程序通过调用驱动软件提供API接口函数的调用实现网络通信。

FC_LP协议通信驱动按照功能可以分为四个部分:

1)设备管理:负责在打开和关闭驱动过程中,为应用分配和销毁系统资源,是整个协议软件的基础,对系统资源进行整体调度。

2)任务管理:通过管理设备管理模块分配个相关资源,实现数据通信的功能,是协议软件的神经中枢。

3)通信与连接管理:负责管理Access Point Identific

Ation Number(连接点标识符,简称APID),建立通道请求、发送数据请求以及关闭通道请求,构建了协议软件的通信框架。

4)错误管理:负责对参数的合法性进行检查,对通信中的超时错误、连接错误进行相应的处理。

在FCI通信之前,首先要打开FCI设备、进行上电自测试、设置端口属性,注册事件处理函数,然后启动FCI通信功能,就可以进行数据的接收和发送了。

数据的发送是通过调用FC_SendPacket函数来实现的,该函数将用户数据封装后,放入FCI设备的发送缓冲区等待数据发送。

数据的接收是通过异步事件通知主机处理的,FCI设备收到数据包通知主机处理,主机中驱动程序将接收到的数据封装好后,回调用户事件处理函数,用户事件处理函数中负责数据的接收处理。接口模块软件流程图如图8所示。

4 结束语

本文提出的基于FC网络的总线接口模块设计与实现方法。该产品具有速度快、处理能力强、可靠性高等许多优点,并且在某项目进行了充分的验证,实现了数据实时传输,满足了系统的需求。

参考文献:

[1]Freescale公司,MPC8245 Integrated Processor Reference Manual

[EB].http://.

作者简介:

宋琦(1980-),男,汉族,辽宁新金人,本科,工程师,从事FC、CAN、FlexRay、1394等总线的应用与开发。

上一篇:浅析PROFIBUS—DP通讯技术 下一篇:VME平台上连铸机控制系统的设计与实现