首页> 中国专利> JTAG下载方式下FPGA逻辑代码的下载方法

JTAG下载方式下FPGA逻辑代码的下载方法

摘要

本发明公开了一种JTAG下载方式下FPGA逻辑代码的下载方法,在支持相同FPGA逻辑代码高速并行下载的同时,允许对同型号的FPGA配置不同的代码,同时提供对各FPGA并行下载过程的监测。其中,所述下载方法包括:将由CPU端口所模拟的JTAG下载信号中的TMS、TCK、TDO和TDI信号输入到CPLD,从CPLD引出独立的JTAG下载信号到各个FPGA,将逻辑代码下载到FPGA。通过对各TDO信号的监测与仲裁,使得系统具有了更高的自我诊断功能和冗余度。

著录项

  • 公开/公告号CN102043747A

    专利类型发明专利

  • 公开/公告日2011-05-04

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN201010594949.0

  • 发明设计人 陈耀武;蒋荣欣;欧进利;

    申请日2010-12-17

  • 分类号G06F13/38;

  • 代理机构杭州天勤知识产权代理有限公司;

  • 代理人胡红娟

  • 地址 310027 浙江省杭州市西湖区浙大路38号

  • 入库时间 2023-12-18 02:05:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-07-18

    授权

    授权

  • 2011-11-23

    著录事项变更 IPC(主分类):G06F13/38 变更前: 变更后: 申请日:20101217

    著录事项变更

  • 2011-06-15

    实质审查的生效 IPC(主分类):G06F13/38 申请日:20101217

    实质审查的生效

  • 2011-05-04

    公开

    公开

说明书

技术领域

本发明涉及现场可编程门阵列(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,TDO_x,TCK_x和TDI_x,其中,x为FPGA在该系统中的编号,分别独立连接到编号为x的FPGA的相应JTAG下载信号端口上;所述的CPLD中,根据与CPLD相连的各FPGA的编号、类型和逻辑代码的信息,载入相应的CPLD代码;所述的CPLD代码是经过严密试验证明了的,在系统设计的生命周期中无需更改;

(2)CPU通过所述的通讯口线向CPLD写入寄存器值,CPLD据此来判断各FPGA当前是否进行逻辑代码下载:对于系统中某个编号为x的待下载逻辑代码的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逻辑代码的示意图。

具体实施方式

下面结合实施例和附图来详细说明本发明,但本发明并不仅限于此。

以下将以含有n片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,TDO_x,TCK_x和TDI_x,其中,x为FPGA在该系统中的编号,选自1~n中的自然数,分别独立连接到编号为x的FPGA的相应JTAG下载信号端口上,这样FPGA相互之间的下载过程是独立的,不会相互影响。对于相同的逻辑代码,把相应的各FPGA上的JTAG下载信号端口和CPU的的JTAG下载信号端口相连,将逻辑代码并行下载到各个FPGA。

CPLD中,根据与CPLD相连的各FPGA的编号、类型和逻辑代码的信息,载入相应的CPLD代码;所述的CPLD代码是经过严密试验证明了的,在系统设计的生命周期中无需更改。

CPU通过通用输入输出端口(GPIO)模拟JTAG下载时序进行操作。CPU的信号端口连接到CPLD上,对应为TMS_in,TCK_in,TDI_in,TDO_in。

(2)CPU通过所述的通讯口线向CPLD写入寄存器值,CPLD据此来判断各FPGA当前是否进行逻辑代码下载:对于系统中某个编号为x的待下载逻辑代码的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下载信号端口置为高阻态。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号