一种基于以太网的FPGA程序固化系统的制作方法


一种基于以太网的fpga程序固化系统
技术领域
1.本发明属于fpga开发设计技术领域,具体涉及一种基于以太网的fpga程序固化系统。


背景技术:



2.asic(专用集成电路)是一种为了特定目的设计实现的集成电路,比如cpu,gpu等就属于asic。fpga(field programmable gate array)芯片即可编程门阵列芯片,是asic领域中出现的一种半定制电路。fpga与asic不同,fpga芯片可以通过编程定制实现各种特定的硬件电路,更改程序即可更改硬件电路结构从而实现芯片功能的改变,而asic出厂后硬件电路是固定的,无法改变的。
3.fpga芯片的程序存储在外部的flash芯片中,常规的fpga程序固化需要使用专用的烧写器连接fpga芯片的jtag接口,并在上位机运行专用的开发软件。这种方式主要有两个问题:
4.1.当fpga设备量产交付客户使用后,如果要升级fpga程序,需要先对设备拆解,将烧写器与fpga芯片的jtag接口连接,再进行程序固化,操作过程复杂且难度较大。
5.2.传统的烧写器通常程序固化速度只有10mbit,并且专用软件的程序固化流程效率很低,导致每次固化程序需要几分钟甚至几十分钟,速度很慢。


技术实现要素:



6.(一)要解决的技术问题
7.本发明要解决的技术问题是:实现通过通用的以太网远程固化fpga程序的功能,解决传统的fpga程序固化中需要现场拆解设备并连接烧写器才能固化程序的问题。
8.(二)技术方案
9.为了解决上述技术问题,本发明提供了一种基于以太网的fpga程序固化系统,包括包括用户设备、路由器和远程主机;其中,所述用户设备是用fpga实现特定功能的最终产品;所述远程主机是一台计算机,用于运行fpga固化软件对用户设备的fpga芯片进行程序固化;所述远程主机通过路由器和网线连接用户设备;
10.所述用户设备包括fpga芯片、phy芯片、flash芯片、变压器;其中,所述fpga芯片包括处理器模块、存储模块、flash控制器模块、以太网控制器模块以及用户模块;fpga芯片中的处理器模块、存储模块、以太网控制器模块和flash控制器模块四种模块用于实现通过以太网固化fpga程序的功能;所述用户模块是fpga芯片程序的一部分,是用于实现用户设备功能的程序模块;
11.所述处理器模块可运行主程序完成以太网固化fpga程序的功能;
12.所述存储模块用于存储fpga芯片从以太网接收到的待固化的程序,同时也作为处理器模块中软件运行的缓存;
13.所述以太网控制器模块用于实现以太网协议的mac层功能,同时实现fpga芯片与
phy芯片的数据传输;
14.所述flash芯片用于存储fpga芯片的程序;所述flash控制器模块用于操作flash芯片,包括flash芯片的擦除、读写操作,以及实现fpga芯片与flash芯片的数据传输控制;
15.所述远程主机的以太网接口通过路由器和网线连接到用户设备的变压器的一端,变压器完成以太网信号的电平转换,变压器的另一端与phy芯片连接,phy芯片用于完成以太网的物理层协议,以太网的物理层协议用于实现fpga芯片中的以太网控制器模块与网线上传输的以太网信号的转换。
16.优选地,所述用户设备中与远程主机通信的网络接口包括物理层和mac层,物理层用于实现mac层和网线上传输的以太网信号的转换,由phy芯片和变压器完成;mac层由fpga芯片中的以太网控制器模块完成。
17.优选地,所述处理器模块运行主程序完成的以太网固化fpga程序的功能包括flash芯片和phy芯片初始化配置、网络协议栈实现、程序固化流程这些功能。
18.本发明还提供了一种所述fpga程序固化系统的工作方法,包括以下步骤:远程主机运行fpga固化软件,用户通过fpga固化软件加载待固化的fpga程序,并将fpga程序通过网线传送到fpga芯片中;fpga芯片运行后,其中的处理器模块通过以太网控制器模块接收到fpga程序并将其存储到存储模块中;待fpga芯片中的处理器模块收到远程主机通过以太网发送的固化程序指令后,处理器模块将存储模块中的fpga程序通过flash控制器模块烧写到flash芯片中,完成后通过以太网向远程主机发送烧写完成提示,从而完成fpga程序固化过程。
19.优选地,其中,fpga芯片启动后首先运行处理器模块,待处理器模块加载运行主程序,主程序执行以下流程:初始化时钟及中断,时钟用于定时,中断用于以太网数据的接收;初始化ip协议栈,包括缓存设置、接口设置、模式设置;等待dhcp连接,如果20秒内没有dhcp连接,则使用默认的ip地址,如果20秒内检测到dhcp连接,则使用dhcp服务器分配的ip地址;初始化flash芯片,包括设置flash读写模式、读写速率;建立并启动tcp服务器;等待接收网络数据,如果收到网络数据会触发中断,主程序跳转到网络接收函数接收网络数据;如果接收到的网络数据不是固化程序指令,则继续等待网络数据,如果是固化程序指令,则调用固化程序函数将fpga程序固化到flash芯片中,所述固化程序函数、网络接收函数均在处理器模块中运行。
20.优选地,其中,当用户设备通过路由器连接到远程主机时,使用dhcp功能,程序等待路由器自动分配一个ip地址给用户设备;当用户设备没有连接路由器而直接连接远程主机时,此时程序启动后如果20秒内未收到dhcp主机分配的ip地址,则判定远程主机无dhcp功能,程序自动使用默认的ip地址。
21.优选地,所述网络接收函数通过中断调用,用于接收并解析网络数据,网络数据包括指令和fpga程序,指令包括固化指令、清除存储模块指令、擦除flash指令;
22.如果网络接收函数解析出来的网络数据是固化程序指令,则设置固化程序标志位为1;如果是清除存储模块指令,则清除存储模块中的数据,并通过网络向远程主机发送清除完成提示;如果是擦除flash芯片指令,则擦除flash芯片,并通过网络向远程主机发送擦除完成提示;如果不是以上三种数据,则认为是fpga待固化的程序,将其写入存储模块并通过网络向远程主机发送写入完成提示。
23.优选地,所述固化程序函数由主程序调用,主程序根据固化程序标志位判断是否要调用固化程序函数,如果固化程序标志位为1则调用,为0则不调用,实现将fpga待固化的程序写入到flash芯片中并校验烧写的正确性,清除固化程序标志位,完成后通过网络向远程主机发送固化完成提示。
24.优选地,用户可通过fpga固化软件的软件界面完成各种指令的发送和数据的录入,fpga固化软件将指令与录入数据通过以太网传送到fpga芯片中,并将各种操作的结果和网络提示信息显示在界面上;用户可通过fpga固化软件完成固化flash程序、清除存储模块和擦除flash芯片三种功能。
25.本发明还提供了一种所述系统在fpga开发设计技术领域中的应用。
26.(三)有益效果
27.与现有技术相比,本发明的有益效果为:
28.1.本发明在fpga芯片中设计处理器模块、存储模块、网络控制器模块和flash控制器模块四种模块并编写处理器模块程序,实现了通过通用的以太网远程固化fpga程序的功能,该系统解决了传统的fpga程序固化中需要现场拆解设备并连接烧写器才能固化程序的问题。
29.2.本发明使用通用千兆网传输fpga程序理论速度可达1000mbps,远远高于使用烧写器固化程序的速度,通过设计优化的fpga处理器模块中的软件和远程主机上的fpga固化软件实现了高效的程序固化流程,整个固化程序过程可由传统烧写器固化需要的几分钟到几十分钟缩短到几秒钟。
30.3.在用户设备的网络接口中加入dhcp功能,避免了用户设备通过路由器连接到远程主机时,ip地址与网络内其他设备冲突,导致无法固化flash程序的情况。
附图说明
31.图1为本发明的系统结构图;
32.图2为本发明的主程序流程图;
33.图3为本发明的网络接收函数流程图;
34.图4为本发明的固化程序函数流程图;
35.图5为本发明的fpga固化软件操作流程图。
具体实施方式
36.为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
37.本发明提供一种基于以太网的fpga程序固化系统。该系统通过在fpga芯片中设计处理器模块、存储模块、网络控制模块和flash控制模块,并设计处理器模块中的控制程序实现通过以太网固化fpga程序。
38.如图1所示,本发明提供的一种基于以太网的fpga程序固化系统包括用户设备、路由器和远程主机,用户设备就是用fpga实现特定功能的最终产品,远程主机是一台通用计算机,用于运行fpga固化软件对用户设备的fpga芯片进行程序固化。远程主机通过路由器和网线连接用户设备。用户设备的主要功能是由fpga芯片实现的,fpga芯片中的用户模块
是fpga芯片程序的一部分,是用于实现用户设备主要功能的程序模块。
39.该系统包括硬件部分和软件部分。硬件部分包括fpga芯片、phy芯片、flash芯片、变压器、路由器、远程主机,其中fpga芯片、phy芯片、flash芯片、变压器均位于用户设备上;其中的fpga芯片内部模块包括处理器模块、存储模块、flash控制器模块、以太网控制器模块以及用户模块;软件部分包括运行在处理器模块中的主程序、固化程序函数、网络接收函数,和运行在远程主机的fpga固化软件。
40.用户设备中与远程主机通信的网络接口包括物理层和mac层,物理层主要用于实现mac层和网线上传输的以太网信号的转换,由phy芯片和变压器完成。mac层由fpga芯片中的以太网控制器模块完成。
41.fpga芯片中的处理器模块、存储模块、以太网控制器模块和flash控制器模块四种模块用于实现通过以太网固化fpga程序的功能。
42.所述处理器模块是fpga芯片中的一个程序模块,该程序模块可运行主程序完成以太网固化fpga程序的功能,包括flash芯片和phy芯片初始化配置、网络协议栈实现、程序固化流程这些功能;
43.所述存储模块是fpga芯片中的一个程序模块,用于存储fpga芯片从以太网接收到的待固化的程序,同时也作为处理器模块中软件运行的缓存;
44.所述以太网控制器模块用于实现以太网协议的mac层功能,同时实现fpga芯片与phy芯片的数据传输;
45.所述flash芯片用于存储fpga芯片的程序;
46.所述flash控制器模块用于操作flash芯片,包括flash芯片的擦除、读写操作,以及实现fpga芯片与flash芯片的数据传输控制;
47.所述远程主机的以太网接口通过路由器和网线连接到用户设备的变压器的一端,变压器完成以太网信号的电平转换,变压器的另一端与phy芯片连接,phy芯片用于完成以太网的物理层协议,以太网的物理层协议用于实现fpga芯片中的以太网控制器模块与网线上传输的以太网信号的转换;
48.上述fpga程序固化系统的运行过程为:远程主机运行fpga固化软件,用户通过fpga固化软件加载待固化的fpga程序,并将fpga程序通过网线传送到fpga芯片中;fpga芯片中的处理器模块通过以太网控制器模块接收到fpga程序并将其存储到存储模块中;待fpga芯片中的处理器模块收到远程主机通过以太网发送的固化指令后,处理器模块将存储模块中的fpga程序通过flash控制器模块烧写到flash芯片中,完成后通过以太网向远程主机发送烧写完成提示,从而完成fpga程序固化过程。
49.图2所示主程序是运行在处理器模块中的软件程序,fpga芯片启动后首先运行处理器模块,待处理器模块会加载运行主程序,主程序包括以下流程:初始化时钟及中断,时钟主要用于定时,中断用于以太网数据的接收;初始化ip协议栈,包括缓存设置、接口设置、模式设置等;等待dhcp连接,如果20秒内没有dhcp连接,则使用默认的ip地址,如果20秒内检测到dhcp连接,则使用dhcp服务器分配的ip地址;初始化flash芯片,包括设置flash读写模式、读写速率等;建立并启动tcp服务器;等待接收网络数据,如果收到网络数据会触发中断,主程序会跳转到网络接收函数接收网络数据;如果接收到的网络数据不是固化程序指令,则继续等待网络数据,如果是固化程序指令,则调用固化程序函数将fpga程序固化到
flash芯片中。
50.其中,当用户设备通过路由器连接到远程主机时,为了防止用户设备ip地址与网络内其他设备冲突,导致无法固化flash程序,本发明使用了dhcp功能,程序会等待路由器自动分配一个ip地址给用户设备。当用户设备没有连接路由器而直接连接远程主机时,此时远程主机可能没有dhcp功能,无法给用户设备自动分配ip地址。程序启动后如果20秒内未收到dhcp主机分配的ip地址,则可判定主机无dhcp功能,程序会自动使用默认的ip地址。
51.其中,如图3所示,所述网络接收函数通过中断调用,用于接收并解析网络数据,网络数据包括指令和fpga程序,指令包括固化指令、清除存储模块指令、擦除flash指令,指令名称和实际的字符串见下表
[0052][0053][0054]
如果网络接收函数解析出来的网络数据是固化程序指令,则设置固化程序标志位为1;如果是清除存储模块指令,则清除存储模块中的数据,并通过网络向远程主机发送清除完成提示;如果是擦除flash芯片指令,则擦除flash芯片,并通过网络向远程主机发送擦除完成提示;如果不是以上三种数据,则认为是fpga待固化的程序,将其写入存储模块并通过网络向远程主机发送写入完成提示。
[0055]
如图4所示,固化程序函数由主程序调用,主程序根据固化程序标志位判断是否要调用固化程序函数,如果固化程序标志位为1则调用,为0则不调用实现将fpga待固化的程序写入到flash芯片中并校验烧写的正确性,清除固化程序标志位,完成后通过网络向远程主机发送固化完成提示。流程包括擦除flash芯片;向flash芯片中写入需要固化的程序;从flash芯片中读出写入的程序;判断写入与读出的程序是否一致,如果不一致则向远程主机发送错误提示并结束,如果一致则向远程主机发送固化完成提示;设置固化程序的标志位为0。
[0056]
如图5所示,为fpga固化软件的操作流程,fpga固化软件运行于远程主机上,用户可通过软件界面完成各种指令的发送和数据的录入,fpga固化软件将指令与录入数据通过以太网传送到fpga芯片中,并将各种操作的结果和网络提示信息显示在界面上。用户可通过fpga固化软件完成固化flash程序、清除存储模块和擦除flash芯片三种功能。固化flash程序功能包括加载待固化的fpga程序、点击“发送”按钮、等待接收界面收到写入完成提示、在发送界面输入“update flash”、点击“发送”按钮、接收界面收到固化完成提示表示固化成功。清除存储模块包括在发送界面输入“clear memory”、点击“发送”按钮、接收界面收到清除完成提示表示清除存储模块成功。擦除flash芯片包括在发送界面输入“erase flash”、点击“发送”按钮、接收界面收到擦除完成提示表示擦除flash成功。
[0057]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

技术特征:


1.一种基于以太网的fpga程序固化系统,其特征在于,包括包括用户设备、路由器和远程主机;其中,所述用户设备是用fpga实现特定功能的最终产品;所述远程主机是一台计算机,用于运行fpga固化软件对用户设备的fpga芯片进行程序固化;所述远程主机通过路由器和网线连接用户设备;所述用户设备包括fpga芯片、phy芯片、flash芯片、变压器;其中,所述fpga芯片包括处理器模块、存储模块、flash控制器模块、以太网控制器模块以及用户模块;fpga芯片中的处理器模块、存储模块、以太网控制器模块和flash控制器模块四种模块用于实现通过以太网固化fpga程序的功能;所述用户模块是fpga芯片程序的一部分,是用于实现用户设备功能的程序模块;所述处理器模块可运行主程序完成以太网固化fpga程序的功能;所述存储模块用于存储fpga芯片从以太网接收到的待固化的程序,同时也作为处理器模块中软件运行的缓存;所述以太网控制器模块用于实现以太网协议的mac层功能,同时实现fpga芯片与phy芯片的数据传输;所述flash芯片用于存储fpga芯片的程序;所述flash控制器模块用于操作flash芯片,包括flash芯片的擦除、读写操作,以及实现fpga芯片与flash芯片的数据传输控制;所述远程主机的以太网接口通过路由器和网线连接到用户设备的变压器的一端,变压器完成以太网信号的电平转换,变压器的另一端与phy芯片连接,phy芯片用于完成以太网的物理层协议,以太网的物理层协议用于实现fpga芯片中的以太网控制器模块与网线上传输的以太网信号的转换。2.如权利要求1所述的系统,其特征在于,所述用户设备中与远程主机通信的网络接口包括物理层和mac层,物理层用于实现mac层和网线上传输的以太网信号的转换,由phy芯片和变压器完成;mac层由fpga芯片中的以太网控制器模块完成。3.如权利要求1所述的系统,其特征在于,所述处理器模块运行主程序完成的以太网固化fpga程序的功能包括flash芯片和phy芯片初始化配置、网络协议栈实现、程序固化流程这些功能。4.一种如权利要求1或2或3所述fpga程序固化系统的工作方法,其特征在于,包括以下步骤:远程主机运行fpga固化软件,用户通过fpga固化软件加载待固化的fpga程序,并将fpga程序通过网线传送到fpga芯片中;fpga芯片运行后,其中的处理器模块通过以太网控制器模块接收到fpga程序并将其存储到存储模块中;待fpga芯片中的处理器模块收到远程主机通过以太网发送的固化程序指令后,处理器模块将存储模块中的fpga程序通过flash控制器模块烧写到flash芯片中,完成后通过以太网向远程主机发送烧写完成提示,从而完成fpga程序固化过程。5.如权利要求4所述的方法,其特征在于,其中,fpga芯片启动后首先运行处理器模块,待处理器模块加载运行主程序,主程序执行以下流程:初始化时钟及中断,时钟用于定时,中断用于以太网数据的接收;初始化ip协议栈,包括缓存设置、接口设置、模式设置;等待dhcp连接,如果20秒内没有dhcp连接,则使用默认的ip地址,如果20秒内检测到dhcp连接,则使用dhcp服务器分配的ip地址;初始化flash芯片,包括设置flash读写模式、读写速率;建立并启动tcp服务器;等待接收网络数据,如果收到网络数据会触发中断,主程序跳转到
网络接收函数接收网络数据;如果接收到的网络数据不是固化程序指令,则继续等待网络数据,如果是固化程序指令,则调用固化程序函数将fpga程序固化到flash芯片中,所述固化程序函数、网络接收函数均在处理器模块中运行。6.如权利要求5所述的方法,其特征在于,其中,当用户设备通过路由器连接到远程主机时,使用dhcp功能,程序等待路由器自动分配一个ip地址给用户设备;当用户设备没有连接路由器而直接连接远程主机时,此时程序启动后如果20秒内未收到dhcp主机分配的ip地址,则判定远程主机无dhcp功能,程序自动使用默认的ip地址。7.如权利要求6所述的方法,其特征在于,所述网络接收函数通过中断调用,用于接收并解析网络数据,网络数据包括指令和fpga程序,指令包括固化指令、清除存储模块指令、擦除flash指令;如果网络接收函数解析出来的网络数据是固化程序指令,则设置固化程序标志位为1;如果是清除存储模块指令,则清除存储模块中的数据,并通过网络向远程主机发送清除完成提示;如果是擦除flash芯片指令,则擦除flash芯片,并通过网络向远程主机发送擦除完成提示;如果不是以上三种数据,则认为是fpga待固化的程序,将其写入存储模块并通过网络向远程主机发送写入完成提示。8.如权利要求7所述的方法,其特征在于,所述固化程序函数由主程序调用,主程序根据固化程序标志位判断是否要调用固化程序函数,如果固化程序标志位为1则调用,为0则不调用,实现将fpga待固化的程序写入到flash芯片中并校验烧写的正确性,清除固化程序标志位,完成后通过网络向远程主机发送固化完成提示。9.如权利要求8所述的方法,其特征在于,用户可通过fpga固化软件的软件界面完成各种指令的发送和数据的录入,fpga固化软件将指令与录入数据通过以太网传送到fpga芯片中,并将各种操作的结果和网络提示信息显示在界面上;用户可通过fpga固化软件完成固化flash程序、清除存储模块和擦除flash芯片三种功能。10.一种如权利要求1或2或3所述系统在fpga开发设计技术领域中的应用。

技术总结


本发明涉及一种基于以太网的FPGA程序固化系统,属于FPGA开发设计技术领域。本发明在FPGA芯片中设计处理器模块、存储模块、网络控制器模块和FLASH控制器模块四种模块并编写处理器模块程序,实现了通过通用的以太网远程固化FPGA程序的功能,该系统解决了传统的FPGA程序固化中需要现场拆解设备并连接烧写器才能固化程序的问题。固化程序的问题。固化程序的问题。


技术研发人员:

汤晓磊 胡亮

受保护的技术使用者:

天津津航计算技术研究所

技术研发日:

2022.09.06

技术公布日:

2022/11/18

本文发布于:2024-09-20 15:35:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/3354.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   模块   芯片   以太网
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议