基于PowerPC的光纤通道接口卡设计
2010-03-20郭志君周东
郭志君,周东
(电子科技大学通信与信息工程学院,成都611731)
引 言
现阶段,主流的高性能光纤通道通用产品基本上被Qloglc、Morethan、DDC等少数几家国外大公司垄断,其昂贵的价格,加上一些发达国家对相关产品技术的封锁,使得国内的光纤通道技术发展受到了一定程度的影响。因此,对自主知识产权的专用光纤通道芯片的研究就显得尤为重要。
目前,大多嵌入式系统开发都采用ARM处理器或软核处理器,而对于处理能力更强大的PowerPC处理器却没有更深入的研究和广泛的应用,对于Xilinx公司的嵌入式处理器PowerPC440的应用性研究也非常少见。本文基于PowerPC440硬核,对嵌入式技术在光纤通道网络中的应用进行了一些探索。
1 设计方案
光纤通道协议(以下简称FC协议)支持多种拓扑结构,但由于交换机价格昂贵,在实际应用中还未普及。相对而言,简单的点对点拓扑和性价比较高的仲裁环拓扑在现阶段更为适用。本文即针对这两种拓扑结构,在深入分析FC协议的基础上采用模块化的思想对功能作了划分,如图1所示。其中由虚线框标识的序列/交换管理模块由软件实现。
接收数据:
①接收通道从光接收机接收其输出的串行信号,经过串并转换、8位/10位解码、8:32解复用后,将没有错误的字传给接收控制模块。
②接收控制模块对接收通道接收的信息进行分流,将原语序列交给相应的状态机,将数据放入接收缓存后通知序列/交换管理模块。
③交换管理逻辑将根据帧头内容和交换管理块的内容进行进一步的高层次的差错检验和交换/序列管理,并且等序列接收完成后通知上层取数据。
发送数据:
图1 FC功能结构图
①当上层需要发送数据时,首先给光纤通道接口控制模块发送命令。接口控制模块根据命令的内容取出数据,并结合命令参数将数据打包成帧后通知发送控制模块。
②发送控制模块根据一定的规则控制不同的数据源分时使用发送通道,数据源包括发送缓冲区的帧、状态机发出的原语序列和原语信号。
③发送通道将从接收控制模块接收到的字进行分解,再对并行的字节信息经过8位/10位编码、并串转换发送给光发射机。
其中环/端口控制模块实现环初始化状态机、环/端口状态机、原有端口状态机功能。根据原语信号和原语序列的不同,系统或进入原有端口状态机进行点对点传输过程,或进入环端口状态机进行仲裁环传输过程。
从总体上看,硬件应该负责帧级别的管理,软件应该负责序列和交换级别的管理。软硬件接口采用共享存储器与寄存器的设计思想。系统硬件部分与软件部分通过读写共享的帧缓存及接口寄存器实现信息交互。
2 基于PowerPC的SOPC系统搭建
本设计采用Xilinx公司的V irtex-5 FXT系列开发板为开发平台。此开发板集成了两个嵌入式PowerPC440 RISC核,同时具有灵活的存储器管理单元(MMU),3个相互独立的128位PLB总线接口,独立的32 KB数据存储器和32 KB的指令存储器,4个直接存储器存储(DMA)控制单元,以及设备控制寄存器(DCR)等。其中Pow erPC440处理器具有高达500 MHz的速度,采用IP嵌入架构的形式整合到FPGA器件中,增强型B00K-E体系结构,内部包括一个具有7级流水线的微内核,每周期最多可执行两条命令,从而提高了整体的吞吐量。PLB总线采用36位地址路径,可提供64GB的内存寻址能力。
Xilinx公司提供的EDK开发工具是一种专门针对FPGA内部嵌入式处理器的集成开发工具包,主要的软件设计由EDK中的子工具包SDK完成。用户可以通过集成在EDK中的XPS来调用各种工具完成嵌入式系统平台的搭建工作。
EDK10.1版本较之9.1版本有很大的变化,其中软核版本升级到7.1,IBM CoreConnect总线标准中的OPB总线被PLB总线代替,还提供了丰富的外围IP可供选择。光纤通道接口卡的FPGA实现架构如图2所示。
图2 光纤通道接口卡的FPGA实现架构
(1)Pow erPC处理器和高速存储器通过PLB高速总线互联在一起构成嵌入式操作系统和软件系统的运行平台。
(2)用户接口IP提供一个方便的接口,供外部设备操控接口卡芯片,亦可对该芯片的工作状态进行动态监控。
(3)采用FPGA芯片内部集成的可编程高速串行收发器RocketI/O来负责数据的发送和接收。
(4)在数据发送端,硬件通过DMA方式读取与序列和交换管理有关的队列,然后根据队列中的信息,确定每个帧头的内容,再通过DMA方式读取管理内存中的数据并组装成帧发送出去;在数据接收端,硬件接收到帧后,通过DMA方式写到内存中,软件负责将帧重组为序列,再将序列重组成交换。
3 IPIF模块
由于PLB总线接口协议非常复杂,为了让用户可以更便捷地实现总线与用户IP的交互,Xilinx公司提供了在用户IP核和PLB v4.6总线标准之间的一个双向的PLBV46_Slave_Single接口协议模块IPIF,如图3所示。
图3 PLBV46_Slave_Single结构图
其中的Slave Attachment结构提供了Slave运行的基础功能,它在PLB总线和IPIC之间执行协议和时序的转换。用户IP的用户逻辑接口需按照IPIC接口标准来设计,才能通过IPIF成功挂接到PLB总线上。
利用集成在EDK的XPS工具中Create/Import Peripheral Wizard(添加外设向导工具),以对话框的形式可以很便捷地配置IPIF模块,以Master/Slave的方式将用户自定制IP核挂接到PLB总线上,通过ISE10.1环境综合验证模块的正确性。然后再利用此工具,将经过验证正确的IP核导入EDK环境下,这样就成功建立了一个IP核的通用模板。最后再在相应的.VHD文件中添加用户功能代码,即可完成基于PLB总线接口的用户自定制IP核的添加。
结 语
本文设计的光纤通道接口卡芯片采用Xilinx公司推出的新一代嵌入式硬核PowerPC440,利用EDK开发工具,在Virtex5系列FPGA开发平台上实现了接口 卡芯片的基本功能,支持点对点拓扑结构和仲裁环拓扑结构,为用户自定制IP核的开发应用提供了一定的参考。
[1]李善平,刘文峰,王焕龙,等.Linux与嵌入式系统[M].北京:清华大学出版社,2003.
[2]贾东耀,彭树林.嵌入式系统网络接口与驱动设计[J].微型电脑应用,2008(4).
[3]ANSI.Fibre Channel Framing and Signaling(FC-FS-2),2007.