基于共享管脚分时观测fpga内部不同信号的方法
技术领域
本发明涉及FPGA
技术领域
,尤其是一种基于共享管脚分时观测FPGA内部不同信号的方法。背景技术
当用户电路在FPGA上实现并在FPGA上正常运行时,为了确定用户电路在FPGA上的运行过程正确且符合设计思想,通常需要观测用户电路内部某些特定信号的行为或波形。
目前的做法是,先在FPGA上实现用户电路并完成布局布线,此时FPGA内部的部分资源会被用户电路占用,但仍有部分空置未被使用的资源。然后选定用户电路的待观测信号,其已对应到FPGA内部布局布线资源,将待观测信号经由FPGA内部未被占用的绕线资源连接到未被占用的管脚作为观测管脚。将选定的待观测信号的绕线路径及观测管脚加入到用户电路的布局布线成为新的布局布线,对新的布局布线生成码流下载到FPGA正常运行,此时即可由观测管脚对待观测信号进行观测。
但在这种做法中,若FPGA实现用户电路后无未被占用的管脚可使用,或者待观测信号无法利用未被占用的绕线资源连接到相应管脚,则无法实现上述功能,因此现有的这种做法是较为受限的,并不能保证每次都成功的对待观测信号进行观测。
发明内容
本发明人针对上述问题及技术需求,提出了一种基于共享管脚分时观测FPGA内部不同信号的方法,本发明的技术方案如下:
一种基于共享管脚分时观测FPGA内部不同信号的方法,该方法包括:
确定在FPGA芯片上运行的用户电路,FPGA芯片内部包含可编程逻辑资源以及观测硬件电路,观测硬件电路包括若干个观测点、输出多路选择器和观测管脚,各个观测点分别为FPGA芯片内部可编程逻辑资源的不同的输出口,各个观测点通过输出多路选择器内部的不同路径连接到观测管脚;
将用户电路中产生的若干个待观测信号的电路结构分别布局在各个观测点处作为约束条件,在约束条件下基于FPGA芯片内部的可编程逻辑资源生成用户电路对应的配置码流并加载到FPGA芯片上;
FPGA基于配置码流形成用户电路,输出多路选择器获取切换信号并根据切换信号切换导通相应的待观测信号对应的观测点与观测管脚之间的路径,使得观测管脚切换输出不同的待观测信号的观测结果、实现对输出多路选择器的输入端的N个待观测信号的分时输出观测,N≥2。
其进一步的技术方案为,观测硬件电路还包括切换管脚,切换管脚连接输出多路选择器的控制信号端、实时提供由FPGA芯片外部输入的切换信号。
其进一步的技术方案为,输出多路选择器在根据不同的切换信号输出不同的待观测信号时,按照相同的切换次序对各个待观测信号进行多次切换输出,或者,按照至少两种不同的切换次序对各个待观测信号进行多次切换输出。
其进一步的技术方案为,输出多路选择器采用one-hot编码方式,观测硬件电路还包括预存有若干个具有预定循环顺序的不同的切换信号的移位寄存器,移位寄存器的输出端连接输出多路选择器的控制信号端、并根据移位时钟按照预定循环顺序依次切换输出不同的切换信号给输出多路选择器。
其进一步的技术方案为,该方法还包括:
以切换信号为时序依据对观测管脚的输出信号按时段进行分解,分别还原得到各个待观测信号的观测结果。
其进一步的技术方案为,移位寄存器所使用的移位时钟为待观测信号的系统时钟的N倍频,则分解得到的各个观测结果的频率与待观测信号的频率相同。
其进一步的技术方案为,各个待观测信号的输出观测时长均相等,或者,存在至少两个待观测信号的输出观测时长不相等。
其进一步的技术方案为,每个观测点至观测管脚的观测线路具有预定的观测时延。
其进一步的技术方案为,任意两条观测线路的观测时延之间的差值小于预定阈值。
其进一步的技术方案为,观测硬件电路包括的观测点的数量M>N,则观测硬件电路还包括中间选通电路、多位寄存器以及调试管脚,M个观测点通过中间选通电路的不同导通路径连接到输出多路选择器的N个输入端,多位寄存器根据从调试管脚获取到的调试指令控制中间选通电路的导通路径将M个观测点中的N个观测点处的信号传输到输出多路选择器的输入端作为N个待观测信号。
其进一步的技术方案为,调试管脚为FPGA芯片的动态可重配端口或边界扫描链的边界扫描端口。
其进一步的技术方案为,中间选通电路包括若干个多路选择器,多位寄存器连接各个多路选择器的控制信号端,每个第一级多路选择器分别对应连接若干个观测点,各个第一级多路选择器直接连接或通过形成级联结构的若干个其他的多路选择器连接至输出多路选择器的输入端;每个第一级多路选择器及其对应连接的各个观测点均位于预定区域范围内,或者,所有观测点在FPGA芯片内部按行列结构排布,各个第一级多路选择器排列形成行列结构,且每个第一级多路选择器对应连接的各个观测点均位于同一行列结构中或者位于连续的若干个行列结构中。
其进一步的技术方案为,中间选通电路包括若干个MOS管,每个MOS管的源极分别对应连接一个观测点,输出多路选择器的每个输入端分别连接若干个MOS管的漏极,多位寄存器连接各个MOS管的栅极控制MOS管的通断。
本发明的有益技术效果是:
本申请公开了一种基于共享管脚分时观测FPGA内部不同信号的方法,该方法通过对FPGA芯片进行硬件改进设计并结合相应的软件功能配置共同实现,通过在FPGA芯片内加入单独的观测硬件电路,并以观测硬件电路中观测点的位置作为待观测信号的布局位置的约束条件来生成配置码流,在用户电路的运行过程中,输出多路选择器根据切换信号切换观测不同的观测点处的待观测信号,可以实现基于一个观测管脚对不同信号分时观测的功能,观测具有稳定性,且切换过程的实时性较好。
附图说明
图1是一个实施例中的观测硬件电路的电路图。
图2是另一个实施例中的观测硬件电路的电路图。
图3是以图2为基础的另一个实施例的中的观测硬件电路的电路图。
图4是以图2为基础的另一个实施例的中的观测硬件电路的电路图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种基于共享管脚分时观测FPGA内部不同信号的方法,该方法基于对FPGA芯片的硬件改进设计以及相应的软件功能配置共同实现,本申请分为两部分分别介绍:
一、对FPGA芯片的硬件改进设计。
本申请中的FPGA芯片除了包含常规的可编程逻辑资源之外,还设计了专门的观测硬件电路、也即还包括额外增加的硬件资源。观测硬件电路包括若干个观测点、输出多路选择器和观测管脚,各个观测点分别为FPGA芯片内部可编程逻辑资源的不同的输出口,各个观测点通过输出多路选择器内部的不同路径连接到观测管脚。观测硬件电路是基于常规电路组件制作实现的硬件资源,因此采用常规的FPGA制作工艺即可实现,可以认为本申请中的FPGA芯片是基于现有的仅有可编程逻辑资源的常规FPGA额外增加观测硬件电路以后修改得到的。
可选的,观测硬件电路中的观测点包括可编程模块的输出口和/或互联资源模块中的绕线盒的输出口。具体的,可以将FPGA芯片内部所有可编程模块的部分输出口均作为观测点,或者,FPGA芯片内部部分可编程模块的部分输出口均作为观测点。对应的,可以将FPGA芯片内部所有绕线盒的部分输出口均作为观测点,或者,FPGA芯片内部部分绕线盒的部分输出口均作为观测点。在一个特殊的情况中,也可以将所有可编程模块的所有输出口以及所有绕线盒的所有输出口都作为观测点,将所有可编程逻辑资源的所有输出口都作为观测点,但这样会导致观测点太多、电路过于冗杂,且会存在重复覆盖的问题,没有必要因此通常不会这样操作。
可选的,在有多个观测点的情况下,所有观测点在FPGA芯片内部有多种分布方式,包括随机分布,或者,按区域分布在若干个区域内,或者按行列结构排布。当所有观测点在FPGA芯片内部按行列结构排布时,每相邻两个观测点之间间隔若干可编程逻辑资源且不同的观测点之间的间隔可以相同也可以不同。以现有的FPGA芯片通常采用Column-Based架构为例,可编程逻辑资源1在FPGA芯片内部按行列式结构排布,则如图1以观测点2在FPGA芯片按区域分布为例,观测点2分布在两个区域内,每个区域内包括4个观测点2。图2以观测点2在FPGA芯片按行列结构排布为例,同一行的相邻两个观测点2之间间隔两个可编程逻辑资源1、同一列的相邻两个观测点2之间间隔一个可编程逻辑资源1。
这多个观测点2共用一个观测管脚4并经过输出多路选择器3内部的不同路径形成不同的观测线路,每个观测点2至观测管脚4的观测线路具有预定的观测时延。且可选的,任意两条观测线路的观测时延之间的差值小于预定阈值。
二、软件相应配置。
基于本申请这种内置专门的观测硬件电路的FPGA芯片,确定在FPGA芯片上运行的用户电路,用户电路是需要利用FPGA芯片内的可编程逻辑资源实现的、用于实现用户设计功能的电路结构,用户电路包括多个待观测信号,本申请可以利用一个观测管脚实现对这多个待观测信号的分时观测。
在实现时,将用户电路中产生的若干个待观测信号的电路结构分别布局在各个观测点处作为约束条件,在约束条件下基于FPGA芯片内部的可编程逻辑资源生成用户电路对应的配置码流并加载到FPGA芯片上。得到配置码流后,将配置码流加载到FPGA芯片上,FPGA芯片基于配置码流形成相应的用户电路,并且用户电路中的待观测信号由观测点处的可编程逻辑资源实现。需要说明的是,在特殊情况下,若所有可编程逻辑资源的所有输出口都作为观测点,则在生成用户电路对应的配置码流时,待观测信号随意布局在任意位置处都可以满足布局在观测点处的条件,则此时相当于无需再设置布局布线的约束条件。
在用户电路的运行过程中,输出多路选择器获取切换信号并根据切换信号切换导通相应的待观测信号对应的观测点与观测管脚之间的路径,使得观测管脚切换输出不同的待观测信号的观测结果、实现对输出多路选择器的输入端的N个待观测信号的分时输出观测。
在本申请中,输出多路选择器可以实时获取切换信号并实时切换不同的待观测信号,而为了满足这一实时性要求,本申请提供两种不同的实现方式,且这两种不同的实现方式分别需要对应的硬件支持:
实现方式1:输出多路选择器获取到的切换信号来自于FPGA芯片外部,则在该实施例中,观测硬件电路还包括切换管脚5,请参考图1,切换管脚5连接输出多路选择器3的控制信号端、并实时提供由FPGA芯片外部输入的切换信号SEL,在实际应用时,根据输出多路选择器3的切换信号SEL的位数不同,切换管脚5实际需要占用若干个芯片管脚,比如输出多路选择器3需要2位切换信号SEL时、切换管脚5包括2个芯片管脚,输出多路选择器3需要4位切换信号SEL时、切换管脚5包括4个芯片管脚。在该实施例中,切换管脚5是与观测管脚一样是单独设置的专门的管脚,由于直接通过管脚控制输出多路选择器3切换,因此实时性较高,可以实时控制输出多路选择器的切换改变导通不同的路径。
在该实现方式中,输出多路选择器3在根据不同的切换信号输出不同的待观测信号时,按照相同的切换次序对各个待观测信号进行多次切换输出,或者,按照至少两种不同的切换次序对各个待观测信号进行多次切换输出。比如在有待观测信号1、2、3、4时,可以始终按照待观测信号1→待观测信号2→待观测信号3→待观测信号4→待观测信号1的顺序切换输出,也可以按照待观测信号1→待观测信号2→待观测信号4→待观测信号3→待观测信号2→待观测信号3…等无固定顺序的次序切换输出。也即这种实现方式虽然需要占用额外的切换管脚,但待观测信号的切换输出的顺序可以是多变的,灵活性较高。
实现方式2:输出多路选择器3获取到的切换信号来自于FPGA芯片内部,则在该实施例中,输出多路选择器3采用one-hot编码方式,每一信号位分别对应一个输入端,通常在信号位为1时表示选通对应的输入端。则如图2所示,观测硬件电路还包括预存有若干个具有预定循环顺序的不同的切换信号的移位寄存器6。移位寄存器的输出端连接输出多路选择器的控制信号端、并根据移位时钟按照预定循环顺序依次切换输出不同的切换信号给输出多路选择器。比如移位寄存器预先置入1000的初始值,根据移位时钟,移位寄存器提供给输出多路选择器的切换信号按照1000→0100→0010→0001→1000的循环顺序依次切换,则在切换信号为1000时表示输出多路选择器的第一个输入端至输出端的路径被导通,在切换信号为0100时表示输出多路选择器的第二个输入端至输出端的路径被导通,以此类推。在该实施例中,移位时钟可以自定义配置,比如可以采用用户电路的主时钟。由于使用移位寄存器提供切换信号,因此切换信号可以快速循环变化,满足实时性的要求。
可以利用FPGA芯片上的已有管脚对移位寄存器置入初始值,调试管脚为FPGA芯片的动态可重配端口(Dynamic Reconfiguration Port,DRP)或边界扫描链的边界扫描端口。
在该实现方式中,区别于第一种实现方式,由于切换信号按照预定循环顺序切换输出,因此各个待观测信号也只能按照相同的顺序多次切换输出,比如只能始终按照待观测信号1→待观测信号2→待观测信号3→待观测信号4→待观测信号1的顺序切换输出。
不管是采用上述实现方式1还是实现方式2,各个待观测信号的输出观测时长均相等,或者,存在至少两个待观测信号的输出观测时长不相等。当一个待观测信号输出观测时长多次时,该待观测信号的多次输出观测时长均相等,或者存在至少两次输出观测时长不相等。
不管是采用上述实现方式1还是实现方式2,由于观测管脚输出的是多个不同的待观测信号的观测结果,而切换信号是与待观测信号一一对应的,因此在输出后,还需要以切换信号为时序依据对观测管脚的输出信号按时段进行分解,分别还原得到各个待观测信号的观测结果,也即按照切换信号的切换时刻对观测管脚的输出信号按时段进行分解,每一段输出信号即为该时段的切换信号对应的待观测信号的观测结果,而切换的实时性也保证了分解得到的观测结果的准确性。在上述实现方式1中,由于切换信号来自于FPGA芯片外部,因此可以直接根据输入的切换信号进行分解。而在上述实现方式2中,由于切换信号来自于FPGA芯片内部,因此需要将切换信号输出到FPGA芯片外部;或者,在切换信号的预定循环顺序已知的条件下,将移位时钟输出到FPGA芯片外部即可确定切换信号的切换时刻以及每个时段所采用的切换信号。
可选的,在实现方式2中,移位寄存器所使用的移位时钟为待观测信号的系统时钟的N倍频,则可以使得分解得到的各个观测结果的频率与待观测信号的频率相同,从而以原频率显示出待观测信号。
在实现共享管脚分时观测的功能的基础上,本申请可以将所有观测点处的信号都连接到输出多路选择器的输入端作为可以分时切换输出的待观测信号,或者,仅将部分观测点处的信号连接到输出多路选择器的输入端作为可以分时切换输出的待观测信号。也即在该实施例中,观测硬件电路包括的观测点的数量M>N,则如图3所示,观测硬件电路还包括中间选通电路7、多位寄存器8以及调试管脚9。M个观测点通过中间选通电路的不同导通路径连接到输出多路选择器3的N个输入端,多位寄存器8根据从调试管脚9获取到的调试指令SEL0控制中间选通电路7的导通路径将M个观测点中的N个观测点处的信号传输到输出多路选择器3的输入端作为N个待观测信号,如图3以M=9、N=3为例。则通过中间选通电路7可以选择不同的分时切换输出的N个待观测信号,继而再利用输出多路选择器对N个待观测信号分时切换输出,灵活性更高。
在该实施例中,调试管脚9可以与观测管脚和切换管脚一样是单独设置的专门的管脚,也可以复用FPGA芯片上的已有管脚。当调试管脚9复用FPGA芯片上的已有管脚时,调试管脚9为FPGA芯片的动态可重配端口或边界扫描链的边界扫描端口。
在该实施例中,中间选通电路7包括若干个多路选择器,多位寄存器连接各个多路选择器的控制信号端。每个第一级多路选择器分别对应连接若干个观测点,如图3以中间选通电路7包括三个第一级多路选择器MUX1、MUX2和MUX3为例,每个第一级多路选择器分别对应连接三个观测点。各个第一级多路选择器直接连接输出多路选择器的输入端,每个第一级多路选择器从输入端连接的各个观测点的信号中选择一个作为待观测信号。或者,各个第一级多路选择器通过形成级联结构的若干个其他的多路选择器连接至输出多路选择器的输入端。根据观测点的分布情况不同,中间选通电路中直接与观测点相连的第一级多路选择器的布设情况也不同,在一个实施例中,观测点在FPGA芯片内部按区域分布、也即观测点分布在多个不同的区域内,则可以配置每个预定区域范围内的观测点对应连接同一个第一级多路选择器,则每个第一级多路选择器及其对应连接的各个观测点均位于预定区域范围内。在另一个实施例中,观测点在FPGA芯片内部按行列结构排布,则如图3所示,各个第一级多路选择器排列形成行列结构,且每个第一级多路选择器对应连接的各个观测点均位于同一行列结构中或者位于连续的若干个行列结构中。
在另一个实施例中,中间选通电路7包括若干个MOS管,每个MOS管的源极分别对应连接一个观测点,输出多路选择器3的每个输入端连接至若干个MOS管的漏极,多位寄存器8连接各个MOS管的栅极并控制MOS管的开闭。如图4以每三个MOS管的漏极相连并连接到输出多路选择器3的一个输入端为例。