光纤接口俗称活接头,国际电信联盟建议将其定义为用以稳定地但并不是地连接两根或多根光纤的无源组件。光纤接口是光纤通信系统中不可缺少的无源器件,它的使用使光通道间的可拆式连接成为可能。
ST、SC、FC、LC光纤接头是早期不同企业开发形成的标准,使用效果一样,各有优缺点,下面为这几种光纤接口做一番简单介绍。
ST、SC、FC、LC光纤接头
ST、SC连接器接头常用于一般网络。ST头插入后旋转半周有一卡口固定,缺点是容易折断;SC连接头直接插拔,使用很方便,缺点是容易掉出来;FC连接头一般电信网络采用,有一螺帽拧到适配器上,优点是牢靠、防灰尘,缺点是安装时间稍长。
光纤连接器,也就是接入光模块的光纤接头,也有好多种,且相互之间不可以互用。不是经常接触光纤的人可能会误以为GBIC和SFP模块的光纤连接器是同一种,其实不是的。SFP模块接LC光纤连接器,而GBIC接的是SC光纤光纤连接器。下面对网络工程中几种常用的光纤连接器进行详细的说明:
① FC型光纤连接器:外部加强方式是采用金属套,紧固方式为螺丝扣。 一般在ODF侧采用(配线架上用的最多)
② SC型光纤连接器:连接GBIC光模块的连接器,它的外壳呈矩形,紧固方式是采用插拔销闩式,不须旋转。(路由器交换机上用的最多)
③ ST型光纤连接器:常用于光纤配线架,外壳呈圆形,紧固方式为螺丝扣。(对于10Base-F连接来说,连接器通常是ST类型。常用于光纤配线架)
④ LC型光纤连接器:连接SFP模块的连接器,它采用操作方便的模块化插孔(RJ)闩锁机理制成。(路由器常用)
⑤ MT-RJ:收发一体的方形光纤连接器,一头双纤收发一体。
各种光纤接口类型介绍
FC 圆型带螺纹(配线架上用的最多)
ST 卡接式圆型
SC 卡接式方型(路由器交换机上用的最多)
PC 微球面研磨抛光
APC 呈8度角并做微球面研磨抛光
MT-RJ 方型,一头双纤收发一体( 华为8850上有用)
随着经济的高速发展和科技的快速进步,近几年,光纤通信技术应运而生并快速成长。根据摩尔定律,CPU的处理速度每18个月翻一番。而光纤通信的传输带宽每9个月就增加一倍,而成本降低一半。同时全球因特网流量每6个月就翻一番。作为当代通信领域的支柱技术,光纤通信正以每10年速率增长100倍的速度发展。其总的发展趋势是速率越来越块,可靠性越来越高,提供的业务种类越来越多。
随着存储技术的迅速发展,存储容量得到了迅速的增长,存储系统的数据传输速度成为了主要的瓶颈。光纤的传输具有其速度上的优势,然而,在光纤传输要受到光纤通道接口的限制,因此光纤通道应用于高速数据传输的一个关键技术问题是接口的设计问题,本文对有
效地解决高数据传输在接口处的瓶颈具有现实意义。
1 方案设计
完整的实现要包含PC机软件编程、Virtex-5开发板的底层链路实现。PC机的软件编写主要实现链路的创建注销控制、数据的组帧、数据的传输控制、传输过程中的显示;VirteX-5开发板主要实现数据的链路贯通、支持上位机所定义的帧结构的传输过程。
如图1所示,接口适配器功能实现过程主要包含协议的正确理解,按照协议的帧结构和数据结构的组织、具体的实现模块的设计与编写、结合VirteX-5底层链路的贯通实现光纤通信接口适配器功能。
2 设计的具体实现
2.1 协议的分析与与裁剪
针对不同的应用环境应当对FC协议进行适当的裁剪,尽可能地有效利用协议标准。FC协议是一个具有五层组成的协议体系。包括:FC-0层、FC-1层、FC-2层、FC-3层、FC-4层。
各层的功能分别为:
(1):FC-O:主要规定了物理接口,包含传输介质,收发器及接口等。
(2)FC-1:8 B/10 B编码;串化解串;比特与字同步。
(3)FC-2规定了光纤通道的传输机制:
有序集的检测与识别;FC端口状态机;帧的发送与接收,帧接收时要进行有效性检查;流量控制;帧管理;交换与序列管理;数据帧与响应;多播与广播;分段与重组;差错检测与回复。
(4)FC-3:基本链路服务;扩展链路服务;查询组。
(5)FC-4:映射上层协议,本文主要是映射MILSTd-1553B协议。
2.2 软件编程中各模块的代码的设计
软件实现的设计部分:GUI模块设计、设备抽象层的设计、任务处理模块的设计、FC的协议及物理功能模块的设计。
(1)GUI部分主要是显示作用,可以对接口适配器的相关参数进行设置和界面显示。GUI模块设计内容有:整体界面、链路参数区、链路建立区、信息显示区。
(2)设备抽象层的设计。该部分在于屏蔽下层不同物理设备间的差异;提供较为简便的方式,使上层模块同逻辑进行通信。本层需要提供对上层支持的设备操作接口及在内部通过封装WinDriver驱动提供的功能接口,实现对上层的功能支持。
(3)任务处理模块的设计。主要实现对链路和数据各自的不同的任务操作情况。链路数据区与文件数据区分别需要保存各自的任务数据及状态,另外,它是 GUI模块变更LIST的依据,从而还需要保存下层协议所具备的状态及数据。
(4)FC协议及物理功能模块的设计。该部分主要描述任务发送协议与链路建立协议。
①链路建立的注册过程:数据传输前,需要通过注册建立发送端与接收端的链路。首先,发送端把待注册的地址ID等信息嵌入帧信息中,发送帧信息给接收端;然后,接收端收到帧信息后,解读出相关的信息,若符合帧的完整性等检查,则两端建立链路。若不满足相关检查则终止该次注册过程。
②链路的注销过程:当需要注销链路时,首先,发送端把待注销的地址ID等信息嵌入帧信息中,发送帧信息给接收端;然后,接收端收到帧信息后,解读出相关的信息,若符合帧的完整性等检查,则两端注销链路,若不满足相关检查则终止该次注销过程。
③数据传输过程:数据传输是链路建立的根本目的,简化的数据传输过程如图2所示。
2.3 Virtex-5开发板的底层保证
(1)系统构造逻辑设计主要完成以下几点功能:
控制PCIE硬核实现与上层软件交互;对上层传输数据加CRC校验;完成FC链路初始化过程;完成FC流控功能;完成FC-2差错处理;控制ROCKET I/O把上层软件数据通过ROCKET I/O发送;控制ROCKET、I/O把接收恢复的数据传输到上层软件。
(2)逻辑设计的模块组成:底层逻辑控制模块主要完成FC物理层通信,它主要包括发送模块、接收模块和PCIE控制模块三部分,每个模块又根据功能不同划分多个子模块,在PCIE控制模块中,有一些缓存来存放接收模块传送过的数据和相应的数据信息,发送模块也会从PCIE控制模块的缓存中读取数据传送出去,其原理框图如图3所示。
数据发送模块 该模块通过读取上位机的状态信息来发送不同的信息,当ACK使能时,该模块发ACK,当数据使能时,该模块就发送固定帧数的数据,发送的数据是从缓存中读取,CRC由该模块添加。空闲时就发送IDLE码。
数据接收模块 接收模块包括接收控制模块、CRC模块和临时缓存模块。主要完成数据和链路控制帧以及准备信号的接收,并实现CRC校验,根据帧头来判断不同类型的数据帧或控制帧,并存入缓存中,同时将帧的相关信息也放入相应的缓存中。
PCIE接口控制模块 该模块主要根据PCIE总线上的地址对应的寄存器的值,译码成相应的使能把PCIE总线上数据写入相应的数据发送buf-f,ACK发送 buff反之根据逻辑输入的使能,译码成对应的PCIE总线上对应地址的对应寄存器的值,并把数据接收的buffACK接收buff数据写入相应的PCIE地址上。
2.4 最终实现
通过上位机与FPGA开发板的结合,实现了光纤通道接口适配器的高速性。传输效果图如图4所示。
3 结语
通过上位机与FPGA开发板的结合,模拟并实现了光纤通道在高速数据传输过程中接口处的设计。尽管该设计是上位机配合FPGA的形式实现,但仅就设计思路而言,对于实际开发光纤通道接口适配器具有一定的借鉴意义。
存储网络和下一代航空电子系统对光纤通道网络的需求,提出了一种新的光纤通道网络接口控制芯片的设计方案。用 Verilog实现了接口控制芯片的RTL设计并完成了功能仿真和验证,通过嵌入式PowerPC完成了接口控制芯片的控制软件设计。以Xilinx公司的Virtex-II Pro系列FPGA为平台,实现了接口控制芯片原型。
引 言
作为通道技术和网络技术结合的产物,光纤通道(fibre channel)是一种具有高实时性、高可靠性、高带宽,高性价比的开放式网络。任何需要接入到光纤通道网络的设备都需要相应的网络接口卡(NAC),而网络接口卡的核心是接口控制芯片。目前市场上商用的光纤通道接口控制芯片寥寥可数且价格昂贵,并且核心技术都掌握在国外公司;而军用的光纤通道接口控制芯片更由于众所周知的原因在市场上根本就买不到。因此,根据光纤通道标准设计出拥有自主知识产权的光纤通道网络接口控制芯片,对于我国的经济和军事发展具有极其重要的意义。
由于光纤通道标准是一簇十分庞大而复杂的协议,不同的特性适用于不同的应用环境;又因为光纤通道标准目前仍处于发展阶段,标准的内容还在做不停的变化,因此选用FPGA作为当前接口控制芯片的载体是一个非常合适的选择。一方面对于不同的应用环境,可以对相应的功能模块进行适当的裁减,既能满足应用需要又能降低成本;另一方面对于协议的变化,基于FPGA的实现也很容易就能对老版本设计进行更新。
1 协议分析
和OSI参考模型类似,光纤通道协议簇也是以分层的方式来组织各个协议的。其分层模型如图1所示。
作为数据传输协议,光纤通道支持许多上层协议,包括VIA、SCSI、IPv4、IPv6、SBCCS、ASM等。在为这些协议传输数据之前,需要先将待发送的数据映射成规定的格式,FC-4层实现这一映射,对于每一个支持的上层协议,都有一个映射协议与之相对应。
FC-3层是一个通用服务层,为映射层协议提供一系列通用服务。比较重要的几个服务包括:交换注册、端口注册和注销服务。
FC-2层是光纤通道协议中最重要的一层,定义了将数据块进行端到端传输的规则和机制,包括不同类型的服务、帧格式定义、序列的分片和重装、交换管理、地址分配和多播管理等。
FC-1层定义了串行编码和解码规范,规定使用8B/10B编码。
FC-0层是光纤通道协议的物理层规范,定义了发射机、接收机、传输介质以及它们之间的接口规范。传输速率也在这里定义。
2 设计方案
通过对协议的分析得出,映射层协议和具体应用环境密切相关,应该由用户自己实现。接口控制芯片在逻辑上可以分成三部分,即通用服务模块、端到端IU传输和缓冲到缓冲帧传输;在实现方式上又可以分为软件部分和硬件部分。接口控制芯片系统框图如图2所示。
图2左边的PowerPC和存储器控制器通过PLB总线互联在一起,构建了Linux操作系统和接口控制芯片的软件部分的运行平台。
PowerPC架构中还包含了通用的OPB总线,用来进行外部设备的互联。OPB总线通过一个PLB-OPB桥连接到PLB总线,如图2右边所示。连接到OPB总线的外部设备只有一个,也就是光纤通道传输核。
用户接口定义了接口控制芯片的用户接口。根据应用环境的不同,这个模块有不同的实现方法,如PCI或USB。
当用户有数据需要发送时,通过接口控制芯片的用户接口将数据按标准格式存入芯片内部的数据存储器,并通过设置相应的寄存器请求接口控制芯片的数据传输服务。然后,软件代码将数据接管过来,先为这次数据(IU)传输分配相应的软件资源(交换状态块、序列状态块等)用以记录数据的发送状态。等完成相应的处理后,PowerPC通过光纤通道传输核提供的接口通知传输核对数据进行处理,包括分片、成帧、CRC计算和8B/10B编码等任务。,传输核通过输出引脚输出高速串行数据去调制光发射机并发送到光纤链路。
当从输入链路上接收到数据时,传输核首先对数据进行处理,包括位同步、串并转换、8B/10B解码、字同步、有序集检测、CRC校验和帧提取。当有效帧接收到并存到接收缓冲区后,硬件模块设置相应的寄存器通知Power-PC,然后PowerPC对接收到的帧进行处理,包括分配相应的软件资源、帧重装。当属于一个序列的所有帧都正确接收完后,PowerPC通过用户接口模块通知用户模块,用户模块接收到数据后自行进行处理。
3 硬件设计
接口控制芯片的硬件部分也就是图2中的光纤通道传输核,负责将数据帧按标准规定的格式从发送缓冲区传输到链路另一端的接收缓冲区。为了正确有效地完成这个任务,接口控制芯片的硬件部分实现以下一些功能:缓冲到缓冲的流量控制、链路级别的差错检测和恢复、字同步、有序集检测、帧提取、8B/10B编解码和串并/并串转换等功能。接口控制芯片的硬件部分功能框图如图3所示。
3.1 发送控制逻辑
发送控制逻辑的功能是控制帧、原语信号和原语序列的发送顺序,使之符合光纤通道标准,主要包括保证连续帧之间具有足够的间隔和在帧之间插入原语信号。
发送帧的CRC值也由发送控制逻辑计算,传统的串行计算方法达不到要求的速率,这里采用并行CRC算法进行计算,每个时钟有效沿可以计算32位数据,大大提高了数据吞吐量。
缓冲到缓冲流量控制也在发送控制逻辑中实现。发送控制逻辑维持一个计数器,表示当前已发送但还未被确认的帧的数目,每当发送1帧,计数器加1;当接收到 R_RDY原语信号时,计数器减1。如果这个值小于配置寄存器中的BB_Credit值,则表示可以继续发送帧;否则,表明目标端口已经没有可用的接收缓冲区,发送控制逻辑此时就不往外发出帧。
3.2 接收控制逻辑
8B/10B解码出来的数据是字节数据,而所有的有序集都是字,因此需要在输入的字节流中正确区分出字边界。接收控制逻辑内部的字同步模块和接收状态机协同工作,实现这一功能。标准规定的接收机状态转换图如图4所示。
3.3 8B/1 0B编解码
传统的编解码方法由数字逻辑实现,主要是为了节省逻辑资源。由于FPGA内含有丰富的RAM,使其作为编解码的载体既可以降低复杂程度又可以提高编解码的速度,待编码的数据作为地址线输入,编码数据存在RAM内从数据线输出。
3.4 端口状态机
作为链路级差错检测与恢复的核心,端口状态机对收发链路的状态进行监测。每当链路状态出现异常,端口状态机就根据异常的起因启动不同的链路恢复协议来对链路进行恢复。如果恢复失败,那么端口状态机就通过状态寄存器向上层报告。出于版面的考虑,简化的端口状态机的状态转换图如图5所示。
3.5 其他模块
异步FIFO:由于接口控制芯片的接收部分使用从接收数据中恢复出来的时钟,因此和芯片的主时钟是异步的。当将接收到的数据交给其他工作于主时钟的模块处理时需要进行速率调整。异步FIFO用于实现这个功能。串并/并串转换:高速的串并转换对器件性能有较高要求。FPGA内部集成了专用的硬核 (RocketIO)用来实现这一功能,因此对其进行适当的配置即可。这样节省了专用的串并转换芯片。
配置寄存器存储一系列的工作参数,如(R_T_TOV、E_D_TOV等),复位后以默认值初始化寄存器。完成注册后,使用新值更新寄存器。
光纤通道传输核通过状态寄存器来表示自己当前所处的状态(如在线、离线等)。
4 软件设计
接口控制芯片的软件部分负责进行参数协商和处理与端到端数据传输相关的事务,包括端口注册和交换注册、提供不同类型的服务、端到端流量控制、序列级差错检测和恢复。
为了简化软件的设计,以嵌人式Linux操作系统作为接口控制芯片的软件运行环境。通过设计一系列的操作函数,实现整个软件系统。最重要的函数包括:端口注册函数、IU发送函数和接收帧处理函数。
4.1 端口注册函数PLogin_in()
注册包含端口注册和交换注册。两种注册的流程类似,这里仅分析端口注册。系统启动后,需要对芯片的工作参数进行配置,注册函数根据用户的配置选择注册方式。如果用户指定隐式注册,那么注册函数从配置文件中读取默认配置参数配置芯片;如果用户指定显式注册,那么注册函数发送注册请求,等对方端口返回响应后,注册函数用响应的数据配置参数。端口注册函数的工作流程如图6所示。
4.2 IU发送函数Sen
4.3 接收帧处理函数Frm_Rcved()
当光纤通道传输核将正确的帧接收到并存储于接收缓冲区后,通过状态接口通知PowerPC。此时Frm_Rcved()函数开始处理帧头,帧头中需要检查的参数很多,这里不在赘述。如果帧头中的参数没有错误,那么函数为这个新接收到的帧分配存储空间,然后从接收缓冲区中将帧取到存储器中,并以一定的方式和之前接收到的帧关联起来(例如链表);如果帧头中的参数有误,则将帧丢弃并启动中止序列协议进行序列恢复。
结 语
本文提出的方案以嵌入式技术和FPGA技术为基础,使其具有极大的灵活性和可扩展性。在不同的应用环境中只需要对相应的软硬件代码进行适当的裁减或扩展即可,无需对PCB电路进行任何更改,具有极其广泛的应用价值。