一种PCI‑ExpressIP核的制作方法

文档序号:11950143阅读:361来源:国知局
一种PCI‑Express IP核的制作方法与工艺

本发明涉及高速串行总线技术领域,尤其涉及一种PCI-Express IP核。



背景技术:

PCI-Express是为了适应计算机技术的发展而提出的第3代高性能I/O总线技术,由Intel在2001年提出,发展至今已演进到PCI-Express 4.0,其所支持的速率也由PCI-Express 1.0的2.5GT/s(GTransfer/second)到PCI-Express 3.0的8GT/s,再到PCI-Express 4.0的16GT/s。PCI-Express高速互连的特性以及各种版本规格的多样性、灵活性和兼容性,使其被广泛应用于图形加速、网络数据存储、大数据传输及服务器等领域。

各版本PCI-Express协议均从业务应用到底层互连,自上到下,将PCI-Express分为TL(Transaction Layer,业务层)、DLL(Data Link Layer,数据链路层)及PHY(Physical Layer,物理层)。FPGA开发具有开发速度快,易迭代升级,相对专用芯片价格低廉等优点。现有的PCI-Express的实现多使用基于FPGA的已有PCI-Express IP进行设计实现。在常见的PCI-Express IP架构中,多依据PCI-Express协议结构直接划分功能模块,分别完成TL、DLL及PHY功能设计,PCI-Express IP核为PCI Express总线提供了灵活、高性能及易用的本地接口。然而作为基于FPGA的IP设计,不仅需要完成其本身的功能,还需要提供外部接口方便、内部实现简单的接口方案以供用户方便的使用。

在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:现有的PCI-Express IP核,用户接口复杂,PCI-Express IP核靠近用户接口部分的内部结构也复杂,从而使得用户使用起来不方便,同时在IP设计实现时,难度大、耗时长。



技术实现要素:

本发明提供的一种PCI-Express IP核,该PCI-Express IP核与用户逻辑之间使用简单的用户接口,PCI-Express IP核内靠近用户接口的部分结构简单,能够方便用户使用,降低PCI-Express IP核设计实现难度,缩短IP设计实现周期。

本发明提供一种PCI-Express IP核,所述PCI-Express IP核包括用户接口模块及通用模块,所述用户接口模块与所述通用模块相互连接,所述用户接口模块用于实现PCI-Express协议的业务层中的与用户数据相关的功能,所述通用模块用于实现PCI-Express协议的业务层的其他功能、数据链路层功能及物理层的功能。

可选地,所述用户接口模块包括:AXI主模块、AXI从模块、Express控制模块、TLP接收模块、TLP发送模块及MSG TLP组包模块,所述AXI主模块连接TLP接收模块、TLP发送模块,所述AXI从模块连接TLP接收模块、TLP发送模块,所述TLP接收模块连接AXI主模块、AXI从模块、Express控制模块、TLP发送模块及MSG TLP组包模块,所述TLP发送模块连接AXI主模块、AXI从模块、Express控制模块、TLP接收模块及MSG TLP组包模块,所述Express控制模块连接TLP接收模块、TLP发送模块及MSG TLP组包模块,所述MSG TLP组包模块连接Express控制模块、TLP接收模块、TLP发送模块。

可选地,所述用户接口模块连接用户逻辑及所述通用模块,所述用户接口模块的AXI主模块连接所述用户逻辑的AXI从模块,所述用户接口模块的AXI从模块连接所述用户逻辑的AXI主模块,所述用户接口模块的TLP接收模块及TLP发送模块连接所述通用模块,所述Express控制模块连接所述用户逻辑及所述通用模块,所述MSG TLP组包模块连接所述用户逻辑及所述通用模块。

可选地,所述用户接口模块的AXI主模块通过AXI接口连接所述用户逻辑的AXI从模块,所述用户接口模块的AXI从模块通过AXI接口连接所述用户逻辑的AXI主模块,所述Express控制模块通过APB接口连接所述用户逻辑。

可选地,在所述TLP接收模块中设置有接收缓存。

本发明实施例提供的一种PCI-Express IP核,PCI-Express IP核包括用户接口模块及通用模块,用户接口模块用于实现PCI-Express协议的业务层中的与用户数据相关的功能,该用户接口模块相对简单。用户接口模块通过AXI接口与用户逻辑进行数据发送及接收,用户不需要关心PCI-Express协议,从而方便用户使用,特别是方便PCI-Express的初级用户使用。此外因用户接口模块相对简单,降低了PCI-Express IP核设计实现难度,缩短了IP核设计实现周期。

附图说明

图1为PCI-Express协议层次结构;

图2为本发明一实施例提供的PCI-Express IP核结构示意图;

图3为本发明一实施例提供的PCI-Express IP核结构中的用户接口模块结构示意图;

图4为发明一实施例提供的PCI-Express IP核结构中的用户接口模块接收请求的数据通路;

图5为发明一实施例提供的PCI-Express IP核结构中的用户接口模块发送请求的数据通路。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1示出了PCI-Express协议层次结构。各版本PCI-Express协议均从业务应用到底层互连,自上到下,将PCI-Express分为TL(Transaction Layer,业务层)、DLL(Data Link Layer,数据链路层)及PHY(Physical Layer,物理层)。其中TL主要实现业务的发起与接收以及流量控制等。DLL的主要功能为链路的管理以及保证数据的完整性,包括重发机制等。PHY实现所有的接口电路,包括驱动、输入缓存、并串/串并转换、锁相环及阻抗匹配电路等。

在本发明中,依据数据流方向及靠近用户逻辑远近程度的原则,将IP内与用户数据相关的功能及接口归入User Interface(用户接口)模块,其余通用功能归入Common(通用)模块,用户接口模块及通用模块中的各子模块功能则依据PCI-Express协议规定的必须实现的功能来制定。这样做的目的是使IP内部各模块功能清晰简单,耦合度小,便于重用升级。

本发明提供的一种PCI-Express IP核,如图2所示,所述PCI-Express IP核包括用户接口模块21及通用模块22,所述用户接口模块21与所述通用模块22相互连接,所述用户接口模块21用于实现PCI-Express协议的业务层中的与用户数据相关的功能,所述通用模块22用于实现PCI-Express协议的业务层的其他功能、数据链路层功能及物理层的功能。

其中用户接口模块21的主要功能包括:AXI接口功能,实现用户数据的接收与发送;APB接口功能,实现配置功能及PCI-Express Configuration Space(配置空间);Msg(无数据的消息业务)TLP(Transaction Layer Packet,业务层数据包)组包功能,用户数据对应转换为MWr(存储写请求)/MRd(存储读请求)/MRdLk(锁定的存储读请求)/IOWr(IO写请求)/IORd(IO读请求)/Cpl(无数据的完成业务)/CplD(带数据的完成业务)/CplLk(锁定的无数据对完成业务)/CplDLk(锁定的带数据的完成业务)TLP及TLP发送功能;Msg/MWr/MRd/MRdLk/IOWr/IORd/Cpl/CplD/CplLk/CplDLk/CfgWr0(配置类型0的写请求)/CfgRd0(配置类型0的读请求)/Unlock Msg(解除锁定的消息业务)TLP的接收及TLP转换为对应用户数据的功能。通用模块的主要功能包括协议规定的TL Flow Control Credit(流量控制信用)计算;协议规定的必须实现的DLL功能;协议规定的必须实现的PHY功能。

本发明实施例提供的一种PCI-Express IP核,PCI-Express IP核包括用户接口模块21及通用模块22,用户接口模块21用于实现PCI-Express协议的业务层中的与用户数据相关的功能,该用户接口模块21相对简单。用户接口模块21通过AXI接口与用户逻辑进行数据发送及接收,用户不需要关心PCI-Express协议,从而方便用户使用,特别是方便PCI-Express的初级用户使用。此外因用户接口模块21相对简单,降低了PCI-Express IP核设计实现难度,缩短了IP核设计实现周期。

可选地,如图3所示,所述用户接口模块21包括:AXI主模块、AXI从模块、Express控制模块、TLP接收模块、TLP发送模块及MSG TLP组包模块,所述AXI主模块连接TLP接收模块、TLP发送模块,所述AXI从模块连接TLP接收模块、TLP发送模块,所述TLP接收模块连接AXI主模块、AXI从模块、Express控制模块、TLP发送模块及MSG TLP组包模块,所述TLP发送模块连接AXI主模块、AXI从模块、Express控制模块、TLP接收模块及MSG TLP组包模块,所述Express控制模块连接TLP接收模块、TLP发送模块及MSG TLP组包模块,所述MSG TLP组包模块连接Express控制模块、TLP接收模块、TLP发送模块。

可选地,所述用户接口模块21连接用户逻辑及所述通用模块,所述用户接口模块21的AXI主模块连接所述用户逻辑的AXI从模块,所述用户接口模块21的AXI从模块连接所述用户逻辑的AXI主模块,所述用户接口模块21的TLP接收模块及TLP发送模块连接所述通用模块,所述Express控制模块连接所述用户逻辑及所述通用模块,所述MSG TLP组包模块连接所述用户逻辑及所述通用模块。

可选地,所述用户接口模块21的AXI主模块通过AXI接口连接所述用户逻辑的AXI从模块,所述用户接口模块21的AXI从模块通过AXI接口连接所述用户逻辑的AXI主模块,所述Express控制模块通过APB接口连接所述用户逻辑。

可选地,在所述TLP接收模块中设置有接收缓存。

各功能模块实现的功能描述如下:

1.AXI主模块,用于对接用户逻辑的AXI从模块接口;

2.AXI从模块,用于对接用户逻辑的AXI主模块接口;

3.Express控制模块实现功能如下:

a)实现APB用户接口读写配置空间寄存器;

b)实现CfgWr0/CfgRd0业务对应的读写配置空间寄存器;

c)实现与配置相关的内部参数;

d)实现错误报告与状态记录功能;

e)实现PCI-Express Type0配置空间;

f)实现电源管理配置空间;

g)实现消息功能配置空间;

h)实现PCI-Express扩展配置空间,虚拟通道管理机制(VC Virtual Channel Mechanism)。

4.TLP接收模块实现功能如下:

a)接收TLP,根据协议规定对TLP进行解析;

b)依据解析结果及协议规定将对应的Cpl/CplD返回给AXI从模块;

c)解析正确的TLP,依据协议规定对CfgWr0/CfgRd0操作进行处理,将Msg/MWr/MRd/MRdLk/IOWr/IORd/Cpl/CplD/CplLk/CplDLk发送给AXI主模块;

在接收方向上,为适配对端发来的PCI-Express乱序包,本发明在TLP接收模块中设置了RX Buffer(接收缓存)用于接收来自对端的包,在收到完整的包后按接收顺序发送至相应AXI接口。

5.TLP发送模块实现功能如下:

a)MWr/MRd/MRdLk/IOWr/IORd/Cpl/CplD/CplLk/CplDLk TLP组包;

b)接收Msg TLP包;

c)轮询发送TLP包;

d)预置DLL Header/LCRC。

在发送方向,为了减少PCI-Express系统的Latency(延迟),本发明在TLP发送模块不设置TX Buffer(发送缓存)存储完整的用户数据包,即收即发,不实现乱序功能且要求用户以连续发送的形式发送数据包。

6.MSG TLP组包模块实现功能如下:

a)用户侧中断状态发送、Interrupt(中断)MSG TLP组包

b)Error(错误状态)MSG TLP组包

c)轮询发送两种MSG TLP包

用户接口模块21的AXI主模块通过AXI接口连接用户逻辑的AXI从模块,用户接口模块21的AXI从模块通过AXI接口连接用户逻辑的AXI主模块,所述Express控制模块通过APB接口连接所述用户逻辑。APB接口是ARM公司提出的一种AMBA总线结构之一,几乎已成为一种标准的片上总线结构。AXI接口是ARM公司提出的AMBA中高性能总线结构,是一种面向高性能、高带宽、低延迟的片内总线。常见的PCI-Express IP多提供多种数据传输接口方案,导致IP内部适配选择实现起来较为复杂。本发明中的用户接口模块与用户逻辑之间采用AXI接口,实现起来较为简单。用户通过AXI接口发送数据时,仅需要提供数据地址、数据长度、数据业务操作类型、数据ID和数据即可。用户通过AXI接口接收数据时,对应的,也仅需要获取数据地址、数据长度、数据业务操作类型、数据ID和数据即可,用户不需要对PCI-Express协议有很深刻的理解。采用APB、AXI这类通用接口可以降低用户的使用成本,使用户更容易适配到用户逻辑中。

参照图4,示出本发明接收请求的数据通路。其逻辑流程如下:

①在PHY为L0状态(PHY正常工作状态)且DLL为DL_ACTIVE状态(DLL正常工作状态)时,用户接口模块开始正常工作。作为EP(Endpoint,终端),首先会接收CfgWr0/CfgRd0操作,即,CfgWr0和CfgRd0TLP,见图4中粗实线路径。TLP接收模块接收到CfgWr0/CfgRd0TLP后,按照协议对CfgWr0/CfgRd0TLP进行解析。

②如果CfgWr0TLP解析正确,则将相应配置写入配置空间;如果CfgRd0TLP解析正确,则从相应配置空间读取对应配置或状态,并送入TLP接收模块。

③如果CfgWr0TLP解析正确,TLP发送模块则将TLP接收模块传送来的包信息依据协议完成Cpl组包,然后发送至通用模块;如果CfgRd0TLP解析正确,TLP发送模块则将TLP接收模块传送来的包信息及配置、状态信息依据协议完成CplD组包,然后发送至通用模块;如果CfgWr0/CfgRd0TLP解析错误,TLP发送模块则将TLP接收模块传送来的包信息依据协议完成Cpl组包。

④如果CfgWr0/CfgRd0TLP解析错误,则将错误信息发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

在配置读写完成后,与对端的通信建立完毕,即此时可以接收对端其他请求——IOWr、MRd/MRdLk/IORd、MWr/Unlock Msg。

针对IOWr操作,见图4中细实线路径:

①TLP接收模块接收到IOWr TLP后,按照协议对IOWr TLP进行解析。

②如果IOWr TLP解析错误,TLP接收模块则将TLP接收模块传送来的包信息依据协议完成Cpl组包。

③如果IOWr TLP解析错误,则将错误信息发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

④如果IOWr TLP解析正确,TLP接收模块则将IOWr TLP中的用户数据发送至AXI主模块,通过AXI AW(地址写)通道发送给用户。

⑤用户根据用户数据做出反馈,然后将反馈数据通过AXI B(反馈)通道发送给TLP发送模块,然后TLP发送模块依据协议完成Cpl组包。

针对MRd/MRdLk/IORd操作,见图4中长短虚线路径:

①TLP接收模块接收到MRd/MRdLk/IORd TLP后,按照协议对MRd/MRdLk/IORd TLP进行解析。

②如果MRd/MRdLk/IORd TLP解析错误,TLP发送模块则将TLP接收模块传送来的包信息依据协议完成Cpl/CplLk组包。

③如果MRd/MRdLk/IORd TLP解析错误,则将错误信息发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

④如果MRd/MRdLk/IORd TLP解析正确,TLP接收模块则将MRd/MRdLk/IORd TLP中的用户数据发送至AXI主模块,通过AXI AR(地址读)通道发送给用户。

⑤用户根据用户数据做出反馈,然后将反馈数据通过AXI R(读)通道发送给TLP发送模块,然后TLP发送模块依据协议完成CplD/CplDLk组包。

针对MWr/Unlock Msg,见图4中短虚线路径:

①TLP接收模块接收到MWr/Unlock Msg TLP后,按照协议对MWr/Unlock Msg TLP进行解析。

②如果MWr/Unlock Msg TLP解析错误,则将错误信息发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

③如果MWr/UnlockMsg TLP解析正确,TLP接收模块则将MWr/UnlockMsg TLP中的用户数据发送至AXI主模块,通过AXI AW(地址写)通道发送给用户。

④用户根据用户数据做出反馈,将正常反馈发送至TLP接收模块,将异常反馈发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

图5示出本发明发送请求的数据通路。其逻辑流程如下:

在PHY为L0状态(PHY正常工作状态)且DLL为DL_ACTIVE状态(DLL正常工作状态)时,用户接口模块开始正常工作,即,用户可以发起MWr、IOWr及MRd/IORd。

针对MWr操作,见图5中实线路径:

①通过AXI从模块的AXI AW(地址写)通道接收用户逻辑发起的MWr操作所需的数据。

②在AXI从模块接收过程中,如果发送错误,则通过AXI B(反馈)通道反馈到用户逻辑。

③AXI从模块正确接收用户数据后,发送至TLP发送模块进行MWr TLP组包,然后发送至通用模块。

针对IOWr操作,见图5中长虚线路径:

①通过AXI从模块的AXI AW(地址写)通道接收用户逻辑发起的IOWr操作所需的数据。

②在AXI从模块接收过程中,如果发送错误,则通过AXI B(反馈)通道反馈到用户逻辑。

③AXI从模块正确接收用户数据后,发送至TLP发送模块进行IOWr TLP组包,然后发送至通用模块。

④对端在接收到用户发出的IOWr操作后,依据协议规定反馈Cpl操作,TLP接收模块接收后对其进行解析。

⑤如果Cpl TLP解析错误,则将错误信息发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

⑥如果Cpl TLP解析正确,则将Cpl TLP中的信息或者数据通过AXI从模块的AXI B(反馈)通道发送至用户逻辑。

针对MRd/IORd,见图5中短虚线路径

①通过AXI从模块的AXI AR(地址读)通道接收用户逻辑发起的MRd/IORd操作所需的数据。

②AXI从模块正确接收用户数据后,发送至TLP发送模块模块进行MRd/IORd TLP组包,然后发送至通用模块。

③对端在接收到用户发出的MRd/IORd操作后,依据协议规定反馈CplD操作,TLP接收模块接收后对其进行解析。

④如果CplD TLP解析错误,则将错误信息发送至MSG TLP组包模块,用于完成Error Msg TLP组包。

⑤如果CplD TLP解析正确,则将CplD TLP中的信息或者数据通过AXI从模块的AXI R(读)通道发送至用户逻辑。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1