一种ZYNQ系统及虚拟MAC实现方法与流程

文档序号:32996911发布日期:2023-01-18 00:21阅读:28来源:国知局
一种ZYNQ系统及虚拟MAC实现方法与流程
一种zynq系统及虚拟mac实现方法
技术领域
1.本发明涉及网络通信领域,尤其涉及一种zynq系统及虚拟mac实现方法。


背景技术:

2.在广电前端设备中,经常使用千兆以太网作为整个系统的传输流交互方式,且单个设备至少会配置一个管理口和一个数据口,但随着技术的不断进步以及客户要求的不断提高,设备数据网口带宽日益增加,所以我们需要有一种方式来增加设备的传输带宽。
3.现有方式一是将网口升级为万兆以太网,但这就需要客户支持万兆,且设备成本提高,限制较大。
4.现有方式二是增加一个甚至多个千兆网口,用于传输数据。但一般的处理芯片只有两个硬核mac,即只能外接两个phy芯片,若想接入更多的phy,需要支付昂贵的费用购买第三方的mac驱动模块,大大提高了开发成本,且购买的驱动模块功能单一,无法根据使用场景修改底层代码,不利于后期维护。


技术实现要素:

5.针对上述存在的开发成本高、限制大及不利于后期维护的问题,本发明提供了一种zynq系统及虚拟mac实现方法,能够通过fpga芯片与arm处理器的协作,以低成本的方式实现了高效、稳定的mac处理链路,整个系统的可移植性高,可维护性强。
6.为了解决上述技术问题,本发明提供的具体方案如下:
7.本技术实施例提供了一种zynq系统,所述zynq系统包括fpga芯片、arm处理器、ddr存储器及多个phy收发器;
8.多个所述phy收发器,用于发送和接收数据包,并与fpga芯片进行交互;
9.所述ddr存储器,规划有读缓存区域和写缓存区域;
10.所述fpga芯片,将接收到的数据包进行缓存和信息记录,并将数据包写入到ddr存储器的读缓存区域,以及从ddr存储器上的写缓存区域中读取数据包,并发送给phy收发器;
11.所述arm处理器,包含虚拟mac模块和内核协议栈,在接收数据包时,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈;在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片。
12.在一些实施方案中,所述ddr存储器,规划有读缓存区域和写缓存区域,包括:
13.所述ddr存储器,根据phy接收器的数量,规划有每个phy接收器的读缓存区域和写缓存区域,每个phy接收器的读缓存区域和写缓存区域之间不能有交叉,每个phy接收器之间区域也不能有交叉,确保读取数据包和写入数据包的准确性。
14.在一些实施方案中,所述fpga芯片包括rx接收端、tx发送端和寄存器;
15.所述rx接收端,用于将接收到的数据包缓存在内部的数据ram中,并将数据包的信息记录在内部的信息ram中;
16.所述tx发送端,用于将待发送的数据包的信息记录在内部的信息ram中,以及将待发送的数据包缓存在内部的数据ram中;
17.所述寄存器,用于暂存rx接收端内部的信息ram和tx发送端内部的信息ram的信息,便于虚拟mac模块根据rx接收端内部的信息ram从ddr存储器上对应的的读缓存区域拷贝数据包,以及便于fpga芯片根据tx接收端内部的信息ram从ddr存储器上对应的写缓存区域中读取数据包。
18.在一些实施方案中,所述在接收数据包时,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈,包括:
19.所述在接收数据包时,虚拟mac模块通过寄存器读取rx接收端内部的信息ram的信息,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈。
20.在一些实施方案中,所述在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片,包括:
21.所述在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并通过寄存器将数据包的信息写入到fpga芯片的tx发送端内部的信息ram中。
22.本技术实施例还提供了一种虚拟mac实现方法,应用上述任一项所述的zynq系统,所述方法包括:
23.虚拟mac模块的初始化;
24.虚拟mac模块对数据包的接收;
25.虚拟mac模块对数据包的发送。
26.在一些实施方案中,所述虚拟mac模块的初始化,包括:
27.虚拟mac模块通过axi_cpu总线与fpga芯片进行交互;
28.虚拟mac模块解析设备树,通过内核函数将axi_cpu总线地址映射到内核的虚拟地址空间上,并返回对应虚拟地址;
29.通过内核函数将ddr存储器地址映射到内核的虚拟地址空间上,并返回对应虚拟地址。
30.在一些实施方案中,所述虚拟mac模块对数据包的接收,包括:
31.fpga芯片触发硬中断唤醒虚拟mac模块,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈。
32.在一些实施方案中,所述fpga芯片触发硬中断唤醒虚拟mac模块,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈,包括:
33.所述fpga芯片触发硬中断唤醒虚拟mac模块,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,对当前数据包进行crc校验,若数据异常,则丢弃并记录,若数据正常,则将数据包封装成socket buffer格式,并送往内核协议栈。
34.在一些实施方案中,所述虚拟mac模块对数据包的发送,包括:
35.内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片。
36.与现有技术相比,本发明的有益效果在于:本发明提供的一种zynq系统及虚拟mac
实现方法,所述zynq系统包括fpga芯片、arm处理器、ddr存储器及多个phy收发器,arm处理器包括虚拟mac模块和内核协议栈,通过fpga芯片与arm处理器的协作,以低成本的方式实现了高效、稳定的mac处理链路,整个系统的可移植性高,可维护性强。
附图说明
37.图1为本发明实施例中提供的zynq系统示意图;
38.图2为本发明实施例中提供的虚拟mac模块的初始化流程图;
39.图3为本发明实施例中提供的虚拟mac模块对数据包的接收流程图;
40.图4为本发明实施例中提供的虚拟mac模块对数据包的发送流程图。
具体实施方式
41.为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述。所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。
42.因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
43.例如,一种zynq系统,所述zynq系统包括fpga芯片、arm处理器、ddr存储器及多个phy收发器;多个所述phy收发器,用于发送和接收数据包,并与fpga芯片进行交互;所述ddr存储器,规划有读缓存区域和写缓存区域;所述fpga芯片,将接收到的数据包进行缓存和信息记录,并将数据包写入到ddr存储器的读缓存区域,以及从ddr存储器上的写缓存区域中读取数据包,并发送给phy收发器;所述arm处理器,包含虚拟mac模块和内核协议栈,在接收数据包时,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈;在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片。
44.本实施例提供的一种zynq系统及虚拟mac实现方法,所述zynq系统包括fpga芯片、arm处理器、ddr存储器及多个phy收发器,arm处理器包括虚拟mac模块和内核协议栈,通过fpga芯片与arm处理器的协作,以低成本的方式实现了高效、稳定的mac处理链路,整个系统的可移植性高,可维护性强。
45.实施例一:
46.参考图1,图1示出了本技术实施例中一种zynq系统的一个示意图。
47.一种zynq系统,包括fpga芯片、arm处理器、ddr存储器及多个phy收发器。
48.fpga芯片属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的结局原有的器件门电路数较少的问题,fpga芯片的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式ram,布线资源,内嵌专用硬核,底层内嵌功能单元。
49.arm处理器能够使用大量寄存器,指令执行速度更快,大多数数据操作都在寄存器中完成,具有寻址方式灵活简单,执行效率高等特点。
50.ddr存储器是cpu能直接寻址的存储空间,由半导体器件制成,其特点是访问数据的速率快,在一个时钟周期内传输两次数据,能够在时钟的上升期和下降期各传输一次数据,具有较高的数据传输率。
51.phy收发器用于实现以太网物理层功能,可以发送和接收以太网的数据包。
52.在该示例中,多个phy收发器用于发送和接收数据包,并与fpga芯片进行交互,如,将以太网数据包发送至fpga芯片,或是从fpga芯片接收以太网数据包,使用多个phy收发器能够增加设备的传输带宽,满足客户的使用需求。
53.ddr存储器,规划有读缓存区域和写缓存区域,便于fpga芯片将接收到的数据包写入到读缓存区域,以及便于虚拟mac模块将数据包拷贝到写缓存区域。
54.fpga芯片,将接收到的数据包进行缓存和信息记录,并将数据包写入到ddr存储器的读缓存区域,以及从ddr存储器上的写缓存区域中读取数据包,并发送给phy收发器。
55.当fpga芯片检测到有数据包输入后,先将数据包进行缓存,分析后将数据包的信息进行记录,以及通过dma通道将数据包写入到指定的ddr存储器的读缓存区域,触发硬中断。
56.arm处理器,包含虚拟mac模块和内核协议栈,在接收数据包时,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈;在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片。
57.虚拟mac模块平常处于空闲状态,在被硬中断唤醒后,触发中断服务,后续会去读取fpga芯片的信息记录,如所记录的包长及包数,得到当前包数,若包数不为0,则根据包长,从ddr存储器指定的读缓存区域拷贝数据包,并送往内核协议栈。当内核协议栈主动下发数据包,当有数据包到来时,由于一次只处理一个数据包,因此,首先会暂停发送队列后才进行收取,接着将数据包拷贝到ddr存储器指定的写缓存区域,并将数据包的信息写入到fpga芯片,如将数据包的包长及便宜地址写入到fpga芯片。
58.本示例中提供的一种zynq系统,利用虚拟mac模块,通过fpga芯片和arm处理器的协作,将fpga芯片接收到的数据包写入到ddr存储器的读缓存区域,arm处理器只需通过虚拟mac模块读取fpga芯片的信息记录即可从ddr存储器的读缓存区域拷贝数据包送往内核协议栈,此处ddr存储器只需要负责存储数据包;当需要发送数据包到phy收发器时,arm处理器的内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储器内的写缓存区域,并将数据包的信息写入到fpga芯片,fpga芯片根据虚拟mac模块写入的数据包信息,从ddr存储器上的写缓存区域中读取对应数据包,并发送给phy收发器,取代了现有需要先读取ddr存储器的数据包信息,根据数据包信息才能继续读取ddr存储器中的数据包方式,解决了处理流程繁琐问题,无需涉及到两次ddr存储器的拷贝,有效提高效率,以低成本的方式实现了高效、稳定的mac处理链路,整个系统的可移植性高,可维护性强。
59.实施例二:
60.ddr存储器,规划有读缓存区域和写缓存区域,包括:
61.所述ddr存储器,根据phy接收器的数量,规划有每个phy接收器的读缓存区域和写缓存区域,每个phy接收器的读缓存区域和写缓存区域之间不能有交叉,每个phy接收器之间区域也不能有交叉,确保读取数据包和写入数据包的准确性。
62.参考图1,共示出了多个phy接收器,各phy接收器均与fpga芯片进行交互,ddr存储器根据phy接收器的数量,对应每一phy接收器的数量规划有读缓存区域和写缓存区域,以便于fpga芯片将接收到的各phy接收器的数据包写入到ddr存储器对应的读缓存区域,以及便于虚拟mac模块将数据包拷贝到ddr存储器指定的写缓存区域。
63.在该示例中,fpga芯片包括rx接收端、tx发送端和寄存器;其中,rx接收端,用于将接收到的数据包缓存在内部的数据ram中,并将数据包的信息记录在内部的信息ram中;tx发送端,用于将待发送的数据包的信息记录在内部的信息ram中,以及将待发送的数据包缓存在内部的数据ram中;寄存器,用于暂存rx接收端内部的信息ram和tx发送端内部的信息ram的信息,便于虚拟mac模块根据rx接收端内部的信息ram从ddr存储器上对应的的读缓存区域拷贝数据包,以及便于fpga芯片根据tx接收端内部的信息ram从ddr存储器上对应的写缓存区域中读取数据包。
64.如,在接收数据包时,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈,具体为,在接收数据包时,虚拟mac模块通过寄存器读取rx接收端内部的信息ram的信息,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈。
65.在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片,具体为,在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并通过寄存器将数据包的信息写入到fpga芯片的tx发送端内部的信息ram中。
66.需要补充说明的是,在接收数据包时,虚拟mac模块通过寄存器读取rx接收端内部的信息ram的信息,该信息可以是rx接收端内部的信息ram所记录的数据包的包长和包数,以便于虚拟mac模块从ddr存储器的对应读缓存区域拷贝数据包。在发送数据包时,内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并通过寄存器将数据包的信息写入到fpga芯片的tx发送端内部的信息ram中,该信息可以是数据包的包长及偏移地址,以便于fpga芯片根据包长及偏移地址,从ddr存储器上的对应写缓存区域中读取数据包,并发送给phy收发器。
67.实施例三:
68.本技术实施例还提供了一种虚拟mac实现方法,应用上述实施例中的zynq系统,该方法包括:虚拟mac模块的初始化,虚拟mac模块对数据包的接收和虚拟mac模块对数据包的发送。
69.参考图2,虚拟mac模块的初始化,包括:
70.虚拟mac模块通过axi_cpu总线与fpga芯片进行交互;虚拟mac模块解析设备树,通过内核函数将axi_cpu总线地址映射到内核的虚拟地址空间上,并返回对应虚拟地址;通过内核函数将ddr存储器地址映射到内核的虚拟地址空间上,并返回对应虚拟地址。
71.具体的,虚拟mac模块最终会编译成ko驱动文件,所有需根据不同工程而定制化的参数都在设备树上定义,虚拟mac模块首先会解析设备树,接着通过内核函数ioremap将axi_cpu总线地址映射到内核的虚拟地址空间上,该函数在映射成功后会返回一个虚拟地址,软件上读写这个虚拟地址就相当于操作作axi_cpu总线去读写fpga芯片的寄存器。同样,通过内核函数ioremap将ddr存储器地址映射到内核的虚拟地址空间上,该函数在映射
成功后会返回一个虚拟地址,软件可对ddr存储器进行读写。根据当前phy收发器数量向内核注册网络设备驱动,为各个该网络设备驱动绑定注册硬中断及其服务函数。为了后续使用napi软中断,此时需提前将网络设备关联napi,最后激活该网络设备发送队列,用于内核协议栈与网络设备驱动的数据交互。在这些动作完成之后,程序进入cpu后台空闲状态,等待被硬中断唤醒。
72.参考图3,虚拟mac模块对数据包的接收,包括:
73.fpga芯片触发硬中断唤醒虚拟mac模块,虚拟mac模块读取fpga芯片的信息记录,从ddr存储器的读缓存区域拷贝数据包,并送往内核协议栈。
74.在虚拟mac模块从ddr存储器的读缓存区域拷贝数据包后,对当前数据包进行crc校验,若数据异常,则丢弃并记录,若数据正常,则将数据包封装成socket buffer格式,并送往内核协议栈。其中,socket buffer是linux内核网络模块中重要的数据结构,用于负责管理和控制接收或发送数据包的信息。
75.具体的,phy收发器接收网络数据包,fpga芯片对数据包进行处理(协议转换以及包过滤,在此不做详细描述),将处理后的数据包写入指定的ddr存储器的读缓存区域中,并将接收到的数据包的包长信息以及缓存位置的偏移地址记录在rx接收端的信息ram中,同时触发硬中断唤醒虚拟mac模块。虚拟mac模块响应中断后,arm处理器通过寄存器读取rx接收端的信息ram中的包长和偏移地址,然后从ddr存储器中读取相应的数据包。在中断服务函数里,只暂停硬中断触发和开启napi软中断后就结束处理返回。这是因为网络数据量大会频繁触发硬中断,通过尽量的降低硬中断处理时间,来避免cpu陷入硬中断而没有时间来处理别的业务。napi软中断中主要在一个预设时间内循环的检测包数并进行数据处理,包括从ddr存储器读包、并将包封装成指定格式送往内核协议栈、时间用尽或者当前无缓存数据了则退出软中断并重新打开硬中断。
76.参考图4,虚拟mac模块对数据包的发送,包括:
77.内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储区内的写缓存区域,并将数据包的信息写入到fpga芯片。
78.具体的,内核协议栈主动下发数据包,当有数据包到来时,由于一次只处理一个数据包,因此,首先会暂停发送队列后才进行收取,接着将数据包拷贝到ddr存储器的指定写缓存区域,并将包长及偏移地址通过寄存器写入到fpga芯片的tx接收端的信息ram中,fpga芯片会一直判断tx接收端的信息ram中是否有数据,如果有数据的话,则从tx接收端的信息ram中读取包信息,然后根据该信息从ddr存储器中读取数据包,然后发送给phy收发器,完成实际输出。
79.综上所述,本发明提供的一种zynq系统及虚拟mac实现方法,利用虚拟mac模块,通过fpga芯片和arm处理器的协作,将fpga芯片接收到的数据包写入到ddr存储器的读缓存区域,arm处理器只需通过虚拟mac模块读取fpga芯片的信息记录即可从ddr存储器的读缓存区域拷贝数据包送往内核协议栈,此处ddr存储器只需要负责存储数据包;当需要发送数据包到phy收发器时,arm处理器的内核协议栈主动下发数据包,虚拟mac模块将数据包拷贝到ddr存储器内的写缓存区域,并将数据包的信息写入到fpga芯片,fpga芯片根据虚拟mac模块写入的数据包信息,从ddr存储器上的写缓存区域中读取对应数据包,并发送给phy收发器,取代了现有需要先读取ddr存储器的数据包信息,根据数据包信息才能继续读取ddr存
储器中的数据包方式,解决了处理流程繁琐问题,无需涉及到两次ddr存储器的拷贝,有效提高效率,以低成本的方式实现了高效、稳定的mac处理链路,整个系统的可移植性高,可维护性强。
80.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
81.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围,因此,本发明的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1