采用片上系统技术实现FC协议芯片的方案设计

光纤通道(fc)是一个高性能的双向点对点串行数据通道。光纤通道的标准是由t11标准委员会(美国国家信息技术标准化委员会下属的技术委员会)制定的,它是一个为适应日益增长的高性能信息传输要求而设计的计算机通讯协议。fc集中了io通道和网络的优点,它既支持io通道所要求的带宽与可靠性,又支持网络技术的灵活性与连接能力,使得在同一物理接口上运行当今流行的通道标准和网络协议成为可能。目前,fc已被作为未来航空电子统一网络的一种主要联网标准。本文讨论了一种采用片上系统(soc)技术来设计fc协议芯片的方案,分析了soc设计方法的特点及其与传统的嵌入式系统设计方法的不同点,为今后在航电系统的设计中推广使用soc技术奠定了基础。
fc工作原理简介
光纤通道所支持的物理介质包括光纤、双绞线、同轴电缆等,本文统称其为光纤。物理上,fc可被看成是称为n端口的多个通信点的连接,这些n端口可以通过交换网进行连接,且通过集线器构成仲裁环路,也可以通过点对点的链路进行连接。如图1所示,fc协议可以分成一系列的功能层次,各功能层次简述如下。
图1 fc的层次结构图
fc-0层
fc-0定义了接口和介质的物理特性,规定了收发器和各种物理媒介的光电参数。按照实现器件的不同,fc可具有不同的数据传输率:133mbit/s,266mbit/s,530mbit/s,1.0625gbit/s等。
fc-1层
fc-1定义了编解码和传输协议,它采用直流平衡8b/10b码。一个8位字节编码为10位进行传输,然后在接收端再进行解码。一部分具有特殊特性的没有使用的编码点被用来组成特殊字符,以形成信令和帧描述的有序集。
fc-2层
fc-2层是信号传输协议层。它规定了数据传输的规则,提供了数据块从一个端口传输到下一个端口的传输机制,定义了可由fc-4使用的功能和设备,fc-4可以只采用其中的一个子集。这一层描述了如下概念:
(1)节点和n端口及相应的标识符;
(2)通讯模型;
(3)拓扑结构;
(4)服务类;
(5)通用交换网模型;
(6)fc-2的构造块及体系结构;
(7)帧格式;
(8)序列;
(9)交换。
fc-3层
fc-3层为一些高级特性提供了所需要的通用服务,例如:
(1)分类:并行使用若干个n端口来增加带宽,以便通过多重连接传输一个单一信息。
(2)查询组:使数量多于一个的端口能响应相同的别名地址。这一服务通过减少接触到忙n端口的机会来提高效率。
(3)多播:将一个传输发送到多个目标端口,包括发送到一个交换网上的所有n端口(广播),或只发送到交换网上某些n端口。
fc-4层
fc-4层是fc协议的最高层,它规定了上层协议到fc协议的映射。当前映射的协议有:小型计算机系统接口(scsi)、智能外设接口3(ipi-3)、高性能并行接口(hippi)、internet协议(ip)、ieee802.2、单字节命令码集映射(sbccs)。另外,fc-ae还描述了一个基于1553b的上层协议映射。
fc-ph的物理模型
fc通路在物理上至少由2个节点组成。每个节点可以由多个n端口组成,每个n端口提供fc-0、fc-1、fc-2的功能。fc-3是可选的,它为多个n端口和fc-4提供通用服务。fc节点的组成如图2所示。
图2fc节点的组成
每个端口由一对光纤组成,一个用于输入,一个用于输出。这一对按相反方向传输的光纤和收发器组成fc链路,完成数据传输。
fc-2层的帧格式
fc-2层的帧格式如图3所示。
帧起始定界符sof是一个有序集,4个8b字符,根据不同帧的类型有不同的码字;帧头,24个8b字符,详见表1;数据字段,0–2112个8b字符;crc,4个8b字符,它对帧头部分和数据字段部分进行校验,其编码多项式是x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1;帧结束定界符eof是一个有序集,4个8b字符,根据不同帧的类型有不同的码字。
fc协议芯片的设计概述
功能概述
fc芯片的功能是实现图1中的fc-ph,即fc-2、fc-1、fc-0层的协议;每个fc芯片支持2个n端口,可构成如图2所示的fc节点;支持的数据传输率为1.0625gbits/s。
基于soc的设计考虑
基于soc的芯片设计和嵌入式模块板的设计有相似之处,但不能把soc设计简单地理解为对嵌入式模块板的小型化,它们的主要区别如下:
(1)嵌入式模块板的设计是使用现有的cpu芯片和外设芯片来实现的,而soc设计是由cpu内核与各种功能模块内核实现的。
(2)由上文可知,嵌入式模块板的设计是在已经设定的规则框架中进行的,这些规则就是各种芯片的使用手册,而soc设计可以根据设计需求,自行设计规则,再设计各种功能模块内核,以满足功能要求并使得资源利用最优化。
(3)嵌入式模块板的设计,由于受到cpu芯片引脚的限制,外设芯片大多挂在cpu的一条外部总线上,难免会有总线争用,而soc设计原则上芯片内部可以并行工作的总线个数没有限制,应充分利用这个特性,合理确定体系结构,避免总线争用。
(4)嵌入式模块板的设计,其软硬件的设计都有固定的模式,而soc设计先要根据设计需求,确定软硬件的交会点,确定软硬件协同的规则,才能达到资源利用最优化的目的。
首先,要确定软硬件的交会点。软硬件的交会点放在fc-2层的“序列”上。因为“序列”负责整块数据的收或发,当数据块的长度超过图3所示的数据长度时,要分为若干个相关的数据帧来传输。数据帧的相关性表现在如表1所示的帧头中,只有序列计数字段seq_cnt发生改变。因此,软件将负责提供帧头的部分信息和数据,由硬件负责数据成帧和以后的工作。其次,在设计芯片的体系结构时,要充分使用芯片内部的并行工作的总线。最后,为便于本芯片的测试,对上层接口ulp,先考虑使用pci总线,以便实现基于pci接口的fc网卡。根据今后实际使用需求,ulp将按需设计。
芯片的结构
根据3.2节的讨论,fc协议芯片的结构框图如图4所示。fc协议芯片对上层的接口(ulp)采用pci接口,由芯片内置的pci-target内核实现。
图4 fc协议芯片的结构框图
图4中虚线方框部分构成了fc的n端口,整个芯片中有2个n端口。每个fc-n端口由“fc收发通道”和“fc帧收发控制器”2层构成。“fc收发通道”与光电接口模块配合可实现fc-0层、fc-1层和fc-2层中数据帧收发的功能。该层为上层接口提供用于数据帧收发的片内fifo通道。“fc帧收发控制器”实现fc-2层的数据帧打包、开包和检错。另外,通过芯片内嵌的软件模块实现fc-2层的序列和交换协议;同时提供ulp接口。下文对fc通道、帧收发控制器、cpu内核及ulp 接口作分别讨论。
fc收发通道模块的设计
功能概述
该模块主要完成fc-2层帧的收发,包括:完成serdes(串-并互相转换模块)与光电接口的连接、完成fc-1层的8b/10b编解码、fc-2层帧级的crc校验和fc有序集码的译码;同时利用内置存储器构成fifo与fc芯片后端模块进行数据交换的缓冲区。
组成结构
该模块分为“fc发送通道”和“fc接收通道”,如图5所示。在收发通道之间提供多种自环测试的通路(未在图中标出)。
“fc发送通道”主要由以下单元组成:
(1)并-串转化单元;
(2)发送时钟锁相环;
(3)8b/10b编码单元;
(4)crc校验生成单元;
(5)tx-fifo发送控制单元;
(6)tx-fifo数据输入缓冲单元;
(7)自环控制单元。
“fc接收通道”主要由以下单元组成:
(1)串-并转化单元;
(2)接收时钟锁相环;
(3)时钟恢复单元;
(4)同步检测单元;
(5)有序集译码单元;
(6)8b/10b解码单元;
(7)crc校验单元;
(8)rx-fifo发送控制单元;
(9)rx-fifo数据输出缓冲单元;
(10)自环控制单元。
图5fc通道结构框图
数据收发缓冲区的定义
数据缓冲区tx-fifo、rx-fifo的定义如表2所示:途中发送缓冲区是33位,低32位是发送的数据,第32位用于表示当前码字是否为有序集码。接收缓冲区是36位,低32位是接收到的数据,高位部分保存fc-2帧的crc校验结果、8b/10b码的译码校验等信息。
5.1 功能概述
fc芯片中有两路“fc帧收发模块及其数据缓冲器”,它们实现fc-2层协议中的帧打包、开包。它是整个系统的软硬件交会点,是整个系统的核心,其关键在于制定相关的设计规则。
5.2 数据缓冲区的使用规则
根据多路总线并行工作的原则,设置四块独立的数据缓冲区,采用双口ram,用于在cpu和帧收发器之间交换数据。收发数据缓冲区的使用规则如下:
(1)发送缓冲区txbuf。根据图3所示的fc-2帧格式,该缓冲区用于存放帧头和有效数据。前24个字节是固定存放帧头的帧头区,后面是有效数据区。发送时,模块txf-ctl从帧头区取帧头信息发送,根据寄存器中发送起始地址(txoffset)和发送个数(txcount)的值从txbuf中连续取数据发送。这里,只设置1个帧头区,是考虑到在“序列”中帧头具有相关性,同时1个帧头区不存在多个区域的切换,简化了硬件实现。
(2)接收缓冲区rxbuf。该缓冲区采用循环队列的方式,由模块rxf-ctl顺序写入数据,数据的存储顺序如图3所示的fc-2帧格式。在完成1帧数据接收后,模块rxf-ctl要在寄存器中表明当前帧在rxbuf中的接收起始地址(rxoffset)和接收到的个数(rxcount)。cpu读取寄存器rxcount后,该寄存器自动清零。上述使用规则是整个系统进行soc设计的要点。
工作过程
数据的发送过程发送:
(1)cmd_reset。模块txf-ctl复位,进入空闲态。
(2)cmd_test:由cpu直接控制数据的发送,模块txf-ctl进入空闲态。
(3)cmd_start_tx1:在空闲态并且cmd_test和cmd_start_tx2都无效时,进入按帧发送数据的状态,模块txf-ctl发出sending信号。模块txf-ctl先向fc发送通道的tx-fifo发送有序集码ldle(k28.5d21.4d21.5d21.5);根据sof码型寄存器发送相应的sof;然后从txbuf的帧头区取数据依次发送;以后,如果数据从txbuf取,则根据寄存器发送起始地址(txoffset)和发送个数(txcount)从txbuf中取出对应的数据发送;发送完有效数据后,再根据eof码型寄存器发送相应的eof;最后再发一个有序集码idle(k28.5d21.4d21.5d21.5)。一帧数据发完后,将sending信号清零,cmd_start_tx1清零,发中断信号inttxi,然后回到空闲态。发送过程只有cmd_reset可以中断。
(4)如果数据来在ulp-fifo,则读发送个数(txcount),从ulp-fifo中取数发送,若发送个数(txcount)大于fc-2帧规定的长度,则按2112字节的长度分多帧发送,每帧完毕,自动修改帧头中的帧记数值,并且自动选择相应的sof和eof定界符;若发送的过程中ulp-fifo空,则自动结束这一帧的发送,并启动超时定时器,等待ulp-fifo中的数据。当发送个数(txcount)规定的数据发完后,或者超时,则将sending信号清零,cmd_start_tx1清零,发中断信号inttxi,然后回到空闲态。发送过程只有cmd_reset可以中断。
(5)cmd_start_tx2:在空闲态当cmd_start_tx2有效时,模块txf-ctl按有序
集码寄存器和有序集码参数寄存器的定义发送有序集码。
数据的接收过程
数据的接收有两种方式:由cpu直接控制;由rxf-ctl按fc-2帧格式接收数据。cpu可通过fc-2帧收发控制器的寄存器向模块rxf-ctl发命令来控制数据发送:
(1)cmd_reset。模块txf-ctl复位,进入空闲态。
(2)cmd_test:由cpu直接控制数据的接收。
(3)cmd_start_rxi:在空闲态并且cmd_test无效时,进入按帧接收数据的状态。模块rxf-ctl从fcset-a的rx-fifo中收到有序集码sof后,发出receive信号,表示已经开始1帧数据的接收。模块rxf-ctl将收到的数据依次写入循环缓冲区rxbuf。再收到任一个有序集码后,1帧数据接收结束,将receive信号清零。更新寄存器接收起始地址(rxoffset)和接收到的个数(rxcount)。如果接收到的crc码无效或者最后一个有序集码不是eof,则将接收有错(rxerr)置‘1’,否则发出intrxi中断信号,表示收到1帧正确的数据。继续下一帧的数据的接收。在1帧数据接收的过程中,只有cmd_reset可以中断;如果尚未开始接收1帧数据,则cmd_test可使其回到空闲态。cpu读寄存器rxoffset、rxerr和rxcount可知道接收到的数据存放的地址和个数以及数据帧是否有效。
另外cmd_start_rxi还用来控制fc接收通道中的rx-fifo控制器。cmd_start_rx1控制fc接收通道按fc-2帧接收数据存入rx-fifo;cmd_start_rx2控制fc接收通道接收所有数据(除了连续的idle有序集码之外)存入rxfifo。
内置cpu的配置及ulp的设计
内置cpu通过嵌入的软件完成fc-2层的序列和交换的协议,同时实现ulp与上层的通讯。
cpu外设的配置
cpu配置的外设和总线接口定义如下:
(1)两个rs232串行口。
(2)看门狗定时器:watchdog-timer。
(3)两个fc-2层通讯用的定时器:fctimer1,fc-timer2。
(4)接收两路fc-2帧收发控制器中断的pio:intframe-pio。两个接受来自rx-fifo的有序集译码的pio:orderset-pio1,ordersetpio2。两个内总线接口,用于操作两路fc-2帧收发控制器。可根据操作功能需要,对fc-2帧收发控制器的各寄存器进行定义。
(5)四个独立的连接收发数据缓冲区的内总线接口。
(6)三条独立的存储器总线接口:双口ram、程序存储器和数据存储器。
(7)与ulp交换数据的ulp-rxfifo接口。
(8)与ulp握手的ulp-pio接口。
ulp的数据通道
如图4所示,fc芯片对ulp提供了两种数据通道:双口ram和fifo。双口ram通道:可根据ulp的需要划分成若干分区,ulp可通过pci接口对它存取数据。fc芯片的内置cpu从双口ram中读数据,放到txbuf中,然后启动“帧发送模块”打包发送;接收数据时,cpu从rxbuf中读取数据,存到双口ram的相应的数据分区中,通知ulp来取数据。这种数据通道对需要确认,出错要重传的消息比较有效。
fifo通道:ulp将数据通过pci接口写到ulp-txfifo中,cpu设定“帧发送模块”从ulp-txfifo中取数据,“帧发送模块”在数据打包时,从ulp-txfifo中取数据;接收数据时,cpu从rxbuf中读取数据,存到ulp-rxfifo。这种数据通道对视频数据等实时性要求高的消息比较有效。
fc芯片嵌入软件的基本操作函数
fc芯片的嵌入软件要完成fc-2层的交换、序列、帧收发、差错控制、流量控制等功能。它们需要调用的基本操作函数如表3所列。这些基本操作函数是与硬件平台相关的函数,在平台上所作的其他函数将与硬件平台无关。这样,有利于软硬件协同开发,互相隔离错误。这是soc设计的又一个重要原则。
结论
目前,高端的fpga中已内嵌了适应高速传输的收发器、锁相环和大量的存储器,本文讨论的fc协议芯片可以在这类fpga上实现原型样机。光纤通道以其传输速度高、兼容性好等特点在未来的航空电子统一网络中将得到广泛的应用,本文讨论的fc协议芯片将为这一应用奠定物质基础。本文以fc协议芯片的设计为例,介绍了基于soc设计的思考重点和soc设计的基本原则,它将有助于在航电系统的设计中推广使用soc技术。


2019年苹果将推出AirPower支持多个设备无线充电
种子发芽箱是什么,它都具有哪些功能
2021年数据中心将迎来的变化和趋势
推拉力测试机的推刀材质介绍及刀尖导角的影响
PLC需要防范的物理伤害类型有哪些?
采用片上系统技术实现FC协议芯片的方案设计
懒工程师未必工作效率比你低
聚酯薄膜电容器的结构与特点
测量5G毫米波终端的电磁辐射
消息称富士康iPhone工厂10月以来已裁员5万人
变压器零序保护原理_变压器零序电流保护工作原理解析
海康威视推出的测温安检门已正式在首都国际机场上岗
单相电机和三相电机哪个好?
modbus转MQTT协议网关RS485串口接入华为云
口腔医疗服务的互联网化探索
大数据安全:数字化转型的“必答题”
千万不能栽在这个电路图上
过流保护PTC热敏电阻器选用指南
220V转12V直流稳压电压(电源电路图)
介绍得物App在资源优化上做的一些实践