CN112347030A - 基于fpga的数据处理方法及系统 - Google Patents

基于fpga的数据处理方法及系统 Download PDF

Info

Publication number
CN112347030A
CN112347030A CN202011016311.9A CN202011016311A CN112347030A CN 112347030 A CN112347030 A CN 112347030A CN 202011016311 A CN202011016311 A CN 202011016311A CN 112347030 A CN112347030 A CN 112347030A
Authority
CN
China
Prior art keywords
descriptor
data
dmac
fpga
soft core
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
Application number
CN202011016311.9A
Other languages
English (en)
Inventor
蒲鹤升
彭祥吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Ziguang Tongchuang Electronics Co ltd
Shenzhen Pango Microsystems Co Ltd
Original Assignee
Shenzhen Ziguang Tongchuang Electronics Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Ziguang Tongchuang Electronics Co ltd filed Critical Shenzhen Ziguang Tongchuang Electronics Co ltd
Priority to CN202011016311.9A priority Critical patent/CN112347030A/zh
Publication of CN112347030A publication Critical patent/CN112347030A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明提供了基于FPGA的数据处理方法,所述数据处理方法通过DMAC将FPGA软核的数据发送至以太网,包括以下步骤:步骤S10、所述FPGA软核获取当前空闲的描述符;步骤S20、所述FPGA软核将数据长度值发送至DMAC,并通过所述DMAC将所述长度值写入当前描述符对应的长度寄存器;步骤S30、所述FPGA软核将数据更新至DDR与当前描述符对应的数据块中;步骤S40、所述FPGA软核数据更新结束后,通过控制寄存器将当前描述符的控制位置“0”;步骤S50、所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。本发明在FPGA软核的数据发送至以太网过程中,通过DMAC,使以太网与片外存储设备(例DDR)不通过FPGA软核而直接进行大数据量的传输,从而克服FPGA软核的处理能力不足以匹配以太网的通信速率的问题。

Description

基于FPGA的数据处理方法及系统
【技术领域】
本发明涉及FPGA技术领域,尤其涉及一种基于FPGA的数据处理方法及系统。
【背景技术】
千兆以太网的硬件结构可分为MAC控制器和PHY处理芯片,其中,MAC控制器可通过FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)的Ethernet IP核实现。在此基础上,利用基于FPGA的Cortex M1软核(FPGA软核)配合CACHE设备,使以太网应用场景极大拓宽,例如,基于Cortex M1软核的LwIP协议栈实现。但是,Cortex M1软核具有低功耗、低系统主频以及多CACHE运行周期开销特性,这导致Cortex M1软核的处理能力远不能匹配以太网的通信速率。
因此,如何提高Cortex M1软核的处理能力以匹配以太网的通信速率成为噬待解决的问题。
【发明内容】
本发明的目的在于提供了一种基于FPGA的嵌入式以太网数据处理方法及系统。
为达到上述目的,本发明提供了一种基于FPGA的数据处理方法,所述数据处理方法通过DMAC将FPGA软核的数据发送至以太网,包括以下步骤:
步骤S10、所述FPGA软核获取当前空闲的描述符;
步骤S20、所述FPGA软核将数据长度值发送至DMAC,并通过所述DMAC将所述长度值写入当前描述符对应的长度寄存器;
步骤S30、所述FPGA软核将数据更新至DDR与当前描述符对应的数据块中;
步骤S40、所述FPGA软核数据更新结束后,通过控制寄存器将当前描述符的控制位置“0”;
步骤S50、所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。
优选的,步骤S40还包括,步骤S41、所述FPGA软核读取当前描述符的链接符,获取下一空闲的描述符,并执行步骤S20。
优选的,步骤S50之前还包括,步骤S500、所述DMAC判断当前描述符的控制位是否为0,若控制位为0,则执行步骤S50。
优选的,步骤S50之后,所述数据处理方法还包括,
步骤S60、所述DMAC数据发送结束后,通过控制寄存器将当前描述符的控制位置“1”;
步骤S70、所述DMAC读取当前描述符的链接符,所述DMAC判断下一描述符的控制位是否为0,若控制位为0,则执行步骤S50。
优选的,步骤S50具体为,
步骤S51、所述DMAC将更新至所述数据块中的数据读取到数据缓存器中;
步骤S52、所述DMAC数据读取结束后,根据所述以太网用户侧的发送时序逐一发送数据;
步骤S53、每完成一次发送数据,所述DMAC的字计数器和地址计数器将累加发送数据的字节数,直至提取完该描述符所包括的实际发送字节个数。
优选的,所述数据处理方法还包括以下步骤:
步骤S01、所述FPGA软核将当前需要初始化的描述符发至所述DMAC;
步骤S02、所述FPGA软核将当前描述符的描述符信息发送至所述DMAC;
步骤S03、所述DMAC根据接收到的描述符与描述符信息,完成初始化配置;
步骤S04、若所有描述符未初始化完成,则重复步骤S01;若所有描述符全部初始化完成,则初始化流程结束,并通过状态寄存器将initial done发送至所述DMAC。
本发明还提供了一种基于FPGA的数据处理系统,包括FPGA软核、DMAC、和DDR,所述FPGA软核与所述DMAC通过AHB总线通信,所述DMAC与所述DDR通过AXI总线通信;所述DMAC包括TX描述符环;所述数据处理系统还包括,应用于所述数据处理系统的前述基于FPGA的数据处理方法。
优选的,所述TX描述符环包括2级TX描述符。
优选的,所述TX描述符包括控制位、链接符、数据包地址和数据包长度信息。
优选的,所述DMAC上划分一系列寄存器,所述一系列寄存器包括:状态寄存器、控制寄存器、描述符号寄存器、描述符控制寄存器、描述符发送起始地址、描述符接收起始地址、描述符数据长度。
本发明的有益效果在于:提供了一种基于FPGA的数据处理方法,在FPGA软核的数据发送至以太网过程中,通过DMAC,使以太网与片外存储设备(例DDR)不通过FPGA软核而直接进行大数据量的传输,从而克服FPGA软核的处理能力不足以匹配以太网的通信速率的问题。
【附图说明】
图1为本发明一实施例基于FPGA的数据处理方法的流程图;
图2为本发明一实施例基于FPGA的数据处理方法的TX流程图;
图3为本发明一实施例基于FPGA的数据处理系统的系统框图;
图4为本发明一实施例基于FPGA的数据处理系统的DMAC的结构图。
【具体实施方式】
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参考图1,本发明实施例提供一种基于FPGA的嵌入式以太网数据处理方法,该数据处理方法通过DMAC将FPGA软核的数据发送至以太网,即TX(发送)数据传输流程,其包括以下步骤:
步骤S10、所述FPGA软核获取当前空闲的描述符。
具体的,所述FPGA软核通过发送描述符号寄存器dmac_txnum[0]回读当前空闲的描述符号,使所述FPGA软核定位描述符环上当前空闲的描述符的位置。其中,初始化流程后,默认从描述符0开始执行TX数据传输流程。
步骤S20、所述FPGA软核将数据长度值发送至所述DMAC,并通过所述DMAC将所述数据长度值写入当前描述符对应的长度寄存器。
具体的,所述FPGA软核通过发送数据长度寄存器dmac_txlen[15:0]将数据长度值发送至所述DMAC,并通过所述DMAC自动将所述数据长度值写入当前描述符对应的长度寄存器。其中,该数据长度值为所述FPGA软核实际待发送数据长度值。
步骤S30、所述FPGA软核将数据更新至DDR与当前描述符对应的数据块中。具体的,通过DCACHE强制回写,所述FPGA软核将数据更新至DDR与当前描述符对应的数据块中。
其中,所述强制回写包括,
S31、所述FPGA软核将待回写数据的起始地址和数据长度,通过AHB总线发送至所述Dcache模块;
S32、所述FPGA软核发送强制回写指令;同时,所述FPGA软核强制挂起,即暂停指令与数据的执行操作;
S33、所述Dcache模块接收所述强制回写指令;
S34、所述Dcache模块扫描缓存行的Tag,并判断该缓存行的Tag是否命中;若命中将该缓存行回写至与其对应位置的DDR;若未命中,跳过该缓存行;其中,命中为所述FPGA软核中待回写数据的Tag与所述Dcache模块扫描缓存行的Tag一致;
S35、所述Dcache模块扫描每一缓存行,并执行上述步骤S34;
S36、强制回写结束后,通过AHB总线将结束状态信息反馈至所述FPGA软核。
步骤S40、所述FPGA软核数据更新结束后,通过控制寄存器dmac_control[3]将当前描述符的控制位置“0”。
优选的,步骤S40还包括,步骤S41、所述FPGA软核读取当前描述符的链接符,获取下一空闲的描述符,并执行步骤S20。其中,链接符通过DMAC逻辑自动取出,当FPGA软核需要读取当前空闲描述符时,自动将该描述符号发送给FPGA软核。
通过步骤S41使所述FPGA软核开始准备下一数据发送。即,步骤S10→S20→S30→S40、以及步骤S41→S20→S30→S40→S41往复循环,在该循环过程中,步骤S41与步骤S10是一致的,所述FPGA软核定位描述符环上当前(下一)空闲的描述符的位置,所述FPGA软核将数据更新至DDR与当前(下一)描述符对应的数据块中。
步骤S50、所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。
优选的,步骤S50之前还包括,步骤S500所述DMAC判断当前描述符的控制位是否为0,若控制位为0,则执行步骤S50。即,所述DMAC判断当前描述符的控制位是否为0,若控制位为0,则所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。
所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网具体包括,
步骤S51、所述DMAC将更新至所述数据块中的数据读取到数据缓存器(FIFO)中;其中,所述DMAC从当前描述符的起始地址所指的DDR地址处读取数据。
步骤S52、所述DMAC数据读取结束后,根据所述以太网用户侧的发送时序逐一发送读取到所述数据缓存器的数据。
步骤S53、每完成一次数据发送(AXI传输),所述DMAC的字计数器和地址计数器将累加发送(实际传输)数据的字节数,直至所述DMAC的字节数与当前描述符所包括的发送字节数一致,完成数据发送。其中,当前描述符所包括的发送字节数,即发送数据长度寄存器dmac_txlen[15:0]中的数据长度值。
本发明实施例基于FPGA的嵌入式以太网数据处理方法还包括,
步骤S60、所述DMAC数据发送结束后,通过控制寄存器将当前描述符的控制位置“1”,此时当前描述符处于空闲状态,处于所述FPGA软核可获取的状态。
步骤S70、所述DMAC读取当前描述符的链接符,所述DMAC判断下一描述符的控制位是否为0,若控制位为0,则执行步骤S50;否则处于等待状态,即不执行步骤S50的所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网,直至控制寄存器将当前描述符的控制位置“0”,再执行步骤S50。
通过步骤S70使所述DMAC开始下一数据发送至所述以太网。即,步骤S500→S50(S51→S52→S53)→S60→S70以及步骤S70→S50(S51→S52→S53)→S60→S70往复循环,在该循环过程中,步骤S500与步骤S70是一致的,基于获得当前(下一)空闲的描述符控制位为0,所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。当获取下一空闲的描述符,开始发送数据时,此时下一空闲的描述符也即为当前空闲的描述符。
以上,步骤S10(S41)与步骤S500(S70)可同步进行。
本发明实施例基于FPGA的嵌入式以太网数据处理方法,在FPGA软核的数据发送至以太网过程中,通过DMAC,使以太网与片外存储设备(例DDR)不通过FPGA软核而直接进行大数据量的传输,从而克服FPGA软核的处理能力不足以匹配以太网的通信速率的问题。进一步的,在以太网数据更新时,同步配合DCACHE强制回写操作,解决CACHE一致性问题。
本发明实施例基于FPGA的嵌入式以太网数据处理方法还包括步骤S10之前的初始化流程,具体的:
步骤S01、所述FPGA软核通过描述符号寄存器descriptor_num[15:0]将描述符环中当前需要初始化的描述符号发至所述DMAC;
步骤S02、所述FPGA软核将当前描述符对应的描述符控制寄存器descriptor_ctrl[15:0](tx)、描述符接收起始地址descriptor_txaddr、描述符数据长度descriptor_len[15:0](tx)等描述符信息依次发送至所述DMAC;
步骤S03、所述DMAC根据接收到的描述符环的描述符(描述符号)和描述符信息,完成该接收到的描述符初始化配置;
步骤S04、若描述符环上所有描述符(描述符号)未初始化完成,则重复步骤S01;若描述符环上所有描述符(描述符号)全部初始化完成,则初始化流程结束,并通过状态寄存器dmac_stauts[1]将initial done发送至所述DMAC,即状态寄存器的状态位置“1”并发送至所述DMAC。
本实施例中,描述符环为TX描述符环,描述符为TX描述符,描述符号为TX描述符号。其中,描述符环上包含多个描述符,描述符环上的每个描述符对应一个描述符号,以定位所需描述符在描述符环上的位置。
本发明实施例还提供了一种基于FPGA的嵌入式以太网数据处理系统,包括FPGA软核、DMAC(Ethernet DMAC控制器)、DDR,所述FPGA软核与所述DMAC通过AHB总线通信且所述FPGA软核通过AHB总线控制所述DMAC;所述DMAC与DDR通过AXI总线通信。
所述DMAC通过AHB总线进行初始化等寄存器的读写操作,将相关初始化、控制、状态信息下发或上传;以及利用上述寄存器进行以太网(Ethernet)与DDR的直接通信,同时实现AXI4总线接口与以太网(Ethernet)接口的转换以及AXI4仲裁。
所述DMAC包括软核控制模块、DMA通信控制模块、以及TX描述符环。
所述软核控制模块用于所述FPGA软核对所述DMAC的TX(发送)控制、TX实际数据包长度交互、以及初始化TX描述符环信息接收。所述DMA通信控制模块用于DDR数据与Ethernet(以太网)数据的缓存、AXI4地址/字节计数的存储,以及AXI4地址/数据格式的整合,同时利用描述符控制逻辑对TX描述符环进行初始化和状态控制。所述TX描述符环用于存储所述DMAC的TX描述符环的控制位、链接符、数据包地址和数据包长度信息。
TX描述符环(TX描述符)结构:{控制位(empty_flag),链接符(Link),数据包起始地址,数据包长度};其中,控制位表示该描述符号是否为空;链接符表示下一描述符号;数据包起始地址表示该描述符对应的缓冲区起始地址;数据包长度表示该描述符对应缓冲空间大小。
由于TX(发送)数据为所述FPGA软核主动发起,结合系统的处理能力,本发明实施例中所述TX描述符环包括2级TX描述符,为TX描述符0和TX描述符1,TX设置链接符为顺序执行,即TX为0-1-0。
本发明实施例的嵌入式以太网数据处理系统,还包括上述的嵌入式以太网数据处理方法,以通过DMAC将FPGA软核的数据发送至以太网,重复之处不再赘述。
所述DMAC用于TX(发送)数据传输流程:在所述FPGA软核(本实例中采用CortexM1)控制下,所述FPGA软核产生的数据通过DCACHE强制回写至DDR颗粒中的约定(描述符对应)位置,之后通过所述DMAC将DDR颗粒中更新的数据发送到以太网。
本发明实施例的嵌入式以太网数据处理系统在FPGA中实现了带以太网DMAC的FPGA软核系统,以匹配以太网通信速率的应用需求,为LwIP等通信协议栈提供硬件基础。
本发明实施例还提供一种基于FPGA的嵌入式以太网数据处理方法,该数据处理方法包括TX(发送)数据传输流程和RX(接收)数据传输流程。
请参考图2,所述TX(发送)数据传输流程,即通过DMAC将FPGA软核中的数据发送至以太网,其包括以下步骤:
步骤S110、所述FPGA软核获取当前空闲的TX描述符。
具体的,所述FPGA软核通过发送描述符号寄存器dmac_txnum[16]回读当前空闲的TX描述符号,使所述FPGA软核定位TX描述符环上当前空闲的TX描述符的位置。其中,初始化流程后,默认从TX描述符0开始执行TX数据传输流程。
步骤S120、所述FPGA软核将数据长度值发送至所述DMAC,并通过所述DMAC将所述数据长度值写入当前TX描述符对应的长度寄存器。
具体的,所述FPGA软核通过发送数据长度寄存器dmac_txlen[31:16]将数据长度值发送至所述DMAC,并通过所述DMAC自动将所述数据长度值写入当前TX描述符对应的长度寄存器。其中,该数据长度值为所述FPGA软核实际待发送数据长度值。
步骤S130、所述FPGA软核将数据更新至DDR与当前TX描述符对应的数据块中。具体的,当状态寄存器dmac_stauts[0]为0时,通过DCACHE强制回写,所述FPGA软核将数据更新至DDR与当前TX描述符对应的数据块中。状态寄存器dmac_stauts[0]为0,即RX描述符环空闲。当前无RX数据传输流程,确保以太网数据接收过程无数据丢失或控制错乱。
其中,所述强制回写包括,
S131、所述FPGA软核将待回写数据的起始地址和数据长度,通过AHB总线发送至所述Dcache模块;
S132、所述FPGA软核发送强制回写指令;同时,所述FPGA软核强制挂起,即暂停指令与数据的执行操作;
S133、所述Dcache模块接收所述强制回写指令;
S134、所述Dcache模块扫描缓存行的Tag,并判断该缓存行的Tag是否命中;若命中将该缓存行回写至与其对应位置的DDR;若未命中,跳过该缓存行;其中,命中为所述FPGA软核中待回写数据的Tag与所述Dcache模块扫描缓存行的Tag一致;
S135、所述Dcache模块扫描每一缓存行,并执行上述步骤S134;
S136、强制回写结束后,通过AHB总线将结束状态信息反馈至所述FPGA软核。
步骤S140、所述FPGA软核数据更新结束后,通过控制寄存器dmac_control[3]将当前TX描述符的控制位置“0”。
优选的,步骤S140还包括,步骤S141、所述FPGA软核读取当前TX描述符的链接符,获取下一空闲的TX描述符,并执行步骤S120。通过步骤S141使所述FPGA软核开始准备下一数据发送。即,步骤S110→S120→S130→S140、以及步骤S141→S120→S130→S140→S141往复循环,在该循环过程中,步骤S141与步骤S110是一致的,所述FPGA软核定位TX描述符环上当前(下一)空闲的TX描述符的位置,所述FPGA软核将数据更新至DDR与当前(下一)TX描述符对应的数据块中。
步骤S150、所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。
优选的,步骤S150之前还包括,步骤S1500所述DMAC判断当前TX描述符的控制位是否为0,若控制位为0,则执行步骤S150。即,所述DMAC判断当前TX描述符的控制位是否为0,若控制位为0,则所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。
所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网具体包括,
步骤S151、所述DMAC将更新至所述数据块中的数据读取到数据缓存器(FIFO)中;其中,所述DMAC从当前TX描述符的起始地址所指的DDR地址处读取数据。
步骤S152、所述DMAC数据读取结束后,根据所述以太网用户侧的发送时序逐一发送读取到所述数据缓存器的数据。
步骤S153、每完成一次数据发送(AXI传输),所述DMAC的字计数器和地址计数器将累加发送(实际传输)数据的字节数,直至所述DMAC的字节数与当前TX描述符所包括的发送字节数一致,完成数据发送。其中,当前TX描述符所包括的发送字节数,即发送数据长度寄存器dmac_txlen[31:16]中的数据长度值。
步骤S160、所述DMAC数据发送结束后,通过控制寄存器将当前TX描述符的控制位置“1”,此时当前TX描述符处于空闲状态,处于所述FPGA软核可获取的状态。
步骤S170、所述DMAC读取当前TX描述符的链接符,所述DMAC判断下一TX描述符的控制位是否为0,若控制位为0,则执行步骤S150;否则处于等待状态,即不执行步骤S150的所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网,直至控制寄存器将当前TX描述符的控制位置“0”,再执行步骤S150。
通过步骤S170使所述DMAC开始下一数据发送至所述以太网。即,步骤S1500→S150(S151→S152→S153)→S160→S170以及步骤S170→S150(S151→S152→S153)→S160→S170往复循环,在该循环过程中,步骤S1500与步骤S170是一致的,基于获得当前(下一)空闲的TX描述符控制位为0,所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。当获取下一空闲的TX描述符,开始发送数据时,此时下一空闲的TX描述符也即为当前空闲的TX描述符。
以上,步骤S110(S141)与步骤S1500(S170)可同步进行。
所述RX(接收)数据传输流程,即通过DMAC将以太网的数据发送至FPGA软核,其包括以下步骤:
步骤S210、所述DMAC获取当前空闲的RX描述符。所述DMAC获取RX描述符环上当前空闲的RX描述符,其中,初始化流程后,默认从RX描述符0开始执行RX数据传输流程。
步骤S220、根据数据接收开始条件,所述DMAC将所述以太网的数据写入DDR与当前RX描述符对应的数据块中。所述数据接收开始条件为,TSMAC IP用户侧数据接口中的tsmac_rvalid信号拉高。TSMAC IP用于实现以太网结构中的MAC与所述DMAC通过该TSMACIP规定的数据总线连接;tsmac_rvalid是TSMAC IP数据总线的一个控制信号,在该IP中自动拉高,对DMAC而言为输入信号,无需DMAC进行拉高操作。
其中,所述DMAC将所述以太网的数据写入DDR与当前RX描述符对应的数据块中,包括:
步骤S221、所述DMAC将所述以太网的数据写入数据缓冲寄存器。即,所述DMAC将所述以太网的有效数据直接写入数据缓冲寄存器,并整合为AXI接口可识别的数据宽度。
步骤S222、通过乒乓结构,将写入数据缓冲寄存器的数据写入DDR与当前RX描述符对应的数据块中。
步骤S223、每完成一次数据写入(AXI传输),所述DMAC的字计数器和地址计数器将累加写入(实际传输)数据的字节数,同时,统计一包/一帧中写入数据的字节数(字节累积数)。
步骤S230、根据数据接收结束条件,通过控制寄存器将当前RX描述符的控制位置“0”。所述数据接收结束条件为,TSMAC IP用户侧数据接口中的tsmac_rlast信号拉高。tsmac_rlast是TSMAC IP数据总线的一个控制信号,在该IP中自动拉高,对DMAC而言为输入信号,无需DMAC进行拉高操作。
进一步的,通过控制寄存器将当前描RX述符的控制位置“0”,同时还包括,触发接收中断;即,通过控制寄存器将当前RX描述符的控制位置“0”,并触发接收中断。通过中断函数,将当前RX描述符(当前RX描述符的描述符号)和接收数据长度(字节累积数)发送至所述FPGA软核,发送完毕中断将清除。
步骤S240、所述FPGA软核读取写入所述数据块中的数据。该步骤中,将写入DDR与当前RX描述符对应的数据块中的数据读取到所述FPGA软核,以实现将所述以太网的数据发送至所述FPGA软核。
所述FPGA软核读取写入所述数据块中的数据,具体包括:
步骤S241、所述FPGA软核接收当前RX描述符(当前RX描述符的描述符号)和数据长度(字节累积数);
步骤S242、当状态寄存器dmac_stauts[0]为0时(当前无以太网接收数据操作),通过DCACHE强制刷新,所述FPGA软核读取写入所述数据块中的数据。该步骤中,所述FPGA软核根据接收并存储的当前RX描述符(当前RX描述符的描述符号)和数据长度(字节累积数),通过DCACHE强制刷新,所述FPGA软核读取写入所述数据块中的数据。其中,状态寄存器dmac_stauts[0]为0,即RX描述符环空闲。
其中,所述强制刷新包括,
S2421、所述FPGA软核将待刷新数据的起始地址和数据长度,通过AHB总线发送至Dcache模块;
S2422、所述FPGA软核发送强制刷新指令;同时,所述FPGA软核强制挂起,即暂停指令与数据的执行操作;
S2423、所述Dcache模块接收所述强制刷新指令,触发Dcache模块进行强制刷新操作;
S2424、所述Dcache模块扫描缓存行的Tag信息,并判断该缓存行的Tag是否命中;若命中将该缓存行对应的Tag清零即完成该缓存行刷新;若未命中,跳过该缓存行;其中,命中为所述FPGA软核中待刷新数据的Tag与所述Dcache模块扫描缓存行的Tag一致;
S2425、所述Dcache模块扫描每一缓存行,并执行上述步骤S2424;
S2426、强制刷新结束后,通过AHB总线将结束状态信息反馈至所述FPGA软核。
优选的,步骤S240之前还包括,步骤S2400、所述DMAC获取当前RX描述符的链接符,并执行步骤S220。通过步骤S2400所述DMAC开始准备下一数据的接收(缓存),即,所述DMAC开始准备将以太网发送的下一数据写入DDR与下一RX描述符对应的数据块中。步骤S210→S220→S230、以及步骤S2400→S220→S230→S2400往复循环,在该循环过程中,步骤S2400与步骤S210是一致的,所述DMAC获取当前(下一)空闲的RX描述符(链接符),将以太网发送的数据写入DDR与当前(下一)RX描述符对应的数据块中。当获取下一空闲的RX描述符,开始接收数据时,此时下一空闲的RX描述符也即为当前空闲的RX描述符。
该循环过程中,RX数据传输流程不断进行(以太网的数据不断发送至FPGA软核),所述FPGA软核需开多个缓存空间以保留当前(下一)RX描述符的描述符号和描述符信息。
步骤S241、根据以太网发送数据的次数,所述FPGA软核接收并存储每次的RX描述符(RX描述符的描述符号)和实际接收的数据长度(字节累积数);
步骤S242、所述FPGA软核根据接收并存储的RX描述符和实际接收的数据长度,通过强制刷新,所述FPGA软核逐一读取写入DDR与当前(下一)RX描述符对应的数据块中的数据。
步骤S250、读取数据结束后,通过控制寄存器dmac_control[31:16]将当前RX描述符发送给所述FPGA软核;通过控制寄存器dmac_control[2]将当前RX描述符的控制位置“1”。具体的,所述FPGA软核读取数据结束后,通过控制寄存器dmac_control[31:16]将当前RX描述符的描述符号发送给所述FPGA,同时,通过控制寄存器dmac_control[2]将当前RX描述符的控制位置“1”,此时当前RX描述符处于空闲状态。
步骤S260、所述FPGA软核根据接收并存储的RX描述符和数据长度的顺序,判断是否在DDR中有未读取的数据,若是则执行步骤S240,否则结束RX数据传输流程。
具体的,所述FPGA软核根据接收并存储的RX描述符和实际接收的数据长度的先后顺序,判断是否在已接收的RX描述符对应的DDR中有未读取(提取)的数据,若是则执行步骤S240,否则结束RX数据传输流程。
通过步骤S260所述FPGA软核开始准备下一(缓存)数据的读取,即,所述FPGA软核开始准备读取写入DDR与下一RX描述符对应的数据块中的数据。步骤S240→S250→S260、以及步骤S260→S240→S250→S260往复循环,在该循环过程中,所述FPGA软核读取全部写入DDR与下一RX描述符对应的数据块中的数据,至此RX数据传输流程结束。
以上,步骤S210(S2400)与步骤S240可同步进行。
进一步的,嵌入式以太网数据处理方法还包括RX丢包机制,即在所述DMAC接收所述以太网数据时,新的(接收)数据包将被丢弃,不改变描述符环的控制位状态。其中,数据包丢弃包括如下情况:
1)RX描述符环初始化未完成;
2)RX状态为busy;
3)正在进行DCACHE强制刷新或强制回写;
4)无空闲RX描述符。
本发明实施例基于FPGA的嵌入式以太网数据处理方法还包括RX(接收)数据传输流程和TX(发送)数据传输流程之前的初始化流程,具体的:
步骤S010、所述FPGA软核通过描述符号寄存器descriptor_num[31:16]和描述符号寄存器descriptor_num[15:0]分别将TX描述符环和RX描述符环中当前需要初始化的描述符号(TX描述符号和RX描述符号)发至所述DMAC;
步骤S020、所述FPGA软核将当前描述符(TX描述符和RX描述符)对应的描述符控制寄存器descriptor_ctrl[31:16](tx)、描述符接收起始地址descriptor_txaddr、描述符数据长度descriptor_len[31:16](tx)、描述符控制寄存器descriptor_ctrl[15:0](rx)、描述符接收起始地址descriptor_rxaddr、描述符数据长度descriptor_len[15:0](rx)等描述符信息依次发送至所述DMAC;
步骤S030、所述FPGA软核将控制寄存器dmac_control[31:16]的数据发送至所述DMAC,当所述DMAC接收到2’b11,此时TX描述符环和RX描述符环同时进行初始化信息发送;当所述DMAC接收到2’b01,此时仅TX描述符环进行初始化信息发送;当所述DMAC接收到2’b10,此时仅RX描述符环同时进行初始化信息发送;
步骤S040、所述DMAC根据接收到的TX描述符环和/或RX描述符环的描述符(描述符号)和描述符信息,完成该接收到的描述符初始化配置;
步骤S050、若TX描述符环和/或RX描述符环上所有描述符(描述符号)未初始化完成,则重复步骤S01;若TX描述符环和/或RX描述符环上所有描述符(描述符号)全部初始化完成,则初始化流程结束,并通过状态寄存器dmac_stauts[1]将initial done发送至所述DMAC。
本发明实施例基于FPGA的嵌入式以太网数据处理方法,在FPGA软核的数据与以太网发送/接收过程中,通过DMAC,使以太网与片外存储设备(例DDR)不通过FPGA软核而直接进行大数据量的传输,从而克服FPGA软核的处理能力不足以匹配以太网的通信速率的问题。进一步的,在以太网数据更新和FPGA软核数据回写时,同步配合DCACHE强制刷新和强制回写操作,解决CACHE一致性问题。
请参考图3和图4,本发明实施例还提供了一种基于FPGA的嵌入式以太网数据处理系统,包括FPGA软核、DMAC、DDR,所述FPGA软核与所述DMAC通过AHB总线通信,且所述FPGA软核通过AHB总线控制所述DMAC;所述DMAC与DDR通过AXI总线通信。所述FPGA软核、DMAC布设在嵌入式SoC上,嵌入式SoC还包括DCACHE模块。
所述DMAC通过AHB总线进行初始化等寄存器的读写操作,将相关初始化、控制、状态信息下发或上传;以及利用上述寄存器进行以太网(Ethernet)与DDR的直接通信,同时实现AXI4总线接口与以太网(Ethernet)接口的转换以及AXI4仲裁。
所述DMAC采用全双工模式,包括软核控制模块、DMA通信控制模块、以及TX描述符环和RX描述符环,其中,TX描述符环(TX环)和RX描述符环(RX环)硬件结构独立且可同时进行。
所述软核控制模块用于所述FPGA软核对所述DMAC的TX和/或RX控制、TX和/或RX实际数据包长度交互、以及初始化TX描述符环和RX描述符环信息接收。所述DMA通信控制模块用于DDR数据与Ethernet(以太网)数据的缓存、AXI4地址/字节计数的存储,以及AXI4地址/数据格式的整合,同时利用描述符控制逻辑对TX描述符环和RX描述符环进行初始化和状态控制。所述TX描述符环和RX描述符环分别用于存储所述DMAC的TX描述符环和RX描述符环的控制位、链接符、数据包地址和数据包长度信息。
TX描述符环和RX描述符环(TX描述符和RX描述符)结构:{控制位(empty_flag),链接符(Link),数据包起始地址,数据包长度};其中,控制位表示该描述符号是否为空;链接符表示下一描述符号;数据包起始地址表示该描述符对应的缓冲区起始地址;数据包长度表示该描述符对应缓冲空间大小。
由于TX(发送)数据为所述FPGA软核主动发起,结合系统的处理能力,本发明实施例中所述TX描述符环包括2级TX描述符,为TX描述符0和TX描述符1,TX设置链接符为顺序执行,即TX为0-1-0。
为匹配千兆以太网的速率,本发明实施例中所述RX描述符环最多1024级RX描述符;RX设置链接符为顺序执行,即RX为0-1-2-…-1023-0。
本发明实施例的嵌入式以太网数据处理系统,还包括一系列寄存器,使所述DMAC与所述FPGA软核进行正常的信息交互。
具体的,在所述DMAC上通过不同的AHB地址划分一系列寄存器,如表1所示,该一系列寄存器包括:状态寄存器dmac_stauts、控制寄存器dmac_control、描述符号寄存器descriptor_num、描述符控制寄存器descriptor_ctrl、描述符发送起始地址descriptor_txaddr、描述符接收起始地址descriptor_rxaddr、描述符数据长度descriptor_len。
表1寄存器列表
Figure BDA0002699186060000161
Figure BDA0002699186060000171
本发明实施例的嵌入式以太网数据处理系统,还包括上述的嵌入式以太网数据处理方法,包括TX(发送)数据传输流程和RX(接收)数据传输流程,重复之处不再赘述。
所述DMAC用于TX(发送)数据传输流程:在所述FPGA软核(本实例中采用CortexM1)控制下,所述FPGA软核产生的数据通过DCACHE强制回写至DDR颗粒中的约定(描述符对应)位置,之后通过所述DMAC将DDR颗粒中更新的数据发送到以太网。
所述DMAC用于RX(接收)数据传输流程:在所述FPGA软核(本实例中采用CortexM1)控制下,以太网的数据经过所述DMAC直接写入DDR颗粒中的约定(描述符对应)位置,之后通过DCACHE强制刷新将以太网的数据读取至所述FPGA软核中进行处理。
本发明实施例的嵌入式以太网数据处理系统在FPGA中实现了带以太网DMAC的FPGA软核系统,以匹配以太网通信速率的应用需求,为LwIP等通信协议栈提供硬件基础;以及,本发明实施例建立合理的TX描述符环和RX描述符环结构和硬件丢包机制,防止Ethernet DMAC因处理能力不足导致的系统卡死或错误现象。
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。

Claims (10)

1.一种基于FPGA的数据处理方法,其特征在于,所述数据处理方法通过DMAC将FPGA软核的数据发送至以太网,包括以下步骤:
步骤S10、所述FPGA软核获取当前空闲的描述符;
步骤S20、所述FPGA软核将数据长度值发送至DMAC,并通过所述DMAC将所述长度值写入当前描述符对应的长度寄存器;
步骤S30、所述FPGA软核将数据更新至DDR与当前描述符对应的数据块中;
步骤S40、所述FPGA软核数据更新结束后,通过控制寄存器将当前描述符的控制位置“0”;
步骤S50、所述DMAC通过以太网接口将更新至所述数据块中的数据发送至所述以太网。
2.根据权利要求1所述的基于FPGA的数据处理方法,其特征在于,步骤S40还包括,
步骤S41、所述FPGA软核读取当前描述符的链接符,获取下一空闲的描述符,并执行步骤S20。
3.根据权利要求2所述的基于FPGA的数据处理方法,其特征在于,步骤S50之前还包括,步骤S500、所述DMAC判断当前描述符的控制位是否为0,若控制位为0,则执行步骤S50。
4.根据权利要求3所述的基于FPGA的数据处理方法,其特征在于,步骤S50之后,所述数据处理方法还包括,
步骤S60、所述DMAC数据发送结束后,通过控制寄存器将当前描述符的控制位置“1”;
步骤S70、所述DMAC读取当前描述符的链接符,所述DMAC判断下一描述符的控制位是否为0,若控制位为0,则执行步骤S50。
5.根据权利要求1所述的基于FPGA的数据处理方法,其特征在于,步骤S50具体为,
步骤S51、所述DMAC将更新至所述数据块中的数据读取到数据缓存器中;
步骤S52、所述DMAC数据读取结束后,根据所述以太网用户侧的发送时序逐一发送数据;
步骤S53、每完成一次发送数据,所述DMAC的字计数器和地址计数器将累加发送数据的字节数,直至提取完该描述符所包括的实际发送字节个数。
6.根据权利要求1所述的基于FPGA的数据处理方法,其特征在于,所述数据处理方法还包括以下步骤:
步骤S01、所述FPGA软核将当前需要初始化的描述符发至所述DMAC;
步骤S02、所述FPGA软核将当前描述符的描述符信息发送至所述DMAC;
步骤S03、所述DMAC根据接收到的描述符与描述符信息,完成初始化配置;
步骤S04、若所有描述符未初始化完成,则重复步骤S01;若所有描述符全部初始化完成,则初始化流程结束,并通过状态寄存器将initial done发送至所述DMAC。
7.一种基于FPGA的数据处理系统,其特征在于,包括FPGA软核、DMAC、和DDR,所述FPGA软核与所述DMAC通过AHB总线通信,所述DMAC与所述DDR通过AXI总线通信;所述DMAC包括TX描述符环;
所述数据处理系统还包括,应用于所述数据处理系统的权利要求1-6中任意权利要求中的基于FPGA的数据处理方法。
8.根据权利要求7所述的基于FPGA的数据处理系统,其特征在于,所述TX描述符环包括2级TX描述符。
9.根据权利要求8所述的基于FPGA的数据处理系统,其特征在于,所述TX描述符包括控制位、链接符、数据包地址和数据包长度信息。
10.根据权利要求7所述的基于FPGA的数据处理系统,其特征在于,所述DMAC上划分一系列寄存器,所述一系列寄存器包括:状态寄存器、控制寄存器、描述符号寄存器、描述符控制寄存器、描述符发送起始地址、描述符接收起始地址、描述符数据长度。
CN202011016311.9A 2020-09-24 2020-09-24 基于fpga的数据处理方法及系统 Pending CN112347030A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011016311.9A CN112347030A (zh) 2020-09-24 2020-09-24 基于fpga的数据处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011016311.9A CN112347030A (zh) 2020-09-24 2020-09-24 基于fpga的数据处理方法及系统

Publications (1)

Publication Number Publication Date
CN112347030A true CN112347030A (zh) 2021-02-09

Family

ID=74357723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011016311.9A Pending CN112347030A (zh) 2020-09-24 2020-09-24 基于fpga的数据处理方法及系统

Country Status (1)

Country Link
CN (1) CN112347030A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277842A (zh) * 2022-07-18 2022-11-01 上海赛景信息技术有限公司 一种多分区网管下沉通信方法
CN115562465A (zh) * 2022-09-14 2023-01-03 中国科学院空间应用工程与技术中心 一种fpga系统中软核处理器的复位方法和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424553B1 (en) * 2004-04-15 2008-09-09 Xilinx, Inc. Method and apparatus for communicating data between a network transceiver and memory circuitry
US20100312924A1 (en) * 2009-03-06 2010-12-09 Nec Electronics Corporation Network processor, reception controller and data reception processing method performing direct memory access transfer
CN102347896A (zh) * 2011-07-14 2012-02-08 广州海格通信集团股份有限公司 一种基于以太网加载fpga和dsp的平台及其实现方法
CN102970190A (zh) * 2012-12-10 2013-03-13 东南大学 一种网络流量监测系统
CN109634881A (zh) * 2018-11-16 2019-04-16 中国航空工业集团公司洛阳电光设备研究所 一种基于fpga的千兆以太网dma数据传输设计装置
CN111221759A (zh) * 2020-01-17 2020-06-02 深圳市风云实业有限公司 一种基于dma的数据处理系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424553B1 (en) * 2004-04-15 2008-09-09 Xilinx, Inc. Method and apparatus for communicating data between a network transceiver and memory circuitry
US20100312924A1 (en) * 2009-03-06 2010-12-09 Nec Electronics Corporation Network processor, reception controller and data reception processing method performing direct memory access transfer
CN102347896A (zh) * 2011-07-14 2012-02-08 广州海格通信集团股份有限公司 一种基于以太网加载fpga和dsp的平台及其实现方法
CN102970190A (zh) * 2012-12-10 2013-03-13 东南大学 一种网络流量监测系统
CN109634881A (zh) * 2018-11-16 2019-04-16 中国航空工业集团公司洛阳电光设备研究所 一种基于fpga的千兆以太网dma数据传输设计装置
CN111221759A (zh) * 2020-01-17 2020-06-02 深圳市风云实业有限公司 一种基于dma的数据处理系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277842A (zh) * 2022-07-18 2022-11-01 上海赛景信息技术有限公司 一种多分区网管下沉通信方法
CN115277842B (zh) * 2022-07-18 2024-05-03 上海赛景信息技术有限公司 一种多分区网管下沉通信方法
CN115562465A (zh) * 2022-09-14 2023-01-03 中国科学院空间应用工程与技术中心 一种fpga系统中软核处理器的复位方法和系统

Similar Documents

Publication Publication Date Title
JP4427214B2 (ja) 非同期転送モードにおけるホスト・プロセッサおよびディジタル信号プロセッサ間転送用インターフェース・ユニット、およびこれを用いたデータ処理システム
US6115779A (en) Interrupt management system having batch mechanism for handling interrupt events
CN106155960B (zh) 基于gpio握手和edma的uart串口通信方法
US6047001A (en) Apparatus and method in a network interface device for storing a data frame and corresponding tracking information in a buffer memory
US6581113B1 (en) Apparatus and method for transferring frame data between a host system memory and a network interface buffer memory employing transmit descriptors without transmit status information
US6970921B1 (en) Network interface supporting virtual paths for quality of service
US6154796A (en) Apparatus and method in a network interface device for storing receiving frame status in a holding register
CN107426113B (zh) 报文接收方法及网络设备
CN112347030A (zh) 基于fpga的数据处理方法及系统
CN111221759B (zh) 一种基于dma的数据处理系统及方法
WO2005071557A2 (en) A multiple address two channel bus structure
CN110149374B (zh) 一种文件传输方法、终端设备及计算机可读存储介质
US7860120B1 (en) Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
CN106959929B (zh) 一种多端口访问的存储器及其工作方法
US7065582B1 (en) Automatic generation of flow control frames
US6061768A (en) Apparatus and method in a network interface device for storing tracking information indicating stored data status between contending memory controllers
US6401142B1 (en) Apparatus and method for selective bus transfer using master and slave modes
US6516371B1 (en) Network interface device for accessing data stored in buffer memory locations defined by programmable read pointer information
CN111274173A (zh) 一种基于zynq的多节点srio通信设计方法及装置
CN105681222A (zh) 一种数据接收缓存方法、装置及通信系统
US6061767A (en) Apparatus and method in a network interface device for storing status information contiguous with a corresponding data frame in a buffer memory
CN103838694B (zh) 一种fpga高速读取usb接口数据的方法
US6473818B1 (en) Apparatus and method in a network interface device for asynchronously generating SRAM full and empty flags using coded read and write pointer values
CN111045817B (zh) 一种PCIe传输管理方法、系统和装置
CN116166581A (zh) 用于pcie总线的队列式dma控制器电路及数据传输方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210209