本帖最后由 zhangmangui 于 2017-8-27 21:38 编辑
一、hyperlink的使用
1.overview
1.DSP之间用于高速,低延迟,少管脚的通信接口,可以模拟多种当前使用的外设接口。 2.hyperlink包括数字信号和边频带控制信号。数字信号是基于serdes的,边频带信号是基于LVCMOS的。当前的hyperlink提供点对点的连接方式。 2.feeatures 1.少量的pin只有26个,数据传输才用serdes,控制信号才用LVCMOS 2.所有的信号都由一个设备驱动和提供,所有的LVCMOS边频带信号都使用源同步时钟 3.每个通道12.5G,1or4通道用于发送和接收,可以支持serdes全速,半速,四分之一和八分之一的更低的速度。serdes自动侦测和校正polarity,自动识别通道和校正。 4.基于简单的包的映射内存间的传输协议,写请求,写数据,读请求,读反馈数据,中断请求,支持多种优秀的传输。 5.点对点的连接,请求和反馈数据通过一个物理管脚被复用?支持主机/外围设备以及点对点的通信模式 6.提供的LVCMOS管脚可以用于留空和电源管理,支持单个方向单个通道的流控,支持单个lane单个方向的电源管理 7.省电模式自动调整Lane位宽。 8.用于诊断和调试模式的serdes内部回环 9.无需外部上拉或者下拉电阻 10.64个硬件和软件中断。 11.8个中断指针地址 12.不支持写反馈的包e 13.TX和RX必须运行在同一个速度下。 14.该版本中没有外部的控制字命令。 15.最大支持64bytes的远程寄存器,超过寄回引起总线冲突。 16.不支持独占传输操作。 17.CBA constant mode is not supported for bursts larger than 256-byte aligned burst 3.功能框图 1.从FIFO来的数据流通过MAC和PLS到达wire
2.每一个lane可以工作在12.5G,hyperlink有自己有效的编码方式来支持物理层。和传统的8b10b编码方式相比,hyperlink去掉了编码的overhead。 3.边带信号提供流控和电源管理控制信息。硬件自己控制,软件无法配置干预。如下:
4.架构
1.hyperlink需要一个参考时钟为SerDes模块服务,可以选择156.25Mhz,250Mhz,312Mhz。 2.管脚描述,serdes是数据传输,LVCMOS是边带信号用于控制,数了一下一共26根线,8*2的LVCMOS线,10根serdes线。具体功能如下图:
3.TXPM和TXFL控制serdes的TXDATA;RXPM和RXFL控制serdes的RXDATA。 4.电源管理和流控管理的四个位D3D2D1D0只有前两位D0D1是有效的,D0=1表示支持高于12.5G的Baud,D0=0表示支持12.5G和低于。D1=1表示支持4个通道,D0=0表示不支持4个通道。 5.激活通道: 激活通道,传输方通过TXPM发送一个power-up事件告知接收者。接收方通过RXPM接收该power-up事件,然后使能接收。档接收方已经完全和传送方的训练序列同步之后,接收方发送个事件回去告诉发送者现在可以使用通道来进行数据传输了。然后接收方侦测到该传输并从训练队列切换到数据接收模式。 在serdes内支持符号对齐,PLS需要使能去通知serdes符号对齐会发生。同步字包含一个comma"逗号?"以方便serdes可以轻易的完成。每一个通道都需要符号对齐,取决于其他通道的状态,相位矫正也许会在所有活动的lane中发生。这使得开发一个通道到四个通道的时候,在对齐过程中不会taken down。 流控对用户是透明的,hyperlink的接收端自动管理可用资源的传输流量,并且限制TX端的流量通过边带信号。 6.电源管理: hyperlink根据lane power management register决定通道的电源状态,并且通过sideband signals统治相关的接收者进入相同的电源状态。 在重启阶段,serdes和所有通道一样处于掉电模式。当退出掉电模式之后,HYPERLINK模块通过sideband总线发送一条消息给远程的相关设备请求其能力。当收到应答之后,HYPERLINK自动的进入一种可操作的状态。serdes只有在PWRMGT寄存器被清零或者传送挂起的时候才会被带出复位。hyperlink模块会基于PWRMGT寄存器和outbound load来自动的改变电源模式。默认情况下,HYperlink 让传输连接空闲知道节后到从VBUS的从端口来的传输。然后hyperlink进入单一通道模式为该传输服务并且一个通道的上电处理也已经完成。hyperlink根据traffic load动态的管理他的电源模块。当一个通道跟不上数据传输的时候,hyperlink就会自动进入四个通道的模式,如果流量低于一个通道的,那就自动转到单通道模式。如果流量进一步减少,Hyperlink会自动的进入0通道模式,关闭serdes的传输,直到通道内有传输来。发送和接收都是独立控制的一遍一些应用只有一个方向的传输。 不同模式的传输是被lane power management寄存器控制的。 7.serdes配置和时钟 该模块控制hyperlink的开发速率,提供hyperlink的发送和接收以及外部设备的管脚之间的接口。文档末尾体供了配置serdes的相关例子。serdes寄存器是芯片级的,并不在hyperlin的配置寄存器空间。在操作这些寄存器之前,必须对Kick寄存器操作以允许有对寄存器操作的权限。 serdes的时候取决于hyperlink serdes PLL和发送接收的RATESCALE,速率比例因子。环路带宽?loop bandwidth。 hyperlink serdes的主要目的是由一个低频率的参考时钟(REFCLK)生成一个高频率的输出时钟。PLL输出频率由MPY决定,MPY在HYPERLINK_SERDES_CFGPLL中,计算公式如下: PLL_OUTPUT=REFCLK*MPY 输出范围必须在1.5625GHz到3.125GHz的范围内。 为了消除抖动带来的干扰,引入了LOOP_BANDWIDTH来设置,公式如下: PLL_BANDWIDTH = REFCLK/BWSCALE BWSCALE和PLL_OUT以及LOOP_BANDWIDTH的关系如下表,8~30MHZ是一个特殊范围,可以根据下面的表来进行配置:
RateBITS可以设置一个频率系数,例如0.25.0.5等,LINRATE的计算公式如下: LINERATE=REFCLK*MPY/RATESCALE,最大为12.5GHZ 有一个参考的配置表如下:
8.SerDes的接收接口 有四个数据通道,可以在HYPERLINK_SERDES_CFGRX[3-0]的系统级寄存器中,ENRX域会给出接收模块的状态。hyperlink自动使能接收模块。接收模块的主要作用是在接收信号来的时候处理数据和时钟。CDR寄存器配置该功能。时钟数据recover算法的目的是简化RXp和RXn以至于数据样本在数据传输中途可以被提取,这是为了决定样本式中是被空闲了还是需要传输的早一些或者晚一些。 可以检测到信号丢失的情况,配置LOS域的寄存器。 9.SerDes的发送接口 对应接收接口的ENTX域寄存器可以给出发送接口的状态,该模块自动使能。 发送接口使能发送通道,提供信号传输中的信号调制选项,关注SWING,TWPRE,TWPST1寄存器。 10.SesDes的训练过程 一旦PLL设定好了,稳定输出了,lock了,就开始边带信号和训练步骤。 当一个非0的MPY值写到HYPERLINK_SERDES_CFGPLL寄存器中的时候,会锁定锁相环并且传输步骤被触发,为了保证hyperlink配合寄存器被合适的设置在初始化训练步骤的时候,并且确保自动协商,以下步骤需要被遵守: 1.复位要做好 2.出reset状态,在运行应用程序 3.配置hyperlink寄存器和SerDes的发送和接收配置寄存器 4.配置MPY和PLL寄存器,如果配置有效,PLL会锁定并且给出期望的频率输出。 5.HYperlink会等待SerDes的PLL锁定,并且开始Hyperlink的边带信号和传输步骤。 SDCS1(sleep_cnt)控制标识的通道进入睡眠或者使能的状态。这样可以允许在链接建立之前电源供电稳定。该寄存器是控制链接和恢复状态前的一个稳定状态。 Sleep masked symbol count = sleep_cnt x 16 x Unit Interval
Disable masked symbol count = disable_cnt x 16 x Unit Interval sleep_cnt和disable_cnt的建议值为最大值0xff |