CN116166581A - 用于pcie总线的队列式dma控制器电路及数据传输方法 - Google Patents
用于pcie总线的队列式dma控制器电路及数据传输方法 Download PDFInfo
- Publication number
- CN116166581A CN116166581A CN202310162004.9A CN202310162004A CN116166581A CN 116166581 A CN116166581 A CN 116166581A CN 202310162004 A CN202310162004 A CN 202310162004A CN 116166581 A CN116166581 A CN 116166581A
- Authority
- CN
- China
- Prior art keywords
- module
- axi
- data
- descriptor
- stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 86
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000006870 function Effects 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 abstract description 10
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本申请一种用于PCIE总线的队列式DMA控制器电路及数据传输方法,电路包括:接口模块、描述符引擎模块、通道模块、完成引擎模块、AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块。传输时将描述符列表通过PCIE的TLP包格式发送给DMA控制电路进行处理,DMA控制电路对描述符进行处理排列后,对其中信息进行解析,根据事务信息将描述符形成队列,依次执行队列中各描述符,完成各事务的数据传输。本申请方案的应用,可一次性实现多个事务传输,解决地址不连续的数据传输问题,有利于解放CPU的负载,提高数据处理效率。
Description
技术领域
本申请属于数字电路领域技术,涉及PCIE总线的DMA传输技术领域,尤其涉及一种用于PCIE总线的队列式DMA控制器电路及数据传输方法。
背景技术
计算机技术与总线技术的发展推动了数据传输在当前各个领域的广泛应用。随着数据传输技术的发展,高速接口总线更新换代迅速,传输数据带宽越来越大,PCIE作为一种新一代的总线接口标准,受迅速发展的工业技术的影响,相对于前代总线PCI,它表现出了高带宽、高性能、低功耗、低延时及传输可靠性高等优点。
DMA(直接存储器访问)技术是现代计算机***的一个优秀的重要技术。在DMA技术出现之前,CPU与外设之间的数据传输方式有轮询传输方式、中断传输方式,CPU直接通过***总线与其他部件连接并进行数据传输。处理器为适应外部设备的工作频率,需要花费大量的时钟周期等待数据与中断,导致处理器在获取数据过程中低效率。使用DMA技术可以有效避免CPU的工作周期被数据存取事务占据,CPU将数据传输的任务交给DMA去完成,间接提升CPU的工作处理能力。在如今高速总线接口***中,大批量数据的传输与处理是***设计的重要因素。应用于PCIE总线技术的DMA传输电路为数据的高速传输与高效处理提供了优秀的技术支持。
现有技术中,SOC芯片的DMA控制器一般采用寄存器形式DMA,即CPU核将目的地址、源地址、数据长度等信息配置给DMA控制器后进行数据传输,每个事务传输结束后向CPU发送一个中断信号,不能进行不连续地址的数据发送,CPU没有得到很好的解放。
发明内容
为了解决上述现有技术的不足,本申请一种用于PCIE总线的队列式DMA控制器电路及数据传输方法,结合PCIE总线TLP包数据格式的特征,可一次性实现多个事务传输,解决地址不连续的数据传输问题,有利于解放CPU的负载,提高数据处理效率。
为了实现上述目的,本发明采用以下技术:
一种用于PCIE总线的队列式DMA控制器电路,连接于PCIE和功能模块之间,包括:接口模块、描述符引擎模块、通道模块、完成引擎模块、AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块;
接口模块包括AXI_STREAM读接口和AXI_STREAM写接口,AXI_STREAM读接口与PCIE总线、描述符引擎模块、通道模块连接,AXI_STREAM写接口与PCIE总线、完成引擎模块连接、通道模块连接;描述符引擎模块连接通道模块、完成引擎模块;通道模块连接描述符引擎模块、完成引擎模块、AXI_FULL_MASTER接口模块、AXI_STREAM_MASTER接口模块;AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块连接在通道模块和功能模块之间。
AXI_STREAM读接口用于接收PCIE总线的TLP包,并根据TLP包格式解析TLP包:若为描述符,则将描述符发送给描述符引擎模块,若为事务数据,则将数据发送给通道模块;
描述符引擎模块用于对接收的描述符进行队列排序,并按队列顺序每次取一个向通道模块传送;
通道模块用于接收描述符引擎模块传送的描述符,根据描述符中的信息选择AXI_FULL_MASTER接口模块通过地址映射寻址方式与功能模块进行数据传输,或选择AXI_STREAM_MASTER接口模块通过数据流形式与功能模块进行数据传输,并在完成每一次读写操作后,将本次数据传输信息发送给完成引擎模块;
完成引擎模块用于接收通道模块发送的信息,并在每次接收后制作一个制作完成描述符,并通知描述符引擎模块传送下一个描述符;当所有事务完成之后,将所有完成描述符制作为描述符队列,传输给AXI_STREAM写接口,以通过AXI_STREAM写接口进行TLP包生成后发送给PCIE总线。
一种用于PCIE总线的队列式DMA控制器电路的数据传输方法,包括步骤:
接口模块使用AXI_STREAM读接口通过数据流方式从PCIE总线获取TLP包,并根据TLP包格式解析TLP包:若为描述符,则将描述符发送给描述符引擎模块,若为事务数据,则将数据发送给通道模块;
描述符的格式中设计有两位事务id,用于判断描述符所描述的事务的优先级,描述符引擎模块对描述符进行队列排序时是根据优先级对接收的描述符进行队列排序,并按队列顺序每次取一个向通道模块传送;
通道模块接收描述符引擎模块传送的描述符,并根据描述符中的信息选择AXI_FULL_MASTER接口模块通过地址映射寻址方式与功能模块进行数据传输,或选择AXI_STREAM_MASTER接口模块通过数据流形式与功能模块进行数据传输;通道模块在完成每一次读写操作后,将本次数据传输信息发送给完成引擎模块;
完成引擎模块接收通道模块发送的信息,并在每次接收后制作一个制作完成描述符,并通知描述符引擎模块传送下一个描述符;
当所有事务完成之后,完成引擎模块将所有完成描述符制作为描述符队列,传输给AXI_STREAM写接口,通过AXI_STREAM写接口进行TLP包生成后发送给PCIE总线。
本发明有益效果在于:
1、本申请设计的应用于PCIE总线的队列式DMA控制器电路,主要通过PCIE协议的包格式进行数据搬运传输,在数据传输之前,CPU在主机空间开辟一段内存空间,将需要传输的事务的信息写入描述符中,多个描述符组成描述符列表存入这段内存空间中,设计电路的描述符引擎模块对描述符列表中的这些描述符进行队列排序完成多个事务的数据传输,因此可以一次性实现多个事务传输,解决地址不连续的数据传输问题,有利于解放CPU的负载,提高数据处理效率;
2、本申请通过在TLP包包头第一帧格式中预设数据类型判断位,便于接口模块将数据分别传输于描述引擎模块或通道模块,同时,本申请通过在描述符格式中预设接口类型判断位和读写状态判断位,方便选择不同接口,实现通过地址映射方式或数据流方式进行数据传输,也可以很好的就读写事务进行分别管理;
3、本申请符合处理PCIE协议的数据包格式,后续开发可以更改配置,使得电路适用于其他接口类型,具有高效性与灵活性。
附图说明
图1是本申请实施例的用于PCIE总线的队列式DMA控制器电路应用场景及DMA控制器电路周边电路整体结构框架图。
图2是本申请实施例的用于PCIE总线的队列式DMA控制器电路结构框图。
图3是本申请实施例的PCIE事务层TLP包格式及
图4是本申请实施例的TLP包头格式。
图5是本申请实施例的描述符格式的设计。
图6是本申请实施例的描述符引擎模块结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图对本发明的实施方式进行详细说明,但本发明所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本申请实施例提供一种用于PCIE总线的队列式DMA控制器电路,如图1所示为其应用场景的电路环境。具体的,应用于两个PCIE设备进行数据传输的场景,一个PCIE设备为主机端,另一个为endpoint端设备,两者之间通过PCIE总线通信,endpoint端设备的地址映射到主机端的内存地址中去,主机端可根据映射地址对endpoint端设备地址中的数据进行操作,endpoint端设备在主机端控制下通过PCIE端口进行数据读写。本实例的DMA控制器电路配置于endpoint端,连接在endpoint端的PCIE总线与功能模块之间,用于作为PCIE端口与用户逻辑之间的桥接;在主机端CPU的配置下可以从CPU手里临时获取总线,代替CPU进行不同设备间数据传输。
在进行一次数据传输之前,主机端的CPU将需要传输的事务数据的源地址、目的地址、数据长度、配置信息写入一个描述符中,将多个描述符组成一段描述符列表存入主机端的一段内存空间中。PCIE事务层的TLP包每一帧为32bits,所以每个描述符的大小设置为32*3bits。一段描述符列表可包含描述符设置最大数目为1024个。当主机端需要进行一次事务数据传输时,将描述符列表发送给PCIE接口形成TLP包,然后通过PCIE总线向endpoint端设备传输,然后通过DMA控制器电路进行数据传输。
具体的,如图2所示,本实例的DMA控制器电路连接于PCIE总线和功能模块/用户逻辑USER LOGIC之间,包括:接口模块、描述符引擎模块、通道模块、完成引擎模块、AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块。
接口模块包括AXI_STREAM读接口和AXI_STREAM写接口,AXI_STREAM读接口与PCIE总线、描述符引擎模块、通道模块连接,AXI_STREAM写接口与PCIE总线、完成引擎模块连接、通道模块连接;描述符引擎模块连接通道模块、完成引擎模块;通道模块连接描述符引擎模块、完成引擎模块、AXI_FULL_MASTER接口模块、AXI_STREAM_MASTER接口模块;AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块连接在通道模块和功能模块之间。
其中,AXI_STREAM读接口用于接收PCIE总线的TLP包,并根据TLP包格式解析TLP包:若为描述符,则将描述符发送给描述符引擎模块,若为事务数据,则将数据发送给通道模块;AXI_STREAM写接口用于将数据或者描述符队列生成为TLP包并发送给PCIE总线。
描述符引擎模块用于对接收的描述符进行队列排序,并按队列顺序每次取一个向通道模块传送。
通道模块用于接收描述符引擎模块传送的描述符,根据描述符中的信息选择AXI_FULL_MASTER接口模块通过地址映射寻址方式与功能模块进行数据传输,或选择AXI_STREAM_MASTER接口模块通过数据流形式与功能模块进行数据传输,并在完成每一次读写操作后,将本次数据传输信息发送给完成引擎模块。
完成引擎模块用于接收通道模块发送的信息,并在每次接收后制作一个制作完成描述符,并通知描述符引擎模块传送下一个描述符;当所有事务完成之后,将所有完成描述符制作为描述符队列,传输给AXI_STREAM写接口,以通过AXI_STREAM写接口进行TLP包生成后发送给PCIE总线。
在利用本实例的DMA控制器电路进行数据传输方法时:
在接口模块使用AXI_STREAM读接口通过数据流方式从PCIE总线获取一段TLP包之后,将包中的信息根据TLP包的格式进行拆解,而AXI_STREAM读接口获取的TLP包包头格式第一帧中预先设计有两位数据类型判断位,AXI_STREAM读接口解析TLP包时,根据数据类型判断位判断为描述符或事务数据。比如,如图3为PCIE事务层TLP包格式、图4所示为TLP包头格式。将TLP包包头第一帧的第17位和18位设为判断位,若为01则该段数据为描述符,若为10则该段数据为需要传输的事务数据。若为描述符,则将描述符发送给描述符引擎模块,若为事务数据,则将数据发送给通道模块。
描述符引擎模块对描述符进行处理,通过队列排序进行管理,并按队列顺序每次取一个向通道模块传送。本实例的DMA传输一次可以进行多个事务的传输,而一个事务中不连续地址数据传输的完成需要多个描述符进行参与。多个事务之间有事务优先的一个选择,则在描述符的格式中设计两位事务id,用以判断该描述的事务的优先级,若优先级高,则先进行处理。如图5所示为描述符格式的设计,为32*3bits,每一层为32bit,共三层。描述符第一层为传输信息,第0位到第15位的低十六位为本次数据传输的数据长度;第16、17位表示该描述符的事务id,用以判断优先级,两位可以表示4个状态,所以一次DMA传输事务最多设为4次;第18、19位为读写状态判断,若为01为读传输/读事务,10为写传输/写事务,11预留,00为缺省值;第20、21位为接口类型判断,若为01标识数据传输为使用AXI_FULL_MASTER接口模块与功能模块进行,若为10标识数据传输为使用AXI_STREAM_MASTER接口模块与功能模块进行,11预留,00为缺省值;其余高十位为预留。描述符第二层32位用以存放源地址,数据传输时从该地址进行数据读取。描述符第三层32位用以存放目标地址,数据传输时将从源地址读取到的数据写入到该地址。
如图6所示,描述符引擎模块包括仲裁器和描述符FIFO,仲裁器用于对描述符中的事务id进行判断以得出描述符所描述的事务的优先级,并按照优先级将描述符放入描述符FIFO中形成队列,以便于每次取一个按照顺序传送给通道模块。具体的,描述符引擎模块在从接口模块获取到描述符后,先将这些描述符存储到内部设置的空间中,因为主机端能产生的描述符数目最大为1024个,所以这段空间设置为96*1024bit。然后通过仲裁器判断这些描述符的id,通过优先级的顺序将这些描述符放入到后面的FIFO中去,形成一个描述符队列,将描述符每次取一个按照顺序发送给通道模块,通道模块在按照每个描述符包含的信息传输完之后,通过完成引擎发送给描述符引擎一个信号,进行下一个描述符的发送,直到所有的描述符消耗完。
通道模块接收描述符引擎模块传送的描述符,并根据描述符中的信息选择AXI_FULL_MASTER接口模块通过地址映射寻址方式与功能模块进行数据传输,或选择AXI_STREAM_MASTER接口模块通过数据流形式与功能模块进行数据传输;通道模块在完成每一次读写操作后,将本次数据传输信息发送给完成引擎模块。
如图2所示,通道模块包括控制模块、两个读FIFO、两个写FIFO,其中,一个读FIFO连接AXI_STREAM读接口和AXI_FULL_MASTER接口模块,另一个读FIFO连接AXI_STREAM读接口和AXI_STREAM_MASTER接口模块,一个写FIFO连接AXI_STREAM写接口和AXI_FULL_MASTER接口模块,另一个写FIFO连接AXI_STREAM写接口和AXI_STREAM_MASTER接口模块。
具体的,AXI_FULL_MASTER接口模块包括AXI_FULL读接口和AXI_FULL写接口,在选择AXI_FULL_MASTER接口模块通过地址映射寻址方式进行数据传输时,AXI_FULL读接口处理符合AXI4总线协议的数据读操作,AXI_FULL写接口处理符合AXI4总线协议的数据写操作。
AXI_STREAM_MASTER接口模块包括AXI_STREAM读接口和AXI_STREAM写接口,在选择AXI_STREAM_MASTER接口模块通过数据流的形式进行数据传输时,按符合AXI_STREAM协议的方式进行。
描述符的格式中设计有两位读写状态判断位,通道模块在进行每一次读写操作时,根据读写状态判断位判断当前读写操作属于写事务或读事务:若为写事务,通过AXI_STREAM读接口读取数据经过通道模块内部的写FIFO进行写操作;若为读事务,通过AXI_FULL_MASTER接口模块或AXI_STREAM_MASTER接口模块读取数据,经过通道模块内部的一个读FIFO并通过AXI_STREAM写接口进行读操作。
描述符的格式中设计有两位接口类型判断位,通道模块进行每一次读写操作时,根据接口类型判断位选择AXI_FULL_MASTER接口模块或AXI_STREAM_MASTER接口模块。
(1)选择AXI_FULL_MASTER接口模块时:
若为读事务,控制模块通过AXI_FULL_MASTER接口模块并根据源地址和数据长度信息从功能模块读取数据,并放入到读FIFO中,再通过接口模块将读取的数据、目的地址及设备信息制作成TLP包,并通过AXI_STREAM写接口发送给PCIE总线进行传输;
若为写事务,控制模块将源地址和数据长度信息传送给接口模块,接口模块将源地址和数据长度信息写入到TLP包,通过PCIE总线发出读请求,主机端根据请求将所需要的事务数据通过TLP包的格式发送给接口模块,接口模块判断当前接收的TLP包中的数据为事务数据,将数据发送给通道模块,通过写FIFO后由AXI_FULL_MASTER接口模块根据目的地址信息将数据写入到目标地址中;
(2)选择AXI_STREAM_MASTER接口模块时:
若为读事务,数据传输无源地址,功能模块的数据通过数据流形式由AXI_STREAM_MASTER接口模块发送到通道模块的读FIFO中,后发送给接口模块,接口模块将读取的数据、目的地址及设备信息制作成TLP包,并通过AXI_STREAM写接口发送给PCIE总线进行传输;
若为写事务,数据传输无目标地址,控制模块将源地址和数据长度信息传送给接口模块,接口模块将源地址和数据长度信息写入到TLP包,通过PCIE总线发出读请求,主机端根据请求将所需要的事务数据通过TLP包的格式发送给接口模块,接口模块判断当前接收的TLP包中的数据为事务数据,将数据发送给通道模块,通过写FIFO后由AXI_STREAM_MASTER接口模块通过数据流形式将数据写入到功能模块中。
完成引擎模块接收通道模块发送的信息,并在每次接收后制作一个制作完成描述符,并通知描述符引擎模块传送下一个描述符;当所有事务完成之后,完成引擎模块将所有完成描述符制作为描述符队列,传输给AXI_STREAM写接口,通过AXI_STREAM写接口进行TLP包生成后发送给PCIE总线,通告DMA传输的完成。
通过本实例提出的队列式DMA控制器的设计,CPU将传输数据的目的地址、源地址、数据长度等信息写入一个描述符中,多个描述符组成描述符列表包含多个事务的传输。结合PCIE总线的特征,将描述符列表通过PCIE的TLP包格式发送给DMA进行处理,DMA对描述符进行处理排列后,对其中信息进行解析,根据事务信息将描述符形成队列,依次执行队列中各描述符,完成各事务的数据传输。
以上所述仅为本申请的优选实施例,并不用于限制本申请,显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。
Claims (10)
1.一种用于PCIE总线的队列式DMA控制器电路,连接于PCIE总线和功能模块之间,其特征在于,包括:接口模块、描述符引擎模块、通道模块、完成引擎模块、AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块;
接口模块包括AXI_STREAM读接口和AXI_STREAM写接口,AXI_STREAM读接口与PCIE总线、描述符引擎模块、通道模块连接,AXI_STREAM写接口与PCIE总线、完成引擎模块连接、通道模块连接;描述符引擎模块连接通道模块、完成引擎模块;通道模块连接描述符引擎模块、完成引擎模块、AXI_FULL_MASTER接口模块、AXI_STREAM_MASTER接口模块;AXI_FULL_MASTER接口模块和AXI_STREAM_MASTER接口模块连接在通道模块和功能模块之间;
AXI_STREAM读接口用于接收PCIE总线的TLP包,并根据TLP包格式解析TLP包:若为描述符,则将描述符发送给描述符引擎模块,若为事务数据,则将数据发送给通道模块;
描述符引擎模块用于对接收的描述符进行队列排序,并按队列顺序每次取一个向通道模块传送;
通道模块用于接收描述符引擎模块传送的描述符,根据描述符中的信息选择AXI_FULL_MASTER接口模块通过地址映射寻址方式与功能模块进行数据传输,或选择AXI_STREAM_MASTER接口模块通过数据流形式与功能模块进行数据传输,并在完成每一次读写操作后,将本次数据传输信息发送给完成引擎模块;
完成引擎模块用于接收通道模块发送的信息,并在每次接收后制作一个制作完成描述符,并通知描述符引擎模块传送下一个描述符;当所有事务完成之后,将所有完成描述符制作为描述符队列,传输给AXI_STREAM写接口,以通过AXI_STREAM写接口进行TLP包生成后发送给PCIE总线。
2.根据权利要求1所述的用于PCIE总线的队列式DMA控制器电路,其特征在于,描述符引擎模块包括仲裁器和描述符FIFO,仲裁器用于对描述符中的事务id进行判断以得出描述符所描述的事务的优先级,并按照优先级将描述符放入描述符FIFO中形成队列,以便于每次取一个按照顺序传送给通道模块。
3.根据权利要求2所述的用于PCIE总线的队列式DMA控制器电路,其特征在于,通道模块包括控制模块、两个读FIFO、两个写FIFO,其中,一个读FIFO连接AXI_STREAM读接口和AXI_FULL_MASTER接口模块,另一个读FIFO连接AXI_STREAM读接口和AXI_STREAM_MASTER接口模块,一个写FIFO连接AXI_STREAM写接口和AXI_FULL_MASTER接口模块,另一个写FIFO连接AXI_STREAM写接口和AXI_STREAM_MASTER接口模块。
4.一种如权利要求3所述的用于PCIE总线的队列式DMA控制器电路的数据传输方法,其特征在于,包括步骤:
接口模块使用AXI_STREAM读接口通过数据流方式从PCIE总线获取TLP包,并根据TLP包格式解析TLP包:若为描述符,则将描述符发送给描述符引擎模块,若为事务数据,则将数据发送给通道模块;
描述符引擎模块对描述符进行队列排序,并按队列顺序每次取一个向通道模块传送;
通道模块接收描述符引擎模块传送的描述符,并根据描述符中的信息选择AXI_FULL_MASTER接口模块通过地址映射寻址方式与功能模块进行数据传输,或选择AXI_STREAM_MASTER接口模块通过数据流形式与功能模块进行数据传输;通道模块在完成每一次读写操作后,将本次数据传输信息发送给完成引擎模块;
完成引擎模块接收通道模块发送的信息,并在每次接收后制作一个制作完成描述符,并通知描述符引擎模块传送下一个描述符;
当所有事务完成之后,完成引擎模块将所有完成描述符制作为描述符队列,传输给AXI_STREAM写接口,通过AXI_STREAM写接口进行TLP包生成后发送给PCIE总线。
5.根据权利要求4所述的数据传输方法,其特征在于,应用于两个PCIE设备进行数据传输的场景,一个PCIE设备为主机端,另一个为endpoint端设备,两者之间通过PCIE总线通信,endpoint端设备的地址映射到主机端的内存地址中去,主机端可根据映射地址对endpoint端设备地址中的数据进行操作,endpoint端设备在主机端控制下通过PCIE端口进行数据读写;
所述DMA控制器电路配置于endpoint端,连接在endpoint端的PCIE总线与功能模块之间,用于作为PCIE端口与用户逻辑之间的桥接;
在进行一次数据传输之前,主机端的CPU将需要传输的事务数据的源地址、目的地址、数据长度、配置信息写入一个描述符中,将多个描述符组成一段描述符列表存入主机端的一段内存空间中,当主机端需要进行一次事务数据传输时,将描述符列表发送给PCIE接口形成TLP包,然后通过PCIE总线向endpoint端设备传输,然后通过DMA控制器电路进行数据传输。
6.根据权利要求4所述的数据传输方法,其特征在于,描述符的格式中设计有两位事务id,用于判断描述符所描述的事务的优先级,描述符引擎模块对描述符进行队列排序时是根据优先级对接收的描述符进行队列排序。
7.根据权利要求5所述的数据传输方法,其特征在于,AXI_STREAM读接口获取的TLP包包头格式第一帧中预先设计有两位数据类型判断位,AXI_STREAM读接口解析TLP包时,根据数据类型判断位判断为描述符或事务数据。
8.根据权利要求7所述的数据传输方法,其特征在于,描述符的格式中设计有两位读写状态判断位,通道模块在进行每一次读写操作时,根据读写状态判断位判断当前读写操作属于写事务或读事务:若为写事务,通过AXI_STREAM读接口读取数据经过通道模块内部的写FIFO进行写操作;若为读事务,通过AXI_FULL_MASTER接口模块或AXI_STREAM_MASTER接口模块读取数据,经过通道模块内部的一个读FIFO并通过AXI_STREAM写接口进行读操作。
9.根据权利要求8所述的数据传输方法,其特征在于,描述符的格式中设计有两位接口类型判断位,通道模块进行每一次读写操作时,根据接口类型判断位选择AXI_FULL_MASTER接口模块或AXI_STREAM_MASTER接口模块;
选择AXI_FULL_MASTER接口模块时:
若为读事务,控制模块通过AXI_FULL_MASTER接口模块并根据源地址和数据长度信息从功能模块读取数据,并放入到读FIFO中,再通过接口模块将读取的数据、目的地址及设备信息制作成TLP包,并通过AXI_STREAM写接口发送给PCIE总线进行传输;
若为写事务,控制模块将源地址和数据长度信息传送给接口模块,接口模块将源地址和数据长度信息写入到TLP包,通过PCIE总线发出读请求,主机端根据请求将所需要的事务数据通过TLP包的格式发送给接口模块,接口模块判断当前接收的TLP包中的数据为事务数据,将数据发送给通道模块,通过写FIFO后由AXI_FULL_MASTER接口模块根据目的地址信息将数据写入到目标地址中;
选择AXI_STREAM_MASTER接口模块时:
若为读事务,数据传输无源地址,功能模块的数据通过数据流形式由AXI_STREAM_MASTER接口模块发送到通道模块的读FIFO中,后发送给接口模块,接口模块将读取的数据、目的地址及设备信息制作成TLP包,并通过AXI_STREAM写接口发送给PCIE总线进行传输;
若为写事务,数据传输无目标地址,控制模块将源地址和数据长度信息传送给接口模块,接口模块将源地址和数据长度信写入到TLP包,通过PCIE总线发出读请求,主机端根据请求将所需要的事务数据通过TLP包的格式发送给接口模块,接口模块判断当前接收的TLP包中的数据为事务数据,将数据发送给通道模块,通过写FIFO后由AXI_STREAM_MASTER接口模块通过数据流形式将数据写入到功能模块中。
10.根据权利要求4~9中任意一项所述的数据传输方法,其特征在于,AXI_FULL_MASTER接口模块包括AXI_FULL读接口和AXI_FULL写接口,在选择AXI_FULL_MASTER接口模块通过地址映射寻址方式进行数据传输时,AXI_FULL读接口处理符合AXI4总线协议的数据读操作,AXI_FULL写接口处理符合AXI4总线协议的数据写操作;
AXI_STREAM_MASTER接口模块包括AXI_STREAM读接口和AXI_STREAM写接口,在选择AXI_STREAM_MASTER接口模块通过数据流的形式进行数据传输时,按符合AXI_STREAM协议的方式进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310162004.9A CN116166581A (zh) | 2023-02-24 | 2023-02-24 | 用于pcie总线的队列式dma控制器电路及数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310162004.9A CN116166581A (zh) | 2023-02-24 | 2023-02-24 | 用于pcie总线的队列式dma控制器电路及数据传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116166581A true CN116166581A (zh) | 2023-05-26 |
Family
ID=86416118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310162004.9A Pending CN116166581A (zh) | 2023-02-24 | 2023-02-24 | 用于pcie总线的队列式dma控制器电路及数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116166581A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667793A (zh) * | 2024-01-30 | 2024-03-08 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理***、方法、设备、介质 |
-
2023
- 2023-02-24 CN CN202310162004.9A patent/CN116166581A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667793A (zh) * | 2024-01-30 | 2024-03-08 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理***、方法、设备、介质 |
CN117667793B (zh) * | 2024-01-30 | 2024-04-09 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理***、方法、设备、介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101077900B1 (ko) | 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 | |
US8103803B2 (en) | Communication between a processor and a controller | |
CN110083461B (zh) | 一种基于fpga的多任务处理***及方法 | |
US7155554B2 (en) | Methods and apparatuses for generating a single request for block transactions over a communication fabric | |
CN110471872B (zh) | 一种基于zynq芯片实现m-lvds总线数据交互***和方法 | |
TWI434182B (zh) | 外部記憶體快進快出裝置 | |
US6970921B1 (en) | Network interface supporting virtual paths for quality of service | |
CN113297112B (zh) | PCIe总线的数据传输方法、***及电子设备 | |
US7860120B1 (en) | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation | |
CN101452430B (zh) | 多处理器之间的通信方法与包括多处理器的通信装置 | |
CN116166581A (zh) | 用于pcie总线的队列式dma控制器电路及数据传输方法 | |
US6401142B1 (en) | Apparatus and method for selective bus transfer using master and slave modes | |
US20070143521A1 (en) | Burst-capable bus bridges for coupling devices to interface buses | |
US7334061B2 (en) | Burst-capable interface buses for device-to-device communications | |
US7610415B2 (en) | System and method for processing data streams | |
CN112511537B (zh) | 一种sce-mi协议桥及仿真*** | |
KR100476895B1 (ko) | 가변 가능한 데이터 전송 모드를 갖는 인터페이스 장치 및그것의 동작 방법 | |
US8756356B2 (en) | Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size | |
KR20120054142A (ko) | QoS 및 전송 효율 개선을 위한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 | |
TWI727581B (zh) | 資料傳輸系統 | |
JP2005062940A (ja) | 入出力制御装置 | |
US6317847B1 (en) | Software read and write tracing using hardware elements | |
EP3841484B1 (en) | Link layer data packing and packet flow control scheme | |
CN118175119A (zh) | 用于网络通信的方法及计算设备 | |
WO2005116815A1 (en) | Method and apparatus for passing messages and data between subsystems in a system-on-a-chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |