采样频率动态可变的fpga在线调试方法
技术领域
本发明涉及FPGA
技术领域
,尤其是一种采样频率动态可变的FPGA在线调试方法。背景技术
当用户电路在FPGA上实现并在FPGA上正常运行时,为了确定用户电路在FPGA上的运行过程正确且符合设计思想,通常需要观测用户电路内部某些特定信号的行为或波形。为了实现这个功能,目前的做法是在FPGA上增加调试电路,当用户电路在FPGA上正常运行时,利用调试电路采样用户电路的待观测信号并输出到FPGA进行实时观测监控继而实现相应的调试。
在实际实现时,一般按照一个采样时钟对待观测信号进行采样然后进行存储,采样结束后再将存储的数据输出到FPGA外进行观测。在很多调试场景中,待观测信号会有一些时段是调试的关键时段、有一些时段是调试的非关键时段,待观测信号在非关键时段的信号几乎不发生变化,但是根据调试需求仍然需要在这些非关键时段对待观测信号进行采样,此时会导致连续采样到的多个数据都是相同的,这些重复采样的数据意义不大。而由于监控电路需要将采样到的数据存储后再输出,因此采样过程的总样本数受限于存储容量,在存储容量有限的情况下、总样本数也受限,这其中若有较多重复采样的无意义数据,则会导致调试效率较低。
发明内容
本发明人针对上述问题及技术需求,提出了一种采样频率动态可变的FPGA在线调试方法,本发明的技术方案如下:
一种采样频率动态可变的FPGA在线调试方法,该方法包括:
在对用户电路进行调试时,将由用户电路和监控电路构成的全局电路对应的配置码流加载到FPGA上,FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路,监控电路连接用户电路;
监控电路包括时钟调节模块、采样模块、样本存储模块和样本输出模块,在用户电路运行过程中,时钟调节模块向采样模块提供与用户电路的待观测信号在当前时段的运行状态对应且匹配的采样时钟,待观测信号在用户电路运行过程中存在至少两种不同的运行状态且不同的运行状态对应的采样时钟的频率不同,采样模块按照时钟调节模块提供的采样时钟对待观测信号进行采样并存储在样本存储模块中,采样完成后,样本输出模块利用FPGA内建的边界扫描链传输到FPGA外进行监控调试。
其进一步的技术方案为,待观测信号在当前时段的变化频率越高、对应的采样时钟的频率越高,待观测信号的运行状态根据待观测信号的信号特征确定和/或根据待观测信号的预定关联信号的信号特征确定。
其进一步的技术方案为,时钟调节模块包括锁相环电路、多路选择器和选择寄存器,锁相环电路的输入端获取参考时钟、各个输出端分别输出不同频率的采样时钟,锁相环电路的各个输出端分别连接多路选择器的输入端,选择寄存器根据时钟选择信号选通多路选择器的一路通路,将多路选择器的一个输入端的采样时钟提供给采样模块。
其进一步的技术方案为,选择寄存器的时钟选择信号由FPGA外在线输入,或者,选择寄存器按预定策略从预先存储的若干组时钟选择信号中选定一组。
其进一步的技术方案为,选择寄存器的时钟选择信号经由FPGA内建的边界扫描链传输到选择寄存器,或者,选择寄存器的时钟选择信号经由FPGA的动态可配置端口DRP传输到选择寄存器。
其进一步的技术方案为,多路选择器的各个输入端除了连接锁相环电路的各个输出端之外还连接由FPGA外部输入的片外时钟,则多路选择器提供给采样模块的采样时钟为片外时钟和参考时钟产生的多个不同频率的采样时钟中的一个。
其进一步的技术方案为,片外时钟为边界扫描链的边界扫描端口使用的测试时钟信号。
其进一步的技术方案为,参考时钟为用户电路产生的时钟信号,片外时钟还连接到用户电路并用于产生参考时钟。
其进一步的技术方案为,用户电路内置时钟树,原始时钟源和片外时钟分别连接二选一选择器的两个输入端,二选一选择器的输出端通过时钟树驱动用于产生待观测信号的逻辑电路。
其进一步的技术方案为,在用户电路运行过程中:
控制二选一选择器选通由片外时钟驱动用于产生待观测信号的逻辑电路,并控制多路选择器选通将片外时钟提供给采样模块,并调节片外时钟至预定频率实现对用户电路的调试。
其进一步的技术方案为,FPGA基于配置码流中与用户电路对应的第一部分利用第一类资源形成用户电路、并基于配置码流中与监控电路对应的第二部分利用第二类资源形成监控电路;
第一类资源和第二类资源分别表示FPGA内部不同部分的可编程逻辑资源,第一类资源是FPGA内部在未对用户电路进行调试时用于实现用户电路的可编程逻辑资源,且第一类资源和第二类资源中具有相同资源类型的可编程逻辑资源的硬件结构相同。
本申请公开了一种采样频率动态可变的FPGA在线调试方法,该方法利用监控电路内部的时钟调节模块调节采样模块的采样时钟,使得采样模块在不同的时段采用相应的采样时钟对待观测信号进行采样以适应待观测信号的运行状态,从而在保证监控到信号变化的前提下,减少采样重复不变的无效数据,从而提高监控调试的效率。
此外时钟调节模块还可以将片外时钟提供给采样模块使用,经由控制片外时钟的频率可控制运行速度,从而可以满足诸如单步运行之类的特殊调试需求。
附图说明
图1是本申请中用户电路和监控电路的连接结构示意图。
图2是采样时钟随待观测信号的运行状态不同而变化的波形示意图。
图3是一个实施例中,用户电路和监控电路的连接示意图。
图4是另一个实施例中,用户电路和监控电路的连接示意图。
图5是另一个实施例中,用户电路和监控电路的连接示意图。
图6是FPGA内部的可编程逻辑资源的排布示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种采样频率动态可变的FPGA在线调试方法,该方法的实现过程如下:
在对用户电路进行调试时,将由用户电路和监控电路构成的全局电路对应的配置码流加载到FPGA上。本申请中的全局电路是需要利用FPGA上的可编程逻辑资源实现并在FPGA上运行的全部电路结构,全局电路至少包括用户电路,用户电路是全局电路中用于实现用户设计功能的电路结构。当对用户电路进行调试时,全局电路除了包括用户电路之外,还包括连接至用户电路的监控电路,监控电路是全局电路中用于实现对用户电路的信号监控功能的电路结构,则在这种情况中全局电路由用户电路和监控电路构成。本领域技术人员知道的是,在输入全局电路后,需要经过综合、装箱、布局、布线和时序分析等步骤才能生成全局电路对应的配置码流,本申请对这些中间步骤不再详细展开描述。
FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路,监控电路连接用户电路。其中,请参考图1,监控电路包括时钟调节模块、采样模块、样本存储模块和样本输出模块。在用户电路运行过程中,时钟调节模块向采样模块提供与用户电路的待观测信号Sig在当前时段的运行状态对应且匹配的采样时钟。待观测信号Sig在用户电路运行过程中存在至少两种不同的运行状态且不同的运行状态对应的采样时钟的频率不同。比如图1中,待观测信号Sig在用户电路运行过程中存在三种不同的运行状态,由此时钟调节模块向采样模块提供三个频率不同的采样时钟CLK1、CLK2和CLK3,每种采样时钟的频率与待观测信号Sig的一种状态对应匹配。
采样模块按照时钟调节模块提供的采样时钟对待观测信号进行采样并存储在样本存储模块中。采样完成后,样本输出模块利用FPGA内建的边界扫描链传输到FPGA外进行监控调试。样本输出模块按照先入先出次序将存储的数据输出,样本输出模块主要由移位寄存器实现,通常配置采样的数据达到总样本数时采样完成,总样本数不超过样本存储模块的存储容量。
在本申请中,在用户电路运行过程中,待观测信号在不同时段的变化频率会存在不同,待观测信号在每种运行状态下持续运行一段时间,不同的运行状态表征待观测信号在不同连续时段的不同的变化频率。待观测信号在整个时间序列上存在至少两种不同的运行状态,相邻两个连续时段对应的运行状态不同,且可以存在多个相同但时间上不连续的运行状态。如图2所示,待观测信号早存在运行状态1和运行状态2两种,这两种状态可以交错产生多次,比如先出现运行状态1、切换至运行状态2运行一段时间后又切换到运行状态1。
运行状态表征的待观测信号的变化频率越高、对应的采样时钟的频率越高,也即待观测信号在一个连续时段内变化的越快、则使用频率更高的采样时钟进行采样以准确监测到待观测信号的变化。而运行状态表征的待观测信号的变化频率越低、则使用频率较低的采样时钟进行采样,保证在准确监测到待观测信号的变化的前提下可以减少采样到的重复无效数据的数量。
待观测信号的不同运行状态根据某些信号的信号特征来确定。在一个可选的实施例中,待观测信号的运行状态根据待观测信号的信号特征确定,也即由待观测信号本身来确定,当待观测信号符合第一预定条件时确定后续时段的变化频率会变高,再比如当符合第二预定条件时确定后续时段的变化频率会变低。比如图2中,对于两个模块的互联接口处的待观测信号Sig,可以通过检测待观测信号是否出现来确定运行状态,当检测到待观测信号出现时,确定从表征的变化频率较低的运行状态1切换到表征的变化频率较高运行状态2,则对应的采样时钟从运行状态1对应的采样时钟CLK1切换到运行状态1对应的频率更高的采样时钟CLK2。
在另一个可选的实施例中,待观测信号的运行状态根据待观测信号的预定关联信号的信号特征确定,也即由与待观测信号存在关联的其他信号来确定,具体与上述类似。比如某个待观测信号Sig的使能信号出现时,待观测信号会有一系列信号变化,则可以在检测到待观测信号的使能信号时确定从表征的变化频率较低的运行状态1切换到表征的变化频率较高运行状态2。
需要说明的是,不同运行状态所表征的不同的变化频率只是一种互相之间的相对关系,而不是一种变化频率的绝对数值,比如在上述举例中,只能表示运行状态2表征的变化频率相较于运行状态1表征的变化频率来说高,而通常不能确定两个连续时段内的变化频率具体是多少。
在一个实施例中,如图3所示,时钟调节模块包括锁相环电路PLL、多路选择器MUX和选择寄存器,锁相环电路PLL的输入端获取参考时钟CLK_IN、各个输出端分别输出不同频率的采样时钟CLK1、CLK2和CLK3。锁相环电路PLL的各个输出端分别连接多路选择器MUX的输入端,多路选择器MUX的输入端的数量不少于锁相环电路PLL的输出端的数量。选择寄存器根据时钟选择信号SEL控制多路选择器MUX并选通多路选择器MUX的一路通路,从而将多路选择器MUX的一个输入端的采样时钟提供给采样模块。根据多路选择器MUX的输入端信号不同,选择寄存器对多路选择器MUX的控制信号的位宽也不同,图3以多路选择器MUX为四选一多路选择器为例、选择寄存器向MUXF4输入两位的控制信号,从输入的CLK1、CLK2、CLK3中选择CLK1提供给采样模块。
在另一个实施例中,如图4所示,在图3的基础上,多路选择器MUX的各个输入端除了连接锁相环电路PLL的各个输出端之外还连接由FPGA外部输入的片外时钟CLK_OUT,则多路选择器MUX提供给采样模块的采样时钟为片外时钟CLK_OUT和参考时钟CLK_IN产生的多个不同频率的采样时钟中的一个。可选的,片外时钟CLK_OUT为任意外部输入的时钟信号,或者,为边界扫描链的边界扫描端口使用的测试时钟信号。
在图4所示的实施例中,当参考时钟CLK_IN为用户电路产生的时钟信号时,片外时钟CLK_OUT还连接到用户电路并用于产生参考时钟CLK_IN,也即可以将片外时钟CLK_OUT倒输入用户电路中成为参考时钟CLK_IN的来源之一。具体的,用户电路内置时钟树,原始时钟源CLK0和片外时钟CLK_OUT分别连接二选一选择器MUXF2的两个输入端,二选一选择器MUXF2的输出端通过时钟树输出参考时钟CLK_IN,如图5所示。
除此之外,如图5所示,二选一选择器MUXF2的输出端还连接并驱动用于产生待观测信号的逻辑电路,因此片外时钟CLK_OUT还可以通过时钟树驱动用于产生待观测信号的逻辑电路。在该实施例中,由于产生待观测信号的逻辑电路以及监控电路都可选用片外时钟CLK_OUT,因此可以经由控制片外时钟CLK_OUT的频率来控制运行速度以满足特定的调试需求,一个典型的调试需求为单步运行(Single Step),具体的,控制二选一选择器MUXF2选通由片外时钟CLK_OUT驱动用于产生待观测信号的逻辑电路的路径,并控制多路选择器MUX选通将片外时钟CLK_OUT提供给采样模块,并调节片外时钟CLK_OUT至预定频率实现对用户电路的调试。
无论是在图3-5何种结构中,选择寄存器对多路选择器MUX的控制过程有如下两种实现方式:
一种可选的实现方式是,选择寄存器的时钟选择信号SEL由FPGA外在线输入,如图4和4以这种情况为例。可选的,选择寄存器的时钟选择信号SEL经由FPGA内建的边界扫描链传输到选择寄存器,或者,选择寄存器的时钟选择信号SEL经由FPGA的动态可配置端口DRP传输到选择寄存器。
在该实施例中,另一种可选的实现方式是,选择寄存器按预定策略从预先存储的若干组时钟选择信号中选定一组。一种常见的预定策略比如采用轮询法依次轮询使用各个先存储的时钟选择信号,切换时钟选择信号的时机则可以由另外的控制器来设定。
在本申请的一个实施例中,除了按照常规的方法将全局电路在FPGA实现之外,还可以通过如下方法实现:
在该实施例提供的方法中,预先将FPGA内部的可编程逻辑资源划分为两类,第一类资源和第二类资源分别表示FPGA内部不同部分的可编程逻辑资源,用户电路和监控电路有各自专属的一类可编程逻辑资源,而且用户电路和监控电路分别由各自对应的一类资源来实现。因此第一类资源既是FPGA内部在未对用户电路进行调试时用于实现用户电路的可编程逻辑资源,也是FPGA内部在对用户电路进行调试时用于实现用户电路的可编程逻辑资源,而第二类资源是FPGA内部在对用户电路进行调试时用于实现监控电路的可编程逻辑资源。每一类资源包含的基本模块的资源类型和数量根据对应的电路预估的规模所确定,一般来说用户电路的规模大于监控电路,因此用户电路对应的第一类资源所包含的可编程逻辑资源的资源规模大于监控电路对应的第二类资源。且第一类资源和第二类资源中具有相同资源类型的可编程逻辑资源的硬件结构相同,比如第一类资源中的CLB和第二类资源中的CLB的硬件结构相同,也即本实施例并没有对FPGA内部的可编程逻辑资源的硬件结构进行修改,只是对可编程逻辑资源做了划分。
FPGA内部的可编程逻辑资源包括多个基本模块及环于每个基本模块分布的互连资源(INT),每个基本模块是一种资源类型的可编程逻辑资源,可编程逻辑资源的资源类型主要包括CLB(基本逻辑单元)、BRAM、IOB、DSP和PC等,每种资源类型包括若干个基本模块。比如图6中,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在线调试方法