Jtag下载方式下fpga逻辑代码的下载方法

文档序号:6339127阅读:489来源:国知局
专利名称:Jtag下载方式下fpga逻辑代码的下载方法
技术领域
本发明涉及现场可编程门阵列(FPGA,Field Programmable Gate Array)配置技 术,尤其涉及一种联合测试行动组(JTAG,Joint Test Action Group)下载方式下FPGA逻 辑代码的下载方法。
背景技术
FPGA是一种电路逻辑器件,同时具有静态可重复编程和在线动态重构特性。这种 电路功能表现为硬件但是却可以像软件一样通过编程的方式来修改,从而大大提高了电子 系统的通用性和设计灵活性。FPGA的特性使得它在电路系统中广泛使用,在一块电路板或 者一个阵列系统中常常集成了几个甚至数十个FPGA。在多FPGA处理系统中,常常需要系统利用CPU完成对多片FPGA逻辑代码的下载。 当需要下载多片FPGA时,通常使用两种方法。一种是采用联合测试行动组(JTAG,Joint Test Action Group)菊花链结构,如图1所示,将多个FPGA用菊花链连接起来串行下载。 该方法的缺点是各个FPGA的下载需要独占数据链路,下载的总时间是下载单个FPGA时间 之和;并且如果菊花链中的某一片FPGA损坏,便可能导致整条菊花链上的器件加载失败; 此外,从信号质量以及信号延时上考虑也限制了菊花链所能挂载器件的数量。另一种方法 是将每个FPGA的JTAG信号并联起来进行下载,其结构如图2所示,但这种方法适用于相同 逻辑代码的FPGA下载,如果要给不同型号的FPGA下载逻辑代码,则需要占用CPU的其他口 线。而且,CPU只能同时处理一个测试数据输出(TDO)信号,也就是说如果多片FPGA中有 个别FPGA下载失败,无法直接通过JTAG方式找到有问题的FPGA。在当前的复杂阵列系统如背板系统和层叠板系统中,出现多块FPGA芯片、多种型 号FPGA、同种型号FPGA不同代码的例子也越来越多,以上的两种配置方式均无法满足新系 统的调试需求。对于产品的生产和维护来说,譬如对于一件组装完成的产品进行测试或者升级代 码版本,拆开产品或者使用调试用的下载设备都是广受工程人员诟病的,因为这样面临着 时间风险和保密风险。因此,目前业界迫切需要一种更加方便快捷的FPGA下载方式,在时间、成本和灵 活性上取得优势。

发明内容
本发明提供了一种JTAG下载方式下FPGA逻辑代码的下载方法,用于对2片以上 相同或者不同型号的FPGA下载任意(相同或不同)的逻辑代码,尤其适用于对多型号多 FPGA下载多套逻辑代码,能够有效减少下载时间,从而提高FPGA调试效率。一种JTAG下载方式下FPGA逻辑代码的下载方法,包括(1)将CPU的通讯端口连接到CPLD的通讯端口,形成CPU和CPLD的通讯口线;将由CPU端口所模拟的JTAG下载信号中的TMS (测试模式选择)信号、TCK (测试时钟输入)信号、TDO(测试数据输出)信号和TDI (测试数据输入)信号连接到一片 CPLD (Complex Programmable Logic Device,复杂可编程逻辑器件)中;所述的CPLD的若 干JTAG下载信号端口标记为TMS_x,TD0_x, TCK_x和TDI_x,其中,χ为FPGA在该系统中的 编号,分别独立连接到编号为χ的FPGA的相应JTAG下载信号端口上;所述的CPLD中,根据 与CPLD相连的各FPGA的编号、类型和逻辑代码的信息,载入相应的CPLD代码;所述的CPLD 代码是经过严密试验证明了的,在系统设计的生命周期中无需更改;
(2) CPU通过所述的通讯口线向CPLD写入寄存器值,CPLD据此来判断各FPGA当前 是否进行逻辑代码下载对于系统中某个编号为χ的待下载逻辑代码的FPGA而言,如果其 在被选择下载之列,CPLD将来自CPU端口的TMS、TCK和TDI信号直接输出到该FPGA的对 应JTAG下载信号端口(TMS_x,TCK_x和TDI_x),将逻辑代码下载到该FPGA ;否则,CPLD与 该FPGA的对应JTAG下载信号端口连接的管脚保持高阻状态;同时,CPLD对每个TCK周期内被选择进行下载的FPGA输出的TDO信号的输出电平 进行检测,并设定参与下载的FPGA总数M的一半为一致性检测标准,当处于相同输出电平 的TDO信号数目超过M/2时,认为该电平为当前TCK周期内TDO信号的正确输出电平,并将 其对应的FPGA编号记为正常下载的FPGA编号,然后将该电平输出到CPU的TDO信号端口, 并记录不具有正确输出电平的TDO信号所对应的FPGA编号,作为异常下载的FPGA编号;如 果参与下载的FPGA总数M = 1,则不进行上述一致性检测操作,CPLD将该FPGA输出的TDO 信号电平输出到CPU的TDO信号端口 ;(3)下载过程结束后,CPU通过通讯口线读取CPLD的寄存器信息,判断各FPGA下 载是否成功对于正常下载的FPGA编号标记的FPGA,认为其下载成功,对于异常下载的 FPGA编号标记的FPGA,认为其下载失败;

如果下载失败,CPU读取CPLD寄存器信息中记录的异常下载的FPGA编号,对这些 FPGA分别重复步骤(2)的操作,记录重复操作步骤中异常下载的FPGA编号,两次均为异常 下载的FPGA编号所对应的FPGA被认为是故障FPGA,不能正确下载逻辑编码;如果下载成功,CPU通过通讯口线向CPLD写入寄存器值,将所有JTAG下载信号端 口置为高阻态。优选的技术方案中,连接CPU的通讯端口和CPLD的通讯端口之间的CPU和CPLD 的通讯口线采取I2c,SPI或其他通讯协议。本发明中,依靠CPLD的可编程逻辑特性,根据CPU由通讯口线发送的配置命令,将 来自CPU的JTAG下载信号端口和相应的FPGA的JTAG下载信号端口从逻辑上选通相连,同 时对其他的FPGA的JTAG下载信号端口作高阻处理,从而实现将逻辑代码下载到选通的各 FPGA。本发明中,在逻辑代码下载之前,由CPU通过通讯口线将当前待下载的FPGA的序 号存入CPLD的编程FPGA序号寄存器;在逻辑代码下载过程中,CPLD选通待下载的FPGA的 TMS、TCK、TDI信号,对TDO信号实施监测与仲裁;在逻辑代码下载完成之后,若再没有其它 的操作,CPLD向CPU返回异常FPGA序号寄存器值,同时CPU通过通讯口线向CPLD发出指 令,关闭CPU到FPGA的逻辑路径。这样,即使CPU因异常状态导致复位,也不会对FPGA的状 态有任何影响,待CPU复位完成后,系统可立即恢复工作,提高了系统的安全性和可靠性。本发明中,由于并行下载的FPGA可能有多片,而CPU能够处理的TDO只有一个,因此,采取CPLD对TDO信号 进行监测与仲裁,从而检测下载异常的FPGA并保证其它FPGA的正 常下载;同时,CPU可以获取各个FPGA的具体下载状态,进而可对指定编号的单个异常FPGA 进行进一步操作(重新下载和验证逻辑代码)以确定问题所在。本发明中,在并行下载的情况下,在大大减少下载所需时间的同时,还提供代码验 证的功能。本发明适用于为单板、背板系统和层叠立体结构电路板上多种型号FPGA下载不 同代码,对于同型号芯片数量较多的情形尤其有速度优势。本发明也适用于不同厂家芯片 的混合设计。综上所述,本发明中,通过将JTAG的下载信号端口和各个FPGA的JTAG下载信号 端口通过一片CPLD做选通处理,实现了逻辑代码的并行下载,从而明显减少下载相同逻辑 代码时所需的时间,提高了 FPGA的下载效率;同时,利用寄存器实现对CPLD内部选通逻辑 的控制,还使本下载方法具有了更高的灵活性和冗余度,并且可以很方便的支持在线仿真 器的挂载。此外,CPLD内部对同时下载的所有TDO进行检测与仲裁,还提供了对各FPGA并 行下载过程的监测,保证各FPGA下载过程的顺利完成。相对于现有技术,本发明具有以下有益的技术效果本发明下载方法,既可以实现多片FPGA相同逻辑代码的并行下载,大大减少下载 时间,也可以对指定FPGA下载所指定的逻辑代码。该方法相比菊花链的下载方法具有更快 的下载速度,同时对于简单并联JTAG 口线的下载方法,具有更佳的灵活性。采用本发明下载方法,即使有部分FPGA下载异常,下载进程也不会轻易中止,可 以确保其他FPGA下载成功,因此系统中任何FPGA的损坏都不影响其他FPGA的下载,对于 冗余度较高的系统而言,意味着多数FPGA下载是成功的,系统仍然可以投入运行,这对于 允许一定冗余的系统提高可靠性具有重要意义。本发明下载方法,连接到各个FPGA的信号都经过CPLD的独立驱动,可以保证良好 的信号质量,比其他下载方法适合于需要经过接插件且具有较长走线的背板系统和层叠板 系统。如果选通指定的单个FPGA,本方法还可以在CPU端口所模拟的JTAG信号上直接挂载 仿真器对任一指定的FPGA进行仿真,这样对于背板系统和层叠板系统,无需拆板,可以最 大限度地保持完整状态,保存故障现场,利于调试的进行。


图1为现有技术采用菊花链结构在JTAG下载方式下载FPGA逻辑代码的示意图。图2为现有技术采用并联结构在JTAG下载方式下载FPGA逻辑代码的示意图。图3为实施本发明的下载方法在JTAG下载方式下载FPGA逻辑代码的示意图。
具体实施例方式下面结合实施例和附图来详细说明本发明,但本发明并不仅限于此。以下将以含有η片FPGA的系统为例来详细说明本发明的下载方法,其中,FPGA以 选用Xilinx公司的FPGA芯片为例。如图3所示,一种JTAG下载方式FPGA逻辑代码的下载方法,包括(1)将CPU的通讯端口连接到CPLD的通讯端口,形成CPU和CPLD的通讯口线,采 用I2C总线协议;
将由CPU端口所模拟的JTAG下载信号中的TMS (测试模式选择)信号、TCK (测试时钟输入)信号、TDO(测试数据输出)信号和TDI (测试数据输入)信号连接到一块 CPLD (Complex Programmable Logic Device,复杂可编程逻辑器件)中;其中,CPLD的若干JTAG下载信号端口标记为TMS_x,TD0_x, TCK_x和TDI_x,其中, χ为FPGA在该系统中的编号,选自1 η中的自然数,分别独立连接到编号为χ的FPGA的 相应JTAG下载信号端口上,这样FPGA相互之间的下载过程是独立的,不会相互影响。对于 相同的逻辑代码,把相应的各FPGA上的JTAG下载信号端口和CPU的的JTAG下载信号端口 相连,将逻辑代码并行下载到各个FPGA。CPLD中,根据与CPLD相连的各FPGA的编号、类型和逻辑代码的信息,载入相应的 CPLD代码;所述的CPLD代码是经过严密试验证明了的,在系统设计的生命周期中无需更改。CPU通过通用输入输出端口(GPIO)模拟JTAG下载时序进行操作。CPU的信号端 口连接到 CPLD 上,对应为 TMS_in,TCK_in, TDI_in, TD0_in。(2) CPU通过所述的通讯口线向CPLD写入寄存器值,CPLD据此来判断各FPGA当前 是否进行逻辑代码下载对于系统中某个编号为χ的待下载逻辑代码的FPGA而言,如果其 在被选择下载之列,CPLD将来自CPU端口的TMS、TCK和TDI信号直接输出到该FPGA的对 应JTAG下载信号端口(TMS_x,TCK_x和TDI_x),将逻辑代码下载到该FPGA ;否则,CPLD与 该FPGA的对应JTAG下载信号端口连接的管脚保持高阻状态;同时,CPLD对每个TCK周期内被选择进行下载的FPGA输出的TDO信号的输出电平 进行检测,并设定参与下载的FPGA总数M的一半为一致性检测标准,当处于相同输出电平 的TDO信号数目超过M/2时,认为该电平为当前TCK周期内TDO信号的正确输出电平,并将 其对应的FPGA编号记为正常下载的FPGA编号,然后将该电平输出到CPU的TDO信号端口, 并记录不具有正确输出电平的TDO信号所对应的FPGA编号,作为异常下载的FPGA编号;如 果参与下载的FPGA中,超过一半的FPGA下载功能出现异常、导致这些FPGA输出的TDO信号 不正确,此时CPLD由于仍然以具有相同输出电平的数目超过M/2的TDO信号电平作为参考 电平并输出到CPU,该电平可能与当前TCK周期内TDO信号的正确输出信号电平不一致,此 时CPU将检测到TDO信号异常并立即终止下载过程,给出此次下载完全失败的报警信息;如果参与下载的FPGA总数M = 1,则不进行上述一致性检测操作,CPLD将该FPGA 输出的TDO信号电平输出到CPU的TDO信号端口 ;(3)下载过程结束后,CPU通过通讯口线读取CPLD的寄存器信息,判断各FPGA下 载是否成功对于正常下载的FPGA编号标记的FPGA,认为其下载成功,对于异常下载的 FPGA编号标记的FPGA,认为其下载失败;如果下载失败,CPU读取CPLD寄存器信息中记录的异常下载的FPGA编号,对这些 FPGA分别重复步骤(2)的操作,记录重复操作步骤中异常下载的FPGA编号,两次均为异常 下载的FPGA编号所对应的FPGA被认为是故障FPGA,不能正确下载逻辑编码;如果下载成功,CPU通过通讯口线向CPLD写入寄存器值,将所有JTAG下载信号端 口置为高阻态。
权利要求
1.一种JTAG下载方式下FPGA逻辑代码的下载方法,其特征在于,包括(1)将CPU的通讯端口连接到CPLD的通讯端口,形成CPU和CPLD的通讯口线;将由CPU端口所模拟的JTAG下载信号中的TMS信号、TCK信号、TDO信号和TDI信号连 接到一块CPLD中;所述的CPLD的若干JTAG下载信号端口标记为TMS_x,TD0_x, TCK_x和 TDI_x,其中,χ为FPGA在该系统中的编号,分别独立连接到编号为χ的FPGA的相应JTAG 下载信号端口上;所述的CPLD中,根据与CPLD相连的各FPGA的编号、类型和逻辑代码的信 息,载入相应的CPLD代码;(2)CPU通过所述的通讯口线向CPLD写入寄存器值,CPLD据此来判断各FPGA当前是否 进行逻辑代码下载对于系统中某个待下载逻辑代码的FPGA而言,如果其在被选择下载之 列,CPLD将来自CPU端口的TMS、TCK和TDI信号直接输出到该FPGA的对应JTAG下载信号 端口,将逻辑代码下载到该FPGA ;否则,CPLD与该FPGA的对应JTAG下载信号端口连接的管 脚保持高阻状态;同时,CPLD对每个TCK周期内被选择进行下载的FPGA输出的TDO信号的输出电平进 行检测,并设定参与下载的FPGA总数M的一半为一致性检测标准,当处于相同输出电平的 TDO信号数目超过M/2时,认为该电平为当前TCK周期内TDO信号的正确输出电平,并将其 对应的FPGA编号记为正常下载的FPGA编号,然后将该电平输出到CPU的TDO信号端口,并 记录不具有正确输出电平的TDO信号所对应的FPGA编号,作为异常下载的FPGA编号;如果 参与下载的FPGA总数M = 1,则不进行上述一致性检测操作,CPLD将该FPGA输出的TDO信 号电平输出到CPU的TDO信号端口 ;(3)下载过程结束后,CPU通过通讯口线读取CPLD的寄存器信息,判断各FPGA下载是 否成功对于正常下载的FPGA编号标记的FPGA,认为其下载成功,对于异常下载的FPGA编 号标记的FPGA,认为其下载失败;如果下载失败,CPU读取CPLD寄存器信息中记录的异常下载的FPGA编号,对这些FPGA 分别重复步骤(2)的操作,记录重复操作步骤中异常下载的FPGA编号,两次均为异常下载 的FPGA编号所对应的FPGA被认为是故障FPGA,不能正确下载;如果下载成功,CPU通过通讯口线向CPLD写入寄存器值,将所有JTAG下载信号端口置 为高阻态。
2.如权利要求1所述的JTAG下载方式下FPGA逻辑代码的下载方法,其特征在于,所述 的通讯口线采取GPIO、I2C总线协议或SPI总线协议。
全文摘要
本发明公开了一种JTAG下载方式下FPGA逻辑代码的下载方法,在支持相同FPGA逻辑代码高速并行下载的同时,允许对同型号的FPGA配置不同的代码,同时提供对各FPGA并行下载过程的监测。其中,所述下载方法包括将由CPU端口所模拟的JTAG下载信号中的TMS、TCK、TDO和TDI信号输入到CPLD,从CPLD引出独立的JTAG下载信号到各个FPGA,将逻辑代码下载到FPGA。通过对各TDO信号的监测与仲裁,使得系统具有了更高的自我诊断功能和冗余度。
文档编号G06F13/38GK102043747SQ201010594949
公开日2011年5月4日 申请日期2010年12月17日 优先权日2010年12月17日
发明者欧进利, 蒋荣欣, 陈耀武 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1