CN101030147A - 逻辑器件在线编程的方法及装置 - Google Patents

逻辑器件在线编程的方法及装置 Download PDF

Info

Publication number
CN101030147A
CN101030147A CN 200710086491 CN200710086491A CN101030147A CN 101030147 A CN101030147 A CN 101030147A CN 200710086491 CN200710086491 CN 200710086491 CN 200710086491 A CN200710086491 A CN 200710086491A CN 101030147 A CN101030147 A CN 101030147A
Authority
CN
China
Prior art keywords
programming
logical device
jtag
chaining
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200710086491
Other languages
English (en)
Other versions
CN100468335C (zh
Inventor
李鑫
迟立华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Information Technologies Co Ltd
Original Assignee
Hangzhou Huawei 3Com Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Huawei 3Com Technology Co Ltd filed Critical Hangzhou Huawei 3Com Technology Co Ltd
Priority to CNB2007100864916A priority Critical patent/CN100468335C/zh
Publication of CN101030147A publication Critical patent/CN101030147A/zh
Application granted granted Critical
Publication of CN100468335C publication Critical patent/CN100468335C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种逻辑器件在线编程的方法及装置,该方法将不同和/或相同厂家的逻辑器件成一条JTAG链;对JTAG链上任一逻辑器件进行在线编程,包括:生成一个包含JTAG链上所有逻辑器件信息的串行向量格式的成链编程文件或包含JTAG链上各逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件,对上述成链编程文件进行解析,对JTAG链上各逻辑器件进行在线编程。本发明具有增强在线编程的灵活性,减少文档管理成本、占有较少的物理资源,系统布局布线和编程过程简单及解除厂家私有移植代码的有益效果,适用于嵌入式编程,进行远程升级和维护。

Description

逻辑器件在线编程的方法及装置
技术领域
本发明涉及数据通信领域,尤其涉及一种对可编程逻辑器件进行嵌入式在线编程的方法及装置。
背景技术
现有的中高端数通设备中,为实现各种功能、满足成本方面的要求,可能同时使用不同或者相同厂家多种类型的逻辑器件。大多数逻辑器件支持在线编程,在设备运行过程中更新逻辑器件的内容或者上电期间对逻辑器件进行配置。现有逻辑器件,如:复杂可编程逻辑器件(Complex ProgrammableLogic Device,简称CPLD)、可擦除编程逻辑器件(Erasable ProgrammableLogic Device,简称EPLD)、现场可编程阵列(Field Programmable GateArray,简称FPGA)等都支持通过联合测试组织接口(Joint Test ActionGroup,简称JTAG接口)进行编程或配置的方式(JTAG接口符合IEEE 1149.1标准)。对逻辑器件的JTAG编程目前主要存在的技术方案是:
不同厂家的逻辑器件组成不同的JTAG链,同一厂家的逻辑器件共用一条JTAG链进行在线编程。如图1所示,A厂家的逻辑器件1-4组成上面的JTAG1链,B厂家的逻辑器件1-4组成下面的JTAG2链。图1中不同JTAG链上的4个逻辑器件可以为相同或不同类型的CPLD、EPLD、FPGA等。
相同厂家的逻辑器件形成的一条JTAG链上,对各个逻辑器件进行在线编程时,要先用该厂家编程工具生成对应格式的编程文件,把JTAG链上每个逻辑器件的信息包含在该对应格式的编程文件中,然后再调用该厂家的移植代码将编程文件加载到JTAG链上的各个逻辑器件中。
举例说明,如图1所示,A厂家的逻辑器件1-4形成的JTAG链,需要先用A厂家提供的编程工具(如:A为ALTERA公司,提供QUARTUS编程工具)生成对应格式的一个编程文件(如:QUARTUS编程工具生成对应格式为.jbc的编程文件),将逻辑器件1-4的编程内容包括进去,然后调用A厂家的移植代码(如:ALTERA公司对应的移植代码为JAM PLAYER)将对应格式的编程文件加载到对应的逻辑器件1-4中,对各个逻辑器件进行编程或配置。B厂家的逻辑器件1-4形成的JTAG链,需要先用B厂家提供的编程工具(如:B为LATTICE公司,提供ispVM编程工具)生成对应格式的一个编程文件(如:ispVM编程工具生成对应格式为.vme的编程文件),将B厂家的逻辑器件1-4的编程内容包括进去,然后调用B厂家的移植代码(如:LATTICE公司对应的移植代码为ispVMEmbedded)将对应格式的编程文件加载到B厂家JTAG链上对应的逻辑器件中,对逻辑器件进行编程或配置。
现有对逻辑器件进行编程的方案需要用占用不同的JTAG物理连接链、增加了单板布局布线的复杂度;对不同类型JTAG链上的各个逻辑器件进行编程时,需要生成不同格式的编程文件,并调用对应的移植代码,不同的移植代码只能识别固定格式的编程文件(如:移植代码JAM PLAYER可以识别格式为.jbc的编程文件,不能识别格式为.vme的编程文件),不同格式的编程文件是互不兼容的,编程过程复杂。
发明内容
本发明的目的是提出一种逻辑器件在线编程的方法和装置,有效解决现有技术中不同的JTAG链占用过多物理资源导致系统单板布局布线复杂的缺陷。同时,还可有效解决现有技术中编程文件多导致编程过程复杂的缺陷。
为了实现上述目的,本发明提供了一种逻辑器件在线编程的方法,包括:不同和/或相同厂家的各个逻辑器件成一条JTAG链;对所述JTAG链上的任一逻辑器件进行在线编程。
对所述JTAG链上的任一逻辑器件进行在线编程包括:生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的一个串行向量格式的成链编程文件;对所述串行向量格式的成链编程文件进行解析,获取JTAG链上各个逻辑器件的编程内容,对JTAG链上各个逻辑器件进行在线编程;或者利用JTAG链上不同厂家的编程工具分别生成几种不同格式的成链编程文件;所述成链编程文件包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件的编程内容;对所述成链编程文件进行解析,获取JTAG链上各个逻辑器件的编程内容,对JTAG链上各个逻辑器件进行在线编程或分别调用成链编程文件对应的移植代码,对JTAG链上各个逻辑器件进行在线编程。
上述技术方案中,生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的一个串行向量格式的成链编程文件包括:分别生成包含JTAG链上单个逻辑器件编程内容和JTAG指令寄存器长度的单个串行向量格式的编程文件;根据各单个串行向量格式的编程文件及JTAG链上各个逻辑器件的位置,用任一厂家的编程工具生成或者对各单个器件编程文件手工编辑生成一个串行向量格式的成链编程文件。
对JTAG链上各个逻辑器件进行在线编程可包括:根据各个逻辑器件在JTAG链上的位置信息、JTAG指令寄存器长度对指令进行处理,将需要编程的逻辑器件选定编程状态,将编程内容加入需要编程的逻辑器件。
为了实现上述目的,本发明还提供了一种逻辑器件在线编程的装置,包括:获取模块,与编程模块连接,用于获取包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件或包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的串行向量格式的成链编程文件;编程模块,与获取模块连接,用于读入成链编程文件,利用所述成链编程文件对JTAG链上任一逻辑器件进行在线编程。
编程模块包括:接口模块,与解析模块连接,读入成链编程文件,控制可编程器件的JTAG接口,完成编程操作;解析模块,与接口模块连接,根据获取的成链编程文件解析逻辑器件的编程内容;并对某一逻辑器件进行在线编程时将解析结果传入接口模块。编程模块还可以包括:调用模块,与接口模块连接,用于根据接口模块获取的包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件调用对应的移植代码,将编程内容传入接口模块。
所述解析模块进一步还可包括:校验子模块,与格式解析子模块连接,对成链编程文件进行校验,校验通过时将成链编程文件发送给格式解析子模块;格式解析子模块,与校验子模块及存储子模块连接,根据成链编程文件的格式,对成链编程文件进行解析,获取JTAG链上各个逻辑器件的位置信息、JTAG指令寄存器长度信息及各个逻辑器件的编程数据内容;存储子模块,与格式解析子模块连接,保存解析的各个逻辑器件的编程数据内容。
本发明提供了一种在一条JTAG链上,对JTAG链上不同厂家的逻辑器件进行在线编程的方法及装置。对不同厂家的逻辑器件形成的一条JTAG链,生成不同格式的只包含相同厂家逻辑器件编程内容的成链编程文件或一个包含所有逻辑器件编程内容的串行向量格式的成链编程文件,并且用生成的成链编程文件可对JTAG链上所有的逻辑器件进行在线编程。本发明增强了逻辑器件编程的灵活性,减少了文档管理的成本、占有较少的物理资源,并且大大简化了不同厂家多个逻辑器件成一条JTAG链时对逻辑器件进行在线编程的复杂程度,通过解析对各个逻辑器件进行在线编程,不受厂家移植代码的私有保护,并有效解决现有技术中不同的JTAG链占用过多物理资源导致系统单板布局布线复杂和编程文件多导致编程过程复杂的缺陷,适用于嵌入式编程,进行远程升级和维护。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为现有不同厂家逻辑器件组成不同JTAG编程链框图;
图2为本发明中逻辑器件组成一条JTAG编程链实施例框图;
图3为本发明逻辑器件在线编程的方法实施例一流程图;
图4为本发明逻辑器件在线编程的方法实施例二流程图;
图5为图4中对生成的不同格式的成链编程文件进行解析,获取逻辑器件的编程内容实施例流程图;
图6为本发明逻辑器件在线编程的方法实施例三流程图;
图7为图6中步骤1实施例流程图;
图8为本发明对JTAG链上一逻辑器件进行在线编程实施例一流程图;
图9为图8实施例解析示意图;
图10为本发明对JTAG链上一逻辑器件进行在线编程实施例二流程图;
图11为本发明逻辑器件在线编程的装置实施例一示意图;
图12为本发明编程模块内部结构实施例示意图;
图13为本发明逻辑器件在线编程的装置实施例二示意图。
具体实施方式
图2为本发明中逻辑器件组成一条JTAG编程链实施例框图。如图2所示,将不同和/或相同类型厂家的逻辑器件1-8组成一条JTAG链进行在线编程。本发明主要将不同和/或相同厂家的各个逻辑器件成一条JTAG链,并对所述JTAG链上的各个逻辑器件进行在线编程。
将各个逻辑器件形成一条JTAG链后,可以采用四种方式对各个逻辑器件进行在线编程:
第一种在线编程方式,分别生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上单个逻辑器件编程内容的单个编程文件;所述各单个编程文件分别调用对应的移植代码,对相应逻辑器件进行在线编程;
图2包括8个逻辑器件,假设逻辑器件1为ALTERA公司的器件,逻辑器件3为LATTICE的器件;则逻辑器件1对应的1.pof编程文件需要调用ALTERA公司的编程工具生成移植代码JAMPLAYER识别的格式为.jbc的单个编程文件(包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上逻辑器件1的编程内容),同理,逻辑器件3对应的3.jed编程文件需要调用LATTICE公司的编程工具生成移植代码ispVMEmdedded识别的格式为.vme的单个编程文件(包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上逻辑器件3的编程内容)。这种编程方式需要生成对应器件的八个编程文件,通过调用不同厂家的移植代码把生成的包含单个器件编程内容的编程文件加载到相应逻辑器件中。
第二种在线编程方式,JTAG链上不同厂家编程工具分别生成几种不同格式的成链编程文件;所述成链编程文件包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上相同厂家逻辑器件编程内容;各成链编程文件分别调用对应的移植代码,对JTAG链上的各个逻辑器件进行在线编程;
如图3所示,为第二种在线编程方式流程图:
步骤1’:JTAG链上不同厂家逻辑器件利用厂家工具分别生成几个不同格式的成链编程文件;所述成链编程文件包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上相同厂家逻辑器件的编程内容及位置信息;
步骤2’:不同格式的成链编程文件分别调用对应的移植代码,对JTAG链上的对应的逻辑器件进行在线编程。
现结合图2下面对第二种在线编程方式的过程举例说明:
如图2所示的一条JTAG链中,逻辑器件1、3为ALTERA公司的器件,逻辑器件2、4为LATTICE公司的器件;下面对编程过程进行描述:
a)分别生成包含单个器件编程内容的单个编程文件。如逻辑器件1和3利用ALTERA公司的编程工具分别生成对应格式的单个编程文件1.pof、3.pof;逻辑器件2和4利用LATTICE公司的编程工具分别生成对应格式的单个编程文件2.jed、4.jed;
b)生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度及逻辑器件1、3编程内容的.jbc格式的成链编程文件,生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和逻辑器件2、4编程内容的.vme格式的成链编程文件;
1.pof、3.pof单个编程文件需要调用ALTERA公司的编程工具生成移植代码JAMPLAYER识别的格式为.jbc的成链编程文件(只包含器件1、3的编程内容和JTAG链上各个逻辑器件位置、JTAG指令寄存器长度信息),同理,逻辑器件2、4对应的2.jed、4.jed单个编程文件需要调用LATTICE公司的编程工具生成移植代码ispVMEmdedded识别的格式为.vme的编程文件(只包含器件2、4的编程内容和JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度信息);
c)各种格式的成链编程文件分别调用对应的移植代码,对JTAG链上的逻辑器件进行在线编程:
只包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和器件1、3的编程内容信息的.jbc格式的成链编程文件调用对应的移植代码JAMPLAYER对逻辑器件1、3进行在线编程;只包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和器件2、4的编程内容的.vme格式的成链编程文件调用对应的移植代码ispVMEmdedded对逻辑器件2、4进行在线编程。
由上可知,一条JTAG链上有几个不同的厂家,需要生成几个只包含相同厂家逻辑器件编程内容的成链编程文件,通过调用不同厂家的移植代码把生成的成链编程文件加载到对应逻辑器件中。
第三种在线编程方式,JTAG链上不同厂家逻辑器件利用厂家工具分别生成几种不同格式的成链编程文件;所述成链编程文件包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上相同厂家逻辑器件的编程内容;对生成的不同格式的成链编程文件进行解析,获取JTAG链上各个逻辑器件的编程内容,对JTAG链上的各个逻辑器件进行在线编程;
如图4所示,为第三种在线编程方式流程图:
步骤1”2:利用JTAG链上不同厂家编程工具分别生成几个不同格式的成链编程文件;
步骤2”:对生成的不同格式的成链编程文件进行解析,获取相应逻辑器件的编程内容,对JTAG链上的相应逻辑器件进行在线编程。
利用JTAG链上不同厂家的编程工具分别生成几种不同格式的成链编程文件的具体生成过程可参见第二种在线编程方式中a)和b)部分的描述。
下面对生成的不同格式的成链编程文件进行解析,获取相应逻辑器件的编程内容进行说明,参见图5,对成链编程文件解析获取相应逻辑器件的编程内容包括:
步骤21:根据成链编程文件的格式,执行对应格式的循环冗余(CRC)校验;如:输入的成链编程文件格式为.jbc,则执行jbc格式对应的校验,jbc_crc_check;
步骤22:判断循环冗余校验是否正确,当循环冗余校验正确时,执行步骤23;否则结束;
步骤23:根据成链编程文件的格式,解析JTAG链上各个逻辑器件的位置信息、JTAG指令寄存器长度信息及相应逻辑器件的编程内容。
生成所述的成链编程文件后,根据各个成链编程文件的格式(.jbc、.vme等格式)设置不同格式的解析过程,解析出具体的JTAG链上的逻辑器件信息、指令长度和编程内容等,完成对JTAG链上逻辑器件的加载和编程。
具体的:在获得成链编程文件后,根据成链编程文件的格式,如.jbc格式、vme格式执行对应格式的解析。每种格式的成链编程文件在固定位置会存储有固定的信息,表1所示为.jbc格式的成链编程文件格式:
             表1.jbc格式的成链编程文件格式表
  0x00   First_word(4A 41 4D 01)   action_table(00 00 00 44)   Proc_table(00 00 00 80)   String_table(00 00 01 84)
  0x10   Note_strings(00 00 07 DF)   Note_table(00 00 09 06)   Symbol_table(00 00 09 6E)   Data_section(00 00 15 6A)
  0x20   Code_section(00 00 3c 83)   Debug_section   Crc_section
  0x30   Action_count(00000005)   Proc_count(00 00 00 14)   Note_count(00 00 00 0D)
  0x40   Symbol_count(000000EC)   Action1:name_id(00 00 031B)   Act_desc_id   Act_proc_id(0x00)
  0x50   Action2   Current_proc(0x08)   Action3
  0x60   0x0B   Action4
  0x70   0x0F   Action5   0x12
上表只是对.jbc文件的格式进行了一些简单分析,左边一列标的是地址。First_word(4A414D01)是固定的,还有可能是4A414D00,一个成链编程文件的首地址中如果是这两个值,则可以解析出为.jbc格式的成链编程文件,并且是由QUARTUS编程工具生成。接下来的action_table,procdure_table,string_table等存储的是变量的地址,这些变量都是指针形式,根据指针所指的地址从成链编程文件的相应位置检索出对应的信息值。因此.jbc格式的成链编程文件基本上是按照这种指针的一种排列结构组成的,把所有的有用信息全包含在内。根据这种格式的成链编程文件在对应位置读取相应的信息后,会获得文件的格式、版本信息、编译工具、JTAG链上各个逻辑器件的位置信息、相应逻辑器件的编程的数据内容等。
本实施例步骤22中,成链编程文件格式如果为.jbc格式,执行的jbc_crc_check校验结果与成链编程文件中的循环冗余数据Crc_section进行比较,如表1中0x28-0x2b位置处存放循环冗余数据Crc_section,为后续解析和在线编程提供了准确性保证。其它如.vme等格式的成链编程文件与.jbc格式的成链编程文件数据的存放位置和每个位置中数据的含义虽然不同,但只是存放格式不同,解析过程相似,在此不再一一例举。
在对不同格式成链编程文件的编程内容解析后,获得各个逻辑器件的位置信息、JTAG指令长度及各个逻辑器件的编程内容,然后对各个逻辑器件进行在线编程,后续会对逻辑器件进行编程内容加载的过程进行具体说明。
第四种在线编程方式,生成一个包含JTAG链上所有逻辑器件信息的串行向量格式的成链编程文件,利用所述成链编程文对JTAG链上任一逻辑器件进行在线编程。
下面结合图2和图6对逻辑器件第四种在线编程的方法进行说明。
图6为本发明逻辑器件在线编程的方法实施例三流程图。如图6所示,本实施例包括:
步骤1:生成包含一条JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的一个串行向量格式的成链编程文件;
步骤2:对所述成链编程文件进行解析,获取各个逻辑器件的编程内容,对JTAG链上各个逻辑器件进行在线编程。
本实施例步骤1需要生成一个成链编程文件,将一条JTAG链上不同或相同厂家的所有逻辑器件编程内容、JTAG指令寄存器长度和位置信息等包括在内。步骤1生成满足要求的一个成链编程文件的过程参见图7,包括:
步骤11:生成包含JTAG链上单个逻辑器件编程内容和JTAG指令寄存器长度的单个串行向量格式的编程文件;
步骤12:根据上述单个串行向量格式的编程文件及JTAG链上各个逻辑器件的位置,用任一编程工具生成或者对各个单个编程文件手工编辑生成一个串行向量格式的成链编程文件。
下面结合图2对串行向量格式成链编程文件的生成过程举例说明:例如,图2中1、3为ALTERA公司的器件,2、4为LATTICE公司的器件;生成一个包含逻辑器件1-4的串行向量格式的成链编程文件包括:
a)分别生成包含单个器件编程内容和JTAG指令寄存器长度的单个编程文件。如逻辑器件1和3利用ALTERA公司的编程工具分别生成对应格式的单个编程文件1.pof、3.pof;逻辑器件2和4利用LATTICE公司的编程工具分别生成对应格式的单个编程文件2.jed、4.jed;
b)要将JTAG链上各个逻辑器件不同格式的单个编程文件生成一个成链编程文件,需要先将不同格式的单个编程文件生成串行向量格式的编程文件,如:利用LATTICE公司的编程工具将2.jed和4.jed转换成串行向量格式(Serial Vector Format,简写为svf)的编程文件2.svf、4.svf。串行向量格式是不同编程工具都可以生成的文件格式,并且所有逻辑器件都支持这种格式的编程文件;
c)用任一编程工具,如:LATTICE公司的编程工具ispVM,将4个串行向量格式的单个编程文件生成一个包含器件1-4串行向量格式的成链编程文件,或者对各个单个编程文件手工编辑生成一个包含器件1-4串行向量格式的成链编程文件:
利用编程工具的链编辑功能,按照逻辑器件的位置先后,将4个单个串行向量格式的单个编程文件生成一个串行向量格式的成链编程文件,或者按照JTAG链上各个逻辑器件的位置次序,对各个单个串行向量格式编程文件手工编辑合并生成一个串行向量格式的成链编程文件。
因此,利用任一编程工具或者手工编辑可以生成一个串行向量格式的成链编程文件,该成链编程文件中包含JTAG链上各个逻辑器件的位置,编程内容和JTAG指令寄存器长度。在生成一个串行向量格式的成链编程文件之后,对所述成链编程文件进行解析,获得各个逻辑器件的编程内容,然后对JTAG链上任一逻辑器件进行在线编程。
串行向量格式定义了一套语法,用以描述JTAG指令和数据的扫描顺序和过程,以及指令和数据的内容,是JTAG通道链路动作的描述性语言。与.jbc或者.vme格式的成链编程文件不同(如表一所例举的.jbc格式的成链编程文件是难于识读的二进制代码,不易识读),串行向量格式的文件类似于C语言文件一样可读性比较高,这种格式的成链编程文件的内容是可读的,甚至可以根据需要进行编辑,从中可以直接解析出各个逻辑器件的编程指令、数据内容及位置信息等,获得各个逻辑器件信息后再对各个逻辑器件加载相应的编程内容。
第一种和第二种在线编程方式需要生成几个单个编程文件或成链编程文件;并分别调用对应的移植代码,对JTAG链上的各个逻辑器件进行在线编程,这两种编程方式和编程过程比较简单,但受到各厂家移植代码的限制;第三种在线编程方式也需要生成几个不同格式的成链编程文件,但后续编程时不调用厂家移植代码,对生成的不同格式的成链编程文件进行解析,解除了厂家对移植代码的私有保护;第四种在线编程方式同样实现了对一条JTAG链上逻辑器件的在线编程,生成一个串行向量格式的成链编程文件,并对所述串行向量格式的成链编程文件解析,用一个成链编程文件即可完成对所有逻辑器件的加载和编程。
第三种和第四种在线编程方式中,对成链编程文件解析获取各个逻辑器件的编程内容、指令长度和位置信息后,即可对JTAG链上各个逻辑器件进行在线编程,参见图8,对JTAG链上各个逻辑器件进行在线编程包括:
步骤31:根据各个逻辑器件位置信息、JTAG指令寄存器长度对指令进行处理,将需要编程的逻辑器件选定编程状态;
步骤32:将数据内容加入需要编程的逻辑器件。
步骤31中根据各个逻辑器件位置信息、JTAG指令寄存器长度对需要编程的逻辑器件送出编程指令,不需要编程的逻辑器件送出旁路指令,将对各个逻辑器件的指令按照位置依次发送,则只对需要编程的逻辑器件选定编程状态。
图9为图8实施例解析示意图。如图9所示,三个器件成一条JTAG链,从测试数据输入(Test Data Input,简称TDI)口输入数据,从测试数据输出(Test Data Output,简称TDO)口输出数据。对器件2进行编程,假设对成链编程文件解析后获知器件1的JTAG指令寄存器长度为6;器件3的JTAG指令寄存器长度为8;器件2的JTAG指令寄存器长度是10,在线编程(ISC_PROGRAM)的二进制指令是“0000010010”。在对器件2编程时,需要把在线编程(ISC_PROGRAM)指令送给器件2的指令寄存器,器件1和3都需要旁路(根据IEEE 1149.1标准,旁路指令全为“1”),因此在扫描指令周期,从TDI送入的二进制指令应该是“111111000001001011111111”,共24位。器件1接收到的指令就是“111111”,器件2接收到的指令就是“0000010010”,器件3接收到的指令就是“11111111”。器件1和3执行旁路操作,器件2开始执行在线编程操作,编程数据内容从TDI送给器件2,器件1和3处于旁路状态。
同理,将编程内容加入需要编程的逻辑器件过程为:对不需要编程的逻辑器件送出旁路数据(根据IEEE 1149.1和IEEE 1532标准,旁路数据送一位“0”即可)。对需要编程的逻辑器件,此逻辑器件的数据内容通过JTAG接口的TDI口串行地移入器件,获得编程内容。如器件2的编程数据为97位“****....**”,共97位数据,则对器件2写入编程内容时,需要把编程内容送给器件2的数据寄存器,器件1和3都需要旁路(只需要送出一位“0”即可),因此从TDI送入的二进制数据应该是“0****....**0”,共99位,器件1和器件3是旁路数据,只有器件2收到97位的编程数据。具体操作参照IEEE1149.1和IEEE 1532标准,在IEEE1149.1标准规范中,规定了串行移位和旁路的操作,在此不再详述。
图10为本发明对JTAG链上一逻辑器件进行在线编程的实施例二流程图。在生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的一个串行向量格式的成链编程文件或生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的几个不同格式的成链编程文件后,通过对成链编程文件的解析,获得JTAG链上各个逻辑器件的位置、编程数据、指令长度后,在对JTAG链上某一逻辑器件进行编程时,包括:
步骤310:调用JTAG控制函数,使整个JTAG链处于编程状态;
步骤311:对编程指令进行处理,非编程器件用旁路指令替代;
步骤312:输出附加后的指令,选定需要编程的逻辑器件;
步骤32:输出编程数据,进行编程;
步骤4:对逻辑器件串行移位读出的编程数据进行校验,判断是否正确,是则结束,否则判断是否超过预设的次数,本实施例设定为3次,如果不超过3次则执行步骤310,重新编程,否则结束,表示编程失败。
在对某一逻辑器件进行在线编程后,对逻辑器件串行移位读出的编程数据进行校验,判断编程的数据内容是否与要加载的数据内容一致,保证对逻辑器件在线加载的准确性。
图11为本发明逻辑器件在线编程的装置实施例一示意图。如图10所示,本实施例包括:
获取模块1,与编程模块2连接,用于获取包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件或包含JTAG链上所有逻辑器件位置信息、JTAG指令寄存器长度、逻辑器件编程内容的串行向量格式的成链编程文件;
编程模块2,与获取模块1连接,用于解析成链编程文件,获得各个逻辑器件的编程内容并对JTAG链上任一逻辑器件进行在线编程。
图11实施例为实现本发明中逻辑器件在线编程方法的装置,可以实现在一条JTAG链上,用一个成链编程文件对JTAG链上不同厂家的逻辑器件进行在线编程,增强了逻辑器件编程的灵活性,占有较少的物理资源,减少文档管理的成本和编程复杂度。
图12为本发明编程模块内部结构实施例示意图。如图12所示,本实施例中,编程模块包括:
接口模块21,与解析模块22连接,读入成链编程文件,控制逻辑器件的JTAG接口,完成编程操作;所述接口模块21与可编程器件的JTAG接口连接,以输出并控制编程数据内容;
解析模块22,与接口模块21连接,根据获取的成链编程文件解析各个逻辑器件的编程内容;并对某一逻辑器件进行在线编程时将解析结果传入接口模块21;解析模块22进一步包括:
校验子模块221,与格式解析子模块222连接,对成链编程文件进行校验,通过时将成链编程文件传入格式解析子模块222;
格式解析子模块222,与校验子模块221及存储子模块223连接,根据成链编程文件的格式,对成链编程文件进行解析,获取JTAG链上各个逻辑器件的位置信息、JTAG指令寄存器长度信息及各个逻辑器件编程的数据内容;
存储子模块223,与格式解析子模块222连接,保存解析的各个逻辑器件编程的数据内容。
本实施例中校验子模块可以对成链编程文件进行校验,增加了准确性;格式解析模块可以根据成链编程文件不同的格式执行对应的解析,具体操作可参见本发明方法实施例的说明。
图12实施例中,所述编程模块还可以包括:调用模块23,与接口模块21连接,用于根据接口模块获取的包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件调用对应的移植代码,将编程内容传入接口模块21。
在生成满足只包含相同厂家逻辑器件编程内容的成链编程文件后,可以调用厂家的移植代码对链上逻辑器件进行在线编程,或者对不同格式的成链编程文件进行解析,然后对链上逻辑器件进行在线编程,所以编程模块可以包括解析模块或调用模块,也可以两者均包括,实现灵活的编程方式。
图13为本发明逻辑器件在线编程的装置实施例二示意图。图13中解析模块内部结构与图12类似,不同之处在于,解析模块中还包括:数据处理子模块224,与存储子模块223连接,根据各个逻辑器件位置信息、JTAG指令寄存器长度对编程指令或数据进行处理,将处理后的指令或数据发送给接口模块21。其它与图12中相同具体功能模块不再详述。
本发明实施例对于不同厂家的逻辑器件形成一条JTAG链,不需要移植不同厂家提供的编程代码,即可对JTAG链上的逻辑器件进行在线编程,增强了逻辑器件编程的灵活性;可以生成一个包含所有逻辑器件信息的串行向量格式的成链编程文件,利用一个成链编程文件对逻辑器件进行编程,减少了文档管理的成本、占有较少的物理资源,并且大大简化了不同厂家多个逻辑器件成链时对逻辑器件进行在线编程的复杂程度,特别适用于嵌入式编程,进行远程升级和维护。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。

Claims (15)

1.一种逻辑器件在线编程的方法,其特征在于,包括:
不同和/或相同厂家的各个逻辑器件成一条JTAG链;
对所述JTAG链上的任一逻辑器件进行在线编程。
2.根据权利要求1所述的逻辑器件在线编程的方法,其特征在于,所述对所述JTAG链上的任一逻辑器件进行在线编程包括:
生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的一个串行向量格式的成链编程文件;
对所述成链编程文件进行解析,获取JTAG链上各个逻辑器件的编程内容;
对JTAG链上各个逻辑器件进行在线编程。
3.根据权利要求1所述的逻辑器件在线编程的方法,其特征在于,所述对所述JTAG链上的任一逻辑器件进行在线编程包括:
利用JTAG链上不同厂家的编程工具分别生成几种不同格式的成链编程文件;所述成链编程文件包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件的编程内容;
对所述成链编程文件进行解析,获取JTAG链上各个逻辑器件的编程内容,对JTAG链上各个逻辑器件进行在线编程或分别调用成链编程文件对应的移植代码,对JTAG链上各个逻辑器件进行在线编程。
4.根据权利要求1所述的逻辑器件在线编程的方法,其特征在于,所述对所述JTAG链上的任一逻辑器件进行在线编程包括:
分别生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和JTAG链上单个逻辑器件编程内容的单个编程文件;
调用各单个编程文件对应的移植代码,对JTAG链上各个逻辑器件进行在线编程。
5.根据权利要求2所述的逻辑器件在线编程的方法,其特征在于,所述生成包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度、各个逻辑器件编程内容的一个串行向量格式的成链编程文件包括:
分别生成包含JTAG链上单个逻辑器件编程内容和JTAG指令寄存器长度的单个串行向量格式的编程文件;
根据各单个串行向量格式的编程文件及JTAG链上各个逻辑器件的位置,用任一编程工具生成或者对各单个器件编程文件手工编辑生成一个串行向量格式的成链编程文件。
6.根据权利要求2、3或5所述的逻辑器件在线编程的方法,其特征在于,所述对所述成链编程文件进行解析,获取JTAG链上各个逻辑器件的编程内容包括:
根据成链编程文件的格式,执行对应格式的循环冗余校验;
判断所述的循环冗余校验是否正确,当校验正确时,执行成链编程文件对应格式的解析,获得JTAG链上各个逻辑器件的位置信息、JTAG指令寄存器长度信息及编程的数据内容。
7.根据权利要求2、3或5所述的逻辑器件在线编程的方法,其特征在于,所述对JTAG链上各个逻辑器件进行在线编程包括:
根据各个逻辑器件在JTAG链上的位置信息、JTAG指令寄存器长度对指令进行处理,将需要编程的逻辑器件选定编程状态,将编程内容加入需要编程的逻辑器件。
8.根据权利要求7所述的逻辑器件在线编程的方法,其特征在于,所述根据各个逻辑器件在JTAG链上的位置信息、JTAG指令寄存器长度对指令进行处理,将需要编程的逻辑器件选定编程状态为:
根据各个逻辑器件在JTAG链上的位置信息、JTAG指令寄存器长度对需要编程的逻辑器件送出编程指令,不需要编程的逻辑器件送出旁路指令,将对各个逻辑器件的指令按照位置依次发送。
9.根据权利要求8所述的逻辑器件在线编程的方法,其特征在于,所述将编程内容加入需要编程的逻辑器件为:
对不需要编程的逻辑器件送出旁路数据,对需要编程的逻辑器件送出编程数据,将对各个逻辑器件的数据内容按照位置依次发送。
10.根据权利要求1、2、3、5、8或9所述的逻辑器件在线编程的方法,其特征在于,所述对JTAG链上任一逻辑器件进行在线编程之后还包括:
对在线编程的逻辑器件的编程内容进行校验,判断校验是否正确,当校验不通过且小于预设的次数时,重新对逻辑器件进行编程。
11.一种逻辑器件在线编程的装置,其特征在于,包括:
获取模块,与编程模块连接,用于获取包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件或包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和各个逻辑器件编程内容的串行向量格式的成链编程文件;
编程模块,与获取模块连接,用于读入成链编程文件,对JTAG链上任一逻辑器件进行在线编程。
12.根据权利要求11所述的逻辑器件在线编程的装置,其特征在于,所述编程模块包括:
接口模块,与解析模块连接,读入成链编程文件,控制逻辑器件的JTAG接口,完成编程操作;
解析模块,与接口模块连接,根据获取的成链编程文件解析逻辑器件的编程内容;并对某一逻辑器件进行在线编程时将解析结果传入接口模块。
13.根据权利要求12所述的逻辑器件在线编程的装置,其特征在于,所述编程模块进一步包括:
调用模块,与接口模块连接,用于根据接口模块获取的包含JTAG链上各个逻辑器件位置信息、JTAG指令寄存器长度和相同厂家逻辑器件编程内容的不同格式的成链编程文件调用对应的移植代码,将编程内容传入接口模块。
14.根据权利要求12或13所述的逻辑器件在线编程的装置,其特征在于,所述解析模块包括:
校验子模块,与格式解析子模块连接,对成链编程文件进行校验,校验通过时将成链编程文件发送给格式解析子模块;
格式解析子模块,与校验子模块及存储子模块连接,根据成链编程文件的格式,对成链编程文件进行解析,获取JTAG链上各个逻辑器件的位置信息、JTAG指令寄存器长度信息及各个逻辑器件的编程内容;
存储子模块,与格式解析子模块连接,保存解析的各个逻辑器件的编程内容。
15.根据权利要求14所述的逻辑器件在线编程的装置,其特征在于,所述解析模块进一步包括:
数据处理子模块,与存储子模块连接,根据各个逻辑器件位置信息、JTAG指令寄存器长度对编程指令或数据进行处理,将处理后的指令或数据发送给接口模块。
CNB2007100864916A 2007-03-13 2007-03-13 逻辑器件在线编程的方法及装置 Active CN100468335C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100864916A CN100468335C (zh) 2007-03-13 2007-03-13 逻辑器件在线编程的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100864916A CN100468335C (zh) 2007-03-13 2007-03-13 逻辑器件在线编程的方法及装置

Publications (2)

Publication Number Publication Date
CN101030147A true CN101030147A (zh) 2007-09-05
CN100468335C CN100468335C (zh) 2009-03-11

Family

ID=38715519

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100864916A Active CN100468335C (zh) 2007-03-13 2007-03-13 逻辑器件在线编程的方法及装置

Country Status (1)

Country Link
CN (1) CN100468335C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894029A (zh) * 2010-06-21 2010-11-24 中兴通讯股份有限公司 一种在线升级复杂可编程逻辑器件的方法及装置
CN103680608A (zh) * 2012-09-18 2014-03-26 英业达科技有限公司 提高边界扫描技术对芯片烧录速度的系统及其方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508777A (zh) * 2011-11-04 2012-06-20 杭州中天微系统有限公司 支持多种底层接口的在线仿真器装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894029A (zh) * 2010-06-21 2010-11-24 中兴通讯股份有限公司 一种在线升级复杂可编程逻辑器件的方法及装置
CN103680608A (zh) * 2012-09-18 2014-03-26 英业达科技有限公司 提高边界扫描技术对芯片烧录速度的系统及其方法

Also Published As

Publication number Publication date
CN100468335C (zh) 2009-03-11

Similar Documents

Publication Publication Date Title
CN1160626C (zh) 基于标记的链接
CN1752934A (zh) 编译器、编译方法以及编译程序
CN101055523A (zh) 将软件程序代码断言转换为硬件描述语言程序代码的方法
CN108710575A (zh) 基于路径覆盖测试用例自动生成的单元测试方法
CN1940859A (zh) 使用3字节转义操作码的指令集扩展
CN1794236A (zh) 高效的基于cam在分组有效载荷中进行串搜索的技术
CN1894696A (zh) 检测数据流中的模式的方法和装置
CN1731747A (zh) 自动化测试框架系统及方法
CN1950819A (zh) 检索信息的系统和方法以及储存信息的系统和方法
CN101030147A (zh) 逻辑器件在线编程的方法及装置
CN1744092A (zh) 一种自动调度逻辑仿真与代码覆盖率分析的方法与系统
CN1893282A (zh) 一跨序列排序涡轮码系统和其操作方法
CN1441555A (zh) 改进的哈夫曼译码方法和装置
CN1710547A (zh) 软件测试方法及其系统
CN1525323A (zh) 处理器以及用于产生在处理器中使用的程序的编译器
CN1577284A (zh) 一种边界扫描测试的实现方法及装置
US20040154004A1 (en) Web application code conversion system
CN101079890A (zh) 一种生成特征码确定状态机的方法和装置
CN1549670A (zh) 一种检查一致性的方法与装置
CN1900910A (zh) 二进制翻译中经由跳转表的多目标分支语句的识别方法
CN1862267A (zh) 对电路原理图进行审查的方法
CN1542616A (zh) 编译装置、编译方法、通信终端设备、编译程序以及程序产品
CN1300395A (zh) 处理器
CN1295778C (zh) 一种验证芯片硬件行为与软件模拟行为的一致性的方法
CN1845514A (zh) 软件模块的测试方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: NEW H3C TECHNOLOGIES Co.,Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: HANGZHOU H3C TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230529

Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Patentee after: H3C INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466

Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd.