作者:孙世国,陈帅,陈倩,张恒威
1.引言
S PI -4.2(Sys te mPacke TI nte rf ace)是O IF (Op TI calInternetworkingForum)定义的局部高速总线标准,用于PHY层芯片到链路层芯片的10Gbps信号传输。主要应用有OC-192ATM、PacketoverSONET/SDH(POS)、10Gbps 以太网 等。
SPI4.2 接口 分为数据通道和状态通道。数据通道最多分成256个逻辑通道,16bit位宽,采用LVDS信号电平,按照cell格式传送数据,cell的长度为16字节的整数倍,可随意配置,根据网上流量的分析,一般配置成128字节。每个cell都是以控制字开始的,控制字一共16bit,包含逻辑端口号、报文起始标志位、报文结束标志位、控制字交验等信息。状态通道传输对端反馈的逻辑通道接收FIFO的状态,2bit位宽,LVTTL或者LVDS信号电平,一般采用LVTTL信号电平。状态通道的数据结构为Calendar[0:n],n最大为256,长度一般与逻辑通道数对应,Calendar[n]表示逻辑通道n的接收FIFO状态。数据通道根据状态通道提供的信息控制数据的发送过程。状态通道有四种状态信息,如表1所示:
在实际的系统设计中,商用芯片不一定能够满足需要,因此需要使用 FPGA (FieldProg ram mableGateArray)。本设计采用 Altera 的Stra TI xII系列FPGA和R MI 公司的多核处理器XLR732, Intel 公司的网络处理器2805实现SPI4.2接口。
2.2805简介2805是Intel推出的高端NP(NetworkProsser),能够处理10Gbps线速转发的以太网、POS、ATM等数据流量,能够实现分类、NAT、ACL、多播、流量管理等功能。2805内部集成一个32-bit、 RISC 内核、高性能的XScale处理器,用于系统的配置管理和路由表项的维护,最高工作主频750MHz;16个可编程的、有8K代码空间的微引擎,每个微引擎含有多个硬件线程,用来处理通信系统中的数据转发,最高工作主频1. 5G Hz。外部集成了PCI接口,可以工作在64bit/66MHz模式;SPI4.2接口,工作频率为311MHz~500MHz;3个LA-1接口,工作频率为250MHz;4个R DRAM 接口,工作频率为800MHz~1200MHz。
3.FPGA和2805之间的SPI4.2接口 电路 设计
图1描述了FPGA和2805之间的SPI4.2接口的硬件连接框图,信号定义以2805为参考点。其中TX_DATA[15:0]、TX_CTL、TX_CLK和RX_DATA[15:0]、RX_CTL、RX_CLK是LVDS信号电平,工作在350MHz;TX_SDATA[1:0]、TX_SCLK和RX_SDATA[15:0]、RX_SCLK是LVTTL信号电平,工作在87.5MHz,四分之一于数据通道 时钟 频率。
具体信号定义如下所示:
TX_DATA[15:0]:发送数据,16bit位宽,burst方式传输数据,DDR工作模式(时钟上升沿和下降沿都采样);
TX_CTL:传输控制信号,高电平表示TX_DATA[15:0]传输的是控制信息,低电平表示TX_DATA[15:0]传输的是数据;
TX_CLK:发送时钟,随路,是发送数据的参考时钟。
接受方向的信号定义与发送方向的信号定义完全相同,但是方向相反。
4.FPGA的SPI4.2接口模块设计
图2为FPGA的接收通道逻辑框图,上半部分是数据通道,下半部分是状态通道。由于SPI4.2接口的数据传输是DDR模式的,rdclk经过FPGA内部的PLL模块做倍频处理,然后送给Rx_data_phy模块,该模块根据时钟采样rdat[15:0]上的数据。Rx_data_proc模块将接收的数据按照cell头中的逻辑端口号,分别放入不同的Rx_fifo中。一个Rx_fifo对应一个逻辑通道,每个Rx_fifo都会生成一个状态信号,标示其“空”状态或者“满”状态,Rx_stat_calc模块根据各个Rx_fifo的状态信号生成Calendar信息,由状态通路发送出去,用来流控2805的发送过程。Calendar也可以由软件设置,通过Rx_stat_proc_ref下发给Rx_stat_calc。
发送模块与接收模块不同,如图3所示,发送模块的Tx_fifo只有一个,即所有的逻辑通道公用一个发送缓存区。这主要是由于FPGA内部的 布线 资源和RAM资源有限,同时这种发送端共享FIFO、接收端分通道FIFO模式不影响使用,能够实现分端口的反压。
发送端通过Tx_stat_phy模块接收Calender信息,经过Tx_stat_proc模块和Tx_stat_proc_sync模块处理,送给Tx_sched调度模块,Tx_sched解析出各个逻辑通道的反压情况,然后将各个通道的数据发送到Tx_fifo中,然后经过Tx_data_proc模块和Tx_data_phy模块发送出去。
5.结果本设计在Altera的Stra TI xII系列FPGA,EPM2S90上得到验证,与Intel的2805配合共同完成某通信设备的高速转发单板的设计。
6.结束语
本文介绍了SPI4.2接口在可编程 逻辑器件 FPGA上的实现方法,并通过实际电路验证FPGA与IPX2805之间通过SPI4.2接口互通的功能。由于商业芯片的限制,有时只有FPGA才能满足系统设计的要求。相对于开发 ASIC ,使用FPGA使整个设计电路简单、灵活、成本低、方便调试和修改,大大缩短开发周期。
责任编辑:gt