当前位置:首页 > 通信技术 > 通信技术
[导读]引言 SPI-4.2总线(System Packet Interface,系统间数据包接口)是一种速度高达10 Gb/s的芯片间互连总线,主要应用于ATM信元传输、POS(Packet Over SONET/SDH,基于SONET/SDH的包传输)和10 Gb/s以太网等高端

引言
    SPI-4.2总线(System Packet Interface,系统间数据包接口)是一种速度高达10 Gb/s的芯片间互连总线,主要应用于ATM信元传输、POS(Packet Over SONET/SDH,基于SONET/SDH的包传输)和10 Gb/s以太网等高端场合。特别在通信领域,很多高端处理器和网络处理器,如Intel公司的IXP2800、Cavium公司的多内核处理器CN58xx系列、NetLogic公司的XLR732、Broadcom的BCM1480,几乎都集成了SPI-4.2接口,以提高芯片的吞吐能力,适应通信产业朝着LTE(长期演进)发展的需求。还有众多的物理层芯片,例如Cortina公司的CS1331,可以将SPI-4.2总线转换成8个千兆以太网接口。SPI-4.2总线之所以被众多的高端芯片所采用,与其高速、灵活、可靠的特性是密不可分的。

1 SPI-4.2总线基本原理
    SPI-4.2总线是一种芯片间的互连总线,连接芯片的链路层和物理层模块。其工作时钟是源同步双边沿触发时钟,至少为311 MHz。图1是使用SPI-4.2总线连接两个芯片的示意图。可见,SPI-4.2总线的信号在发送和接收方向完全对称而又互相独立,数据链路和状态链路分开,并且其时钟也是完全分开的。因此,该总线不仅适合于双向通道,而且适合于只收不发或者只发不收的单向通道。


    SPI-4.2总线具有以下特点:
    ①点对点互连,收发数据链路宽度为16位。
    ②发送和接收模块的信号各分为两组,即数据信号和状态信号,分别对应数据链路和状态链路,每个链路具有自己的时钟。数据链路发送和接收数据,状态链路传输相应链路的状态信息。
    ③数据链路包含DCLK、DAT[15:0]和CTL三种LVDS(低压差分传输)信号。前面加“T”表示信号属于发送模块,加“R”表示信号属于接收模块。以发送模块为例,TDCLK是双边沿触发时钟,TCTL是控制信号,TDAT[15:0]承载了数据和控制信息。当TCTL为高电平时,TDAT[15:0]传送的是数据包;当TCTL为低电平时,TDAT[15:0]传送的是控制包。数据采用DIP~4校验交织码。
    ④状态链路包括SCLK时钟信号和STAT[1:0]状态信号,信号类型是LVTTL或LVDS。SPI~4.2发送时序如图2所示。如果选择LVTTL,则SC-LK时钟频率是数据链路时钟速率的1/4。如果选择LVDS,则SCLK时钟频率和数据链路时钟频率相同。下文中均以LVDS为例进行阐述。状态链路主要用于流控。


    ⑤接收和发送模块都含有一个FIFO队列,用于缓存数据,队列长度由芯片设计而定。队列的状态信息通过状态链路周期性地发送,接收模块和发送模块的状态信息是独立的。状态信息附加了DIP-2交织校验码,以提高传输可靠性。


    除了数据包中最后一段不满16字节的数据(EOP)之外,SPI-4.2总线的数据实行突发传输,以16字节为单位(称为一个数据块),每次传输多个数据块。因为数据宽度是16位,所以一次突发传输至少需要4个时钟周期。数据的高地址位字节先发送(MSB),低地址位字节后发送,数据块传输过程中不会被中断。每次突发传输的间隔期间传送控制包或者训练序列。图2中,TDAT表示数据块,TCTRL表示控制块。控制包长度为16位,包含了前次传输和下次传输的状态信息:包开始标志、包结束标志、逻辑端口地址和DIP-4交织校验码等。数据链路遵循有限状态机进行工作,状态包括5种:控制包传输、数据包传输、空闲包传输、训练序列传输以及训练序列控制。
    因为状态链路的宽度是2位,所以每次突发传输至少传输16位数据(4个时钟周期)。反映FIFO队列的状态信息有3种:饱(Satisfied)、饿(Hungry)、极饿(Starving),分别对应二进制数字10、01和00。11表示链路处于失步状态,正在同步过程中。当状态是“饱”时,说明队列几乎满了,只接收当前正在传送的数据包,其他数据包只有等状态更新后才能接收。当状态是“饿”时,可以接收最大MaxBurst2个数据块。当状态是“极饿”时,说明队列几乎空了,可以接收最大MaxBurst1个数据块。MaxBurst1和MaxBurst2是SPI-4.2总线初始化时设定的参数,MaxBurst1不得小于MaxBurst2。

2 SPI-4.2总线的初始化和同步
    SPI-4.2总线初始化时必须设定一些基本参数,如表1所列。


    SPI-4.2总线协议定义了一个叫“日历”的数据结构CALENDAR[i](i=1,…,CALENDAR_LEN)。CALENDAR_LEN(日历长度)参数规定了逻辑端口(或称为虚拟通道)的数目,该数值不能小于实际的逻辑端口数目。例如,如果SPI-4.2总线用于10 Gb/s以太网口,那么日历长度是1(即CALENDAR_LEN=1);如果SPI-4.2总线用于10个1 Gb/s以太网口,那么日历长度是10(CALENDAR_LEN=10),CALENDAR[i]=1,2,…,10,代表了10个以太网端口。CALENDAR[i]中承载的数据被周而复始地依次传输,重复次数是CALENDAR_M次。图3为日历长度和重复次数都是4的数据传输示意图。SPI-4.2总线被初始化时,必须确保接口两端的CALENDAR_LEN和CALENDAR_M分别相等。从这个角度看,SPI-4.2是一种时分复用的总线:总带宽是固定的,“日历”数据结构决定了带宽和逻辑端口的分配。
    当SPI-4.2正常工作时,数据和状态链路会不定期地发送训练序列。在数据链路,训练序列至少应该在DATA_MAX_T个时钟周期内发送一次。在状态链路,训练序列至少应该在FIFO_MAX_T个时钟周期内发送一次。设置DATA_MAX_T或FIFO_MAX_T为0将取消各自链路的训练序列,一般情况下不推荐这种设置。
    图4以XLR732为参照描述了SPI-4.2总线的收发同步过程。启动之后,在发送方向,发送模块(TX)通过数据链路发送连续的训练序列,对端的接收模块成功收到训练序列后,会设置本端的接收同步标志;然后通过状态链路发送训练序列给对端,一旦发送模块成功接收到训练序列后,就设置本端的发送同步标志。


    在接收方,接收模块(RX)在数据链路成功接收到对端发送的训练序列后,会设置本端的接收同步标志;然后通过状态链路发送训练序列,一旦发送模块成功接收到训练序列后,就设置本端的发送同步标志。
    在同步过程中,训练序列由指定的连续的DIP-4码字组成。发送模块必须连续发送训练序列,直到本端的状态链路收到有效信息。同时,接收模块忽视所有接收到的数据,直到观察到训练序列,获得数据同步。一旦数据链路同步之后,FIFO队列状态信息就开始传送。如果发送
方接收到有效的状态信息,它就可以开始进行数据突发传输。
    如果在工作过程中,由于某些原因(例如一端器件掉电或重启)导致总线失步,那么为了再次获得同步,双方需要按照上述过程发送连续的训练序列,直到建立同步为止。

3 SPI-4.2总线接口的调试
    SPI-4.2总线接口的调试包括两个重要步骤:链路的同步和数据的正常收发。
    在调试链路同步时,首先必须查看总线两端的初始化参数配置。因为SPI-4.2总线协议是一个对等端数据传输协议,所以大部分参数需要双方的匹配和协商,特别是接收方和发送方的CALENDAR_LEN和CALENDAR_M参数。
    如何查看同步呢?芯片通常会提供一个状态寄存器来反映总线的同步。“接收同步标志”只能说明在数据链路上成功接收到对端的训练序列,但不能保证接收的状态链路是正常的,如果需要确认可查看对端的“发送同步标志”。在收发双向通道应用中,只有两端的“接收同步标志”和“发送同步标志”都置位了,总线才算同步。此时,可以确认总线两端的物理连接是正确的,握手成功。
    如果不能同步,就必须检查两端的“接收同步标志”和“发送同步标志”,判断是哪一端出了问题。检查是否有DIP4和DIP2错误,如果有此类错误,说明链路上信号质量可能不佳,可以用示波器测量信号波形。如果信号质量确实不好,可以通过提高信号驱动能力或者调整硬件匹配阻抗来优化。如果两端的接收和发送都没有同步,就必须测量芯片的电压、工作频率、重启等信号。
    如果两端的“接收同步标志”和“发送同步标志”都已经置位,说明双方的接收和发送都同步,可以正常收发数据了。在大流量数据传输过程中,最相关的是FIFO队列的参数配置,配置不当会导致错包或丢包。以NetLogic公司的XLR732网络处理器为例,SPI-4.2总线的发送模块的所有逻辑端口共享一个FIFO队列,宽度为16字节,长度为128;接收模块的所有逻辑端口共享一个FIFO队列,宽度为16字节,长度为512。每个逻辑端口所占用的队列地址和大小都可以通过寄存器配置。
    假如某个端口接收端队列的长度是48,MaxBurst1是12,MaxBurst2是8。那么当该模块接收数据时,如果由于某些原因(例如软件来不及处理),接收队列只剩下12个空位,也就是接收队列已经有48-12=36个空位被占用时,它将通过状态链路向对端发送“饿”的状态信号(反压信号)。对端收到该信号后实施流控策略,根据本端发送端的MaxBurst1设置值发送数据,该值表示接收到“饿”状态信号后最多还可以发送的数据块数目。所以接收端的MaxBurst1的值一定要大于对端发送端的MaxBurst1,并且要留出一定的余量,因为数据在链路上的传输也是需要时间的。同理,接收端的MaxBurst2要大于对端发送端的MaxBurst2。值得注意的是,流控是基于逻辑端口的,而不是整条链路。
    为保证不发生接收端FIFO队列溢出等问题,尽量将接收端的MaxBurst1和MaxBurst2设置大一些,只要小于FIFO入口总数就可以,而发送端MaxBurst1和MaxBurst2的设置不要超过本端接收能力。
    如果出现EOP(结束包)和SOP(起始包)错误或缺失,或者其他错包(例如包长变短、帧校验错误等),但没有DIP4错误,该怎么办?这类问题一般出现在FIFO队列设置上,尤其是接收端的FIFO队列可能溢出,从而丢失了某些数据块,可以通过以下3种方法来检测和解决:
    ①通过查看接收端FIFO溢出标志来判断FIFO队列是否溢出;
    ②通过调整接收端的MaxBurst1和MaxBurst2来防止FIFO队列溢出;
    ③如果方法②的调整足够大,还有此问题,可以查看对端是否收到反压信号,以及对端的状态等。
    为了方便,通常将发送端的MaxBurst1和MaxBurst2设置为相同数值,将接收端的MaxBurst1和MaxBurst2也设置成相同数值。

结语
    随着处理器的速度越来越快,处理器集成的内核越来越多,处理器与外围器件之间,处理器之间,以及外围器件之间的连接速度逐渐成为制约平台性能的瓶颈。许多芯片同时集成了多个总线接口,例如XLR732同时拥有SPI-4.2、HT、以太网3种总线接口。SPI-4.2总线在与其
他总线的竞争中体现出了强大的生命力,希望本文所介绍的经验对正在应用或计划应用SPI-4.2总线的同行有所帮助。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭