主页   电子元器件  芯片

五月 19 2020

基于FPGA的光纤通道接口控制芯片设计


目录

1.协议分析
2.设计方案

3.硬件设计

3.1发送控制逻辑

3.2接收控制逻辑

3.38B/10B编解码

3.4端口状态机

3.5其他模块

4.软件设计

4.1端口注册函数PLogin_in()

4.2IU发送函数Sen

4.3接收帧处理函数Frm_Rcved()

结语

  作为通道技术和网络技术结合的产物,光纤通道(fibre channel)是一种具有高实时性、高可靠性、高带宽,高性价比的开放式网络。任何需要接入到光纤通道网络的设备都需要相应的网络接口卡(NAC),而网络接口卡的核心是接口控制芯片。由于光纤通道标准是一项十分庞大而复杂的协议,不同的特性适用于不同的应用环境;又因为光纤通道标准目前仍处于发展阶段,标准的内容还在做不停的变化,因此选用FPGA作为当前接口控制芯片的载体是一个非常合适的选择。一方面对于不同的应用环境,可以对相应的功能模块进行适当的裁减,既能满足应用需要又能降低成本;另一方面对于协议的变化,基于FPGA的实现也很容易就能对老版本设计进行更新。

  1.协议分析

  和OSI参考模型类似,光纤通道协议簇也是以分层的方式来组织各个协议的。其分层模型如图1所示。

光纤通道分层模型

  图1 光纤通道分层模型

  作为数据传输协议,光纤通道支持许多上层协议,包括VIA、SCSI、IPv4、IPv6、SBCCS、ASM等。在为这些协议传输数据之前,需要先将待发送的数据映射成规定的格式,FC-4层实现这一映射,对于每一个支持的上层协议,都有一个映射协议与之相对应。

  FC-3层是一个通用服务层,为映射层协议提供一系列通用服务。比较重要的几个服务包括:交换注册、端口注册和注销服务。

  FC-2层是光纤通道协议中最重要的一层,定义了将数据块进行端到端传输的规则和机制,包括不同类型的服务、帧格式定义、序列的分片和重装、交换管理、地址分配和多播管理等。

  FC-1层定义了串行编码和解码规范,规定使用8B/10B编码。

  FC-0层是光纤通道协议的物理层规范,定义了发射机、接收机、传输介质以及它们之间的接口规范。传输速率也在这里定义。

  2.设计方案

  通过对协议的分析得出,映射层协议和具体应用环境密切相关,应该由用户自己实现。接口控制芯片在逻辑上可以分成三部分,即通用服务模块、端到端IU传输和缓冲到缓冲帧传输;在实现方式上又可以分为软件部分和硬件部分。接口控制芯片系统框图如图2所示。

接口控制芯片系统组成

  图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 光纤通道传输核

  3.1发送控制逻辑

  发送控制逻辑的功能是控制帧、原语信号和原语序列的发送顺序,使之符合光纤通道标准,主要包括保证连续帧之间具有足够的间隔和在帧之间插入原语信号。

  发送帧的CRC值也由发送控制逻辑计算,传统的串行计算方法达不到要求的速率,这里采用并行CRC算法进行计算,每个时钟有效沿可以计算32位数据,大大提高了数据吞吐量。

  缓冲到缓冲流量控制也在发送控制逻辑中实现。发送控制逻辑维持一个计数器,表示当前已发送但还未被确认的帧的数目,每当发送1帧,计数器加1;当接收到 R_RDY原语信号时,计数器减1。如果这个值小于配置寄存器中的BB_Credit值,则表示可以继续发送帧;否则,表明目标端口已经没有可用的接收缓冲区,发送控制逻辑此时就不往外发出帧。

  3.2接收控制逻辑

  8B/10B解码出来的数据是字节数据,而所有的有序集都是字,因此需要在输入的字节流中正确区分出字边界。接收控制逻辑内部的字同步模块和接收状态机协同工作,实现这一功能。标准规定的接收机状态转换图如图4所示。

接收机状态转换图

  图4 接收机状态转换图

  3.38B/10B编解码

  传统的编解码方法由数字逻辑实现,主要是为了节省逻辑资源。由于FPGA内含有丰富的RAM,使其作为编解码的载体既可以降低复杂程度又可以提高编解码的速度,待编码的数据作为地址线输人,编码数据存在RAM内从数据线输出。

  3.4端口状态机

  作为链路级差错检测与恢复的核心,端口状态机对收发链路的状态进行监测。每当链路状态出现异常,端口状态机就根据异常的起因启动不同的链路恢复协议来对链路进行恢复。如果恢复失败,那么端口状态机就通过状态寄存器向上层报告。出于版面的考虑,简化的端口状态机的状态转换图如图5所示。

端口状态机状态转换图

  图5 端口状态机状态转换图

  3.5其他模块

  异步FIFO:由于接口控制芯片的接收部分使用从接收数据中恢复出来的时钟,因此和芯片的主时钟是异步的。当将接收到的数据交给其他工作于主时钟的模块处理时需要进行速率调整。异步FIFO用于实现这个功能。串并/并串转换:高速的串并转换对器件性能有较高要求。FPGA内部集成了专用的硬核 (RocketIO)用来实现这一功能,因此对其进行适当的配置即可。这样节省了专用的串并转换芯片。

  配置寄存器存储一系列的工作参数,如(R_T_TOV、E_D_TOV等),复位后以默认值初始化寄存器。完成注册后,使用新值更新寄存器。

  光纤通道传输核通过状态寄存器来表示自己当前所处的状态(如在线、离线等)。

  4.软件设计

  接口控制芯片的软件部分负责进行参数协商和处理与端到端数据传输相关的事务,包括端口注册和交换注册、提供不同类型的服务、端到端流量控制、序列级差错检测和恢复。

  为了简化软件的设计,以嵌人式Linux操作系统作为接口控制芯片的软件运行环境。通过设计一系列的操作函数,实现整个软件系统。最重要的函数包括:端口注册函数、IU发送函数和接收帧处理函数。

  4.1端口注册函数PLogin_in()

  注册包含端口注册和交换注册。两种注册的流程类似,这里仅分析端口注册。系统启动后,需要对芯片的工作参数进行配置,注册函数根据用户的配置选择注册方式。如果用户指定隐式注册,那么注册函数从配置文件中读取默认配置参数配置芯片;如果用户指定显式注册,那么注册函数发送注册请求,等对方端口返回响应后,注册函数用响应的数据配置参数。端口注册函数的工作流程如图6所示。

IU注册流程

  图6 IU注册流程

  4.2IU发送函数Sen

IU发送流程

  图7 IU发送流程

  4.3接收帧处理函数Frm_Rcved()

  当光纤通道传输核将正确的帧接收到并存储于接收缓冲区后,通过状态接口通知PowerPC。此时Frm_Rcved()函数开始处理帧头,帧头中需要检查的参数很多,这里不在赘述。如果帧头中的参数没有错误,那么函数为这个新接收到的帧分配存储空间,然后从接收缓冲区中将帧取到存储器中,并以一定的方式和之前接收到的帧关联起来(例如链表);如果帧头中的参数有误,则将帧丢弃并启动中止序列协议进行序列恢复。

  结语

  本文总结了基于FPGA的光纤通道接口控制芯片设计方案,采用Verilog实现了接口控制芯片的RTL设计并完成了功能仿真和验证,并通过嵌入式PowerPC完成了接口控制芯片的控制软件设计;以Xilinx公司的Virtex-II Pro系列FPGA为平台,实现了接口控制芯片原型。该设计具有极大的灵活性和可扩展性,在不同的应用环境中只需要对相应的软硬件代码进行适当的裁减或扩展即可,无需对PCB电路进行任何更改,具有极其广泛的应用价值。

订购与质量

图片 产品型号 品牌 描述 数量 价格
(USD)
LM311 LM311 Company:Texas Instruments Remark:LM311电压比较器设计运行在更宽的电源电压:从标准的±15V运算放大器到单5V电源用于逻辑集成电路。其输出兼容RTL,DTL和TTL以MOS电路。此外,他们可以驱动继电器,开关电压高达50V,电流高达50mA。 In Stock:
Buy
Price:call Buy
LM339 LM339 Company:Texas Instruments Remark:LM339(四路差动比较器)是在电压比较器芯片内部装有四个独立的电压比较器,是一种常见的集成电路,主要应用于高压数字逻辑门电路。利用lm339可以方便的组成各种电压比较器电路和振荡器电路。 In Stock:
Buy
Price:call Buy
LM324 LM324 Company:Texas Instruments Remark:LM324系列器件带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。 In Stock:
Buy
Price:call Buy
LM358 LM358 Company:Texas Instruments Remark:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与 电源电压无关。 In Stock:
Buy
Price:call Buy
LM567 LM567 Company:Texas Instruments Remark:LM567是一种常见的低价解码集成电路,其内部包含了两个鉴相器、放大器、电压控制振荡器VCO等部件。 In Stock:
Buy
Price:call Buy

相关文章

  • 基于AD9854与FPGA的雷达信号源设计 ...
    本文介绍了使用AD9854芯片和FPGA,并基于DDS理论设计并实现了多模式多波形雷达信号源。它可模拟LFM、NLFM、单频、相位鳊码等多种脉冲信号波形,能有效验证脉冲压缩与信号处...
  • FPGA是什么? ...
    FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路...
  • 利用FPGA实现与DS18B20的通信 ...
    DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚TO-92型小体积封装;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达...
  • 基于AD7705与FPGA的光信号采集系统设计 ...
    光纤光栅传感器是利用光纤光栅受外界物理作用时其反射中心波长会发生偏移的机理制成的,光纤光栅传感器具有体积小、重量轻和抗电磁干扰等特点,被广泛应用于变压器、水泵等特殊环境下的温度监测...
  • 利用XC2V1000型FPGA实现FIR抽取滤波器的设计 ...
    抽取滤波器广泛应用在数字接收领域,是数字下变频器的核心部分。目前,抽取滤波器的实现方法有3种:单片通用数字滤波器集成电路、DSP和可编程逻辑器件。使用单片通用数字滤波器很方便,但字...
  • 基于FPGA的可重构密码芯片设计 ...
    目前,国内外广泛使用的密码处理芯片大都是实现某种特定密码算法的专用芯片,如MD5芯片、SHA一1芯片等。由于专用密码芯片实现的密码算法是确定的且不可更改的,因此难以满足不同密码用户...

0 条评论

留言

您的邮箱地址不会被公布

 
 
   
评分: