一种PCIe链路训练方法、端设备及通讯系统

文档序号:1686973 发布日期:2020-01-03 浏览:15次 >En<

阅读说明:本技术 一种PCIe链路训练方法、端设备及通讯系统 (PCIe link training method, end equipment and communication system ) 是由 刘海亮 于 2019-09-29 设计创作,主要内容包括:本申请提供了一种PCIe链路训练方法、端设备及通讯系统,涉及固态硬盘技术领域。该链路训练方法应用于端设备,端设备包括移位寄存器与CPU,当接收到第一复位解除信号后,移位寄存器对接收到的复位信号进行按位与运算,并得到处理后的复位信号,然后由CPU依据处理后的复位信号启动PCIe链路训练。本申请提供的PCIe链路训练方法、端设备及通讯系统具有提高了端设备在链路训练过程中健壮性的优点。(The application provides a PCIe link training method, end equipment and a communication system, and relates to the technical field of solid state disks. The link training method is applied to end equipment, the end equipment comprises a shift register and a CPU, after a first reset release signal is received, the shift register carries out bitwise AND operation on the received reset signal to obtain a processed reset signal, and then the CPU starts PCIe link training according to the processed reset signal. The PCIe link training method, the end device and the communication system have the advantage of improving the robustness of the end device in the link training process.)

一种PCIe链路训练方法、端设备及通讯系统

技术领域

本申请涉及固态硬盘技术领域,具体而言,涉及一种PCIe链路训练方法、端设备及通讯系统。

背景技术

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,由英特尔在2001年提出,是第三代高速串行总线,旨在取代旧的PCI,PCI-X,AGP总线标准。PCIe自提出以来,其以传输速率快、端到端的可靠性传输、支持热拔插、功耗管理、服务质量等特性在个人计算机、服务器、固态硬盘、数据中心等领域得到了广泛的应用。

PCIe链路训练是两个PCIe设备进行正常通信的前提,在实际应用过程中,由于不同厂家的主机侧具体做法之间会有差异,在PCIe链路训练过程中会存在各种问题,导致链路训练失败。

然而,现有技术中并没有通过从端设备出发,以提高端设备在链路训练过程中的健壮性。

发明内容

本发明的目的在于提供一种PCIe链路训练方法,以解决现有技术中没有从端设备出发提升链路训练过程中的健壮性。

本发明的另一目的在于提供一种端设备,以解决现有技术中没有从端设备出发提升链路训练过程中的健壮性。

本发明的另一目的在于提供一种通讯系统,以解决现有技术中没有从端设备出发提升链路训练过程中的健壮性。

为了实现上述目的,本申请实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种PCIe链路训练方法,所述链路训练方法应用于端设备,所述端设备包括移位寄存器与CPU,所述方法包括:

当接收到第一复位解除信号后,所述移位寄存器对接收到的复位信号进行按位与运算,并得到处理后的复位信号;

所述CPU依据所述处理后的复位信号启动PCIe链路训练。

进一步地,所述端设备还包括-上电复位寄存器、配置寄存器以及PCIe内核复位寄存器以及通道寄存器,所述CPU与所述上电复位寄存器、所述配置寄存器、所述PCIe内核复位寄存器以及所述通道寄存器电连接,所述上电复位寄存器与所述配置寄存器电连接,所述CPU依据所述训练信号启动PCIe链路训练的步骤包括:

当所述CPU读取到第二复位解除信号时,在预设定的时间后通过配置寄存器释放上电复位寄存器;

当所述上电复位寄存器释放后,且所述CPU同时读取到所述PCIe内核复位寄存器的值为高电平时,释放通道寄存器,以开启所述PCIe链路中的所有通路;其中,所述通道寄存器与所述PCIe链路中的每条通路电连接;

当所述CPU确定所述PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练。

进一步地,所述端设备还包括训练控制使能寄存器与链路训练状态机,所述链路训练状态机用于在PCIe链路中进行链路训练,所述训练控制使能寄存器与所述链路训练状态机电连接,所述训练控制使能寄存器还与所述CPU电连接,在所述当所述CPU确定所述PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练的步骤之前,所述方法还包括:

所述CPU控制所述训练控制使能寄存器处于非使能状态,以使链路训练状态机处于非工作状态;

所述当所述CPU确定所述PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练的步骤包括:

当所述CPU确定所述PCIe链路中存在至少一条通路处于数据交互状态时,所述CPU控制训练控制使能寄存器处于使能状态,以使所述链路训练状态机处于工作状态。

进一步地,所述端设备还包括电气空闲寄存器,所述CPU与所述电气空闲寄存器电连接,在所述当所述CPU确定所述PCIe链路中存在至少一条通路处于活动状态时,启动PCIe链路训练的步骤之前,所述方法还包括:

所述CPU实时读取电气空闲寄存器的数据,并确定所述电气空闲寄存器的数据是否存在低电平信号,以确定所述PCIe链路中是否存在至少一条通路处于数据交互状态;其中,所述电气空闲寄存器用于记录所述PCIe链路中所有通路的状态。

进一步地,在所述确定所述电气空闲寄存器的数据是否存在低电平信号的步骤之前,所述方法还包括:

所述电气空闲寄存器将每条所述通路对应的数据进行移位处理,并将每条通路移位后数据进行按位与运算,其中,处于数据交互状态的通路对应的数据为低电平。

进一步地,所述端设备还包括公共寄存器,在所述释放通道寄存器,以开启所述PCIe链路中的所有通路的步骤之前,所述方法还包括:

所述CPU配置所述公共寄存器为低电平。

进一步地,所述端设备还包括中断电路,当所述PCIe处于温复位期间时,所述得到运算后的训练信号的步骤包括:

所述中断电路对所述移位寄存器运算后的复位信号进行上升沿与下降沿生成处理及中断信号提取处理,以获取中断信号;

所述CPU依据所述处理后的复位信号启动PCIe链路训练的步骤包括:

所述CPU依据所述中断信号启动PCIe链路训练。

进一步地,所述端设备还包括采样电路,在所述移位寄存器对接收到的复位信号进行按位与运算的步骤之前,所述方法还包括:

所述采样电路对所述复位信号进行采样;

所述移位寄存器对接收到的复位信号进行按位与运算的步骤包括:

所述移位寄存器对采样后的复位信号按字节进行位与运算。

第二方面,本发明实施例化提供了一种PCIe链路训练方法,所述链路训练方法应用于端设备,所述端设备还包括上电复位寄存器、配置寄存器以及PCIe内核复位寄存器以及通道寄存器,所述CPU与所述上电复位寄存器、所述配置寄存器、所述PCIe内核复位寄存器以及所述通道寄存器电连接,所述上电复位寄存器与所述配置寄存器电连接,所述方法包括:

当所述CPU读取到复位解除信号时,在预设定的时间后通过配置寄存器释放上电复位寄存器;

当所述上电复位寄存器释放后,且所述CPU同时读取到所述PCIe内核复位寄存器的值为高电平时,释放通道寄存器,以开启所述PCIe链路中的所有通路;其中,所述通道寄存器与所述PCIe链路中的每条通路电连接;

当所述CPU确定所述PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练。

第三方面,本发明实施例还提供了一种端设备,所述端设备用于实现上述的PCIe链路训练方法。

第四方面,本发明实施例还提供了一种通讯系统,所述通讯系统包括主设备、通讯线以及端设备,所述主设备与所述端设备通过所述通讯线通信连接,所述端设备用于实现上述的PCIe链路训练方法。

相对于现有技术,本申请具有以下有益效果:

本发明实施例提供了一种PCIe链路训练方法、端设备以及通讯系统,该链路训练方法应用于端设备,端设备包括移位寄存器与CPU,当接收到第一复位解除信号后,移位寄存器对接收到的复位信号进行按位与运算,并得到处理后的复位信号,然后由CPU依据处理后的复位信号启动PCIe链路训练。由于主设备给端设备的复位信号为低有效旁带复位信号,即当该信号为低电平时,表示当前电源供给已稳定。而由于在电路中可能存在抖动,造成该复位信号出现毛刺及不稳定的因素。通过端设备在接收复位信号后,将复位信号按位与操作,进而通过硬件的方式剔除复位信号的毛刺与不稳定操作,增强了复位信号的健壮性,进而提高了端设备在链路训练过程中的健壮性。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。

图1为本申请实施例提供的PCIe链路训练方法的一种示意性流程图。

图2为本申请实施例提供的端设备的一种示意性模块图。

图3为本申请实施例提供的图1中S101子步骤的一种示意性流程图。

图4为本申请实施例提供的图1中S101子步骤的另一种示意性流程图。

图5为本申请实施例提供的图1中S103子步骤的一种示意性流程图。

图6为本申请实施例提供的图1中S103子步骤的另一种示意性流程图。

图7为本申请实施例提供的PCIe链路训练初始化时的一种示例性时序图。

图8为本申请实施例提供的另一种PCIe链路训练方法的示意性流程图。

图标:200-端设备;210-CPU,220-配置寄存器;230-PCIe内核复位寄存器;240-上电复位寄存器;250-训练控制使能寄存器;260-链路训练状态机;270-电器空闲寄存器;280-公共寄存器;290-通道寄存器。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

第一实施例

正如背景技术中所述,PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准。

PCIe链路训练是PCIe主设备与PCIe端设备进行正常通信的前提,在实际应用过程中,由于不同厂家的主机侧具体做法之间会有差异,在PCIe链路训练过程中会存在各种问题,导致链路训练失败。

为了提升PCIe链路训练的健壮性,目前一般采用在主设备端进行改进,从而提升链路训练的健壮性。然而,现有技术中并没有通过从端设备出发,提高端设备在链路训练过程中的健壮性。

有鉴于此,本申请提供了一种PCIe链路训练方法,以实现从端设备出发,提升端设备在链路训练过程中的健壮性。

下面以端设备作为执行主体,对本申请提供的PCIe链路训练方法进行示例性说明。

作为本申请的一种实现方式,请参阅图1与图2,该PCIe链路训练方法包括:

S101,当接收到第一复位解除信号后,移位寄存器对接收到的复位信号进行按位与运算,并得到处理后的复位信号。

S103,CPU依据处理后的复位信号启动PCIe链路训练。

其中,当主设备与端设备200需要进行通信之前,需要先进行PCIe链路训练。当需要启动链路训练时,需要先对端设备200进行复位操作。

此时,主设备会向端设备200发送一复位信号,该复位信号为PERST#,PERST#是PCIe主设备给端设备200的低有效旁带复位信号,当此信号为低时,表示当前电源供给已稳定,开始对端设备200进行复位操作。由于在电路中可能存在抖动,因此本发明通过技术手段增强了PERST#的健壮性。

当接收到第一复位解除信号后,移位寄存器会对接收到的复位信号进行按位与运算,并得到处理后的复位信号。例如,当CPU210接收到第一复位解除信号,将处理后的复位信号输出到32位位宽的移位寄存器,以利用该32位移位寄存器进行按位与操作,以获取处理后的复位信号。并将处理后的复位信号供软件使用,并且CPU210依据处理后的复位信号启动PCIe链路训练。

通过该处理方式,能够有效的过滤掉PERST#信号的毛刺及不稳定操作,增强了PERST#信号的健壮性。

需要说明的是,作为本申请一种可能的实现方式,本申请所述的第一芯片复位解除信号为主设备终止向端设备200发送复位信号时产生的信号,即当主设备向端设备200发送复位信号完成时,端设备200会检测到相应的第一复位解除信号,此时端设备200开始对复位信号进行处理。并且,本申请按位与操作后提升PERST#信号健壮性的原理为:

由于PERST#信号为低有效旁带复位信号,当PERST#信号产生毛刺时,其信号中部分可能出现跳变。例如,PERST#信号为0000,当出现毛刺时,PERST#信号变化为0001。且本申请所述的按位与操作,为两两位与操作,例如上一周期与下一周期信号之间执行与逻辑,可以理解的,处理后的PERST#信号为0000,进而能够实现过滤掉PERST#信号的毛刺及不稳定操作的效果。

其中,作为本申请一种可能的实现方式,端设备200还包括采样电路,请参阅图3,S101包括:

S101-1,当接收到第一复位解除信号后,采样电路对复位信号进行采样。

S101-2,移位寄存器对采样后的复位信号按字节进行位与运算。

即在本申请的实现过程中,当CPU210接收到第一复位解除信号后,会利用采样电路对复位信号进行采样,例如,采样电路为aux_clk辅助时钟,则利用aux_clk辅助时钟对PERST#信号进行采样,并将采样后的信号复位信号输入到32位位宽的移位寄存器,然后将32位移位寄存器的结果进行按位与操作,并将按位与之后的复位信号经寄存器保存后作为PERST#信号存到PCIe内核。

上述采用处理后的PERST#信号直接供软件使用适用于冷复位期间,而当处于温复位期间时,可利用中断信号供软件使用。其中,冷复位期间值端设备200刚开始工作时,此时端设备200中电路并未全部开始工作,因此此时并不会中断信号。而当处于温复位期间时,由于端设备200中电路已经全部开始工作,此时能够产生中断信号,并且按照中断信号供软件进行处理时,软件的处理速度更快,因此次此时采用中断信号供软件使用。

即当PCIe处于温复位期间时,请参阅图4,S101包括:

S101-a,当接收到第一复位解除信号后,移位寄存器对接收到的复位信号进行按位与运算。

S101-b,中断电路对移位寄存器运算后的复位信号进行上升沿与下降沿生成处理及中断信号提取处理,以获取中断信号。

其中,端设备200包括中断电路,且中断信号也是基于按位于运算后的PERST#生成,因此也能够到达过滤掉PERST#信号的毛刺及不稳定操作。并且,中断电路能够对运算后的PERST#信号进行上升沿与下降沿的检测,同时依据检测的上升沿与下降沿产生中断信号,例如,当中断电路检测到上升沿时产生中断信号。

并且,当PCIe处于温复位期间时,CPU210也会依据中断信号启动PCIe链路训练。

同时,需要说明的是,本申请所述CPU210依据处理后的复位信号启动PCIe链路训练,一般包含正式链路训练以及链路训练前的准备流程,通过本申请提供的链路训练前的准备流程,能够避免在正式链路训练过程中多种情况下的链路失败问题,进而增强了在PCIe链路正式训练时的健壮性。

作为本申请的一种实现方式,请参阅图5,S103包括:

S103-1,当CPU210读取到第二复位解除信号时,在预设定的时间后通过配置寄存器220释放上电复位寄存器。

S103-3,当上电复位寄存器释放后,且CPU210同时读取到PCIe内核复位寄存器的值为高电平时,释放通道寄存器,以开启PCIe链路中的所有通路。

S103-5,当CPU210确定PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练。

其中,端设备200还包括上电复位寄存器240、配置寄存器220以及PCIe内核复位寄存器230以及通道寄存器290,CPU210与上电复位寄存器240、配置寄存器220、PCIe内核复位寄存器230以及通道寄存器290电连接,上电复位寄存器240与配置寄存器220电连接。

需要说明的是,端设备200一般包括PHY功能模块、Controller功能模块以及控制顶层功能模块,且PHY功能模块、Controller功能模块以及控制顶层功能模块中均包括多个寄存器。例如,PHY功能模块中包括通道寄存器。

当需要启动链路训练之前,需要首先使能PHY功能模块与Controller功能模块。即本申请为了实现在PCIe链路训练过程中的健壮性,需要按序开启对应的寄存器,进而保证了PCIe链路训练的健壮性。

因此,当CPU210读取到第二复位解除信号时,会在预设定的时间后通过配置寄存器220释放上电复位寄存器240。其中,作为本申请的一种实现方式,第二复位解除信号与第一复位解除信号之间关联。例如,端设备200还包括产生第二复位解除信号的寄存器,当CPU210通过软件检测到该寄存器的第二复位解除信号时,则表示此时可启动链路训练的准备工作。

并且,本申请中提供的上电复位寄存器240在释放后,则表示端设备200的PHY功能模块与Controller功能模块已经处于可开始工作的状态。由于在接收到第二复位解除信号,表示端设备200已经开始上电,而端设备200的PHY功能模块在上电电源稳定后,至少需要等待一段时间,才能够PHY功能模块中的复位信号进行释放,因此需要等到在预设定的时间后才能通过配置寄存器220释放上电复位寄存器240。作为一种实现方式,预设定的时间设置为25us。即在25us后,软件释放PCIe power up reset(上电复位寄存器240)。

并且,由于在上电复位寄存器240释放后,PCIe内核复位寄存器230内部会进行硬件的复位实现及电路状态检测,待条件满足后,才会释放core_rst_n(PCIe内核复位寄存器230),core_rst_n释放,PCIe的PHY功能模块与Controller功能模块的寄存器配置总线才会被激活,此后可以进行PHY功能模块与Controller功能模块的寄存器配置。

换言之,当CPU210读取到第二复位解除信号时,需要在上电复位寄存器240释放后,且CPU210同时读取到PCIe内核复位寄存器230的值为高电平时,才能配置PHY功能模块与Controller功能模块的寄存器。其中,当PCIe内核复位寄存器230的值为高电平时,表示其已经处于释放状态。

由于通道寄存器290为PHY功能模块内的一种寄存器,因此当PHY功能模块与Controller功能模块的功能模块可以配置时,此时可释放通道寄存器290,进而开启PCIe链路中的所有通路。本申请中通道寄存器为pipe_laneX_reset_n,例如,PCIe通道个数为4,则通道寄存器也可以为四个,分别为pipe_lane0_reset_n、pipe_lane2_reset_n、pipe_laneX_reset_n以及pipe_lane3_reset_n。

并且,当CPU210确定PCIe链路中存在至少一条通路处于数据交互状态时,表示至少有一条PCIe通道在活动,此时CPU210则启动PCIe链路训练。

并且,在上述的实现方式的基础上,端设备200还包括训练控制使能寄存器250与链路训练状态机260,链路训练状态机260用于在PCIe链路中进行链路训练,训练控制使能寄存器250与链路训练状态机260电连接,训练控制使能寄存器250还与CPU210电连接。为了实现链路训练时的健壮性,需要按照严格的时间先后顺序及时间要求使能不同的寄存器,因此当PCIe通道开启且至少有一条PCIe通道在活动的步骤之前,训练控制使能寄存器250始终处于非使能状态,使得链路训练状态机260不工作。

即作为一种实现方式,在S103-1之后,请参阅图6,S103还包括:

S103-2a,CPU控制训练控制使能寄存器处于非使能状态,以使链路训练状态机处于非工作状态。

S103-5的步骤包括:

S103-5a,当CPU确定PCIe链路中存在至少一条通路处于数据交互状态时,CPU控制训练控制使能寄存器处于使能状态,以使链路训练状态机处于工作状态。

其中,本申请的提供的训练控制使能寄存器250为app_ltssm_enable,当app_ltssm_enable为0时,则表示此时训练控制使能寄存器250为不使能状态,此时链路训练状态机260不工作,当app_ltssm_enable为1时,则表示此时训练控制使能寄存器250为使能状态,链路训练状态机260工作,开始进行链路训练。

同时,端设备200还包括公共寄存器280,公共寄存器280与CPU210连接,在S103-3的步骤之前,S103还包括:

S103-2b,CPU配置公共寄存器为低电平。

其中,PHY功能模块包括公共寄存器280与通道寄存器290,当PHY功能模块处于释放后,CPU210首先会配置PHY功能模块内的其它寄存器,并在配置完毕后,首先配置公共寄存器280为低电平。在配置完成后,然后再配置通道寄存器290为高电平,即使即表示PCIe链路中的所有通道已打开。

作为本申请的一种实现方式,端设备200还包括电气空闲寄存器,CPU210与电气空闲寄存器电连接,在S103-5步骤之前,该PCIe链路训练方法还包括:

S103-4,电气空闲寄存器将每条通路对应的数据进行移位处理,并将每条通路移位后数据进行按位与运算,其中,处于数据交互状态的通路对应的数据为低电平。

在CPU210释放提通道寄存器290后,通道寄存器290被配置为高电平,比欧式每条通道均已被开启。此后,电气空闲寄存器会一直检测端设备200总线是否处于空闲状态,当总线上某个通道有数据传输时,此时传输数据的通道的信号为低电平。

并且,在硬件电路中,本发明利用增强PERST#信号健壮性类似的做法,使用4个32比特位宽的寄存器来进行移位操作,并将移位后的每个32比特数据进行按位与操作,以PCIe通道个数为例,其处理后的数据最后组成一个4比特的电气空闲寄存器信号,当然地,当通道数目为8时,则组成8比特信号,本申请对此并不做任何限定。当电气空闲寄存器的任一比特为0时,则表示4个通道中已经有通道在开始接收数据,主设备已经在开始进行PCIe链路的训练。

对于每个通道信号的处理,下面举例说明,以任一通道为例,当通道寄存器290使能后,通道开启,此时电气空闲寄存器检测的通道信号为1,即此时通道为高电平。并且,电气空闲寄存器会周期地获取通道的信号,例如或者4个周期的信号,分别为1、1、1、0。然后将4个周期内的信号按位与操作,最后得出通道信号为0,表示还通道已有数据传输。

并且,对于所有通道而言,电气空闲寄存器在检测过程中,当通道处于空闲时,检测的信号为1111,表示4个通道均为高电平,此时四个通道均为空闲状态。而当检测的信号不为1111时,则均表示4条通道内至少有一条通道在活动。例如检测的信号为1001,则表示有两条通道在活动,或者当为0000时,则表示4条通道均在活动。

可以理解地,S103-5为:

CPU210实时读取电气空闲寄存器的数据,并确定电气空闲寄存器的数据是否存在低电平信号,以确定PCIe链路中是否存在至少一条通路处于数据交互状态;其中,电气空闲寄存器用于记录PCIe链路中所有通路的状态。

即CPU210实时读取电气空闲寄存器的数据,以在电气空闲寄存器存在低电平信号时,确定PCIe链路中存在至少一条通路处于数据交互状态。

此时,CPU210会使能训练控制使能寄存器250,使训练控制使能寄存器250写为1,进而使能链路训练状态机260进行链路训练。

综上所述,请参阅图7,本申请提供的PCIePHY功能模块与Controller功能模块的初始化有严格的事件先后顺序及时间要求。当接收到第一复位解除信号后,CPU210会等待25us再配置power up reset(上电复位寄存器240),原因为PHY功能模块在上电电源稳定后需要至少等待25us,然后才能将PHY功能模块的reset(复位信号)进行释放。将app_ltssm_enable(训练控制使能寄存器250)写为0,表示不使能PCIe链路训练状态机260(待PCIe寄存器初始化完毕后条件满足时再使能app_ltssm_enable)。CPU210需要读取core_rst_n(PCIe内核复位寄存器230)释放后才能进行PHY功能模块和Controller功能模块的寄存器配置的原因在于Powerupreset释放后,PCIecore内部会进行硬件的复位实现及电路状态检测,待条件满足后,才会释放core_rst_n,core_rst_n释放,PCIe的PHY功能模块和Controller功能模块的寄存器配置总线才会被激活,此后可以进行PHY功能模块和Controller功能模块的寄存器配置。

然后CPU210开始配置PHY功能模块和Controller功能模块,当所有寄存器配置完毕后,软件配置app_hold_phy_rst(公共寄存器280)为低电平表示寄存器配置已完成,释放phy_rst复位信号,并且软件最后配置pipe_laneX_reset_n(通道寄存器290)为高电平,表示释放每条通道的reset,使PHY功能模块开始进行工作,此后CPU210一直读PHY功能模块接收端的电气空闲寄存器,检测到此信号为非f(表示链路中有至少一条PCIe通道在活动)后,软件使能app_ltssm_enable来使能链路训练状态机260开始进行链路训练。

提供本申请提供的PCIe链路训练方法,能够通过硬件的方式使增强复位信号的健壮性,同时通过软件的方式按照严格的时间先后顺序使能不同的寄存器,进而避免了在多种情况下正式链路训练过程中出现的链路训练失败的问题,进而整体上增强PCIe链路训练的健壮性。

第二实施例

本发明实施例还提供了另一种PCIe链路训练方法,相比与第一实施例而言,本实施例提供的PCIe链路训练方法仅通过软件的方式按照严格的时间先后顺序使能不同的寄存器,进而避免了在多种情况下正式链路训练过程中出现的链路训练失败的问题,达到增强PCIe链路训练的健壮性的目的。

请参阅图8,该方法包括:

S201,当CPU读取到复位解除信号时,在预设定的时间后通过配置寄存器释放上电复位寄存器。

S203,当上电复位寄存器释放后,且CPU同时读取到PCIe内核复位寄存器的值为高电平时,释放通道寄存器,以开启PCIe链路中的所有通路;其中,通道寄存器与PCIe链路中的每条通路电连接。

S205,当CPU确定PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练。

同时,与第一实施例中软件处理流程相似,端设备还包括训练控制使能寄存器与链路训练状态机,链路训练状态机用于在PCIe链路中进行链路训练,训练控制使能寄存器与链路训练状态机电连接,训练控制使能寄存器还与CPU电连接,在当CPU确定PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练的步骤之前,该方法还包括:

CPU控制训练控制使能寄存器处于非使能状态,以使链路训练状态机处于非工作状态;

当CPU确定PCIe链路中存在至少一条通路处于数据交互状态时,启动PCIe链路训练的步骤包括:

当CPU确定PCIe链路中存在至少一条通路处于数据交互状态时,CPU控制训练控制使能寄存器处于使能状态,以使链路训练状态机处于工作状态。

进一步地,端设备还包括电气空闲寄存器,CPU与电气空闲寄存器电连接,在当CPU确定PCIe链路中存在至少一条通路处于活动状态时,启动PCIe链路训练的步骤之前,该方法还包括:

CPU实时读取电气空闲寄存器的数据,并确定电气空闲寄存器的数据是否存在低电平信号,以确定PCIe链路中是否存在至少一条通路处于数据交互状态;其中,电气空闲寄存器用于记录PCIe链路中所有通路的状态。

进一步地,在确定电气空闲寄存器的数据是否存在低电平信号的步骤之前,方法还包括:

电气空闲寄存器将每条通路对应的数据进行移位处理,并将每条通路移位后数据进行按位与运算,其中,处于数据交互状态的通路对应的数据为低电平。

进一步地,端设备还包括公共寄存器,在释放通道寄存器,以开启PCIe链路中的所有通路的步骤之前,该方法还包括:

CPU配置公共寄存器为低电平。

进一步地,端设备还包括中断电路,当PCIe处于温复位期间时,中断电路对主设备发送的复位信号进行上升沿与下降沿生成处理及中断信号提取处理,以获取中断信号,并且,CPU依据中断信号启动PCIe链路训练。

第三实施例

请参阅图1,本发明实施例还提供了一种端设备200,该端设备200用于执行第一实施例或第二实施例所述的PCIe链路训练方法。

其中,短射别包括CPU210、配置寄存器220、PCIe内核复位寄存器230、上电复位寄存器240、训练控制使能寄存器250、链路训练状态机260、电器空闲寄存器270、公共寄存器280以及通道寄存器290,其中,CPU210分别与配置寄存器220、PCIe内核复位寄存器230、上电复位寄存器240、训练控制使能寄存器250、电器空闲寄存器270、公共寄存器280以及通道寄存器290电连接,且配置寄存器220与PCIe内核复位寄存器230电连接,训练控制使能寄存器250与链路训练状态机260电连接。

由于第一实施例已经对PCIe链路训练方法进行详细叙述,因此本实施例对此不再赘述。

第四实施例

本发明实施例还提供了一种通讯系统,该通讯系统包括主设备、通讯线以及端设备200,主设备与端设备200通过通讯线通信连接,且端设备200用于实现第一实施例或第二实施例所述的PCIe链路训练方法。可以理解的,该通讯线即为PCIe总线。

综上,本发明实施例提供了一种PCIe链路训练方法、端设备以及通讯系统,该链路训练方法应用于端设备,端设备包括移位寄存器与CPU,当接收到第一复位解除信号后,移位寄存器对接收到的复位信号进行按位与运算,并得到处理后的复位信号,然后由CPU依据处理后的复位信号启动PCIe链路训练。由于主设备给端设备的复位信号为低有效旁带复位信号,即当该信号为低电平时,表示当前电源供给已稳定。而由于在电路中可能存在抖动,造成该复位信号出现毛刺及不稳定的因素。通过端设备在接收复位信号后,将复位信号按位与操作,进而通过硬件的方式剔除复位信号的毛刺与不稳定操作,增强了复位信号的健壮性,进而提高了端设备在链路训练过程中的健壮性。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种可插拔拓展卡结构下PowerPC的Local Bus接口扩展装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!