CN113282286B - 一种算法开发方法及装置 - Google Patents
一种算法开发方法及装置 Download PDFInfo
- Publication number
- CN113282286B CN113282286B CN202110600207.2A CN202110600207A CN113282286B CN 113282286 B CN113282286 B CN 113282286B CN 202110600207 A CN202110600207 A CN 202110600207A CN 113282286 B CN113282286 B CN 113282286B
- Authority
- CN
- China
- Prior art keywords
- code
- axi bus
- axi
- module
- fpga
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000011161 development Methods 0.000 title claims abstract description 18
- 230000006870 function Effects 0.000 claims description 27
- 238000004088 simulation Methods 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 13
- 239000000758 substrate Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- 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/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4208—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种算法开发方法及装置,其中该方法包括:在获取了FPGA模型后,添加至少一个AXI总线模块,根据FPGA模型和与FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;第一FPGA代码模块包括:FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系,其中,在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。由此,通过对AXI总线模块生成的AXI总线代码中的AXI信号进行区分,实现了通过多路AXI总线进行数据传输的目的。
Description
技术领域
本发明涉及软件领域,尤其涉及一种算法开发方法及装置。
背景技术
对于算法开发而言,当前主要是通过技术人员对算法的实现进行代码编写,或者通过现有的工具提供的模块搭建算法模型,例如通过MATLAB中的Simulink环境进行算法模型的搭建,再将搭建的算法模型转换为代码。
对于算法模型而言,当前的代码生成工具通常只支持单路数据传输,若要实现多路数据传输的目的,需要用户自行编写相关程序,但是该种方式实现起来比较困难,或者通过一条数据通路,依次对输出数据进行传输,该种方式数据传输效率很低。
因此,现在亟需一种代码生成工具,在代码生成时实现对多路数据的自动封装。
发明内容
有鉴于此,本发明实施例公开了一种算法开发方法及装置,解决了现有技术中,代码开发工具不支持多路AXI总线的问题,提升了数据传输的效率。
本发明实施例公开了一种算法开发方法,包括:
获取预先生成的FPGA模型;
添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系;
根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:所述FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。
可选的,所述添加至少一个AXI总线模块,包括:
按照所述FPGA模型的输入和输出端口的数量,确定AXI总线模块的数量;
按照所述FPGA模型的输入、输出的数据类型,确定AXI总线模块的类型;所述AXI总线的类型至少包括:封装有AXI-LITE总线协议的AXI-LITE总线模块和封装有AXI-STREAM总线协议的AXI-STREAM总线模块;
基于所述AXI总线模块的数量和AXI总线模块的类型添加所述AXI总线模块。
可选的,所述在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记,包括:
读取所述AXI总线模块的标签信息,获取频次值,并将所述频次值加1;
根据当前得到的频次值确定所述AXI总线模块对应的目标标识信息;
在生成AXI总线模块对应的AXI总线代码时,采用目标标识信息对所述AXI总线代码中包含的AXI信号进行标记。
可选的,所述根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块,包括:
生成FPGA模型对应的第二FPGA代码;
根据预设的AXI总线代码模板,生成AXI总线代码;
读取FPGA模型的输入、输出端口与AXI总线模块的连接关系;
根据FPGA模型的输入、输出端口与AXI总线模块的连接关系,对所述AXI总线代码与所述FPGA代码进行封装,得到第一FPGA代码模块。
可选的,还包括:
获取预先生成的ARM模型;
确定所述AXI总线模块与所述ARM模型的连接关系;
根据所述ARM模型,以及与所述ARM模型相连接的AXI总线,生成第一ARM代码模块;
建立所述第一FPGA代码模块与所述第一ARM代码模块的连接关系。
可选的,所述根据所述ARM模型,以及与所述ARM模型相连接的AXI总线,生成第一ARM代码模块,包括:
根据所述ARM模型,生成第二ARM代码;
若所述AXI总线模块为AXI-LITE总线模块,生成memcpy函数,并配置接收数据和发送数据地址信息;
将所述第二ARM代码、memcpy函数以及配置的地址信息进行封装,得到第一ARM代码模块;
若所述AXI总线模块为AXI-STREAM总线模块,生成memcpy函数和DMA直接存储器访问驱动代码;
将ARM代码、memcpy函数和DMA驱动代码进行封装,得到第一ARM代码模块。
可选的,所述建立所述第一FPGA代码模块与所述第一ARM代码模块的连接关系,包括:
若所述第一FPGA代码模块中包含AXI-STREAM模块对应的AXI总线代码,所述第一FPGA代码模块包含DMA驱动,确定DMA驱动与AXI总线模块的对应关系,以及DMA驱动代码与AXI总线模块之间的对应关系;
根据所述DMA驱动代码与AXI总线模块之间的对应关系、DMA驱动与AXI总线模块之间的对应关系,建立所述DMA驱动与所述DMA驱动代码之间的连接关系。
可选的,还包括:
在添加AXI总线模块时,若AXI总线模块包括待配置的参数,设置所述参数;所述参数至少包括:图像的大小和图像的格式。
可选的,还包括:
响应于仿真指令,对FPGA模型、AXI总线模块和ARM模型进行仿真;
在仿真的过程中,若AXI总线模块从所述ARM算法模块接收到图片数据,根据预先配置的AXI总线模块的参数,将接收到的图片转换为多个像素点,并将得到的像素点发送给FPGA算法模块;
若AXI总线模块从FPGA模型中接收到像素点数据,根据所述配置参数中图片的大小,检测是否接收到完整的像素点;
当检测到接收到完整的像素点后,根据参数中图片的格式和图片的大小,将接收到的完整的像素点转换为图片,并将得到图片发送给ARM模型。
本发明实施例公开了一种算法开发装置,包括:
第一获取单元,用于获取预先生成的FPGA模型;
添加单元,由于添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系;
第一代码生成单元,用于根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:所述FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
标记单元,用于在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。
本发明实施例公开了一种算法开发方法,包括:在获取了FPGA模型后,添加至少一个AXI总线模块,根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系,其中,在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。由此,通过对AXI总线模块生成的AXI总线代码中的AXI信号进行区分,使得通过AXI总线模块进行数据传输时,能够标识出AXI总线模块与传输的数据之间的关系,由此,实现了通过多路AXI总线进行数据传输的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明实施例提供的一种算法开发方法的流程示意图;
图2示出了第一FPGA代码模块生成的示意图;
图3示出了本发明实施例提供的一种算法开发方法的又一流程示意图;
图4示出了本发明实施例提供的一种仿真方法的流程示意图;
图5示出了本发明实施例提供的一种仿真的场景示意图;
图6示出了本发明实施例提供的一种算法开发装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,示出了本发明实施例提供的一种算法开发方法的流程示意图,在本实施例中,该方法包括:
S101:获取预先生成的FPGA模型;
本实施例中,FPGA模型中包括多个算法模块,FPGA模型用于在生成了代码后能够在FPGA上运行。
其中,FPGA模型可以是用户自己搭建的,也可以是由其他算法拆分出来的,例如,预先搭建了完整的算法模型,将算法模型拆分为ARM模型和FPGA模型。
S102:添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系;
本实施例中,AXI总线模块用于传输数据,例如可以传输FPGA模型的输入输出数据,在FPGA模型与其它模型进行数据交互时,用于传输FPGA模型与其它模型之间的数据,例如用于传输FPGA模型与ARM模型之间的数据。
本实施例中,可以根据用户需求添加AXI总线模块,也可以基于ARM模型和FPGA模型的输入、输出端口的数量,以及输出的数据类型进行添加,具体的,S102包括:
按照FPGA模型的输入和输出端口的数量确定AXI总线模块的数量;
按照FPGA模型的输入、输出的数据类型、确定AXI总线模块的类型;所述AXI总线的类型至少包括:封装有AXI-LITE总线协议的AXI-LITE总线模块和封装有AXI-STREAM总线协议的AXI-STREAM总线模块;
基于所述AXI总线模块的数量和AXI总线模块的类型添加所述AXI总线模块。
本实施例中,预先设置了多种不同类型的AXI总线模块,不同类型的AXI总线模块封装有不同的AXI总线协议,其中,封装的总线协议例如包括:AXI-LITE总线协议和AXI-STREAM总线协议等。
S103:根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
本实施例中,可以通过代码生成工具读取FPGA模型和AXI总线模块,生成FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码,并确定第二FPGA代码与AXI总线代码之间的连接关系。
优选的,可以采用如下的方法执行S103:
生成FPGA模型对应的第二FPGA代码;
根据预设的AXI总线代码模板,生成AXI总线代码;
读取FPGA模型的输入、输出端口与AXI总线模块的连接关系;
根据FPGA模型的输入、输出端口与AXI总线模块的连接关系,对所述AXI总线代码与所述FPGA代码进行封装,得到第一FPGA代码模块。
本实施例中,FPGA模型的输入、输出端口与AXI总线模块的连接关系可以通过如下的方式确定:
从FPGA模型和AXI总线模块中搜寻预设的标签信息;
通过搜寻到的标签信息确定AXI总线模块的数量,以及AXI总线模块与FPGA模型的输入、输出端口的连接关系。
其中,通过代码生成工具生成第一F[GA代码模块的具体方法可以包括多种,不限于上述提到的方法。
举例说明:如图2所示,AXI总线模块包括:一个AXI-LITE总线模块,表示为AXI总线模块A、两个AXI-STREAM总线模块,分别表示为AXI总线模块B和AXI总线模块C。在代码生成时,生成FPGA模型对应的代码表示为FPGA算法module,AXI-LITE总线模块对应的代码表示为AXI-LITE moduleA,AXI-STREAM总线模块对应的代码分别表示为AXI-LITE moduleB和AXI-LITE module C,并建立AXI-LITE moduleA、AXI-LITE moduleB和AXI-LITE module C之间的连接关系。
S104:在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。
当前的代码生成工具,一般只支持一路AXI总线,若包含多路的AXI总线,会出现报错的情况,为了保障在采用多路AXI总线模块的情况下,仍然能够正常的使用,本实施例中,在代码生成的过程中对不同的AXI总线模块进行了区分,具体的,是将AXI总线模块中的AXI信号进行了区分,其中,AXI信号至少包括:握手信号和数据信号。
举例说明:对于AXI-STREAM总线模型,可以采用不同的标识,对不同的AXI-STREAM总线模型的握手信号进行区分,例如AXI-STREAM总线模块的握手信号包括:last、Valid、ready,数据信号为data。若包含两个AXI-STREAM总线模块,第一个AXI-STREAM总线模块可以采用标识符a进行标记,例如AXI信号标记为:a_last、a_Valid、a_ready和a_data,第二个AXI-STREAM总线模块可以采用标识符b进行标记,例如AXI信号标记为:b_last、b_Valid、b_ready和b_data。
其中,可以采用多种方式对AXI信号进行区分,本实施例中不进行限定。
优选的,本实施例中,可以通过如下的方式执行S104的过程,包括:
读取所述AXI总线模块的标签信息,获取频次值,并将所述频次值加1;
根据当前得到的频次值确定所述AXI总线模块对应的目标标识信息;
在生成AXI总线模块对应的AXI总线代码时,采用目标标识信息对所述AXI总线代码中包含的AXI信号进行标记。
需要说明的是,其中频次值表示当前是第几次读取到标签信息。
举例说明:AXI总线模块的标签信息例如为TAG,当读取到TAG时,获取频次值,并将该频次值加1,若加1后,当前频次值为2,也就是说是第二次读取到TAG标签,获取与频次值2对应的目标标识信息,例如为b,可以采用b对AXI信号进行标记,AXI-STREAM总线模块的握手信号包括:last、Valid、ready,数据信号为data,标记为b_last、b_Valid、b_ready和b_data。
本实施例中,在获取了FPGA模型后,添加至少一个AXI总线模块,根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系,其中,在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。由此,通过对AXI总线模块生成的AXI总线代码中的AXI信号进行区分,使得通过AXI总线模块进行数据传输时,能够标识出AXI总线模块与传输的数据之间的关系,由此,实现了通过多路AXI总线进行数据传输的目的。
参考图3,示出了本发明实施例提供的一种算法开发方法的又一流程示意图,在本实施例中,该方法包括:
S301:获取预先生成的FPGA模型和预先生成的ARM模型。
本实施例中,用户预先设计了算法模型,其中算法模型包括多个算法模块,其中算法模型可以在多种工具中设计完成,本实施例中不进行限定,例如算法模型可以在Simulink环境下进行设计。
应用于SOC平台上的算法,一部分需要在ARM中执行,一部分需要在FPGA中执行,为了能够适应于分别在ARM中以及在FPGA中执行,需要生成适应于在ARM中执行的代码,以及在FPGA中执行的代码。
本实施例中,预先设置了放置不同算法模块的AMR模块和FPGA模块,将算法模型中的模块进行拆分,将适应于ARM中的部分添加到预设的ARM模型中,将适应于FPGA中的部分添加到预设的FPGA模型中。
其中,将算法模型的拆分可以通过用户根据需求进行拆分,也可以根据预设的规则进行拆分,本实施例中不进行限定。
以用户根据需求拆分为例,用户根据实际需求,将算法模型拆分为两部分,一部分添加到ARM模型中,另一部分添加到FPGA模型中,由此,生成了ARM模型和FPGA模型。
S302:添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系,以及所述AXI总线模块与ARM模型的连接关系;
本实施例中,AXI总线模块用于传输ARM模型和FPGA模型之间的数据,在添加了AXI总线模块后,用户可以根据需求设置ARM模型、FPGA模型与每个AXI总线模块之间的连接关系,或者根据ARM模型、FPGA模型的输入、输出的关系,确定ARM模型、FPGA模型与每个AXI总线模块之间的连接关系。
其中,添加AXI总线模块的数量可以根据FPGA模型的输入、输出端口,或者AXI总线模块的输入输出端口的数量进行确定。添加的AXI总线模块的类型可以根据FPGA模型输入以及输出的数据的类型,或者ARM模型的输入以及输出端口的数据类型确定的。
S303:根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
上述S303与上述S103一致,本实施例中不进行限定。
S304:根据所述ARM模型,以及与所述ARM模型相连接的AXI总线,生成第一ARM代码模块;
本实施例中,第一ARM代码模块为包含AXI总线功能的ARM代码模块,其中,AXI总线功能的实现可以通过memcpy函数和/或DMA驱动,具体的S204包括:
根据ARM模型,生成第二ARM代码;
若所述AXI总线模块为AXI-LITE总线模块,生成memcpy函数,并配置接收数据和发送数据地址信息;
将所述第二ARM代码、memcpy函数以及配置的地址信息进行封装,得到第一ARM代码模块;
若所述AXI总线模块为AXI-STREAM总线模块,生成memcpy函数和DMA直接存储器访问驱动代码;
将ARM代码、memcpy函数和DMA驱动代码进行封装,得到第一ARM代码模块。
本实施例中,预先设置了AXI模型对应的代码生成文件,代码生成文件中包含有代码生成规则,当读取到AXI模型时,根据代码生成文件中的代码生成规则生成相应的代码。
本实施例中,对于ARM模型和与ARM模型相连接的AXI总线模块进行代码生成时,若AXI总线模型为AXI-LITE总线模块,则基于该AX-LITE总线模块对应的第一代码生成文件中的代码生成规则,生成memcpy函数。
其中,memcpy函数功能是将需要发送的数据复制至对应位置,或是从对应的位置获取接收到的数据。
本实施例中,若AXI总线模型为封装有AXI-STREAM协议的模型,不仅要生成memcpy函数,还生成了DMA(英文全称:Direct Memory Access,中文全称:直接存储器访问)的驱动代码。
S305:在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记;
本实施例中,S305的方法与上述S104的方法一致,本实施例中不在赘述。
S306:建立所述第一FPGA代码模块与所述第一ARM代码模块的连接关系;
本实施例中,由于不同类型的AXI总线模块代码生成的结果不同,尤其是对于第一ARM代码模块,AXI-LITE总线模块,生成了memcpy函数,并配置接收数据和发送数据地址信息,AXI-STREAM总线模块,生成memcpy函数和DMA直接存储器访问驱动代码。因此,对于包含不同类型的AXI总线模块对应的代码生成结果中,可以通过不同的连接方式进行连接。
对于AXI-STREAM协议:
若所述第一FPGA代码模块中包含AXI-STREAM模块对应的AXI总线代码,所述第一FPGA代码模块包含DMA驱动,确定DMA驱动与AXI总线模块的对应关系,以及DMA驱动代码与AXI总线模块之间的对应关系;
根据所述DMA驱动代码与AXI总线模块之间的对应关系、DMA驱动与AXI总线模块之间的对应关系,建立所述DMA驱动与所述DMA驱动代码之间的连接关系。
其中,对于AXI-LITE协议:
在代码生成过程中,能够为每一个AXI-Lite模块配置地址,通过配置的地址以及生成的memcpy函数,能够实现第一ARM代码模块和第一FPGA代码模块之间的数据传输。
本实施例中,通过对AXI总线模块生成的AXI总线代码中的AXI信号进行区分,使得通过AXI总线模块进行数据传输时,能够标识出AXI总线模块与传输的数据之间的关系,由此,实现了通过多路AXI总线传输ARM和FPGA之间数据的目的。并且,能够自动对添加的AXI代码与FPGA代码和ARM代码进行连接。
本实施例中,为了保障代码生成的结果是正确的,需要预先对算法模块进行仿真,具体的,参考图4,示出了本发明实施例提供的一种仿真方法的流程示意图,在本实施例中,该方法包括:
S401:响应于仿真指令,对FPGA模型、AXI总线模块和ARM模型进行仿真;
S402:在仿真的过程中,若AXI总线模块从所述ARM算法模块接收到图片数据,根据预先配置的AXI总线模块的参数,将接收到的图片转换为多个像素点,并将得到的像素点发送给FPGA算法模块;
S403:若AXI总线模块从FPGA模型中接收到像素点数据,根据所述配置参数中图片的大小,检测是否接收到完整的像素点;
S404:当检测到接收到完整的像素点后,根据参数中图片的格式和图片的大小,将接收到的完整的像素点转换为图片,并将得到图片发送给ARM模型。
本实施例中,由于ARM模型没有时序的概念,因此在搭建模型时往往是以基于帧的形式进行搭建的,以图像处理为例,当我们处理720P图像时,对于ARM模型,其输入输出均是720P的图像。
而对于FPGA模型而言,由于其存在各类时序,因此模型所处理的信号往往是基于流的信号,同样以处理720P图像为例,PL模型的输入输出往往都是单个的像素点。
在进行数据仿真时,为了实现ARM模型和FPGA模型之间的数据传输,且传输的数据能够被ARM模型和FPGA模型正常使用,AXI总线模块提供了数据格式转换方法。
在进行仿真之前,需要预先设置一些参数,包括:图像的大小和图像的格式,具体的,还包括:
在添加AXI总线模块时,若AXI总线模块包括待配置的参数,设置所述参数;所述参数至少包括:图像的大小和图像的格式。
本实施例中,AXI总线模型提供了数据格式转换的方法,即若AXI总线模块接收到ARM模型输入的图片数据,则将图片数据转换为像素点,若接收到FPGA模型输入的像素点,则将像素点转换为图片。
参考图5,示出了本发明实施例提供的一种仿真的场景示意图,其中,AXI总线模块两端分别与ARM模型和FPGA模型连接,AXI总线模块用于传递ARM模型和FPGA模型之间的数据,在接收到的数据为图片或者像素点时,将图片或者像素点进行数据格式的转换。本实施例中,通过对算法模型的仿真,验证了算法模型的正确性,并且在接收到的数据为图片或者像素点时,通过对接收到的图片或者像素点进行格式的转换,适应了ARM模型与FPGA模型对数据格式的要求。
本实施例中,通过AXI总线模块提供的数据转换功能,实现了ARM模型和FPGA模型之间的数据仿真功能,进一步保障了算法开发的正确性。
参考图6,示出了本发明实施例提供的一种算法开发装置的结构示意图,在本实施例中,该方法包括:
第一获取单元601,用于获取预先生成的FPGA模型;
添加单元602,由于添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系;
第一代码生成单元603,用于根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
标记单元604,用于在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记。
可选的,所述添加单元,包括:
数量确定子单元,用于按照FPGA模型的输入和输出端口的数量确定AXI总线模块的数量;
类型确定子单元,用于按照FPGA模型的输入、输出的数据类型、确定AXI总线模块的类型;所述AXI总线的类型至少包括:封装有AXI-LITE总线协议的AXI-LITE总线模块和封装有AXI-STREAM总线协议的AXI-STREAM总线模块;
添加子单元,用于基于所述AXI总线模块的数量和AXI总线模块的类型添加所述AXI总线模块。
可选的,标记单元,包括:
频次值确定子单元,用于读取所述AXI总线模块的标签信息,获取频次值,并将所述频次值加1;
标识信息确定子单元,用于根据当前得到的频次值确定所述AXI总线模块对应的目标标识信息;
标记子单元,用于在生成AXI总线模块对应的AXI总线代码时,采用目标标识信息对所述AXI总线代码中包含的AXI信号进行标记。
可选的,第一代码生成单元,用于:
生成FPGA模型对应的第二FPGA代码;
根据预设的AXI总线代码模板,生成AXI总线代码;
读取FPGA模型的输入、输出端口与AXI总线模块的连接关系;
根据FPGA模型的输入、输出端口与AXI总线模块的连接关系,对所述AXI总线代码与所述FPGA代码进行封装,得到第一FPGA代码模块。
可选的,还包括:
第二获取单元,用于获取预先生成的ARM模型;
联接关系确定单元,用于确定所述AXI总线模块与ARM模型的连接关系;
第二代码生成单元,用于根据所述ARM模型,以及与所述ARM模型相连接的AXI总线,生成第一ARM代码模块;
连接关系建立单元,用于建立所述第一FPGA代码模块与所述第一ARM代码模块的连接关系。
可选的,第二代码生成单元,用于
根据ARM模型,生成第二ARM代码;
若所述AXI总线模块为AXI-LITE总线模块,生成memcpy函数,并配置接收数据和发送数据地址信息;
将所述第二ARM代码、memcpy函数以及配置的地址信息进行封装,得到第一ARM代码模块;
若所述AXI总线模块为AXI-STREAM总线模块,生成memcpy函数和DMA直接存储器访问驱动代码;
将ARM代码、memcpy函数和DMA驱动代码进行封装,得到第一ARM代码模块。
可选的,连接关系建立单元,用于:
若所述第一FPGA代码模块中包含AXI-STREAM模块对应的AXI总线代码,所述第一FPGA代码模块包含DMA驱动,确定DMA驱动与AXI总线模块的对应关系,以及DMA驱动代码与AXI总线模块之间的对应关系;
根据所述DMA驱动代码与AXI总线模块之间的对应关系、DMA驱动与AXI总线模块之间的对应关系,建立所述DMA驱动与所述DMA驱动代码之间的连接关系。
可选的,还包括:参数配置单元,用于:
在添加AXI总线模块时,若AXI总线模块包括待配置的参数,设置所述参数;所述参数至少包括:图像的大小和图像的格式。
可选的,还包括:仿真单元,用于:
响应于仿真指令,对FPGA模型、AXI总线模块和ARM模型进行仿真;
在仿真的过程中,若AXI总线模块从所述ARM算法模块接收到图片数据,根据预先配置的AXI总线模块的参数,将接收到的图片转换为多个像素点,并将得到的像素点发送给FPGA算法模块;
若AXI总线模块从FPGA模型中接收到像素点数据,根据所述配置参数中图片的大小,检测是否接收到完整的像素点;
当检测到接收到完整的像素点后,根据参数中图片的格式和图片的大小,将接收到的完整的像素点转换为图片,并将得到图片发送给ARM模型。
本实施例的装置,通过对AXI总线模块生成的AXI总线代码中的AXI信号进行区分,使得通过AXI总线模块进行数据传输时,能够标识出AXI总线模块与传输的数据之间的关系,由此,实现了通过多路AXI总线进行数据传输的目的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种算法开发方法,其特征在于,包括:
获取预先生成的FPGA模型;
添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系;
根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:所述FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记;
所述添加至少一个AXI总线模块,包括:
按照所述FPGA模型的输入和输出端口的数量,确定AXI总线模块的数量;
按照所述FPGA模型的输入、输出的数据类型,确定AXI总线模块的类型;
基于所述AXI总线模块的数量和AXI总线模块的类型添加所述AXI总线模块;
所述根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块,包括:
生成FPGA模型对应的第二FPGA代码;
根据预设的AXI总线代码模板,生成AXI总线代码;
读取FPGA模型的输入、输出端口与AXI总线模块的连接关系;
根据FPGA模型的输入、输出端口与AXI总线模块的连接关系,对所述AXI总线代码与所述FPGA代码进行封装,得到第一FPGA代码模块。
2.根据权利要求1所述的方法,其特征在于,
所述AXI总线的类型至少包括:封装有AXI-LITE总线协议的AXI-LITE总线模块和封装有AXI-STREAM总线协议的AXI-STREAM总线模块。
3.根据权利要求1所述的方法,其特征在于,所述在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记,包括:
读取所述AXI总线模块的标签信息,获取频次值,并将所述频次值加1;
根据当前得到的频次值确定所述AXI总线模块对应的目标标识信息;
在生成AXI总线模块对应的AXI总线代码时,采用目标标识信息对所述AXI总线代码中包含的AXI信号进行标记。
4.根据权利要求1所述的方法,其特征在于,还包括:
获取预先生成的ARM模型;
确定所述AXI总线模块与所述ARM模型的连接关系;
根据所述ARM模型,以及与所述ARM模型相连接的AXI总线,生成第一ARM代码模块;
建立所述第一FPGA代码模块与所述第一ARM代码模块的连接关系。
5.根据权利要求4所述的方法,其特征在于,所述根据所述ARM模型,以及与所述ARM模型相连接的AXI总线,生成第一ARM代码模块,包括:
根据所述ARM模型,生成第二ARM代码;
若所述AXI总线模块为AXI-LITE总线模块,生成memcpy函数,并配置接收数据和发送数据地址信息;
将所述第二ARM代码、memcpy函数以及配置的地址信息进行封装,得到第一ARM代码模块;
若所述AXI总线模块为AXI-STREAM总线模块,生成memcpy函数和DMA直接存储器访问驱动代码;
将ARM代码、memcpy函数和DMA驱动代码进行封装,得到第一ARM代码模块。
6.根据权利要求5所述的方法,其特征在于,所述建立所述第一FPGA代码模块与所述第一ARM代码模块的连接关系,包括:
若所述第一FPGA代码模块中包含AXI-STREAM模块对应的AXI总线代码,所述第一FPGA代码模块包含DMA驱动,确定DMA驱动与AXI总线模块的对应关系,以及DMA驱动代码与AXI总线模块之间的对应关系;
根据所述DMA驱动代码与AXI总线模块之间的对应关系、DMA驱动与AXI总线模块之间的对应关系,建立所述DMA驱动与所述DMA驱动代码之间的连接关系。
7.根据权利要求4所述的方法,其特征在于,还包括:
在添加AXI总线模块时,若AXI总线模块包括待配置的参数,设置所述参数;所述参数至少包括:图像的大小和图像的格式。
8.根据权利要求7所述的方法,其特征在于,还包括:
响应于仿真指令,对FPGA模型、AXI总线模块和ARM模型进行仿真;
在仿真的过程中,若AXI总线模块从ARM算法模块接收到图片数据,根据预先配置的AXI总线模块的参数,将接收到的图片转换为多个像素点,并将得到的像素点发送给FPGA算法模块;
若AXI总线模块从FPGA模型中接收到像素点数据,根据所述配置参数中图片的大小,检测是否接收到完整的像素点;
当检测到接收到完整的像素点后,根据参数中图片的格式和图片的大小,将接收到的完整的像素点转换为图片,并将得到图片发送给ARM模型。
9.一种算法开发装置,其特征在于,包括:
第一获取单元,用于获取预先生成的FPGA模型;
添加单元,由于添加至少一个AXI总线模块,并确定FPGA模型与所述AXI总线模块的连接关系;
第一代码生成单元,用于根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块;所述第一FPGA代码模块包括:所述FPGA模型对应的第二FPGA代码、AXI总线模块对应的AXI总线代码以及第二FPGA代码与AXI总线代码之间的连接关系;
标记单元,用于在AXI总线代码生成的过程中,采用不同的标识符对不同的AXI总线代码中的AXI信号进行标记;
所述添加单元添加至少一个AXI总线模块,包括:
按照所述FPGA模型的输入和输出端口的数量,确定AXI总线模块的数量;
按照所述FPGA模型的输入、输出的数据类型,确定AXI总线模块的类型;
基于所述AXI总线模块的数量和AXI总线模块的类型添加所述AXI总线模块;
所述第一代码生成单元根据所述FPGA模型和与所述FPGA模型相连接的AXI总线模块,生成第一FPGA代码模块,包括:
生成FPGA模型对应的第二FPGA代码;
根据预设的AXI总线代码模板,生成AXI总线代码;
读取FPGA模型的输入、输出端口与AXI总线模块的连接关系;
根据FPGA模型的输入、输出端口与AXI总线模块的连接关系,对所述AXI总线代码与所述FPGA代码进行封装,得到第一FPGA代码模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110600207.2A CN113282286B (zh) | 2021-05-31 | 2021-05-31 | 一种算法开发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110600207.2A CN113282286B (zh) | 2021-05-31 | 2021-05-31 | 一种算法开发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282286A CN113282286A (zh) | 2021-08-20 |
CN113282286B true CN113282286B (zh) | 2024-01-30 |
Family
ID=77282851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110600207.2A Active CN113282286B (zh) | 2021-05-31 | 2021-05-31 | 一种算法开发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282286B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354515A (zh) * | 2016-09-26 | 2017-01-25 | 杭州杉石科技有限公司 | 基于模型的SystemC代码生成系统 |
CN109039591A (zh) * | 2017-06-08 | 2018-12-18 | 佛山芯珠微电子有限公司 | 基于fpga的物联网络信息加密系统的实现方法 |
CN109408043A (zh) * | 2018-10-19 | 2019-03-01 | 中国银行股份有限公司 | 一种程序生成方法及装置 |
KR102006634B1 (ko) * | 2019-03-06 | 2019-08-02 | 브이에스아이 주식회사 | 이종의 통신방식들 중 하나로 적응시킴으로써 이종 통신방식의 노드들이 단일 버스를 공유할 수 있게 하는 방법과 그 방법을 위한 기기 |
CN112230955A (zh) * | 2020-10-14 | 2021-01-15 | 西安微电子技术研究所 | 基于双核ARM SoC计算机FPGA重构系统及操作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10310822B1 (en) * | 2017-11-30 | 2019-06-04 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method and system for simulating a control program |
-
2021
- 2021-05-31 CN CN202110600207.2A patent/CN113282286B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354515A (zh) * | 2016-09-26 | 2017-01-25 | 杭州杉石科技有限公司 | 基于模型的SystemC代码生成系统 |
CN109039591A (zh) * | 2017-06-08 | 2018-12-18 | 佛山芯珠微电子有限公司 | 基于fpga的物联网络信息加密系统的实现方法 |
CN109408043A (zh) * | 2018-10-19 | 2019-03-01 | 中国银行股份有限公司 | 一种程序生成方法及装置 |
KR102006634B1 (ko) * | 2019-03-06 | 2019-08-02 | 브이에스아이 주식회사 | 이종의 통신방식들 중 하나로 적응시킴으로써 이종 통신방식의 노드들이 단일 버스를 공유할 수 있게 하는 방법과 그 방법을 위한 기기 |
CN112230955A (zh) * | 2020-10-14 | 2021-01-15 | 西安微电子技术研究所 | 基于双核ARM SoC计算机FPGA重构系统及操作方法 |
Non-Patent Citations (1)
Title |
---|
基于探测目标的自适应航路规划算法产品化实现方法;罗喜霜;宋亮;郑亮;雷玮;;计算机测量与控制(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113282286A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239398B (zh) | 一种基于Postman的接口测试用例自动生成系统及方法 | |
CN103314365B (zh) | 用于启动usb 3.0兼容装置的重列举的方法和物理计算机可读存储媒体 | |
CN107315702A (zh) | 用于智能插件管理的计算机可读介质、计算装置及方法 | |
CN104836713A (zh) | 用于车辆电子控制器的测量标定方法、装置及系统 | |
CN110851388A (zh) | 针对risc-v处理器的调试系统及调试信号传输方法 | |
CN112084802A (zh) | 一种rfid标签芯片验证系统 | |
EP1159818A2 (en) | Device and method for communication over a network | |
CN105446837A (zh) | 检测iic接口器件是否连接的方法、装置以及系统 | |
CN113282286B (zh) | 一种算法开发方法及装置 | |
CN111258631B (zh) | 一种终端设备参数自动化量产系统及方法 | |
CN109446686B (zh) | 设备内部器件间的逻辑连接关系分析方法 | |
CN116450109A (zh) | MATLAB和CCS联合开发方式下的Modbus通信库适配方法 | |
CN115980554A (zh) | 一种芯片测试的方法及其电子设备 | |
CN107704417A (zh) | 与被测设备通信的方法及其通信系统 | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
CN115442451A (zh) | 图像信号传输方法、显示装置测试设备 | |
CN111770074B (zh) | 数据通路测试报文生成装置与方法 | |
JPH11154123A (ja) | 画像データ通信システムおよび画像データ通信方法ならびに画像データ通信システムを構成する画像データ送信装置および画像データ送信方法 | |
CN111651392B (zh) | 一种用于连接可穿戴设备的方法、系统及设备 | |
CN109918325A (zh) | 基于Avalon总线的接口转换桥、接口转换方法及系统 | |
CN116820867B (zh) | 一种芯片调试方法、装置及芯片 | |
CN117135100B (zh) | 一种汽车车载光纤以太网信号传输的测试系统及方法 | |
CN113904945B (zh) | 物联网设备模拟调试方法、装置、电子装置和存储介质 | |
CN109889490B (zh) | 协议转换设备、方法、装置以及存储介质 | |
CN111221768A (zh) | 一种usb设备复合通讯方法及系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |