一种实现连续采样的fpga在线调试方法
技术领域
本发明涉及FPGA
技术领域
,尤其是一种实现连续采样的FPGA在线调试方法。背景技术
当用户电路在FPGA上实现并在FPGA上正常运行时,为了确定用户电路在FPGA上的运行过程正确且符合设计思想,通常需要观测用户电路内部某些特定信号的行为或波形。为了实现这个功能,目前的做法是在FPGA上增加监控电路,当用户电路在FPGA上正常运行时,利用监控电路采样用户电路的待观测信号并输出到FPGA外进行观测监控继而实现相应的调试。
目前的监控电路通常是先将采样数据进行存储,采样结束后再将存储的数据输出到FPGA外进行观测,一次采样过程的总样本数受限于存储容量,因此操作也较为不便。
发明内容
本发明人针对上述问题及技术需求,提出了一种实现连续采样的FPGA在线调试方法,本发明的技术方案如下:
一种实现连续采样的FPGA在线调试方法,该方法包括:
在对用户电路进行调试时,将由用户电路和监控电路构成的全局电路对应的配置码流加载到FPGA上,FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路,监控电路连接用户电路;
其中,监控电路至少包括采样模块、样本存储模块和样本输出模块,样本存储模块的写口带宽和读口带宽与片上接口的输出带宽相等,监控电路在用户电路运行过程中通过采样模块采样用户电路的待观测信号、并通过写口写入到样本存储模块内,在采样模块开始采样写入数据的时刻的预定延时时长后,样本输出模块开始通过读口从样本存储模块同步读取数据并利用片上接口将数据传输到FPGA外进行监控调试,采样模块在预定延时时长内采样写入的数据小于样本存储模块的存储容量。
其进一步的技术方案为,FPGA的片上接口为FPGA内建的边界扫描链所使用的边界扫描接口,样本输出模块连接边界扫描链;则采样模块的采样频率小于预定阈值。
其进一步的技术方案为,FPGA的片上接口为预留给监控电路的高速串行接口,则样本输出模块通过并串转换模块连接到高速串行接口。
其进一步的技术方案为,FPGA的片上接口为预留给监控电路的IO接口,则样本输出模块通过并串转换模块连接到IO接口。
其进一步的技术方案为,监控电路还包括触发模块,触发模块用于获取触发信号并在检测到触发信号满足预设触发条件时向采样模块发送采样使能信号、在预定延时时长后向样本输出模块发送输出使能信号,采样模块根据采样使能信号采样用户电路的待观测信号,样本输出模块根据输出使能信号从样本存储模块读取数据。
其进一步的技术方案为,样本存储模块由FPGA内部的FIFO实现。
其进一步的技术方案为,样本存储模块由FPGA内部的一个或多个BRAM实现。
其进一步的技术方案为,当样本存储模块由多个BRAM实现时,多个BRAM在FPGA芯片内的布局位置相邻或相间隔。
其进一步的技术方案为,样本存储模块采用FPGA内部的分布式存储单元实现,且分布式存储单元中的各个存储单元的布局位置相邻或相间隔。
其进一步的技术方案为,样本存储模块的存储容量不小于采样模块的采样位宽的两倍。
其进一步的技术方案为,FPGA基于配置码流中与用户电路对应的第一部分利用第一类资源形成用户电路、并基于配置码流中与监控电路对应的第二部分利用第二类资源形成监控电路;
第一类资源和第二类资源分别表示FPGA内部不同部分的可编程逻辑资源,第一类资源是FPGA内部在未对用户电路进行调试时用于实现用户电路的可编程逻辑资源,且第一类资源和第二类资源中具有相同资源类型的可编程逻辑资源的硬件结构相同。
本发明的有益技术效果是:
本申请公开了一种实现连续采样的FPGA在线调试方法,采样写入动作和读取输出动作同步进行,从而使得采样的总样本数不受限于样本存储模块的存储容量,不会出现因为样本存储模块满溢而暂停采样或丢失数据的现象,保证采样调试的准确性和高效性。
进一步的,可以预先对FPGA内部的可编程逻辑资源作为划分,对用户电路进行调试时用于实现用户电路的第一类资源,同时也是未对用户电路进行调试用于实现用户电路的可编程逻辑资源,使得在加入监控电路前后,用户电路的布局布线环境基本不受影响,从而使得用户电路行为在监控电路加入前后基本保持一致,因此监控电路对用户电路监测得到的信号更准确,使得调试也更准确。
附图说明
图1是基于监控电路对用户电路进行在线调试时,全局电路在FPGA上的实现过程的信息流示意图以及实现的监控电路的一种电路结构图。
图2是监控电路的另一种电路结构图。
图3是FPGA内部的可编程逻辑资源的排布示意图。
图4是基于监控电路对用户电路进行在线调试时,全局电路在FPGA上的实现过程的另一个实施例的信息流示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种实现连续采样的FPGA在线调试方法,请参考图1,该方法的实现过程如下:
在对用户电路进行调试时,将由用户电路和监控电路构成的全局电路对应的配置码流加载到FPGA上。本申请中的全局电路是需要利用FPGA上的可编程逻辑资源实现并在FPGA上运行的全部电路结构,全局电路至少包括用户电路,用户电路是全局电路中用于实现用户设计功能的电路结构。当对用户电路进行调试时,全局电路除了包括用户电路之外,还包括连接至用户电路的监控电路,监控电路是全局电路中用于实现对用户电路的信号监控功能的电路结构,则在这种情况中全局电路由用户电路和监控电路构成。
本领域技术人员知道的是,在输入全局电路后,需要经过综合、装箱、布局、布线和时序分析等步骤才能生成全局电路对应的配置码流,本申请对这些中间步骤不再详细展开描述。
FPGA基于配置码流利用可编程逻辑资源实现用户电路和监控电路,监控电路连接用户电路。监控电路至少包括采样模块、样本存储模块和样本输出模块。样本存储模块的写口和读口可以同时操作,且样本存储模块的写口带宽和读口带宽与片上接口的输出带宽相等,一般样本存储模块的写口带宽和读口带宽是可调的,但是片上接口有接口标准的限制,所以一般调节样本存储模块的写口带宽和读口带宽至与片上接口的输出带宽相等。其中写口带宽=采样频率*采样位宽,读口带宽=读出频率*读出位宽,一般认为数据的位宽是较为固定的,因此可以调节频率来调节带宽。监控电路在用户电路运行过程中通过采样模块采样用户电路的待观测信号Sig、并通过写口写入到样本存储模块内,在采样模块开始采样写入数据的时刻的预定延时时长后,样本输出模块开始通过读口从样本存储模块同步读取数据并利用片上接口将数据传输到FPGA外进行监控调试。样本输出模块主要由移位寄存器实现。
其中,采样模块在预定延时时长内采样写入的数据小于样本存储模块的存储容量,从而可以保证在样本存储模块的存储容量写满之前开始读出,之后写入与读出呈动态平衡,避免出现存储满溢的情况。比较特殊的,还可以控制样本输出模块与采样模块同步开始工作。
其中,样本存储模块的存储容量不小于采样模块的采样位宽的两倍,当写入一个采样位宽的数据时读另一个采样位宽的数据,由此,虽然样本存储模块的存储容量固定,但是由于写入和读出的操作同步进行,因此样本存储模块的存储容量不会限制总样本数,亦即在采样模块满足预设停止条件停止采样之前,无论总样本数有多大,样本存储模块都不会满溢,都可以正常工作,从而可以实现连续采样。
虽然理论上输出带宽大于写口带宽就可以避免样本存储模块满溢,但是同时也需要避免输出部分空等待的情况,因此本身去那个设置成写口带宽和读口带宽与片上接口的输出带宽均相等,既可以避免内存满溢也可以避免内存清空。
样本存储模块具有多种不同的实现方式:
(1)在一个实施例中,样本存储模块由FPGA内部的FIFO实现。
(2)在另一个实施例中,样本存储模块由FPGA内部的一个或多个BRAM实现。可选的,当样本存储模块由多个BRAM实现时,多个BRAM在FPGA芯片内的布局位置相邻或相间隔。
(3)在另一个实施例中,样本存储模块采用FPGA内部的分布式存储单元实现,且分布式存储单元中的各个存储单元的布局位置相邻或相间隔。
无论样本存储模块如何实现,FPGA的片上接口都具有如下多种不同的实现方式,且不同实现方式各有优缺点:
(1)在一个实施例中,FPGA的片上接口为FPGA内建的边界扫描链所使用的边界扫描接口,样本输出模块连接边界扫描链,如图1所示。这种做法可以复用已有接口,无需另外占用接口资源,但是边界扫描链的读出频率较低,一般为50MHz~100MHz,且边界扫描接口为串行接口也即读出位宽为1位,也即这种情况下片上接口的输出带宽较低,而采样模块可达到的采样频率可能会使得写口带宽超出输出带宽,因此在这种情况中,需要对采样模块的采样频率做限制,也即控制采样模块的采样频率小于预定阈值。
如果不控制采样模块的采样频率,则会使得写口带宽大于输出带宽,仍会出现样本存储模块满溢的情况,此时需要控制采样模块暂停写入,等样本存储模块有足够的空间时继续写入,其中暂停写入可以是暂停采样或者采样后丢弃不写入。
(2)在另一个实施例中,FPGA的片上接口为预留给监控电路的IO接口,则样本输出模块通过并串转换模块连接到IO接口,普通的IO接口比如LVDS,这种做法需要为监控电路预留专门的IO接口,相比于使用边界扫描链的做法需要另外占用接口资源。而且FPGA的IO接口通常为串行接口也即读出位宽为1位,因此还需要设置一个额外的串并转换模块,样本输出模块通过并串转换模块连接到IO接口,此时监控电路的结构请参考图2。但是这种做法的好处是,读出频率相比于边界扫描链要高,比如LVDS通常有1200MHz左右,因此输出带宽较高,而且可以通过多个IO接口实现多个片上接口并行输出从而加大输出带宽。因此不需要限制采样模块的采样频率基本不会出现样本存储模块满溢的情况。
(3)在另一个实施例中,FPGA的片上接口为预留给监控电路的高速串行接口,常见的高速串行接口包括SERDES和GTP,FPGA的高速串行接口为串行接口也即读出位宽为1位,因此也需要设置一个额外的串并转换模块,样本输出模块通过并串转换模块连接到高速串行接口,电路结构与使用IO接口实现片上接口的情况类似,请参考图2。FPGA上普通的IO接口较多,而高速串行接口较少,这种做法需要占用宝贵稀缺的高速串行接口。但是好处是,高速串行接口相比于普通IO接口的读出频率更高,通常在3125MHz~12000MHz,所以更不需要限制采样模块的采样频率,基本不会出现样本存储模块满溢的情况。
可选的,该监控电路还包括触发模块,如图1和2所示,触发模块用于获取触发信号Trig并在检测到触发信号Trig满足预设触发条件时向采样模块发送采样使能信号Sample_EN、并在预定延时时长后向样本输出模块发送输出使能信号Output_EN。采样模块根据采样使能信号Sample_EN采样用户电路的待观测信号,样本输出模块根据输出使能信号Output_EN按照先入先出次序从样本存储模块读取数据输出,实现读写同步操作,实现连续采样。然后片外的连接器可以接收整理这些数据并显示波形,继而进行调试,从而实现对待观测信号的在线监控和调试,如上所述,由于用户电路的用户电路行为基本不受监控电路的影响,因此片外观测到的待观测信号更准确、调试也更准确。
上述电路结构中,触发模块主要由寄存器以及LUT形成的触发器实现,寄存器用于存储预设触发条件,触发器用于在获取到的触发信号Trig满足预设触发条件时发送采样使能信号Sample_EN和输出使能信号Output_EN。
在上述过程中,触发模块获取到的触发信号Trig同样来自于用户电路,或者来自于FPGA外部,图1和2以触发信号Trig来自于用户电路为例。触发信号Trig包括单路或多路信号,触发信号Trig所需要满足的预设触发条件预先自定义配置,比如获取到的触发信号Trig为“a,b,c”,确定“a,b,c=1,0,1”时满足预设触发条件。
当触发模块根据接收到的触发信号多次触发采样模块进行采样时,每次使用的预设触发条件相同,或者存在至少两次所使用的预设触发条件不同,比如按照上述举例,一个采样过程中,当触发信号“a,b,c=1,0,1”时触发采样;在另一个采样过程,当触发信号“a,b,c=0,0,1”时触发采样。
不管多次触发时使用的预设触发条件是否相同,在另一个实施例中,采样在至少两个不同的采样过程具有不同的预设停止条件和/或采样参数,采样参数包括采样长度和/或采样次数和/或采样的总样本数。
在本申请的一个实施例中,除了按照常规的方法将全局电路在FPGA实现之外,还可以通过如下方法实现:
在该实施例提供的方法中,预先将FPGA内部的可编程逻辑资源划分为两类,第一类资源和第二类资源分别表示FPGA内部不同部分的可编程逻辑资源,用户电路和监控电路有各自专属的一类可编程逻辑资源,而且用户电路和监控电路分别由各自对应的一类资源来实现。因此第一类资源既是FPGA内部在未对用户电路进行调试时用于实现用户电路的可编程逻辑资源,也是FPGA内部在对用户电路进行调试时用于实现用户电路的可编程逻辑资源,而第二类资源是FPGA内部在对用户电路进行调试时用于实现监控电路的可编程逻辑资源。每一类资源包含的基本模块的资源类型和数量根据对应的电路预估的规模所确定,一般来说用户电路的规模大于监控电路,因此用户电路对应的第一类资源所包含的可编程逻辑资源的资源规模大于监控电路对应的第二类资源。且第一类资源和第二类资源中具有相同资源类型的可编程逻辑资源的硬件结构相同,比如第一类资源中的CLB和第二类资源中的CLB的硬件结构相同,也即本实施例并没有对FPGA内部的可编程逻辑资源的硬件结构进行修改,只是对可编程逻辑资源做了划分。
FPGA内部的可编程逻辑资源包括多个基本模块及环于每个基本模块分布的互连资源(INT),每个基本模块是一种资源类型的可编程逻辑资源,可编程逻辑资源的资源类型主要包括CLB(基本逻辑单元)、BRAM、IOB、DSP和PC等,每种资源类型包括若干个基本模块。比如图3中,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基于配置码流利用可编程逻辑资源实现用户电路和监控电路时,请参考图4,基于配置码流中与用户电路对应的第一部分利用第一类资源形成用户电路、并基于配置码流中与监控电路对应的第二部分利用第二类资源形成监控电路,从而使得用户电路和监控电路相互独立。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种高准确度的FPGA在线调试方法