一种FPGA加速编程方法及装置与流程
- 国知局
- 2024-07-31 20:16:03
本发明涉及fpga编程,具体涉及一种fpga加速编程方法及装置。
背景技术:
1、在fpga芯片(现场可编程门阵列)的初始化阶段,使用cram(配置随机存取存储器)进行比特流编程是一个标准的过程。cram是fpga芯片中用于存储配置信息(即比特流)的专用存储器,负责存储用于配置fpga芯片内部逻辑单元的比特流数据。
2、随着fpga芯片的尺寸不断增加,其内部包含的组件数量也在急剧增长。这些组件可能包括逻辑门、查找表、存储器块、i/o接口等。在编程过程中,需要对这些组件逐一进行配置和测试,以确保它们能够正确地实现预定的功能。因此,fpga芯片尺寸的增加直接导致了编程时间的延长。其次,fpga芯片的比特流编程通常按顺序对所有组件进行一一编程和测试。这种顺序性的编程方式虽然确保了高覆盖率测试,即每个组件都得到了充分的验证,但也带来了时间上的开销。
3、在上述方案中,在fpga芯片的初始化阶段使用cram对整个fpga芯片进行编程需要很长时间,导致其编程效率较低,成本较高。
技术实现思路
1、有鉴于此,本发明提供了一种fpga加速编程方法及装置,以解决在fpga芯片的初始化阶段使用cram对整个fpga芯片进行编程需要很长时间,导致其编程效率较低,成本较高的问题。
2、第一方面,本发明提供了一种fpga加速编程方法,所述方法应用于目标fpga芯片中,所述目标fpga芯片包括cram模块、ip功能单元以及状态机,所述方法包括:
3、将所述目标fpga芯片中的所述cram模块划分成多个cram子模块;
4、将各个所述cram子模块与各自相邻近的ip功能单元进行绑定;
5、基于应用场景,获取所述目标fpga芯片的编程逻辑;所述编程逻辑指示了待编程的指定ip功能单元及所述指定ip功能单元的编程顺序;
6、根据所述编程逻辑以及所述cram子模块与所述ip功能单元的绑定关系,通过所述状态机对所述cram子模块中的指定cram子模块进行动态编程。
7、上述方案通过将cram模块划分为多个cram子模块,并且使用状态机来独立和动态地编程指定cram子模块,根据应用场景选择指定cram子模块进行编程,或者同时编程多个cram子模块,以实现并行处理,能够在fpga应用中加速编程的时间,提高灵活性,这种灵活性使得系统能够根据不同的应用场景和需求进行快速调整和优化。
8、在一种可选的实施方式中,所述将所述目标fpga芯片中的所述cram模块划分成多个cram子模块,包括:
9、对所述目标fpga芯片中的所述cram模块进行平均划分处理,以将所述目标fpga芯片中的所述cram模块平均划分成多个cram子模块;每个所述cram子模块中均包括有各自独立的时钟和数据读写传输路径。
10、在一种可选的实施方式中,所述基于应用场景,获取所述目标fpga芯片的编程逻辑,包括:
11、获取所述目标fpga芯片的应用场景;
12、根据所述应用场景,获取rtl寄存器传输级代码;
13、对所述rtl寄存器传输级代码进行内电路分析处理,以获取所述目标fpga芯片的编程逻辑。
14、在一种可选的实施方式中,所述根据所述编程逻辑以及所述cram子模块与所述ip功能单元的绑定关系,通过所述状态机对所述cram子模块中的指定cram子模块进行动态编程,包括:
15、基于所述编程逻辑,获取待编程的指定ip功能单元以及所述指定ip功能单元的编程顺序;
16、基于所述cram子模块与所述ip功能单元的绑定关系,获取所述指定ip功能单元对应的指定cram子模块;
17、基于所述编程顺序,通过状态机对所述指定cram子模块进行动态编程。
18、在一种可选的实施方式中,在所述通过所述状态机对所述cram子模块中的指定cram子模块进行动态编程时,所述方法还包括:
19、配置目标时钟信号;所述目标时钟信号用于驱动所述状态机以及数据传输过程;
20、同时使用所述目标时钟信号的上升沿及下降沿,通过状态机对所述cram子模块中的各个指定cram子模块进行多方向移位编程;所述状态机位于所述fpga芯片的中间位置处。
21、上述方案同时使用时钟的上升沿和下降沿来触发编程操作,可以显著提高编程速度,并且,将比特流在中心位置输入,并在上下左右四个方向上移位比特流数据,可以进一步加快数据传输和编程速度。这种设计使得系统能够在更短的时间内完成cram的编程和配置。
22、在一种可选的实施方式中,在所述通过所述状态机对所述cram子模块中的指定cram子模块进行动态编程时,所述方法还包括:
23、若所述状态机的写入数据和回读数据不同,则生成错误映射图;
24、根据所述错误映射图,筛选掉所述指定cram子模块中的缺陷位。
25、上述方案中的cram子模块可以执行自检写读操作,并生成错误映射图以跳过缺陷位。这种自检机制能够及时发现和修复cram模块中的错误,确保数据的准确性和可靠性。通过跳过缺陷位,可以提高cram模块的良率,降低系统故障率和维护成本。
26、在一种可选的实施方式中,所述方法还包括:
27、确定关键ip功能单元以及所述关键ip功能单元的关键控制位;
28、对所述关键控制位配置冗余比特位,并进行三态控制处理,以在所述关键控制位的比特位存在缺陷时,通过冗余比特位进行替代。
29、上述方案通过冗余比特位以及三态控制处理可以实现当其中一个比特位存在缺陷时,另一个冗余比特位可以通过三态控制取代,进一步提高良率。
30、第二方面,本发明提供了一种fpga加速编程装置,所述装置应用于目标fpga芯片中,所述目标fpga芯片包括cram模块、ip功能单元以及状态机,所述装置包括:
31、cram划分模块,用于将所述目标fpga芯片中的所述cram模块划分成多个cram子模块;
32、功能单元绑定模块,用于将各个所述cram子模块与各自相邻近的ip功能单元进行绑定;
33、编程逻辑获取模块,用于基于应用场景,获取所述目标fpga芯片的编程逻辑;所述编程逻辑指示了待编程的指定ip功能单元及所述指定ip功能单元的编程顺序;
34、动态编程模块,用于根据所述编程逻辑以及所述cram子模块与所述ip功能单元的绑定关系,通过所述状态机对所述cram子模块中的指定cram子模块进行动态编程。
35、第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的一种fpga加速编程方法。
36、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的一种fpga加速编程方法。
37、第五方面,本发明提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的一种fpga加速编程方法。
38、本发明提供的技术方案可以包括以下有益效果:
39、本发明通过将cram模块划分为多个cram子模块,并且使用状态机来独立和动态地编程指定cram子模块,根据应用场景选择指定cram子模块进行编程,或者同时编程多个cram子模块,以实现并行处理,能够在fpga应用中加速编程的时间,提高灵活性,这种灵活性使得系统能够根据不同的应用场景和需求进行快速调整和优化;
40、本发明同时使用时钟的上升沿和下降沿来触发编程操作,可以显著提高编程速度,并且,将比特流在中心位置输入,并在上下左右四个方向上移位比特流数据,可以进一步加快数据传输和编程速度。这种设计使得系统能够在更短的时间内完成cram的编程和配置;
41、本发明中的cram子模块可以执行自检写读操作,并生成错误映射图以跳过缺陷位。这种自检机制能够及时发现和修复cram模块中的错误,确保数据的准确性和可靠性。通过跳过缺陷位,可以提高cram模块的良率,降低系统故障率和维护成本;
42、本发明通过冗余比特位以及三态控制处理可以实现当其中一个比特位存在缺陷时,另一个冗余比特位可以通过三态控制取代,进一步提高良率。
本文地址:https://www.jishuxx.com/zhuanli/20240731/185628.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表