掌桥专利:专业的专利平台
掌桥专利
首页

用于贴片机子模块日志上传的主控板及上传方法

文献发布时间:2024-04-18 19:58:26


用于贴片机子模块日志上传的主控板及上传方法

技术领域

本发明涉及通信技术领域,具体地涉及一种用于贴片机子模块日志上传的主控板及上传方法。

背景技术

SMT贴片机是集光、电、气及机械为一体的高精度自动化设备。其控制系统通常采用两级控制系统,其中上位机系统主要采用PC机实现编程和人机接口,而下位机系统则通常由专用工控计算机系统和FPGA控制卡来完成对机械运动的控制。主控板即是下位机系统的核心组成部分,用于将上位机下发的运动命令和其他控制指令下发到所有贴片机子模块,同时需要将贴片机子模块的运动状态信息,各传感器的状态信息以及上位机所发指令的执行情况进行上传。

贴片机各子模块需要上传给上位机子模块的状态信息,以及反馈上位机指令的下发和执行情况等,以上信息统称为子模块日志,现有的上位机和主控板之间的通信方式为PCIe bar寄存器读写,即上位机主动读写主控板内部bar寄存器。主控板为PCIe从机,不能主动与上位机进行通信。上位机采用轮询的方式在固定时间间隔内读取用于存取子模块日志,此种方式需要占据大量CPU使用率,上位机轮询的速率越快,则CPU使用率也就越高。而由于日志信息不能实时上传,主控板上也需要数据缓存逻辑对日志信息进行缓存。上位机轮询的速率越慢,主控板需要缓存的日志信息数据量也就越大。数据缓存逻辑需要消耗的主控板逻辑资源也就越多。故现有的日志上传方式具有根本性的矛盾:上位机轮询速度越快则对CPU的使用率越高,上位机轮询速度越慢则主控板板载FPGA消耗的逻辑资源越多。随着贴片机功能不断丰富,性能提高,各子模块产生的日志信息数据量也越来越大,原有的日志上传模式的弊端也日益显现。

发明内容

本发明的目的是克服现有技术存在的问题,提供一种用于贴片机子模块日志上传的主控板及上传方法,能够解决降低CPU使用率和节约FPGA逻辑资源二者不可兼得的矛盾,通过主控板控制DMA通信的方式向主动上位机传输日志数据,以此达到降低上位机CPU使用率同时减小主控板日志上传代码所消耗的逻辑资源的目的。

为了实现上述目的,本发明第一方面提供一种用于贴片机子模块日志上传的主控板,所述主控板用于主动通过DMA通信向上位机传输日志,包括:

日志数据缓存模块,用于接收并缓存来自贴片机子模块的日志数据;

DMA数据发送模块,用于将所述日志数据缓存模块的日志数据上传到上位机中。

优选地,还包括:

描述符生成模块,用于确定所述日志数据缓存模块发送日志数据至上位机的目标地址和缓存容量,以及当缓存容量写满后,发送填满信息至所述日志数据缓存模块;

中断生成模块,用于接收到来自所述日志数据缓存模块的填满信息后,发送中断信号以通知上位机读取缓存的日志数据。

优选地,日志数据按优先级顺序排序,优先级高的写入所述日志数据缓存模块的存储器内;优先级低的写入所述日志数据缓存模块的日志缓存区内,待优先级高的日志数据写完后再写入所述存储器内。

优选地,所述描述符生成模块,用于确定所述日志数据缓存模块发送日志数据至上位机的目标缓存地址具体为:

当所述存储器写满后,所述日志数据缓存模块发送fifo full标志位至所述描述符生成模块,所述描述符生成模块确定上位机每次接收日志数据的目标地址,所述日志数据缓存模块通过所述DMA数据发送模块将日志数据发送至所述目标地址。

优选地,所述目标地址=(日志上传次数-1)×N +上位机缓存区首地址,其中N为所述存储器缓存的日志数据字节数,上位机缓存区首地址由上位机下发给所述描述符生成模块。

优选地,还用于每次上传日志数据至上位机之前,检查上位机是否完成日志读取,若没有则报错。

优选地,所述日志数据缓存模块通过485模块与贴片机子模块通讯接收日志数据。

本发明第二方面提供一种用于贴片机子模块日志上传的方法,包括以下步骤:

贴片机的主控板接收并缓存子模块的日志数据;

所述主控板通过DMA通信将日志数据上传至上位机。

优选地,所述主控板通过DMA通信将日志数据上传至上位机具体过程为:

将日志数据优先级高的写入存储器内,优先级低的写入日志缓存区内,待优先级高的日志数据写完后再写入所述存储器内;

当所述存储器写满后,确定上位机每次接收日志数据的目标地址,通过所述DMA通信将日志数据发送至所述目标地址,所述目标地址=(日志上传次数-1)×N +上位机缓存区首地址,其中N为所述存储器缓存的日志数据字节数,上位机缓存区首地址由上位机下发给所述描述符生成模块;

确定上位机的缓存容量写满后,发送中断信号以通知上位机读取缓存的日志数据。

优选地,还包括每次上传日志数据至上位机之前,检查上位机是否完成日志读取,若没有则报错。

通过上述技术方案,采用DMA通信方式,可以由主控板上的FPGA主动进行DMA通信,将子模块日志数据储存在与上位机约定好的地址空间内,此过程由主控板FPGA内部自动生成,并通过内部的DMA控制器进行DMA通信,不需要上位机的参与,可以降低CPU的使用率,同时做到日志数据实时上传,节约主控板FPGA的逻辑资源。

附图说明

图1是本发明主控板的日志上传功能逻辑示意图;

图2是本发明实施例的子模块日志数据包内容;

图3是本发明实施例的日志数据缓存模块功能示意图;

图4是本发明实施例的描述符生成模块功示意图;

图5是本发明实施例的DMA数据发送模块示意图。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

本发明实施例提供一种用于贴片机子模块日志上传的主控板,所述主控板用于主动通过DMA通信向上位机传输日志,示例性地本发明主控板基于Xilinx K7系列FPGA提供的用于与PCIe主机进行DMA通信的XDMA IP。该IP包含描述符控制模块,支持在FPGA内部组装和主动加载描述符,可以实现更灵活的DMA控制,如图1所示,包括:

日志数据缓存模块,用于接收并缓存来自贴片机子模块的日志数据;

DMA数据发送模块,用于将所述日志数据缓存模块的日志数据上传到上位机中。

进一步地,日志数据缓存模块通过485模块与贴片机子模块通讯接收日志数据;主控板通过PCIe TX/RX与上位机通信。

子模块通过485接口与主控板通信。贴片机的所有子模块日志数据汇总到日志数据缓存模块,进行数据拼接与缓存。日志数据格式如下图2所示:日志数据为496bit,日志数据两端分别设有包头和包尾,包头长度为一个字节8bit,用于表示子模块编号,子模块编号范围为0-255。包尾为数据校检位,采用8位CRC校验码,用于上位机校验日志数据是否正确。

本发明另一实施例中,如图1所示,主控板还包括:

描述符生成模块,用于确定所述日志数据缓存模块发送日志数据至上位机的目标地址和缓存容量,以及当缓存容量写满后,发送填满信息至所述日志数据缓存模块;

中断生成模块,用于接收到来自所述日志数据缓存模块的填满信息后,发送中断信号以通知上位机读取缓存的日志数据。

采用DMA通信方式,可以由主控板上的FPGA主动进行DMA通信,将子模块日志储存在与上位机约定好的地址空间内。此过程由主控板FPGA内部自动生成描述符,并通过DMA控制器进行DMA通信,不需要上位机的参与,可以降低CPU的使用率。可以做到日志数据实时上传,节约主控板FPGA的逻辑资源。

进一步地,描述符生成模块,用于确定所述日志数据缓存模块发送日志数据至上位机的目标缓存地址具体为:当所述存储器写满后,所述日志数据缓存模块发送fifo full标志位至所述描述符生成模块,所述描述符生成模块确定上位机每次接收日志数据的目标地址,所述日志数据缓存模块通过所述DMA数据发送模块将日志数据发送至所述目标地址;所述目标地址=(日志上传次数-1)×N +上位机缓存区首地址,其中N为所述存储器缓存的日志数据字节数,上位机缓存区首地址由上位机下发给所述描述符生成模块。

如图1所示,当fifo被写满之后,日志数据缓存模块会发送fifo full标志位给描述符生成模块。如图3所示,描述符生成模块中存有上位机下发的目标缓存区首地址及目标缓存区地址容量参数,缓存区为上位机电脑的内存区域,其容量必须为存储器缓存的日志数据字节数的倍数,缓存区容量的单位为字节示例性选用Fifo缓存的日志数据为4Kb,即512个字节。当收到fifo full标志位后,描述符生成模块生成描述符,并加载到XDMA IP中,描述符包括数据长度和数据传输目标地址,单次数据传输的数据长度固定为64个字节,第一次目标地址即为目标缓存地址的首地址,之后的目标地址计算方式为:

目标地址 = (日志上传次数-1)×512 + 上位机缓存区首地址

同时日志数据缓存模块将日志数据按照AXI-Stream协议发送到XDMA IP,最后通过PCIe接口上传到上位机中。Fifo缓存的日志数据为4Kb,即512个字节,所以每次日志数据上传后,描述符生成模块中的目标地址会由目标缓存区首地址增加512。目标缓存区可写入的次数为:

可写入次数 = 缓存区容量 / 512

当上位机分配的目标缓存地址写满后,描述符生成模块会将full标志位发送给日志数据缓存模块,日志数据缓存模块会将此消息转发给中断生成模块,然后由中断生成模块生成中断,通知上位机读取目标缓存地址中的数据,上位机完成数据读取后会通过写bar寄存器的方式将通知主控板。在主控板下一次上传日志数据之前,会检查上位机读取日志缓存区的标志位,如果此时上位机还未完成日志数据读取,主控板会报错,如果上位机完成了日志数据的读取,则日志上传次数会清0,本次日志数据上传时日志上传次数重新计数,目标地址为日志目标缓存首地址,重新开始目标地址累加过程。

本发明另一实施例中,日志数据按优先级顺序排序,优先级高的写入所述日志数据缓存模块的存储器内;优先级低的写入所述日志数据缓存模块的日志缓存区内,待优先级高的日志数据写完后再写入所述存储器内。

如图4所示,日志数据进入日志数据缓存模块后被存入存储器内,存储器示例性选用宽度为512bit、深度为8bit的fifo。考虑到不同子模块的日志数据可能同时到达,必须对各子模块日志数据存入fifo的优先级进行排序,同时要将优先级低的数据缓存,待优先级高的数据写入fifo完成后,再将优先级低的数据写入fifo。具体的逻辑实现为:每当日志数据被接收后,先缓存到日志数据缓存模块的日志缓存区内,日志缓存区功能实现基于缓存寄存器,每个子模块都有对应的缓存寄存器。如果寄存器内有数据,则标志位置1,当数据被读出后,标志位置0。数据选择逻辑将数据存入标志位为1的寄存器内的数据写入fifo,并将其数据存入标志位置0。如果同时多个数据存入标志位置1,则选择优先级高的日志数据存入fifo,并将其数据存入标志位置0,其他寄存器的数据暂停读出。重复上述过程。当fifo写满后,停止读取寄存器数据,如果此时寄存器中还有尚未读完的日志数据,会等到fifo中数据上传之后再继续进行读取。由于子模块日志数据上传的速度远慢于主控板将日志上传到上位机的速度,故不考虑fifo数据上传时,有新的子模块日志数据来到,从而将缓存寄存器原有的数据覆盖的情况。

进一步地,DMA数据发送模块功能如图5所示,由于日志缓存fifo的数据位宽为512,而PCIe DMA通信采用的64位AXI Stream总线协议,故还需要对从fifo中读出的数据进行数据位宽转换,并以AXI Stream总线协议的形式发送到XDMA IP Core。日志数据缓存模块会将其日志缓存区full标志位发送到DMA数据发送模块,在收到标志位后,DMA数据发送模块拉高fifo读使能读取一帧数据,然后首先发送日志的高64位,即数据的448-511位,然后发送数据的384-447位,以此类推,直到日志的低64位(0-63位)发送完毕,之后DMA数据发送模块会再次拉高fifo读使能读取一帧数据,重复上述过程,直到日志缓存fifo被读空。

本发明技术方案具有以下有益效果:主控板和上位机之间的日志数据传输采用PCIe DMA通信,由主控板FPGA根据需求自动生成描述符,不需要上位机CPU进行参与,提高了CPU的使用效率;子模块日志信息可以实时上传,不需要在FPGA内缓存大量日志信息,降低了主控板的系统设计难度,节省了FPGA逻辑资源。

基于同一发明构思,本发明实施例第二方面提供一种用于贴片机子模块日志上传的方法,基于上述主控板实现包括以下步骤:

贴片机的主控板接收并缓存子模块的日志数据;

所述主控板通过DMA通信将日志数据上传至上位机。

进一步地,所述主控板通过DMA通信将日志数据上传至上位机具体过程为:

将日志数据优先级高的写入存储器内,优先级低的写入日志缓存区内,待优先级高的日志数据写完后再写入所述存储器内;

当所述存储器写满后,确定上位机每次接收日志数据的目标地址,通过所述DMA通信将日志数据发送至所述目标地址,所述目标地址=(日志上传次数-1)×N +上位机缓存区首地址,其中N为所述存储器缓存的日志数据字节数,上位机缓存区首地址由上位机下发给所述描述符生成模块;

确定上位机的缓存容量写满后,发送中断信号以通知上位机读取缓存的日志数据。

进一步地,还包括每次上传日志数据至上位机之前,检查上位机是否完成日志读取,若没有则报错。

综上所述,采用DMA通信方式,可以由主控板上的FPGA主动进行DMA通信,将子模块日志数据储存在与上位机约定好的地址空间内,此过程由主控板FPGA内部自动生成,并通过内部的DMA控制器进行DMA通信,不需要上位机的参与,可以降低CPU的使用率,同时做到日志数据实时上传,节约主控板FPGA的逻辑资源。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于此。在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型包括各个具体技术特征以任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。但这些简单变型和组合同样应当视为本发明所公开的内容,均属于本发明的保护范围。

相关技术
  • 告警日志上传方法及装置
  • 日志上传方法、日志查询方法、系统
  • 日志上传方法、日志查询方法、系统
技术分类

06120116488737