Aurora之复位


Aurora 64B/66B 时钟和复位要点

1、传输过程中没有数据传输的时候链路是什么状态?(6/141)

每当不传输数据时,都会传输空闲以保持链路处于活动状态。过多的误码、断开连接或设备故障会导致内核复位并尝试初始化新通道。Aurora 64B/66B内核在接收多通道通道时最多支持两个符号偏斜。

2、Aurora RX端收数不成功,是否可以单向发送数据出去?(7/141)

单工连接(单向):Aurora 64B/66B单工协议提供单向通道初始化,使其能够在反向通道不可用时使用GTX、GTH和GTY收发器,并降低因未使用全双工资源而产生的成本。

reset_pb: 按钮重置。在example design 中作为的top层重置输入。驱动内核内部的支持重置逻辑所需。

pma_init:收发器PMA_INIT复位信号通过一个无抖动器连接到顶层。系统地重置收发器的所有物理编码子层(PCS)和物理介质附件(PMA)子组件。信号使用init_clk_in去抖动至少6个init_clk周期。有关详细信息,请参阅相关收发器用户指南中的重置部分。

channel_up:当Aurora 64B/66B通道初始化完成且通道准备好发送/接收数据时置位。

lane_up:通道初始化成功时,为每个通道置位,每个位代表一个通道。Aurora 64B/66B内核只有在所有lane_up信号都被置位后才能接收数据。

gt_pll_lock: 当TX_OUT_CLK稳定时置位。当解除置位(低电平)时,使用TX_OUT_CLK的电路应保持复位状态。

power_down: 在init_clk时钟域下,驱动 Aurora 64B/66B 核复位。

soft_error:在Aurora 64B/66B通道操作期间,设备问题和通道噪声可能会导致错误。64B/66B编码方法允许Aurora 64B/66B内核检测通道中可能发生的某些位错误。内核通过在检测到这些错误的每个周期中断言SOFT_ERR信号来报告这些错误。

Hard_error: 内核还监控每个高速串行GTX和GTH收发器的硬件错误,如缓冲区溢出和锁定丢失。硬件错误通过断言HARD_ERR信号来报告。灾难性的硬件错误也可能表现为一系列软错误。Aurora 64B/66B协议规范v1.3(SP011)[参考文献9]中描述的块同步算法确定是否将软错误突发视为硬错误。(53/141)

每当检测到hard_error错误时,内核都会自动复位并尝试重新初始化。在大多数情况下,这允许在导致hard_error的硬件问题解决后重新建立Aurora 64B/66B通道。软错误不会导致复位重置,除非在短时间内发生足够的错误来触发块同步状态机(the block sync state machine)。

hard_err:

1、 TX Overflow/Underflow::TX数据弹性缓冲区中存在上溢或下溢情况。当用户时钟和参考时钟源的工作频率不同时,可能会出现这种情况。

2、 RX Overflow/Underflow: RX数据时钟校正和通道绑定FIFO中存在上溢或下溢情况。当两个通道伙伴的时钟源频率不在±100 ppm内时,可能会出现这种情况。

Soft_err:

1、Soft Errors: 在短时间内发生了太多的软错误。如果检测到太多无效的同步头,则对齐块同步状态机自动尝试重新对准。软错误不会转换为硬错误。

2、Invalid SYNC Header: 64位块上的2位标头不是有效的控制或数据标头。

3、Invalid BTF: 收到的控制块的块类型字段(BTF)包含无法识别的值。这种情况通常是由误码引起的。

Aurora初始化:(54/141)

内核在通电、复位或硬错误后自动初始化(图2-35)。通道两侧的核心模块执行Aurora 64B/66B初始化程序,直到通道准备就绪。LEAN_UP总线指示通道中的哪些通道已经完成了该过程的通道初始化部分。LEAN_UP信号可用于帮助调试多通道通道中的设备问题。只有在内核完成整个初始化过程后,才会置位CHANNEL_UP。

Aurora 64B/66B内核可以在channal_up拉高前接收数据。需要使用用户界面m_axi_rx_tvalid有效信号来确定传入数据。由于在channal_up置位之前不会发生传输,因此channal_up可以取反并用于复位驱动全双工通道发送端的模块。如果用户应用模块需要在数据接收前复位,则可以使用lane_up取反的边延信号来实现此目的。在所有lane_up信号被断言之前,无法接收数据。

Clocking:

良好的时钟对Aurora 64B/66B内核的正确运行至关重要。内核需要低抖动参考时钟来驱动GTX、GTH或GTY收发器中的高速TX时钟和时钟恢复电路。内核还需要至少一个锁频并行时钟才能与用户应用同步操作。

每个Aurora64B/66B内核都在Example_project目录中生成,该目录包含一个名为aurora_example的设计。此设计实例化了生成的内核,并演示了内核的工作时钟配置。首次使用Aurora 64B/66B的用户应检查Aurora 64B/66B示例设计,以便在连接时钟接口时用作模板。

user_clk: Aurora 64B/66B内核使用三个锁相并行时钟。第一个是USER_CLK,它同步内核和用户应用程序之间的所有信号。接触内核的所有逻辑必须由USER_CLK驱动,而USER_CLK又必须是全局时钟缓冲器(BUFG)的输出。USER_CLK信号用于驱动串行收发器的txusrclk2端口。考虑到64B/66B编码和解码,选择TX_OUT_CLK使得模块并行侧的数据速率与模块串行侧的数据速率匹配。

sync_clk: 第三个锁相并行时钟为SYNC_CLK。该时钟还必须来自BUFG,用于驱动串行收发器的txusrclk端口。它还连接到Aurora 64B/66B内核,以驱动串行收发器的内部同步逻辑。

Reset:

RESET_PB信号用于将Aurora 64B/66B内核恢复到已知的启动状态。复位时,内核停止当前操作并重新初始化通道。当给到RESET_PB信号时,需要USER_CLOCK稳定。当向Aurora 64B/66B通道Partner1发出的RESET_PB信号被断言时,通道Partner2也会失去锁定。当通道Partner1脱离复位时,通道Partner2重新锁定,并开始传输有效模式。在全双工内核中,RESET_PB信号复位通道的发送端和接收端。单工Aurora 64B/66B内核为两个合作伙伴提供相似的RESET_PB端口,需要不同的重置顺序。断言pma_init会重置整个串行收发器,最终也会重置Aurora64B/66B内核。此外,需要init_clk总是稳定,并且ref_clk在pma_init信号解除断言时也是稳定的。

Reset Sequence****:

注:在复位时序图中添加了init_clk作为说明;reset_pb和pma_init都是对内核的异步重置。

Aurora 64B/66B Duplex情况:

(自己分析,对全双工情况,上电时,pma_init先解除复位(拉低)reset_pb再解除复位。复位时reset_pb先复位而后pma_init再拉高复位)

在电路板上电序列期间,预计pma_init和reset_pb信号均为高电平。为保证Aurora 64B/66B内核的正常运行,INIT_CLK和GT_REFCLK在通电期间应保持稳定。当两个时钟都稳定时,pma_init先被解除置位,然后reset_pb再被解除置位。

双工复位顺序:

1、 reset_pb拉高信号等待最低128*user_clk的时间再拉高pma_init。

2、 拉高pma_init后。保持PMA_init和Reset拉高状态至少一秒钟,以防止CC字符的传输,并确保远程agent检测到热插拔事件。

3、 保持完成1s后,拉低pma_init。

4、 然后拉低reset_pb,内部逻辑等待user_clk稳定,并且reset_pb拉低之后输出低电平的sys_reset_out信号。

Aurora 64B/66B Simplex情况:

在TX单工和RX单工内核上电期间,pma_init和reset_pb信号应是高电平。INIT_CLK和GT_REFCLK在上电序列期间应保持稳定。由于具有自动单工恢复功能,两个板都可以独立brought up。如果先启动RX板,然后再启动TX板,则可以立即开始数据传输。但是,如果首先启动TX板,则在基于TX发送的周期性CB模式启动RX板之前,不应进行数据传输。

单工复位要求:

对于单工配置,因为TX和RX可以独立通电,以避免数据丢失,数据传输必须在看到RX_CHANNEL_UP之后(即,在TX_CHANNEL_UP至少45ms之后)才开始。拉高reset_pb后需要最低128*user_clk时间才能拉高pma_init,以确保可编程逻辑中的内核部分在pma_init期间(将user_clk保持为低电平之前)进入已知的复位状态。pma_init的断言时间必须至少为6个init_clk周期,才能满足内核去跳动电路的要求。


对IP的pma_init信号拉高会使得通道伙伴IP core中的热插拔复位断言。热插拔复位断言后的复位顺序如图所示。


Single Reset Use Cases

Use Case 1: reset_pb assertion in the duplex core

双工内核中的复位断言的最短时间应等于128*USER_CLK的TIME_PERIOD。然后,CHANNEL_UP才被取消断言,如图3-10所示。


Use Case 2: pma_init Assertion in the Duplex Core

图3-11显示了双工核心中的pma_init断言,该断言应该至少为128个init_clk周期。由于拉高pma_init,结果USER_CLK在几个时钟周期后停止,因为收发器没有txoutclk,CHANNEL_UP被解除断言。

Use Case 3: Assertion of reset_pb in the Simplex Core

图3-12显示了系统中连接的单工TX核心和单工RX核心。CONFIG1和CONFIG2可以在相同或多个设备中。


以下是单工内核中TX内核复位和RX内核复位断言的推荐步骤(参见图3-13)。

1、 TX端的reset_pb拉高至少128user_clk个时钟周期,然后RX端再拉高128user_clk个时钟周期。

2、 TX_CHANNEL_UP和RX_CHANNEL_UP在至少五个USER_CLK时钟周期后拉低。

3、 RX单工内核中的信号reset_pb的解除断言(或)释放需要在TX单工内核中的reset_pb被解除断言之前。这个顺序的原因是,虽然自动单工恢复功能允许两个板独立启动,但这确保了当单工-RX内核准备好时,TX发送Aurora 64B/66B初始化序列。

4、 X_CHANNEL_UP在TX_CHANNEL_UP断言之前被断言。SIMPLEX-RX内核必须满足此条件,需要调整SIMPLEX-TX内核中的SIMPLEX定时器参数(SIMPLEX_TIMER_VALUE)以满足此标准。SIMPLEX_TIMER_VALUE参数可以在<USER_COMPONT_NAME>_core.v中更新。

5、 在单工-TX内核在配置时间内完成Aurora 64B/66B协议通道初始化序列传输后,TX_CHANNEL_UP被断言。最后断言TX_CHANNEL_UP可确保当SIMPLEX-RX内核就绪时,SIMPLEX-TX内核发送Aurora 64B/66B初始化序列。


6、 对于TX/RX单工内核,可以遵循reset_pb和pma_init断言的双工内核中的复位序列。但是,SIMPLEX_TIMER_VALUE需要根据内核的使用模型进行调优。

参考资料:PG046 April 4, 2018


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM