一种避免漏采样的fpga在线调试方法
技术领域
本发明涉及FPGA
技术领域
,尤其是一种避免漏采样的FPGA在线调试方法。背景技术
当用户电路在FPGA上实现并在FPGA上正常运行时,为了确定用户电路在FPGA上的运行过程正确且符合设计思想,通常需要观测用户电路内部某些特定信号的行为或波形。为了实现这个功能,目前的做法是在FPGA上增加监控电路,当用户电路在FPGA上正常运行时,利用监控电路采样用户电路的待观测信号并输出到FPGA进行实时观测监控继而实现相应的调试。
一般的做法是,利用一个触发信号触发监控电路开始对待观测信号进行采样,当监控电路检测到触发信号满足预设条件时开始按照采样时钟采样第一个数据,理论上触发信号满足预设条件的时刻所在的时钟周期就应该是监控电路开始采样第一个数据的时刻。但是实际上因为时延问题,会导致监控电路对触发信号有一个响应过程,该响应过程的时延如果超过时钟周期则会导致跟不上采样时钟的速度,出现触发信号在当前时钟周期满足预设条件,但监控电路经过响应过程后在下一个时钟周期才开始采样,会导致第一个数据未被采样到,采样不准确,从而导致观测监控的结果也不准确,调试的难度也较大。
发明内容
本发明人针对上述问题及技术需求,提出了一种避免漏采样的FPGA在线调试方法,本发明的技术方案如下:
一种避免漏采样的FPGA在线调试方法,该方法包括:
在对用户电路进行调试时,将由用户电路和监控电路构成的全局电路对应的配置码流加载到FPGA上,FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路,监控电路连接用户电路;
在用户电路的运行过程中,监控电路对触发信号的响应过程所导致的触发时延大于采样时钟的时钟周期,触发信号用于触发监控电路按照采样时钟从待观测信号的预设时钟周期的数据开始采样;监控电路根据触发时延调整采样策略和/或调整待观测信号到达监控电路的时钟周期,使得采样策略与待观测信号的预设时钟周期的数据到达监控电路的时钟周期匹配对齐并采样存储,采样完成后,监控电路利用FPGA内建的边界扫描链将采样到的数据传输到FPGA外进行监控调试。
其进一步的技术方案为,监控电路至少包括触发模块和采样模块,触发模块响应于触发信号产生采样使能信号,采样模块响应于采样使能信号对待观测信号采样,则调整采样策略包括:
调整触发模块对触发信号的响应机制使得触发模块提前产生采样使能信号;
和/或,调整采样模块对采样使能信号的响应机制使得采样模块提前对待观测信号采样。
其进一步的技术方案为,当监控电路通过调整采样模块对采样使能信号的响应机制使得采样模块提前对待观测信号采样时:
在用户电路的运行过程中,采样模块按照采样时钟对待观测信号进行采样,并按照队列形式覆盖存储N个数据;
当触发模块检测到触发信号满足实际触发条件时生成采样使能信号并发送给采样模块,实际触发条件是触发信号在预设时钟周期所要满足的条件,则采样使能信号经过触发时延后在预设时钟周期之后的第N个时钟周期到达采样模块;
采样模块在预设时钟周期之后的第N个时钟周期接收到采样使能信号,并按照采样时钟对待观测信号进行采样并依次存储。
其进一步的技术方案为,当监控电路通过调整触发模块对触发信号的响应机制使得触发模块提前产生采样使能信号时:
当触发模块检测到触发信号满足预触发条件时生成采样使能信号并发送给采样模块,预触发条件是触发信号在预设时钟周期之前的第N个时钟周期所要满足的条件;
采样模块在预设时钟周期接收到采样使能信号,开始按照采样时钟对待观测信号进行采样并依次存储。
其进一步的技术方案为,当监控电路调整待观测信号到达监控电路的时钟周期时,监控电路还包括第一打拍寄存器,触发模块内置第二打拍寄存器:
第一打拍寄存器对待观测信号打N拍,待观测信号的预设时钟周期的数据延后N个时钟周期到达采样模块;
触发信号在第二打拍寄存器的作用下经过N拍后被触发模块检测到满足实际触发条件并生成采样使能信号并传输给采样模块,实际触发条件是触发信号在预设时钟周期所要满足的条件,且每一拍的时延小于采样时钟的时钟周期;
采样模块在预设时钟周期之后的第N个时钟周期接收到采样使能信号和待观测信号,并开始按照采样时钟对待观测信号进行采样并依次存储。
其进一步的技术方案为,用户电路至少包括两个采样模块,各个采样模块均对应同一个触发模块或存在至少两个采样模块对应不同的触发模块,每个采样模块及其对应的触发模块之间的信号传输路径所产生的时延小于预定时延。
其进一步的技术方案为,采样时钟通过全局时钟树提供给各个采样模块和触发模块。
其进一步的技术方案为,在用户电路的运行过程中,监控电路按照至少两种不同的触发响应机制对待观测信号进行采样,不同的触发响应机制包括触发信号不同和/或使用的触发条件不同;监控电路在至少两种不同的触发响应机制下的响应过程所导致的触发时延不同;
则当触发响应机制下的响应过程所导致的触发时延小于采样时钟的时钟周期时,监控电路在预设时钟周期响应于触发信号开始按照采样时钟对待观测信号进行采样并依次存储。
其进一步的技术方案为,在监控电路中,至少两个触发模块共用同一个采样模块,不同的触发模块具有不同的触发响应机制,并分别控制采样模块按照至少两种不同的触发响应机制对待观测信号进行采样;
或者,至少两个触发模块具有各自对应的采样模块,不同的触发模块具有不同的触发响应机制,并分别控制各自对应的采样模块按相应的触发响应机制对待观测信号进行采样。
其进一步的技术方案为,当监控电路中包括至少两个采样模块时:
各个采样模块将采样到的数据均存储在同一个样本存储模块中;
或者,存在至少两个采样模块将采样到的数据存储在不同的样本存储模块中,则样本存储模块采用BRAM和/或分布式存储实现。
其进一步的技术方案为,FPGA基于配置码流中与用户电路对应的第一部分利用第一类资源形成用户电路、并基于配置码流中与监控电路对应的第二部分利用第二类资源形成监控电路;
第一类资源和第二类资源分别表示FPGA内部不同部分的可编程逻辑资源,第一类资源是FPGA内部在未对用户电路进行调试时用于实现用户电路的可编程逻辑资源,且第一类资源和第二类资源中具有相同资源类型的可编程逻辑资源的硬件结构相同。
本发明的有益技术效果是:
本申请公开了一种避免漏采样的FPGA在线调试方法,该方法可以有效避免因监控电路对触发信号的响应过程时延较大而导致的漏采样问题,可以保证数据采样的全面性和准确性,从而有利于提高调试的准确性。
附图说明
图1是本申请的FPGA在线调试方法的流程示意图。
图2是监控电路和用户电路的一种电路结构图。
图3是另一个实施例中的监控电路和用户电路的电路结构图。
图4是FPGA内部的可编程逻辑资源的排布示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种避免漏采样的FPGA在线调试方法,请参考图1,该方法的实现过程如下:
在对用户电路进行调试时,将由用户电路和监控电路构成的全局电路对应的配置码流加载到FPGA上。本申请中的全局电路是需要利用FPGA上的可编程逻辑资源实现并在FPGA上运行的全部电路结构,全局电路至少包括用户电路,用户电路是全局电路中用于实现用户设计功能的电路结构。当对用户电路进行调试时,全局电路除了包括用户电路之外,还包括连接至用户电路的监控电路,监控电路是全局电路中用于实现对用户电路的信号监控功能的电路结构,则在这种情况中全局电路由用户电路和监控电路构成。
本领域技术人员知道的是,在输入全局电路后,需要经过综合、装箱、布局、布线和时序分析等步骤才能生成全局电路对应的配置码流,本申请对这些中间步骤不再详细展开描述。
FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路,监控电路连接用户电路。在用户电路的运行过程中,监控电路对触发信号的响应过程所导致的触发时延大于采样时钟的时钟周期,其中,触发信号用于触发监控电路按照采样时钟从待观测信号的预设时钟周期的数据开始采样。触发时延可以大于一个时钟周期,也可以大于多个时钟周期,因此可以定义为:监控电路对触发信号的响应过程所导致的触发时延大于N个时钟周期且小于N+1个时钟周期,N≥1。则如背景技术部分所述,由于触发时延的存在,如果按照常规采样过程来响应并采样,则可能会导致前N个数据漏采样的问题。
而在本申请中,监控电路根据触发时延调整采样策略和/或调整待观测信号到达监控电路的时钟周期,使得采样策略与待观测信号的预设时钟周期的数据到达监控电路的时钟周期匹配,然后按照与待观测信号的预设时钟周期的数据到达监控电路的时钟周期匹配对齐的采样策略对待观测信号采样存储。采样完成后,监控电路利用FPGA内建的边界扫描链将采样到的数据传输到FPGA外进行监控调试。通常设定当采样数据达到预设的总样本数时完成一次采样,总样本数不超过监控电路的存储容量。
请参考图2,可选的,监控电路至少包括触发模块和采样模块,还包括样本存储模块和样本输出模块,触发模块主要由寄存器以及LUT形成的触发器实现,样本输出模块主要由移位寄存器实现。其中,触发模块响应于触发信号产生采样使能信号,采样模块响应于采样使能信号对待观测信号进行采样,采样到的数据存储在样本存储模块中。采样完成后,样本输出模块利用FPGA内建的边界扫描链将采样到的数据传输到FPGA外进行监控调试。
基于该常用的结构,监控电路对触发信号的响应过程所导致的触发时延通常来自于触发模块,也即触发模块触发的太慢,其响应于触发信号产生采样使能信号的过程的时延较长。由此监控电路在调整采样策略时,可以调整触发模块和/或采样模块的工作机制使采样动作提前执行,具体的,调整触发模块对触发信号的响应机制使得触发模块提前产生采样使能信号,和/或,调整采样模块对采样使能信号的响应机制使得采样模块提前对待观测信号采样。而调整待观测信号到达监控电路的时钟周期时,通常是对待观测信号进行打拍处理使其延后到达。本申请分别通过如下不同的实施例进行介绍:
1、在一个实施例中,监控电路通过调整采样模块对采样使能信号的响应机制使得采样模块提前对待观测信号采样时。具体的:
在用户电路的运行过程中,即便没有接收到采样使能信号,采样模块也按照采样时钟对待观测信号进行采样,但此时按照队列形式覆盖存储N个数据,也即采样模块在接收到采样使能信号之前就开始采样,并且采样到的这些数据始终占用N个存储位置,而按照队列形式存储的方式可以保证这N个数据按照采样顺序存储,通常在预设时钟周期之前至少N个时钟周期就开始采样。
比如N为1时,在第一个时钟周期,采样模块采样数据A1进行存储;在第二个时钟周期,采样模块采样数据A2覆盖数据A1,也即将数据A1删除、将数据A2进行存储;在第三个时钟周期,采样模块采样数据A3覆盖数据A2,依次类推。
再比如N为3时,在第一个时钟周期,采样模块采样数据A1存储在第三个存储位置。在第二个时钟周期,数据A1移动至存储在第二个存储位置,采样模块采样数据A2存储在第三个存储位置。在第三个时钟周期,数据A1移动至存储在第一个存储位置,数据A2移动至存储在第二个存储位置,采样模块采样数据A3存储在第三个存储位置。在第四个时钟周期,数据A2移动至存储在第一个存储位置覆盖数据A1,数据A3移动至存储在第二个存储位置,采样模块采样数据A4存储在第三个存储位置,依次类推。
当触发模块检测到触发信号满足实际触发条件时生成采样使能信号并发送给采样模块。其中,实际触发条件是触发信号在预设时钟周期所要满足的条件,则采样使能信号经过触发时延后在预设时钟周期之后的第N个时钟周期到达采样模块。由此,采样模块在预设时钟周期之后的第N个时钟周期接收到采样使能信号,并按照采样时钟对待观测信号进行采样并依次存储,在接收到采样使能信号之后。
也即在接收到采样使能信号之前,采样模块将最近N个时钟周期采样的N个数据按照队列形式依次覆盖存储在样本存储模块中的第N个存储位置~第一个存储位置;在接收到采样使能信号之后,采样模块从第N+1个存储位置开始依次正常存储各个数据,而不再采用覆盖存储的形式。
比如以上述N=1的举例,假设第一个时钟周期是预设时钟周期。在第一个时钟周期,采样模块采样数据A1进行存储,采样使能信号经过触发延时后在预设时钟周期之后的第一个时钟周期到达采样模块、也即在第二个时钟周期到达预设时钟周期。在第二个采样周期,采样模块接收到采样使能信号并开始采样,此时采样到的第一个数据不再是数据A1而是数据A2,后续继续采样数据A3依次类推并存储。但由于在接收到采样使能信号之前已经采样存储了数据A1,因此仍然可以采样到所有数据,避免漏采样。
2、在另一个实施例中,监控电路通过调整触发模块对触发信号的响应机制使得触发模块提前产生采样使能信号时。
当触发模块检测到触发信号满足预触发条件时生成采样使能信号并发送给采样模块。其中,预触发条件是触发信号在预设时钟周期之前的第N个时钟周期所要满足的条件,也即在触发信号满足实际触发条件之前就产生采样使能信号,经过触发时延后,采样使能信号正好在预设时钟周期到达采样模块。因此采样模块在预设时钟周期接收到采样使能信号,开始按照采样时钟对待观测信号进行采样并依次存储。
比如以上述举例的N=1为例,假设预设时钟周期是第二个时钟周期,预期采样结果是从数据A2开始采样,如果不按该实施例的方法,则当在第二个时钟周期检测到触发信号满足实际触发条件生成采样使能信号,由于触发延时,采样模块会在第三个时钟周期从数据A3开始采样。而在按照该实施例的方法,则会在第一个时钟周期就检测到触发信号满足预触发条件生成采样使能信号,然后经过触发时延,正好在第二个时钟周期到达采样模块从数据A2开始采样。
3、在另一个实施例中,监控电路调整待观测信号到达监控电路的时钟周期时,监控电路还包括第一打拍寄存器,触发模块内置第二打拍寄存器,如图3所示。
第一打拍寄存器对待观测信号打N拍,待观测信号的预设时钟周期的数据延后N个时钟周期到达采样模块。
而触发信号在第二打拍寄存器的作用下经过N拍后被触发模块检测到满足实际触发条件并生成采样使能信号并传输给采样模块,实际触发条件是触发信号在预设时钟周期所要满足的条件,且每一拍的时延小于采样时钟的时钟周期。
由此,采样模块会在预设时钟周期之后的第N个时钟周期接收到采样使能信号和待观测信号,并开始按照采样时钟对待观测信号进行采样并依次存储。
比如以上述举例的N=1为例,假设预设时钟周期是第一个时钟周期,预期采样结果是从数据A1开始采样,如上所述,由于触发延时,若不做任何处理,采样模块会在第二个时钟周期开始采样,但待观测信号仍会在第一个时钟周期准时达到采样模块,所以导致采样模块从数据A2开始采样。而在采用该实施例的方法后,虽然采样模块还是会在第二个时钟周期开始采样,但待观测信号被打拍处理、延后一个时钟周期到达,此时采样模块采样可以顺利从数据A1开始采样。
比如时钟周期为1.5ns,触发时延为2.0ns,按照常规做法,采样使能信号在预设时钟周期之后2.0ns到达采样模块,因此要下个时钟周期到来是才会触发。而按照本实施例的做法,插入打拍寄存器后,虽然信号慢一拍产生,但时延因减半而短于时钟周期,比如在上述举例中,首先经过1.0ns的时延在预设时钟周期送入打拍寄存器,然后在下一个时钟周期再送达采样模块触发采样,而待观测信号也被打一拍在下一个时钟周期到达。
需要说明的是,上述三个实施例所提供的使得采样策略与待观测信号的预设时钟周期的数据到达监控电路的时钟周期匹配对齐的做法可以按照各个实施例单独实施事项,但也可以互相之间进行组合实现,比如可以同时提前生成采样使能信号又提前采样。
另外可选的在另一个实施例中,在用户电路的运行过程中,还可以触发监控电路多次采样,则在用户电路的运行过程中,监控电路按照至少两种不同的触发响应机制对待观测信号进行采样。监控电路在至少两种不同的触发响应机制下的响应过程所导致的触发时延不同。不同的触发响应机制包括触发信号不同和/或使用的触发条件不同,比如当触发信号位宽不同时可能会导致触发时延不同,比如一个触发响应机制下,需要检测是否满足“a==b”来触发,而在另一个触发响应机制下,需要检测是否满足“a1、a2、a3==b1、b2、b3”来触发,由于后一种触发响应机制下需要比较的位数较大,因此导致的时延可能会更大。再比如,一个触发响应机制下,需要检测是否满足“a==b”来触发,而在另一个触发响应机制下,需要检测是否满足“a==(b+5)”,由于后一种触发响应机制下比较过程更复杂,因此导致的时延可能会更大。
则在具有不同触发时延的触发响应机制下,监控电路可以按照不同的方式进行工作;当触发时延大于采样时钟的时钟周期时,按照上述方法调整采样策略和/或调整待观测信号到达监控电路的时钟周期实现对齐。而当触发响应机制下的响应过程所导致的触发时延小于采样时钟的时钟周期时,监控电路在预设时钟周期响应于触发信号开始按照采样时钟对待观测信号进行采样并依次存储,也即无需调整,按照常规做法采样即可。
在该实施例中,至少两个触发模块共用同一个采样模块,不同的触发模块具有不同的触发响应机制,并分别控制采样模块按照至少两种不同的触发响应机制对待观测信号进行采样。或者,至少两个触发模块具有各自对应的采样模块,不同的触发模块具有不同的触发响应机制,并分别控制各自对应的采样模块按相应的触发响应机制对待观测信号进行采样。当监控电路中包括至少两个采样模块时,各个采样模块将采样到的数据均存储在同一个样本存储模块中;或者,存在至少两个采样模块将采样到的数据存储在不同的样本存储模块中,则样本存储模块采用BRAM和/或分布式存储实现。
可选的,监控电路的触发时延除了上述提到的触发模块触发太慢导致之外,采样使能信号在触发模块和监控模块之间的传输也存在传输时延,则除了可以通过上述各个实施例提供的方法解决触发模块触发太慢的问题之外,在另一个实施例中,通过信号和条件复制,使得每组待观测信号的采样模块附近有触发模块。也即用户电路至少包括两个采样模块,各个采样模块均对应同一个触发模块或存在至少两个采样模块对应不同的触发模块,每个采样模块及其对应的触发模块之间的信号传输路径所产生的时延小于预定时延,如此可避免远距离分布触发模块造成时延过长的采样错误。在该实施例中可选的,采样时钟通过全局时钟树提供给各个采样模块和触发模块,从而可以保证分布多个地方后,时钟偏斜最小。
在本申请的一个实施例中,除了按照常规的方法将全局电路在FPGA实现之外,还可以通过如下方法实现:
在该实施例提供的方法中,预先将FPGA内部的可编程逻辑资源划分为两类,第一类资源和第二类资源分别表示FPGA内部不同部分的可编程逻辑资源,用户电路和监控电路有各自专属的一类可编程逻辑资源,而且用户电路和监控电路分别由各自对应的一类资源来实现。因此第一类资源既是FPGA内部在未对用户电路进行调试时用于实现用户电路的可编程逻辑资源,也是FPGA内部在对用户电路进行调试时用于实现用户电路的可编程逻辑资源,而第二类资源是FPGA内部在对用户电路进行调试时用于实现监控电路的可编程逻辑资源。每一类资源包含的基本模块的资源类型和数量根据对应的电路预估的规模所确定,一般来说用户电路的规模大于监控电路,因此用户电路对应的第一类资源所包含的可编程逻辑资源的资源规模大于监控电路对应的第二类资源。且第一类资源和第二类资源中具有相同资源类型的可编程逻辑资源的硬件结构相同,比如第一类资源中的CLB和第二类资源中的CLB的硬件结构相同,也即本实施例并没有对FPGA内部的可编程逻辑资源的硬件结构进行修改,只是对可编程逻辑资源做了划分。
FPGA内部的可编程逻辑资源包括多个基本模块及环于每个基本模块分布的互连资源(INT),每个基本模块是一种资源类型的可编程逻辑资源,可编程逻辑资源的资源类型主要包括CLB(基本逻辑单元)、BRAM、IOB、DSP和PC等,每种资源类型包括若干个基本模块。比如图4中,FPGA内部的可编程逻辑资源包括15个基本模块属于三种不同的资源类型,其中有12个CLB、2个DSP和1个BRAM。每个基本逻辑单元CLB内部包括若干个逻辑部件,基本逻辑单元CLB内部包含的逻辑部件主要包括LUT(查找表)和REG(寄存器)。这些基本模块按一定的结构排布,比如以现有常规的Column-Based的FPGA架构为例,其中每个column都是相同资源类型的基本模块,如CLB column以CLB由上到下排列占满一个芯片column,BRAMcolumn以BRAM由上到下排列占满一个芯片column。
基于已经划分好的第一类资源和第二类资源,可以生成全局电路对应的配置码流,在对用户电路进行调试时,全局电路由用户电路和监控电路构成,配置码流包括基于第一类资源生成并与用户电路对应的第一部分以及基于第二类资源生成并与监控电路对应的第二部分。在未对用户电路进行调试时,全局电路仅由用户电路构成,此时配置码流基于FPGA内部的第一类资源生成并与用户电路对应,因此在对用户电路进行调试时用于实现用户电路的第一类资源,同时也是未对用户电路进行调试用于实现用户电路的可编程逻辑资源,由于在监控电路加入前后,都由第一类资源实现用户电路,因此用户电路的用户电路行为在监控电路加入前后基本保持一致。
FPGA内部哪些可编程逻辑资源属于第一类资源、哪些属于第二类资源是预先划分好的,可选的,本实施例提供如下几种不同的划分方式:
方式一、第一类资源和第二类资源共用同一个位置处的基本模块,这种方式主要针对资源类型为基本逻辑单元CLB的基本模块,也即FPGA内存在至少一个基本逻辑单元所包含的一部分逻辑部件属于第二类资源、其余另一部分逻辑部件属于第一类资源。在对一个基本逻辑单元内的逻辑部件进行划分时,又可以按照如下任一种情况进行划分:(1)在基本逻辑单元中随机选取一部分逻辑部件预留为第二类资源、剩余的逻辑部件作为第一类资源。(2)在基本逻辑单元中间隔式选取一部分逻辑部件预留为第二类资源、剩余的逻辑部件作为第一类资源。
由于CLB内部包括LUT和REG两类逻辑部件,因此在将一个基本逻辑单元所包含的一部分逻辑部件预留为第二类资源时,包括如下几种情况:
(a)仅将一部分LUT或者全部LUT预留为第二类资源、所有REG以及可能存在的未被选择的LUT作为第一类资源。
(b)仅将一部分REG或者全部REG预留为第二类资源、所有LUT以及可能存在的未被选择的REG作为第一类资源。
(c)同时选择一部分LUT以及一部分REG预留为第二类资源、剩余未被选择的LUT和REG作为第一类资源。这是最常用的一种方式,比如一个CLB内部包括8个LUT和16个REG,则可以划分2个LUT和4个REG属于第二类资源,剩余的6个LUT和12个REG属于第一类资源。
而在同时选取部分LUT和部分REG作为第二类资源时,LUT和REG可以均采用随机式选取预留,或者均采用间隔式选取预留,或者一个采用随机式选取预留、另一个采用间隔式选取预留。当LUT和REG均采用间隔式选取预留时,LUT和REG采用的间隔相同或不同,比如在间隔式选取LUT时,每隔1个LUT选取一个预留为第二类资源;在间隔式选取REG时,每隔2个LUT选取一个预留为第二类资源。
方式二、按所在位置对可编程逻辑资源所属类别进行划分,FPGA的预定区域内的所有可编程逻辑资源均属于第二类资源,而除预定区域之外的其余区域的可编程逻辑资源属于第一类资源。与第一种方式不同的是,在这种方式中,每一类资源分别独占一个位置处的基本单元,也即当将一个CLB划分给第二类资源时,该CLB内的所有LUT和REG都属于第二类资源。其中,预定区域有多种不同的含义,分别对应不同的划分方式,按如下分类:
第一类,一个预定区域仅包括一个基本模块:(1)预定区域是一个基本模块所包含的区域,则在这种情况中,预定区域内仅包括属于一种资源类型的一个基本模块。比如将一个CLB所在区域作为一个预定区域划分给第二类资源,或者将一个BRAM所在区域作为一个预定区域划分给第二类资源。
第二类,一个预定区域包括至少两个基本模块,又可以包括如下几种情况:
(2)预定区域是FPGA内每个行结构或列结构所包含的区域,在这种情况中,预定区域内包括属于同一资源类型的多个基本模块或者包括至少属于两种不同资源类型的多个基本模块。较为常用的是将FPGA内每个列结构作为一个预定区域,而在Column-Based的FPGA架构中,同一个列结构中的各个基本模块的资源类型相同,因此基于此,预定区域内包括多个属于同一资源类型的基本模块。
(3)预定区域是一个时钟域所包含的区域,在这种情况中,预定区域内包括属于同一资源类型的多个基本模块或者包括至少属于两种不同资源类型的多个基本模块。
(4)预定区域位于预定位置处且具有预定区域范围,在这种情况中,预定区域内包括属于同一资源类型的多个基本模块或者包括至少属于两种不同资源类型的多个基本模块。也即预定区域根据需要自定义划分,预定位置可以根据需要选取任意合适的位置,比如选取全片的左下角、全片的中央、全片的右上角、时钟域的最高行/最低行等等。预定区域范围也可以根据需要配置合适的大小,比如配置预定区域范围包含8*6个CLB的范围。
在实际应用时,可以仅将一个预定区域内的所有可编程逻辑资源预留给第二类资源。或者,将多个预定区域内的所有可编程逻辑资源预留给第二类资源,则FPGA内包括若干个位于不同位置处的预定区域,其中BRAM的位置通常靠近同一类资源中相应的CLB,或者靠近时钟域的边界。通常情况下,第一类资源和第二类资源中分别均包括多种资源类型的基本模块,而上述情况(1)中一个预定区域仅包含一种资源类型的一个基本模块,因此尤其是当单个预定区域的区域范围如上述情况(1)时,FPGA内通常包括多个预定区域,同样的,当单个预定区域的区域范围如上述情况(2)、(3)和(4)时,FPGA内通常也会包括多个预定区域。
当FPGA内包括多个预定区域时,这多个预定区域位于不同位置处,每个预定区域内包含一个或多个基本模块,每个预定区域内包含的基本模块属于一种或多种资源类型,各个预定区域包含相同资源类型的基本模块,或者存在至少两个预定区域包括不同资源类型的基本模块,比如一个预定区域内仅包括CLB、另一个预定区域内仅包括BRAM。
每个预定区域所包含的区域范围为上述(1)~(4)中任一种,各个预定区域的区域范围均相同,或者存在至少两个预定区域具有不同的区域范围,其中,包含的资源类型相同的两个预定区域具有不同的区域范围,比如一个预定区域以CLB为单位仅包含一个CLB,另一个预定区域以自定义的预定区域范围为单位包括8*6个CLB。或者,包含的资源类型不同的两个预定区域具有不同的区域范围,这是更为常用的做法,比如一个预定区域以自定义的预定区域范围为单位包括8*6个CLB,另一个预定区域以BRAM Column为单位包括1个BRAM。
FPGA内的多个预定区域随机分布在FPGA内或者间隔式分布在FPGA内,当多个预定区域分隔式分布时,可以是所有预定区域之间依次间隔分布,或者更为常用的,包含相同资源类型且具有相同区域范围的预定区域构成一组,每一组内的各个预定区域相互之间间隔分布,不同组采用的间隔相同或不同。比如10个以CLB为单位的预定区域构成一组,每两个预定区域之间的间隔为128个CLB;8个以CLB Column为单位的预定区域构成一组,每两个预定区域之间的间隔为64个CLB Column;5个以时钟域为单位的预定区域构成一组,每两个预定区域之间的间隔为12个时钟域;3个以BRAM Column为单位的预定区域构成一组,每两个预定区域之间的间隔为2个BRAM Column。由此可见,包含的资源类型不同和/或涵盖的区域范围不同的预定区域在间隔式分布式采用的间隔相同或不同。
本申请中的FPGA既可以是单裸片FPGA也可以是多裸片FPGA,多裸片FPGA内包括多个具有连接关系的FPGA裸片。不管是对于单裸片FPGA还是多裸片FPGA,均可以采用上述方式一或方式二提供的任意一种方法对FPGA上的可编程逻辑资源划分第一类资源和第二类资源。对于单裸片FPGA,划分得到的第一类资源和第二类资源均位于同一个裸片上。而对于多裸片FPGA,划分得到的每一类资源分别包括一个或多个裸片上的可编程逻辑资源,也即预定区域仅位于其中一个FPGA裸片上或者存在至少两个FPGA裸片上均包含预定区域,且两类资源所覆盖的裸片相同或不同。则在该实施例中,对于多裸片FPGA在上述方式二中,当将多裸片FPGA的预定区域内的所有可编程逻辑资源划分为第二类资源时,预定区域均位于多裸片FPGA中的同一个FPGA裸片上,也即专门预留一个FPGA裸片上的可编程逻辑资源给第二类资源、其他FPGA裸片上的可编程逻辑资源均划分给第一类资源。需要说明的是,若一个FPGA裸片的可编程逻辑资源不能满足所需的第二类资源的资源需求,也可以预留多个FPGA上的可编程逻辑资源给第二类资源,但实际情况中由于监控电路的电路规模不会太大,因此第二类资源的资源需求通常不会太大,一个FPGA裸片上的可编程逻辑资源就可以满足需求。
在上述实施例中,预定区域所包含的可编程逻辑资源可以与所在的FPGA裸片所包含的可编程逻辑资源相同,也即将FPGA裸片上的全部可编程逻辑资源全部划分为第二类资源。或者,预定区域所包含的可编程逻辑资源少于所在的FPGA裸片所包含的可编程逻辑资源,也即只将FPGA裸片上的部分可编程逻辑资源划分为第二类资源,则可以将FPGA裸片上的其余可编程逻辑资源划分为第一类资源,因此存在部分第一类资源与全部第二类资源共用同一个FPGA裸片。比如多裸片FPGA中包括4个具有连接关系的FPGA裸片分别记为裸片1、裸片2、裸片3和裸片4,一种示例性的做法是第二类资源包括裸片1上的全部可编程逻辑资源,第一类资源包括裸片2、裸片3和裸片4共三个裸片上的全部可编程逻辑资源;另一种示例性的做法是第二类资源包括裸片1上的部分可编程逻辑资源,第一类资源包括裸片1上剩余其他的可编程逻辑资源以及裸片2、裸片3和裸片4共三个裸片上的全部可编程逻辑资源。在该实施例中,与第二类资源共用同一个FPGA裸片的第一类资源用于形成用户电路中的预定电路部分,预定电路部分是预先配置的用户电路中位于非关键路径上的电路部分,非关键路径是指时序余量达到预设阈值的路径,这样即便监控电路对用户电路产生一些影响,也基本不会导致用户电路的用户电路行为发生变化。
需要注意的是,将可编程逻辑资源划分为两类时同样需要满足装箱约束,尤其是当第一类资源和第二类资源共用同一个位置处的CLB时需要考虑满足CLB装箱约束,比如在将监控电路打散分别加入到CLB中占用属于第二类资源的逻辑部件时,加入每个CLB最多有2个时钟信号,而监控电路的REG需要连一路时钟信号,则只能将监控电路中的REG加入到至少有一路空余的时钟信号的CLB中。然后再正常进行布局布线等处理即可生成配置码流。
然后FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路时,基于配置码流中与用户电路对应的第一部分利用第一类资源形成用户电路、并基于配置码流中与监控电路对应的第二部分利用第二类资源形成监控电路,从而使得用户电路和监控电路相互独立。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:采样频率动态可变的FPGA在线调试方法