本发明属于计算机技术领域,具体涉及到一种fpga应用电路的可移植方法。
背景技术:
随着计算机科学技术的发展和应用领域的不断拓展,需要更多具有高性能、低功耗属性的计算设备来满足日益增长的运算需求。通用处理器(cpu)经历了数十年的发展,随着摩尔定律已接近极限,能效比提升的空间已经相当有限。为了实现进一步的性能提升,为产业核心应用(人工智能、大数据处理等)定制处理器已成必要。由此,fpga芯片技术逐渐进入大众视野,fpga具有硬件可重构、低功耗、低延时的特性,在高性能计算和低功耗设备上都取得了广泛应用,在服务器加速领域扮演着重要角色和使命。
在现有技术中,大多服务厂商采用在传统服务器上安装fpga加速板卡,并提供预先设计好的基础功能电路(shell),主要实现通信、内存控制等,为应用电路开发者提供开发和部署平台。然而,这些服务厂商使用或开发的芯片、板卡、以及基础功能电路都各自不同,应用电路开发者为了将应用电路产品投放到不同厂商的云服务,需要进行大量重复的应用电路(ip:intellectualproperty)开发工作。ip在半导体产业里,是指某一方提供的、形式为逻辑单元、芯片设计的可重用模组和功能电路,例如神经网络电路、加密电路、压缩电路等。这主要是因为fpga硬件电路设计具有难以移植的问题:不同于软件开发,硬件设计和硬件环境密切相关,硬件环境稍有不同就可能导致产品设计不兼容的情况发生。因此,实现fpga平台上的应用电路可移植性,让其可以低成本地在多种fpga硬件平台上部署是非常必要的。
技术实现要素:
为了解决上述问题,本发明提供一种fpga应用电路的可移植方法,解决现有技术中fpga应用电路移植性低、需要针对不同fpga平台定向开发的缺陷。
本发明采取的技术方案为:一种fpga应用电路的可移植方法,包括:
开发可在不同fpga平台上提供统一应用电路接口的接口适配层库,接口适配层库中包含有多种接口适配层电路(subshell),每种接口适配层电路用以将对应fpga平台的特定应用电路接口转换为统一的应用电路接口;
在所述接口适配层库中选取与fpga开发平台所对应的接口适配层电路进行应用电路开发;
在所述接口适配层库中选取与fpga部署平台对应的接口适配层电路进行应用电路部署;
将开发完成的应用电路、选取的与fpga部署平台对应的接口适配层电路和fpga部署平台的基础功能电路进行组合编译,生成对应fpga硬件电路的配置文件;通过从接口适配层库中选取不同fpga平台对应的接口适配层电路,可以为应用电路提供统一标准接口;实现了应用电路的可移植、可重用的特性,只要选择与fpga部署平台对应的接口适配层电路,即可实现在不同fpga平台部署应用电路,不需要对应用电路进行重新开发。
所述fpga部署平台应用电路接口与fpga开发平台应用电路接口相同。
所述fpga部署平台应用电路接口与fpga开发平台应用电路接口不同。
优选的,所述接口适配层电路包括一个双向数据访问的接口适配电路,所述接口适配电路的一端连接对应fpga平台的特定应用电路接口,另一端提供统一标准接口连接所述应用电路。
优选的,所述接口适配层与所述应用电路之间的统一标准接口包括,内存映射型接口和数据流型接口,所述内存映射型接口采用axi标准接口;所述数据流型接口采用axi-stream接口。
所述特定接口包括pcie总线接口、axi总线接口、与内存的连接接口、与存储器的连接接口、高速串口、以太网接口、传感器接口以及其他平台自定义接口。
采用上述技术方案,具有以下优点:通过预先开发接口适配层库,实现应用电路的可重用性和可移植性,一次开发即可反复、跨fpga平台部署;降低了应用电路开发者在多平台移植应用电路的开发负担,提高了应用电路开发者的开发效率,从应用电路使用者的角度,利用本发明可以低成本地将应用电路部署在多种fpga平台,降低了应用电路的部署和使用难度。
附图说明
图1为本发明的方法流程图;
图2为本发明fpga硬件电路的内部结构图。
其中,shell表示fpga平台基础功能电路、subshell表示接口适配层电路,ip(intellectualproperty)表示应用电路。
具体实施方式
为了使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述,这里的描述不意味着对应于实施例中陈述的具体实例的所有主题都在权利要求中引用了。
在本实施例中,fpga开发平台表示开发应用电路时使用的fpga平台,fpga部署平台表示部署应用电路时使用的fpga平台,shell表示fpga平台基础功能电路,subshell表示接口适配层电路,ip(intellectualproperty)表示应用电路;subshellx表示从接口适配层库中选取的对应fpga开发平台的接口适配层电路,subshella、subshellb和subshellc分别表示从接口适配层库中选取的对应fpga部署平台a、fpga部署平台b和fpga部署平台c的接口适配层电路。
参考图1、图2所示,一种fpga应用电路的可移植方法,包括:
开发可在不同fpga平台上提供统一应用电路接口的接口适配层库,接口适配层库中包含有多种接口适配层电路,每种接口适配层电路用以将对应fpga平台的特定应用电路接口转换为统一的应用电路接口;
在所述接口适配层库中选取与fpga开发平台所对应的接口适配层电路进行应用电路开发;
在所述接口适配层库中选取与fpga部署平台对应的接口适配层电路进行应用电路部署;
将开发完成的应用电路、选取的与fpga部署平台对应的接口适配层电路、和fpga部署平台的基础功能电路进行组合编译,生成对应fpga硬件电路的配置文件;
进一步地,所述fpga部署平台应用电路接口与fpga开发平台应用电路接口相同;
进一步地,所述fpga部署平台应用电路接口与fpga开发平台应用电路接口不同;
所述fpga硬件电路均包括基础功能电路、接口适配层电路和应用电路;
参考图2所示,所述接口适配层电路包括一个双向数据访问的接口适配电路,所述接口适配电路的一端连接对应fpga平台的特定应用电路接口,另一端提供统一标准接口连接所述应用电路。所述特定接口包括pcie总线接口、axi总线接口、与内存的连接接口、与存储器的连接接口、高速串口、以太网接口、传感器接口以及其他平台自定义接口;
进一步地,所述接口适配层与所述应用电路之间的统一标准接口包括,内存映射型接口和数据流型接口,所述内存映射型接口采用axi标准接口;所述数据流型接口采用axi-stream接口;所述内存映射型接口也可采用与axi标准接口类似的接口;所述数据流型接口也可采用与axi-stream接口类似的接口;
在具体实践中,fpga平台基础功能电路(shell)、接口适配层电路(subshell)和应用电路(ip),具体都是rtl(registertransferlevel)代码实现的电路,并且基础功能电路和接口适配层电路的接口,接口适配层电路和应用电路的接口,在rtl代码层面兼容并可直接互联,这三部分电路代码通过兼容接口互联形成的rtl代码通过编译,即可生成功能完整的fpga硬件电路配置文件。
在具体应用中,例如,以实现数据压缩加速器(硬件电路)在多fpga平台移植为例。数据压缩加速器使用数据流式接口,首先应用电路开发者在其fpga开发平台所提供的基础功能电路(shell)上嵌套对应的axi-stream接口的接口适配层电路(subshell)进行开发。应用电路(ip)开发可使用硬件描述语言(hardwaredescriptionlanguage)或高位综合(highlevelsynthesis)等开发方式,开发的应用电路称为数据压缩ip;当数据压缩ip要在fpga开发平台之外的fpga平台上部署时,只需将开发完成的数据压缩ip、fpga部署平台基础功能电路(shell)、以及从本发明提供的接口适配层库中检索的相应接口适配层电路(subshell)组合,即可形成新的fpga工程,fpga工程通过逻辑综合、布局布线,比特流(bitstream)配置文件生成,最后将配置文件加载到fpga中即可完成数据压缩加速器在fpga部署平台上的部署工作。整个移植部署过程不需要对数据压缩ip进行改动,因此本发明为实例中的数据压缩ip降低了移植部署成本。
最后需要说明的是,上述描述为本发明的一般实施例,本领域的普通技术人员在本发明的启示下,在不违背本发明宗旨及权利要求的前提下,可以做出多种类似的表示,这样的变换均落入本发明的保护范围之内。