基于USB的FPGA通信控制装置及方法与流程

文档序号:16754151发布日期:2019-01-29 17:11阅读:185来源:国知局
基于USB的FPGA通信控制装置及方法与流程

本申请涉及电子信息领域,尤其涉及一种基于usb的fpga通信控制装置及方法。



背景技术:

图1为现场可编程门阵列(field-programmablegatearray,fpga)通过通用串行总线(universalserialbus,usb)芯片与上位机通信的示意图。其中,pfga中设置有usb模块,usb模块通过usb物理层接口向usb芯片传输从数据源设备获取的数据,例如超声图像数据。而上位机通过其它传输渠道,向fpga下发控制信号并接收fpga对于控制信号的响应信号。

基于上述传输方式,在数据源没有产生数据的情况下,fpga与usb芯片之间没有数据传输,因此,两者之间的带宽处于闲置状态,可见,现有的fpga基于usb的通信方式的带宽利用率不高。



技术实现要素:

本申请提供了一种基于usb的fpga通信控制装置及方法,目的在于解决如何提高基于usb通信的带宽利用率的问题。

为了实现上述目的,本申请提供了以下技术方案:

一种基于usb的fpga通信控制装置,设置在fpga中,所述fpga与usb芯片通信,所述装置包括:

轮询仲裁模块;

所述轮询仲裁模块中包括控制器和多个缓冲存储器;

所述控制器与所述多个缓冲存储器、以及所述usb芯片中预设的发送端点和接收端点相连,用于依据所述多个缓冲存储器的状态以及所述usb芯片中的各端点的状态,调度所述多个缓冲存储器中的信息的上传和/或下载。

可选的,所述多个缓冲存储器包括:

下载控制信号缓冲存储器、上传响应信号缓冲存储器和上传数据缓冲存储器;

所述下载控制信号缓冲存储器通过所述控制器连接所述usb芯片的控制信号发送端点,用于缓存所述控制器从所述usb芯片接收的控制信号;

所述上传响应信号缓冲存储器通过所述控制器连接所述usb芯片的响应信号接收端点,用于缓存待通过所述控制器发送至所述usb芯片的所述fpga对于所述控制信号的响应信号;

所述上传数据缓冲存储器通过所述控制器连接所述usb芯片的数据接收端点,用于缓存所述fpga中待通过所述控制器发送至所述usb芯片的数据。

可选的,所述轮询仲裁模块还包括:

与所述控制器相连,且与所述上传数据缓冲存储器对应的寄存器;

所述寄存器用于存储由所述控制器赋值的标识位,当所述标识位为第一数值时表示:所述寄存器对应的上传数据缓冲存储器中有未传完的数据。

可选的,所述上传数据缓冲存储器的数量为多个;

多个上传数据缓冲存储器分别通过所述控制器与所述usb芯片的数据接收端点相连,其中,所述控制器用于按照预设的类型排序,依次上传所述多个上传数据缓冲存储器中的数据至所述数据接收端点。

可选的,所述装置还包括:

缓存模块;

所述缓存模块中包括控制信号缓冲存储器、响应信号缓冲存储器和数据缓冲存储器;

所述控制信号缓冲存储器与所述下载控制信号缓冲存储器相连,用于与所述下载控制信号缓冲存储器交互所述控制信号;

所述响应信号缓冲存储器与所述上传响应信号缓冲存储器相连,用于向所述上传响应信号缓冲存储器交互所述响应信号;

所述数据缓冲存储器与所述上传数据缓冲存储器相连,用于与相连的上传数据缓冲存储器交互数据。

可选的,在所述上传数据缓存存储器的数量为多个的情况下,所述数据缓冲存储器与所述上传数据缓存存储器数量相同,用于存储相同类型数据的所述数据缓冲存储器与所述上传数据缓冲存储器对应相连。

可选的,所述装置还包括:

参数译码模块,通过总线与所述pfga中的解析模块相连,用于接收所述解析模块发送的解析信号,其中,所述解析模块与所述控制信号缓冲存储器相连,用于通过接收并解析所述控制信号缓冲存储器中的所述控制信号,得到所述解析信号;

跨时钟域转换模块,与所述参数译码模块和所述轮询仲裁模块相连,用于将所述解析信号的时钟频率转换为本地时钟频率后,依据转换后的解析信号,访问所述轮询仲裁模块中的寄存器。

一种基于usb的fpga通信控制方法,所述fpga通过usb芯片与上位机通信,所述方法包括以任意顺序执行:

在满足下载控制信号条件的情况下,将所述usb芯片中的控制信号发送端的控制信号下载到所述fpga中的下载控制信号缓冲存储器中,直至满足下载控制信号停止条件;其中,所述下载控制信号条件包括:所述控制信号发送端不为空且所述下载控制信号缓冲存储器不为满;所述下载控制信号停止条件包括:所述控制信号发送端为空、或者所述下载控制信号缓冲存储器为满、或者所述控制信号传输完成;

在满足上传响应信号条件的情况下,将所述fpga的上传响应信号缓冲存储器中的响应信号上传到所述usb芯片的响应信号接收端,直至满足上传响应信号停止条件;其中,所述上传响应信号条件包括:所述usb芯片中的响应信号接收端不为满且所述fpga中的上传响应信号缓冲存储器不为空;所述上传响应信号停止条件包括:所述响应信号接收端为满、或者所述上传响应信号缓冲存储器为空、或者所述响应信号传输完成;

在满足上传数据条件的情况下,将所述fpga的上传数据缓冲存储器中的数据上传到所述usb芯片的数据接收端,直至满足上传数据停止条件;其中,所述上传数据条件包括:所述usb芯片中的数据接收端不为满且所述fpga中的上传数据缓冲存储器不为空;所述上传数据停止条件包括:所述数据接收端为满、或者所述上传数据缓冲存储器为空、或者所述数据传输完成。

可选的,所述数据包括存储在不同上传数据缓冲存储器中的多种类型的数据;

所述在满足上传数据条件的情况下,将所述fpga的上传数据缓冲存储器中的数据上传到所述usb芯片的数据接收端,直至满足上传数据停止条件,包括:

按照任意的类型排序,判断各类型数据是否满足所述上传数据条件,将满足所述上传数据条件的类型的数据上传至所述数据接收端,直至满足所述上传数据停止条件。

可选的,还包括:

在上传所述数据的过程中,满足所述上传数据停止条件而停止上传所述数据的情况下,如果数据未传完,则记录数据未传完。

可选的,所述在满足上传数据条件的情况下,将所述fpga的上传数据缓冲存储器中的数据上传到所述usb芯片的数据接收端,直至满足上传数据停止条件,之前还包括:

上传已记录的未传完的数据。

本申请所述的基于usb的fpga通信控制装置,包括轮询仲裁模块,轮询仲裁模块中包括控制器和多个缓冲存储器,控制器与多个缓冲存储器以及usb芯片中预设的发送端点和接收端点相连,用于依据多个缓冲存储器的状态以及usb芯片中的各端点的状态,调度多个缓冲存储器中的信息的上传和/或下载,实现对于fpga与usb芯片之间的带宽的分时利用,从而提高带宽的利用率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为fpga通过usb芯片与上位机通信的示意图;

图2为本申请实施例公开的一种基于usb的fpga通信控制装置的结构示意图;

图3为本申请实施例公开的基于usb的fpga通信控制方法的流程图。

具体实施方式

本申请实施例公开的基于usb的fpga通信控制方法和装置,目的在于实现fpga对于不同信息的调度传输,以实现充分利用带宽,在传输多种类型的信息的情况下,进一步的,还可以保证信息的完整性。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图2为本申请实施例公开的一种基于usb的fpga通信控制装置,包括:轮询仲裁模块21,可选的,还包括缓存模块22、参数译码模块23和跨时钟域转换模块24。

其中,轮询仲裁模块21用于存储与usb芯片交互的信息(信息中包括控制信号、响应信号和数据),并实现对于信息传输的调度。

具体的,轮询仲裁模块21包括下载控制信号缓冲存储器211、上传响应信号缓冲存储器212、上传数据缓冲存储器213、控制器214和寄存器(图2中未画出)。

控制器214与轮询仲裁模块21中的多个缓冲存储器(包括211、212和213)分别相连,并与usb芯片中预设的发送端点和接收端点相连,以用于依据轮询仲裁模块21中的多个缓冲存储器的状态以及usb芯片中的各端点的状态,调度轮询仲裁模块21中的多个缓冲存储器中的信息的上传和/或下载。其中,下载是指接收usb芯片发送的信息(通常是控制信号),上传是指将信息(通常是响应信号和数据)发送至usb芯片。

进一步的,下载控制信号缓冲存储器211通过控制器214连接usb芯片中的控制信号发送端点(图2中,以ep2端点为例)。上传响应信号缓冲存储器212通过控制器214连接usb芯片中的响应信号接收端点(图2中,以ep4端点为例)。上传数据缓冲存储器213通过控制器214连接usb芯片的数据接收端点(图2中,以ep6端点为例)。

下载控制信号缓冲存储器211用于缓存控制器214从usb芯片的ep2接收的控制信号。其中,控制信号为上位机下发的用于控制fpga的信号。上传响应信号缓冲存储器212用于缓存fpga对于控制信号的响应信号,响应信号将被通过控制器214发送到usb芯片的ep4。

上传数据缓冲存储器213用于缓存fpga中待发送至usb芯片的ep6的数据,数据将被通过控制器214发送到usb芯片的ep6。

进一步的,上传数据缓冲存储器213的数量可以为多个,在待发送的数据的类型为多个的情况下,任意一种类型的数据至少具有一个用于存储该类型的数据的上传数据缓冲存储器213。图2中,以三种待上传的数据为例,因此,设置三个上传数据缓冲存储器213。三个上传数据缓冲存储器213分别通过控制器214与usb芯片的ep6相连。控制器214可以按照预设的类型排序,依次上传多个上传数据缓冲存储器213中的数据至ep6。

每个上传数据缓冲存储器均对应设置寄存器。寄存器用于存储由控制器214赋值的标识位,当标识位为第一数值(例如1)时表示:寄存器对应的上传数据缓冲存储器中有未传完的数据。当标识位为第二数值(例如0)时表示:寄存器对应的上传数据缓冲存储器中没有未传完的数据。

缓存模块22用于缓存与fpga内部的其它模块以及提供数据的硬件设备(即数据源)交互的信息(信息中包括控制信号、响应信号和数据)。

具体的,缓存模块22中包括控制信号缓冲存储器221、响应信号缓冲存储器222和数据缓冲存储器223。

其中,控制信号缓冲存储器221与下载控制信号缓冲存储器211相连,用于与下载控制信号缓冲存储器211交互控制信号,即下载控制信号缓冲存储器211在接收到控制信号后,fpga将控制信号发送至控制信号缓冲存储器221,进一步的,fpga将控制信号缓冲存储器221中的控制信号发给其它模块。

响应信号缓冲存储器222与上传响应信号缓冲存储器212相连,用于与响应信号缓冲存储器222交互响应信号。即响应信号缓冲存储器222接收到fpga对于控制信号的响应信号(响应信号由控制信号的响应模块发送)后,fpga将响应信号发给上传响应信号缓冲存储器212。

数据缓冲存储器223与上传数据缓冲存储器213相连,用于与上传数据缓冲存储器213交互数据。即数据缓冲存储器223从数据源接收数据,存满后,fpga将数据发送至上传数据缓冲存储器213。

具体的,在上传数据缓存存储器213的数量为多个的情况下,数据缓冲存储器223与上传数据缓存存储器213的数量相同,且用于存储相同类型数据的数据缓冲存储器223与上传数据缓冲存储器213对应相连。

图2中,数据以超声图像数据(img表示)、心率数据(ecg表示)和硬件的状态数据(inf表示)为例。控制信号以cmd表示,响应信号以status表示。基于图2的举例,缓存模块22中存储img的缓冲存储器与轮询仲裁模块21中存储img的缓冲存储器相连,缓存模块22中存储cmd的缓冲存储器与轮询仲裁模块21中存储cmd的缓冲存储器相连,缓存模块22中存储status的缓冲存储器与轮询仲裁模块21中存储status的缓冲存储器相连。

通常,pfga中包括解析模块,解析模块与控制信号缓冲存储器221相连,用于通过接收并解析控制信号缓冲存储器221中的控制信号,得到解析信号。

图2中,参数译码模块23通过总线(图2中,bus表示总线)与解析模块相连,用于接收解析模块发送的解析信号。

跨时钟域转换模块24与参数译码模块23和轮询仲裁模块24相连,用于将解析信号的时钟频率转换为本地时钟频率后,依据转换后的解析信号,访问轮询仲裁模块中的寄存器。需要说明的是,这里所述轮询仲裁模块中的寄存器,可以包括但不限于轮询仲裁模块中的缓存状态寄存器,其中,缓存状态寄存器用于对应存储各个缓存的状态信号,状态信号用于表示缓存的当前状态为正常或者异常。

例如,解析模块解析控制信号得到的解析信号指示:获取轮询仲裁模块中所有的上传数据缓冲存储器213的当前状态,则跨时钟域转换模块24将解析信号的时钟频率转换为本地时钟频率后,依据转换后的解析信号,读取轮询仲裁模块21中的缓存状态寄存器的状态信号,并将读取的状态信号作为响应信号,由fpga发给响应信号缓冲存储器222,存满后,传输至上传响应信号缓冲存储器212,再由轮询仲裁模块的控制器214发至usb芯片的ep4。

参数译码模块23以及跨时钟域转换模块24的具体功能实现,与现有技术(即fpga基于usb传输一种数据类型的技术)相同,这里不再赘述除了上述各模块之外,图2中,fifo表示队列,usb-reg表示轮询仲裁21模块所使用的寄存器中的信号。

下面以fpga在上位机的控制下,从硬件设备获取数据、并通过usb芯片将数据发给上位机的场景为例,对图2所示的控制器214执行基于usb的fpga通信控制的流程进行详细的说明。

假设fpga连接心率仪获取心率数据、连接超声仪获取超声图像数据,并获取硬件设备(包括心率仪和超声仪)的状态参数,本实施例中,将心率数据、超声图像数据和状态参数统称为数据。

fpga将获取的心率数据存储在缓存模块22中的一个缓冲存储器(简称为ecg数据缓存)中,将获取的超声图像数据存储在缓存模块22中的另一个缓冲存储器(简称为img数据缓存)中,将状态参数存储在缓存模块22中的又一个缓冲存储器(简称为status数据缓存)中。

图3为本申请实施例公开的基于usb的fpga通信控制方法的流程图,由控制器214执行,目的在于:按照一定的轮询顺序,调度传输控制信号、响应信号和数据。图3中包括以下步骤:

s301:判断是否满足下载控制信号条件:即判断ep2端点是否为非空、且下载控制信号缓冲存储器211是否为非满,如果是,执行s302,否则,执行s304。

s302:将ep2端点的控制信号下载到下载控制信号缓冲存储器211中。

s303:在下载控制信号的过程中,判断是否满足下载控制信号停止条件:即判断控制信号传输是否完成、或者ep2端点是否为空、或者下载控制信号缓冲存储器211是否为满,如果任意一个条件的判断结果为是,执行s304,否则,执行s302。

s304:判断是否满足上传响应信号条件:即判断ep4端点是否为非满、且上传响应信号缓冲存储器212是否为非空,如果是,执行s305,否则,执行s307。

s305:将上传响应信号缓冲存储器212中的响应信号上传到ep4端点。

s306:在上传响应信号的过程中,判断是否满足上传响应信号停止条件:即判断响应信号传输是否完成、或者ep4端点是否为满、或者上传响应信号缓冲存储器212是否为空,如果任意一个条件的判断结果为是,执行s307,否则,执行s305。

s307:判断是否有未完成传输的数据,如果否,执行s308,如果是,执行s321。

具体的,控制器214在上一次数据传输过程中未完成数据传输的情况下,可以记录未完成传输的数据的类型,控制器214依据记录,确定上一次数据传输未完成。具体的,记录未完成传输的数据的缓存的标识,例如假设轮询仲裁模块21中用于存储超声图像数据的缓存的编号为1、用于存储状态数据的缓存的编号为2、用于存储心率数据的缓存的编号为3,则如果上次数据传输过程中超声图像数据未传完,则控制器214记录存储心率数据的缓存的编号3。又或者,如前所述,为每个用于存储数据的缓存设置寄存器,如果在一次数据传输过程中,任意一个缓存中的数据未传完,则将该缓的寄存器中的标志位设置为1。控制器214依据各个缓存对应的寄存器中的标志位确定是否有未传完的数据。

s308:判断是否满足上传数据条件:即判断ep6端点是否为非满、且存储超声图像数据的上传数据缓冲存储器213是否为非空,如果是,执行s309,否则,执行s312。

s309:将存储超声图像数据的上传数据缓冲存储器213中的超声图像数据上传至ep6端点。

s310:在上传超声图像数据的过程中,判断是否满足上传数据停止条件:即判断ep6端点是否为满、或者存储超声图像数据的缓存是否为空,如果任意一个条件的判断结果为是,执行s311,否则,执行s309。

s311:判断本次超声图像数据传输是否完成,如果是,执行s312,否则,执行s320。

s312:判断ep6端点是否为非满、且存储状态数据的缓存是否为非空,如果是,执行s313,否则,执行s316。

s313:将存储状态数据的上传数据缓冲存储器213中的状态数据上传至ep6端点。

s314:在上传状态数据的过程中,判断ep6端点是否为满、或者状态数据的缓存是否为空,如果任意一个条件的判断结果为是,执行s315,否则,执行s313。

s315:判断本次状态数据传输是否完成,如果是,执行s316,否则,执行s320。

s316:判断ep6端点是否为非满、且存储心率数据的缓存是否为非空,如果是,执行s317,否则,执行s301。

s317:将存储心率数据的上传数据缓冲存储器213中的心率数据上传至ep6端点。

s318:在上传心率数据的过程中,判断ep6端点是否为满、或者心率数据的缓存是否为空,如果任意一个条件的判断结果为是,执行s319,否则,执行s317。

s319:判断本次心率数据传输是否完成,如果是,执行s301,否则,执行s320。

s320:记录未完成传输的数据。

记录的具体方式如前所述,这里不再赘述。

s321:传输上次未完成传输的数据。

控制器214在传输完上次未完成传输的数据后,返回执行s308,进行本次数据传输。

从图3所示的流程可以看出,轮询仲裁模块按照控制信号、响应信号、数据的顺序,轮询本地缓存和usb芯片的端点的状态,在两侧均满足条件的情况下进行信息的传输,因此,能够兼顾多种信息的传输。进一步的,对于多种类型的数据,也可以使用预设的顺序进行轮询传输,所以,使用分时利用带宽的方式,能够实现多种类型数据的传输。与现有的一种数据使用单独的fpga芯片传输的方式相比,一个pfga芯片可以兼顾多种数据的传输,即可利用为一个pfga分配的带宽分时传输多种类型的数据,能够提高带宽的利用率。

并且,以usb芯片的端点设置的维度设置轮询顺序,所以,能够兼容于usb的传输协议,硬件兼容性较高。

通常,与状态参数相比,数据(例如超声图像数据)的传输量较大,因此,在上次有未传完数据的情况下,优先传输未传完的数据,所以,能够进一步保证数据的完整性和正确性,而不会因为轮序机制导致数据丢失和错误。

本实施例中,上述判断条件的设置原则为:信息的接收方非满且信息的发送方非空,因此,既能够保证接收方已满而导致的信息丢失,又能够及时进行下一个信息的轮询,提高信息的传输效率。

需要说明的是,如果上位机卡顿而造成fpga信息阻塞,则信息会先存储到fpga的内部队列中,当内部队列存满时,如果上位机还处于卡顿状态,则会导致信息丢失,因此,可以设置如下带宽关系:上位机的带宽>usb带宽>fpga带宽。

需要说明的是,图3中所示的流程中所述的轮询顺序:控制信号、响应信号和数据,仅为示例,不作为本申请的限定,也可以使用其它预设顺序进行轮询。同样的,超声数据图像、状态数据和心率数据的轮询顺序,也不作为限定。

需要说明的是,图3所示的流程中,所述下载控制信号存储器、上传响应信号存储器和上传数据存储器,不限定于图2所示的结构,也可以为fpga中现有的存储器,只要仅用于存储相应类型的数据即可,例如,fpga中现有的存储器,可以仅用于存储控制信号,即为下载控制信号存储器。

本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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