一种基于描述符的PCIE总线DMA控制器及数据传输控制方法与流程

文档序号:17130598发布日期:2019-03-16 01:09阅读:699来源:国知局
一种基于描述符的PCIE总线DMA控制器及数据传输控制方法与流程

本发明属于数据传输控制领域,具体为一种基于描述符的pcie总线dma控制器及数据传输控制方法。



背景技术:

pcie总线技术是第三代i/o互连总线,pcie总线在桌面电脑、通信平台、服务器、工作站、移动通信、嵌入式设备中是极具性价比的高带宽传输解决方案。近年来pcie总线技术在很多高性能综合电子平台和系统中获得了越来越多的应用,采用dma(directmemoryaccess,直接内存访问)数据传输是发挥pcie总线高带宽、高性能的最常用的技术手段之一。市面上很多pcie总线产品中都集成了dma控制器,但都是面向通用化和传统应用场景,在某些需要多dma通道和多种不同优先级数据同时传输的应用场景中,不能很好适配应用需求。

专利文献cn105988953a公开一种直接内存存取dma控制器及数据传输的方法,可根据中央处理器cpu配置的传输参数完成外部芯片和cpu之间的数据上送和下发操作,并通过仲裁方式避免上送和下发操作引起的竞争。专利文献cn105320625a公开一种硬件封包的基于pcie的dma传输方法,通过硬件获取payloadmax参数并使用payloadmax长度的数据包进行dma传输,以提高dma传输效率。专利文献cn106951388a公开一种基于pcie的dma数据传输方法及系统,该发明能够在dma指令的控制下从多个dma通道中选择度应的dma通道对数据进行传输,将不同种类数据分不同通道进行传输,降低数据传输复杂度。

由上可知,当前的pcie总线dma控制器以及相关专利成果,没有涉及多通道传输或在多通道dma传输中没有考虑对dma多个通道的数据按照不同优先级进行自动化处理,不能满足多dma通道和多种不同优先级数据同时传输的应用系统需求。



技术实现要素:

针对现有技术中存在的问题,本发明提供一种基于描述符的pcie总线dma控制器及数据传输控制方法,满足多通道多优先级、大容量数据传输需求。

本发明是通过以下技术方案来实现:

一种基于描述符的pcie总线dma控制器,包括:

tlp发送引擎,用于完成pcie总线事物层包的组帧与发送;

tlp接收引擎,用于完成pcie总线事物层包的接收与解析;

接口访问控制模块,用于实现接口时序的产生和数据同步控制;

dma传输控制模块,用于实现dma数据传输控制;

描述符访问控制模块,用于实现dma控制器描述符信息与主机内存描述符信息的交互;并在描述符信息的控制下,根据多dma通道控制模块的通道仲裁结果向dma传输控制模块发起dma传输请求;

多dma通道控制模块,根据配置的dma通道优先级和通道启动阈值,以及每个dma通道缓存的状态信息,对多通道进行仲裁,选出需要服务的dma通道并提交给描述符访问控制模块;

dma通道缓存,用于暂存dma通道的数据,每个dma通道具有一个下发数据缓存和上传数据缓存,每个dma通道需要配置一组描述符,同一组内的描述符地址连续;根据dma通道的数据对于传输的实时性要求配置dma通道优先级。

优选的,还包括控制状态寄存器,用于保存dma控制器的工作状态信息。

优选的,dma通道缓存采用fifo形式。

一种基于描述符的pcie总线dma数据传输控制方法,dma数据传输控制流程如下:

数据的上传流程为:

多dma通道控制模块对各dma通道上传缓存进行监测,当某dma通道阈值或超时条件满足时,多dma通道控制模块向描述符访问控制模块发起该指定dma通道的dma传输申请;描述符访问控制模块接收到多dma通道控制模块送来的dma传输申请后,索引指定dma通道的描述符并生成dma传输长度、dma上传缓存地址、dma目标地址信号,启动dma传输控制模块;dma传输控制模块根据描述符访问控制模块送来的控制信息,从指定dma通道的上传数据缓存中读取相应长度的数据,并向接口访问控制模块上传数据;接口访问控制模块收到dma传输控制模块送来的上传数据,向tlp发送引擎发起tlp申请,tlp发送引擎生成写主机内存的tlp,将上传数据填写到描述符指向的主机内存缓存区中;

当有多个dma通道都满足dma传输条件时,多dma通道控制模块根据dma通道优先级进行仲裁,优先级高的dma通道优先使用dma数据传输;

数据的下发流程为:

当主机系统需要向指定dma通道中下发数据时,将待发送数据的缓区指针及数据长度信息写入下发数据描述符中,写dma控制器的控制寄存器,启动指定dma通道的dma传输,多dma通道控制模块根据缓存区信息来判断当前通道是否能够开启当前通道的dma传输,当前通道dma不满足dma传输条件,则查看是否需要进行dma上传数据传输;当不需要进行dma上传数据传输时,从高优先级通道dma数据下发描述进行轮询,轮询到某通道的数据下发描述符后,检查下发缓存是否满足dma传输条件,不满足则轮询下一个通道dma数据下发描述符,直到轮询到优先级最低的dma通道;当下发描述符有数据需要下发传输并且多dma通道控制模块给出满足dma传输条件,描述符访问控制模块启动dma操作;

dma传输控制模块接收到描述符访问控制模块的dma下发数据请求,根据申请的dma通道、dma源地址和dma数据长度,dma传输控制模块向tlp发送引擎发起tlp发送请求,tlp发送引擎收到请求后向主机发送读内存tlp包,tlp接收引擎接收主机返回的封装有指定缓存区的下发数据的读完成tlp包并进行解析,解析后将数据返回给dma传输控制模块,dma传输控制模块将读完成的数据根据pcie总线时序进行数据排序处理后写入到指定dma通道的下发数据缓存区。

优选的,当上传数据长度小于配置的maxpayloadsize参数时,使用一个写内存tlp完成传输;当上传数据大于maxpayloadsize参数,则dma传输控制模块将上传数据分割为多个tlp包进行上传。

优选的,当低优先级dma通道数据正在进行上传时,高优先级dma通道满足dma传输条件,则高优先级dma通道抢占dma传输控制模块使用权。

优选的,当描述符访问控制模块轮询下发数据描述符时,如果有上传数据满足dma传输条件时,则轮询过程暂停,描述符访问控制模块向dma传输控制模块发起dma数据上传请求,数据上传处理完毕后,再回到下发数据描述符的轮询过程。

优选的,当下发数据长度小于配置的maxpayloadsize参数,使用一个读内存tlp完成传输;当下发数据大于maxpayloadsize参数,则dma传输控制模块将下发数据分割为多个tlp包进行下发。

优选的,数据传输前需要进行初始化操作:将每个dma通道的上传描述符起始地址和下发描述符起始地址、每个dma通道的优先级以及每个dma的阈值和超时时间初始化。

与现有技术相比,本发明具有以下有益的技术效果:

(1)本发明设计的dma控制器的dma传输过程完全由描述符控制实现,最大化的减小cpu负担,提高数据带宽和传输效率;

(2)本发明中dma数据传输可配置多个dma通道,且每个dma通道的优先级、传输触发阈值和超时时间均可编程,能够保证数据传输按照高低优先级传输的同时,保证特定通道的数据传输实时性;

(3)本发明中所有dma通道的上传/下发数据缓存可实现动态管理,尽可能的提高数据块传输大小,实现多通道dma并发传输,保证dma传输带宽使用效率。

本发明基于pcie总线架构,提出了一种大容量、多优先级通道动态处理的dma数据传输控制方法,适用于多种数据类型、多种不同优先级数据的高速数据传输控制领域。

附图说明

图1为本发明提出的dma控制器功能框图;

图2为本发明提出的dma控制器结构框图;

图3为dma下发数据缓存描述符;

图4为dma上传数据缓存描述符;

图2中:1为tlp发送引擎,2为tlp接收引擎,3为接口访问控制模块,4为dma传输控制模块,5为描述符访问控制模块,6为多dma通道控制模块,7为控制状态寄存器,8为dma通道1缓存,9为dma通道2缓存,10为dma通道3缓存。11为pcie总线tlp发送接口,12为pcie总线tlp接收接口,13为pcie总线tlp发送请求接口,14为pcie总线tlp接收译码后的读写请求和读完成数据接口信号,15为dma读写请求接口,16为dma读返回数据接口,17为主机对控制/状态寄存器访问接口,18为dma传输启动接口,19为dma通道控制模块通信仲裁结果信号接口,20为控制/状态寄存器模块控制/状态信号接口,21为dma通道缓存读接口,22为dma通道缓存写接口,23为各dma通道缓存状态信息,24、25、26为各dma通道缓存的dma控制器端访问接口,27、28、29为各dma通道缓存的本地端访问接口。

具体实施方式

下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。

本发明所述的基于描述符的pcie总线dma数据传输控制方法,用于pcie总线接口传输多种不同优先级数据流的场景,dma控制方法工作在pcie总线控制器的事务层之上,提供了标准的pcie控制器事物层接口,便于实现dma的控制及数据传输。

该控制方法的具体功能包括:pcie总线事物层包的组帧与发送,pcie总线事物层包的接收与解析,pcie总线访问操作译码,产生pcie总线读写请求控制,dma传输控制,描述符访问控制,多dma通道管理,控制状态寄存器,多dma通道缓存。

为实现上述功能,本发明所述基于描述符的pcie总线dma控制器主要由12个部分组成,具体包括:主机内存缓存区、主机内存描述符表、tlp(transactionlayerspackages,事物层包)发送引擎、tlp接收引擎、接口访问控制模块、dma传输控制模块、描述符访问控制模块、多dma通道控制模块、控制状态寄存器、dma通道缓存。

图1中为本发明提出的dma控制器的功能模块组成,下文将各个子模块的功能进行介绍。

(1)tlp发送引擎主要用于完成pcie总线事物层包的组帧与发送。当主机接口通过pcie总线访问dma控制器内部控制/状态寄存器时,读到的数据由访问接口控制模块向tlp发送引擎发起申请,tlp发送引擎会生成一个包含读数据的读完成包并通过pcie硬核发送出去。当dma控制器开始进行dma传输时,会向tlp发送引擎发起请求,tlp发送引擎会生成相应的读请求包或写请求包并通过pcie控制器发送出去。

(2)tlp接收引擎主要用于完成pcie总线事物层包的接收与解析。当主机接口通过pcie总线访问dma控制器内部控制/状态寄存器时,tlp接收引擎会接收到访问请求tlp包,所述tlp接收引擎会将主机的访问请求包进行解析并译码成为控制/状态寄存器的读写访问请求。当控制器执行dma数据下发传输过程时,即:通过dma读操作将主机内存中的数据搬运至目标设备中,此时,dma控制器发起读请求tlp给主机,主机恢复携带读数据的完成数据包给tlp接收引擎,tlp接收引擎可对主机回复的读完成包进行解析并将数据送入dma传输控制模块进行处理,然后数据被传输至相应的通道的dma数据缓存。

(3)接口访问控制模块,用于实现接口时序的产生和数据同步控制。当主机执行写操作时,该模块译码tlp接收引擎的写请求,生成满足控制状态寄存器模块的写接口时序。当主机执行读操作时,访问接口控制模块译码tlp接收引擎的读请求,生成控制状态寄存器模块的读接口时序,并向tlp发送引擎提起发送读完成包请求将读到的数据返回给主机。当dma控制器进行dma传输时,访问接口控制模块会根据dma控制器的数据传输请求向tlp发送引擎发起请求,将dma读请求包或dma写请求包发送至主机端。

(4)dma传输控制模块,该模块为实现dma数据传输的控制模块。当多通道dma控制模块仲裁出需要服务的dma通道时,dma传输控制模块从描述符访问控制模块中取出相应通道的描述符,并根据描述符控制信息,将指定dma通道上传缓存中的数据传输至主机系统。或者将主机系统内存中的数据搬运至指定的dma通道下发数据缓存。当描述符访问控制模块需要从主机中读取新的描述符时,dma传输控制模块接收到读取描述符的请求后,向主机发起dma读传输,将主机内存描述符传输至描述符访问模块。当描述符访问模块,需要向主机内存回写描述符信息时,dma传输控制模块接收到写描述符的请求后,向主机发起dma写传输,将描述符信息回写至主机内存。

(5)描述符访问控制模块,描述符访问控制模块主要实现两个功能:实现dma控制器描述符信息与主机内存描述符信息的交互;在描述符信息的控制下,根据多dma通道控制模块的通道仲裁结果向dma传输控制模块发起dma传输请求。

(6)多dma通道控制模块,多dma通道控制模块根据配置的通道优先级和通道启动阈值,以及每个dma通道缓存的状态信息,对多通道进行仲裁,将需要服务的dma传输通道选择出来提交给描述符访问控制模块。

(7)控制状态寄存器,控制状态寄存器模块用于保存主机的控制信息和dma控制器的工作状态信息。

(8)dma通道缓存,每个dma通道具有一个下发数据缓存和上传数据缓存,根据dma通道的数据对于传输的实时性要求配置dma通道优先级。缓存均为fifo形式,用于暂存dma通道的数据。

具体实施例如下。

根据本发明的内容,设计详细实现方案,dma控制器结构如图2所示。本发明dma控制器,在使用前需要进行初始化操作,初始化操作包括两个部分:

(1)主机内存的初始化,主机内存需要开辟描述符表空间和数据缓存空间,每个dma通道两个描述符表,分别为上传数据描述符表和下发数据描述符表。每个描述符表中包含多个地址连续的描述符,每个描述符都指向了唯一的主机系统内存中的一片缓存区。

图4为dma上传数据缓存描述符,上传描述符(tdes)用于数据从pcie节点设备中向主机内存中上传数据传输。图3为dma下发数据缓存描述符,下发描述符(rdes)用于数据从主机内存向pcie节点设备中下发数据传输。其中,“有效标识”为1时,该描述符属于dma控制器;为0时,该描述符属于主机cpu。“描述符表尾”位为1时,描述符表到达最后一个描述符,返回到基地址形成一个描述符环。“缓存大小”表示当前缓存的字节大小。“通道号”标识dma通道。“中断使能”位为1,下发传输完成后起中断。“数据上传状态”为节点设备返回的数据上传状态,如错误信息等。每个dma通道需要配置一组描述符,同一组内的描述符地址连续。

(2)dma控制器初始化,将每个dma通道的上传/下发描述符起始地址、每个dma通道的优先级,以及每个dma的阈值和超时时间初始化。

初始化完成后即可启动dma控制器,使其处于工作状态,描述符访问控制模块5启动读取描述符操作,将各通道的dma上传/下发描述符从主机内存中读取到dma控制器中。

数据的上传流程为:

当数据填写到某一个dma通道数据上传数据缓存时,多dma通道控制模块6对各通道上传缓存进行监测,当该通道的阈值或超时条件满足时,多dma通道控制模块6向描述符访问控制模块5发起dma传输申请。

描述符访问控制模块5接收到多dma通道控制模块6送来的dma传输申请后,索引指定通道的描述符并生成dma传输长度、dma上传缓存地址、dma目标地址等信号,通过dma传输启动接口18启动dma传输控制模块4,开始dma传输操作。dma传输控制模块4根据描述符访问控制模块5送来的控制信息,从指定通道的上传数据缓存中读取相应长度的数据,并通过dma读写请求接口15向接口访问控制模块3上传数据。接口访问控制模块3收到dma传输控制模块4送来的上传数据,则通过pcie总线tlp发送请求接口13向tlp发送引擎1发起tlp申请,tlp发送引擎1生成写主机内存的tlp,将上传数据填写到描述符指向的主机内存缓存区中。

当上传数据长度小于配置的maxpayloadsize参数时,使用一个写内存tlp即可完成本次传输。当上传数据大于maxpayloadsize参数,则dma传输控制模块4将上传数据分割为多个tlp包进行上传。

当有多个dma通道都满足dma传输条件时,多dma通道控制模块6根据dma通道优先级进行仲裁,优先级高的通道优先使用dma数据传输。当低优先级dma通道数据正在进行上传时,高优先级dma通道满足dma传输条件,则优先级高的通道抢占dma传输控制模块4使用权。如果某个dma通道的数据对于传输的实时性要求较高时,可将该通道优先级设为最高并且将触发阈值和超时时间设置为一个较小的值,此时该通道的数据在缓存中驻留时间很短,能够有效提高该通道的数据传输实时性。

数据的下发流程为:

当主机系统需要向某个dma通道中下发数据时,将待发送数据的缓区指针及数据长度信息写入下发数据描述符中,写dma控制器的控制寄存器,启动指定通道的dma传输,多dma通道控制模块6根据缓存区信息来判断当前通道是否能够开启当前通道的dma传输,当前通道dma不满足dma传输条件,则查看是否需要进行dma上传数据传输。当不需要进行dma上传数据传输时,会从高优先级通道dma数据下发描述进行轮询,轮询到某通道的数据下发描述符后,检查下发缓存是否满足dma传输条件,不满足则轮询下一个通道dma数据下发描述,直到轮询到优先级最低的dma通道。当下发描述符有数据需要下发传输并且多dma通道控制模块6给出满足dma传输条件,描述符访问控制模块5则启动dma操作。

dma传输控制模块4接收到描述符访问控制模块5的dma下发数据请求,根据申请的dma通道、dma源地址和dma数据长度,dma传输控制模块4通过接口访问控制模块3向tlp发送引擎1发起tlp发送请求,tlp发送引擎1收到请求后,向主机发送读内存tlp包,主机将指定缓存区的下发数据封装在读完成tlp包中通过pcie总线tlp接收接口12返回给tlp接收引擎2,tlp接收引擎2接收到主机返回的读完成包进行解析并将数据返回给dma传输控制模块4,dma传输控制模块4将读完成的数据根据pcie总线时序进行数据排序处理后通过dma通道缓存写接口22将数据写入到指定dma通道的下发数据缓存区。

当描述符访问控制模块5轮询下发数据描述符时,如果有上传数据满足dma传输条件时,则轮询过程暂停,描述符访问控制模块5向dma传输控制模块4发起dma数据上传请求,数据上传处理完毕后,再回到下发数据描述符的轮询过程。这种优先处理数据上传服务的操作,能够保证dma控制器内的数据上传缓存不会溢出,防止数据丢失。

当下发数据长度小于配置的maxpayloadsize参数,使用一个读内存tlp即可完成本次传输。当下发数据大于maxpayloadsize参数,则dma传输控制模块4将下发数据分割为多个tlp包进行上传。

根据上述方案,用veriloghdl语言对控制器的逻辑设计进行描述,并完成逻辑综合与布局布线;同时,设计一款dma控制器,并对控制器的功能进行测试。测试结果表明本发明具有很好的可实施性,且性能满足预期。

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