首页> 中国专利> 对可编程逻辑器件进行在系统编程的装置和方法

对可编程逻辑器件进行在系统编程的装置和方法

摘要

本发明提供了一种用于对可编程逻辑器件进行在系统编程的装置,该装置包括:文件格式转换器,用于将目标可编程逻辑器件的串行向量格式文件转换成嵌入式编程格式文件,作为目标可编程逻辑器件的在系统编程文件;以及文件解释器,用于解析输入的嵌入式编程格式文件,生成符合IEEE1149.1的编程信息,并根据编程信息驱动JTAG接口信号,对目标可编程逻辑器件进行在系统编程。此外,本发明还提供了一种用于对可编程逻辑器件进行在系统编程的方法。通过本发明的技术方案,实现了以下有益效果:在保留了目前适用于几乎所有可编程逻辑器件制造商器件的优势的同时,解决了存储资源消耗大、差错检测能力差、以及不能显式区分整个在系统编程过程各个阶段的问题。

著录项

  • 公开/公告号CN101266548A

    专利类型发明专利

  • 公开/公告日2008-09-17

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200710087364.8

  • 发明设计人 曹兴国;马立军;黄燕荣;林盛荣;

    申请日2007-03-14

  • 分类号G06F9/45;G01R31/3167;

  • 代理机构北京康信知识产权代理有限责任公司;

  • 代理人吴孟秋

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦

  • 入库时间 2023-12-17 20:49:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-08

    未缴年费专利权终止 IPC(主分类):G06F9/45 授权公告日:20120704 终止日期:20180314 申请日:20070314

    专利权的终止

  • 2012-07-04

    授权

    授权

  • 2008-11-05

    实质审查的生效

    实质审查的生效

  • 2008-09-17

    公开

    公开

说明书

技术领域

本发明涉及应用可编程集成电路的领域,具体地,涉及一种对可编程逻辑器件(PLD)进行在系统编程(ISP:In SystemProgramming)的装置和方法,其尤其适用于在存储资源和运算资源受限的嵌入式系统内提供PLD在线升级(on-line upgrade)功能的场合。

背景技术

可编程逻辑器件(PLD)是一类包含可编程单元的集成电路,电可编程逻辑器件(EPLD)、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)都是典型的可编程逻辑器件,它们被广泛地应用于数字电路的各种应用领域。使用可编程逻辑器件,设计者既可以在有限的印刷电路板(PCB)空间内实现较大规模的数字逻辑电路,又可以简化电路板设计的前期准备。同时,可编程逻辑器件的在系统可编程(ISP)特性使设计者能够对焊在印刷电路板上的可编程逻辑器件进行重复编程,这在很大程度上缩短了开发周期,降低了开发成本。

几乎所有的可编程逻辑器件制造商都在IEEE 1149.1标准的基础上提供ISP功能。在IEEE 1149.1中,联合测试行动组(JTAG)为数字集成电路和数模混合电路定义了一个测试访问端口(TAP)和一种边界扫描逻辑结构,实现了对不同器件进行边界扫描测试(BST)和在系统编程(ISP)的统一接口(通常称为JTAG接口)。JTAG接口包括四个必备信号(TDI、TDO、TMS、TCK)。其中,TCK为时钟输入信号,TDI用于向TAP输入JTAG数据或JTAG指令,TAP通过TDO输出JTAG数据或JTAG指令,TMS用来驱动TAP控制器状态机。各种器件的JTAG接口能以雏菊花链(DaisyChain)的方式连接起来,集中由一个测试/编程器访问。

为了对BST和ISP过程进行描述,ASSET Inter Tech公司(前身是Texas Instruments公司的JTAG工具团队)开发出一种串行向量格式(SVF)文件。由于SVF在独立于特定器件的条件下完整地描述了测试/编程器访问JTAG接口的全过程,目前它已被绝大多数PLD制造商采纳,成为事实上的标准的BST过程描述语言和ISP过程描述语言。PLD制造商的集成开发软件都提供SVF文件输出功能。例如,Altera公司的Quartus II、Lattice公司的ispVM、Xilinx公司的ISE都支持把各自的编程数据文件转换成SVF文件。

SVF是由一系列SVF语句组成的ASCII文本文件,每一条SVF语句都包含命令字和参数列表,以分号“;”结尾。参数列表依次包括扫描数值、参数关键字、和扫描数据。扫描数据(分为JTAG数据和JTAG指令)在一对括号中以十六进制形式表示。参数关键字TDI引导的扫描数据和SMASK引导的扫描数据进行逻辑与运算后,以最低有效位(LSB)在前的顺序输入器件。参数关键字TDO引导的扫描数据和MASK引导的扫描数据进行逻辑与运算后,同样以LSB在前的顺序依次与器件的输出数据进行比较。SVF命令字列举如下:

ENDDR  指定JTAG数据寄存器扫描(DR scan)操作结束后TAP控制器状态机的状态

ENDIR  指定JTAG指令寄存器扫描(IR scan)操作结束后TAP控制器状态机的状态

FREQUENCY  指定TCK信号频率的最大值

HDR  指定在每次DR scan操作开始前预先输入输出器件TAP的JTAG数据前缀

HIR  指定在每次IR scan操作开始前预先输入输出器件TAP的JTAG指令前缀

PIO  指定一种并行测试向量

PIOMAP  指定PIO命令中并行测试向量与器件管脚的映射关系

RUNSET  驱动器件的TAP状态机进入某一状态,并在此状态下运行一段时间,这段时间可以用TCK周期数表示

SDR  执行JTAG数据寄存器扫描(DR scan)

SIR 执行JTAG指令寄存器扫描(IR scan)

STATE  驱动器件的TAP状态机进入某一稳定状态

TDR  指定在每次DR scan操作结束前输入输出器件TAP的JTAG数据后缀

TIR  指定在每次IR scan操作结束前输入输出器件TAP的JTAG指令后缀

TRST  控制JTAG接口的可选输入信号TRST

使用SVF文件进行在系统编程的方法虽然具有适用于几乎所有PLD制造商的器件的优点,但是它也存在明显的缺点:第一,SVF最主要的两个命令SDR、SIR携带着原始JTAG数据和原始JTAG指令,而这些数据和指令包含极大的冗余信息,加上它是一种由ASCII字符组成的文本格式,因此SVF文件的数据量非常大,对这种文件的保存和处理都需要耗费大量存储单元;第二,SVF没有提供足够的检错能力,SVF处理软件在大多数情况下无法检查出文件在保存、传递过程因为外界干扰而引入的差错,错误的JTAG数据和JTAG指令仍旧被用于PLD编程,在一些条件下甚至可能造成PLD的硬件损伤。

存储和容错方面的问题使SVF不能成为理想的ISP文件格式,在提供PLD在线升级(on-line upgrade)功能的嵌入式系统里,这些问题更是必须解决的。嵌入式系统是为某种应用所定制的包含嵌入式处理器、存储器和其他逻辑器件的电子设备。一般情况下,存储容量非常有限,为了保存、处理PLD的ISP文件而占用大量存储单元是很不经济的。另一方面,为了实现PLD在线升级,嵌入式系统通常需要从某一个外部通讯接口(例如RS232接口或以太网口)获得新的ISP文件,这个通讯过程存在引入外部干扰导致文件差错的可能,因此,对ISP文件进行检错处理就显得相当必要。

除了以上两个缺点,由于SVF文件直接描述JTAG接口的访问过程,它还存在不能显式区分整个ISP过程各个阶段的问题。事实上,PLD的整个ISP过程是由多个阶段组成的。对于EPLD、CPLD、和FPGA这三种典型PLD来说,ISP主要包括器件标识检查、擦除、编程、和校验四个阶段。显式区分这些阶段有助于软件在ISP过程给出必要的提示信息,提高ISP过程的健壮性。

综上所述,可编程逻辑器件的在系统编程,特别是嵌入式系统中可编程逻辑器件的在系统编程需要一种更先进的技术,这一技术应该不仅能够发挥现有技术的优势,更重要的是还能解决它所面临的问题。

发明内容

考虑到相关技术中存在的耗费较大存储单元、容错性差、以及不能显式区分整个在系统编程过程各个阶段的问题而做出本发明。

为此,根据本发明的一个实施例,提供了一种对可编程逻辑器件进行在系统编程的装置。

该装置包括:文件格式转换器,用于将目标可编程逻辑器件的串行向量格式文件转换成嵌入式编程格式文件,作为目标可编程逻辑器件的在系统编程文件;以及文件解释器,用于解析输入的嵌入式编程格式文件,生成符合IEEE1149.1的编程信息,并根据编程信息驱动JTAG接口信号,对目标可编程逻辑器件进行在系统编程。

其中,当有多个目标可编程逻辑器件存在于一条雏菊花链中时,文件格式转换器将多个目标可编程逻辑器件对应的所有串行向量格式文件统一转换成一个嵌入式编程格式文件,作为多个目标可编程逻辑器件的在系统编程文件,其中,上述多个目标可编程逻辑器件是该雏菊花链中部分或全部可编程逻辑器件。

以下首先具体描述嵌入式编程格式文件。嵌入式编程格式文件是二进制文件,它包含作为文件格式转换器输入的所有串行向量格式文件的全部编程信息。另外,嵌入式编程格式文件还可以包含以下部分或全部信息:差错校验字;标识目标可编程逻辑器件的在系统编程过程各个阶段的信息;文件版本信息。

其中,差错校验字用于检查嵌入式编程格式文件在保存和传递过程中因外界干扰而引入的差错;标识目标可编程逻辑器件的在系统编程过程各个阶段的信息用于在系统编程过程给出必要提示;文件版本信息用于检验嵌入式编程格式文件与目标可编程逻辑器件是否匹配,以及指示嵌入式编程格式文件的更新次数。

这样,文件解释器在进行解析操作之前,利用嵌入式编程格式文件中的差错校验字对嵌入式编程格式文件本身的正确性进行校验,和/或利用文件版本信息检验嵌入式编程格式文件与目标可编程逻辑器件是否匹配。

根据本发明的另一实施例,提供了一种对可编程逻辑器件进行在系统编程的方法。

该方法包括以下步骤:第一步骤,文件格式转换器将目标可编程逻辑器件的串行向量格式文件转换成嵌入式编程格式文件,并将嵌入式编程格式文件作为在系统编程文件加以保存和传递;第二步骤,文件解释器校验嵌入式编程格式文件的有效性、是否与目标可编程逻辑器件匹配、以及是否为最新的在系统编程文件;第三步骤,文件解释器通过对嵌入式编程格式文件进行相应处理来对目标可编程逻辑器件进行在系统编程。

上述的第一步骤具体包括以下步骤:步骤A:文件格式转换器对目标可编程逻辑器件的串行向量格式文件中的串行向量格式命令进行逐条处理,将串行向量格式命令字和参数关键字替换成相应的二进制符号编码,将扫描数值和扫描数据压缩编码成二进制序列,同时插入标识目标可编程逻辑器件在系统编程各阶段的二进制符号编码,得到二进制编程数据;步骤B:文件格式转换器对二进制编程数据进行无损压缩,并将嵌入式编程格式文件长度信息和嵌入式编程格式文件版本信息添加到压缩数据之前;以及步骤C:文件格式转换器对嵌入式编程格式文件长度信息、嵌入式编程格式文件版本信息、以及压缩数据进行CRC-16计算,将计算结果添加到嵌入式编程格式文件长度信息之前,将嵌入式编程格式文件头部和压缩数据的总合保存为嵌入式编程格式文件。

其中,上述的嵌入式编程格式文件头部包括CRC-16校验信息、嵌入式编程格式文件长度信息、以及嵌入式编程格式文件版本信息。

在第二步骤中,文件解释器对嵌入式编程格式文件中除CRC-16校验信息之外的部分进行CRC-16计算,比较计算结果与CRC-16校验信息,如果二者一致,则说明嵌入式编程格式文件有效,否则说明嵌入式编程格式文件无效;文件解释器核查嵌入式编程格式文件版本信息,以确认嵌入式编程格式文件是否与目标可编程逻辑器件匹配、以及是否为最新的在系统编程文件。

上述的第三步骤具体包括以下步骤:步骤A:文件解释器对嵌入式编程格式文件的压缩数据部分进行解压缩,还原出二进制编程数据;以及步骤B:文件解释器识别二进制编程数据中的串行向量格式命令,从中提取扫描数据,驱动JTAG接口信号,对目标可编程逻辑器件进行在系统编程。

通过以上技术方案,本发明实现了以下有益效果:在保留目前适用于几乎所有可编程逻辑器件制造商器件的优势的同时,解决了存储资源消耗大、差错检测能力差、以及不能显式区分整个在系统编程过程各个阶段的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的用于解释对可编程逻辑器件进行在系统编程的装置的框图;

图2是根据本发明实施例的对可编程逻辑器件进行在系统编程的装置的具体实现的结构示意图;

图3是根据本发明实施例的用于解释对可编程逻辑器件进行在系统编程的方法的流程图;

图4是示出EPF文件的结构的示意图;

图5是示出文件格式转换器的处理流程的流程图;

图6是文件格式转换器使用的“比特级联”算法的处理流程图;以及

图7是示出文件解释器的处理流程的流程图。

具体实施方式

以下将参照附图来描述本发明的优选实施例,提供以下实施例的目的在于提供对本发明的全面和透彻理解,而不是对本发明进行任何限制。

装置实施例

在本实施例中,提供了了一种对可编程逻辑器件进行在系统编程的装置。

如图1所示,装置100包括:文件格式转换器102,用于将目标可编程逻辑器件(PLD)的串行向量格式(SVF)文件转换成嵌入式编程格式(EPF)文件,作为目标可编程逻辑器件的在系统编程文件;以及文件解释器104,用于解析输入的嵌入式编程格式文件,生成符合IEEE1149.1的编程信息(包括JTAG数据和JTAG指令),并根据编程信息驱动JTAG接口信号,对目标可编程逻辑器件进行在系统编程。

文件格式转换器102可以是存在于计算机存储器介质上的程序。

当有多个目标PLD存在于一条雏菊花链中时,文件格式转换器将多个目标PLD对应的所有SVF文件统一转换成一个EPF文件,作为多个目标PLD的在系统编程文件。上述多个目标PLD可以是这条雏菊花链中的所有可编程逻辑器件,也可以是这条雏菊花链中的任意几个可编程逻辑器件。另外,SVF文件由目标PLD制造商的集成开发软件输出。

上述的EPF文件取代了原SVF文件,作为目标PLD进行在系统编程的文件。具体地,EPF文件首先是二进制文件,它包含作为文件格式转换器输入的所有SVF文件的全部编程信息。另外,EPF文件还可以包含以下的部分或全部信息:差错校验字;标识目标PLD在系统编程过程各个阶段的信息;文件版本信息。

与所有SVF文件规模的总和相比,EPF文件的规模小很多,在保存和处理过程中只需占用极少的存储单元;此外,EPF文件包含差错校验字,这使得检查出EPF文件在保存和传递过程中因外界干扰而引入的差错成为可能;EPF文件包含标识目标PLD在系统编程过程各个阶段的信息,这使在系统编程过程得以给出必要的提示信息,以增强其健壮性;EPF文件还包含文件版本信息,用来检验所述EPF文件与目标PLD是否匹配,并指示EPF文件的更新次数。

文件解释器104可以是存在于计算机存储器介质上的程序,也可以是存在于嵌入式系统存储器介质上的程序。

文件解释器104在进行解析操作之前,利用EPF文件中的差错校验字对EPF文件本身的正确性进行校验,还可以利用文件版本信息检验EPF文件与目标PLD是否匹配。

该装置100的具体实现如图2所示。

图2的计算机系统包括通过系统总线互相通信的中央处理单元(CPU)、存储器、输入/输出设备。输入/输出设备至少包括一个通信接口,例如RS232接口或以太网接口,用于和嵌入式系统进行信息交互。

文件格式转换器由驻留于计算机系统存储器内的一个程序实现,目标PLD制造商的集成开发软件输出SVF文件暂存在存储器中,经过文件格式转换器的处理,SVF文件转换成EPF文件同样保存在存储器内。输入/输出设备把EPF文件传递给嵌入式系统,作为文件解释器的输入暂存在嵌入式系统的存储器中。

图2的嵌入式系统包括嵌入式处理器和外围设备、存储器、包含目标PLD的雏菊花链,其中,外围设备具有与计算机系统交互信息的通信接口和产生JTAG接口信号的电路。嵌入式处理器通过处理器总线访问并执行存储器中的文件解释器程序,处理EPF文件,进而通过外围设备产生JTAG接口信号操作雏菊花链,对目标PLD进行在系统编程。

方法实施例

在本实施例中,提供了一种对可编程逻辑器件进行在系统编程的方法。

如图3所示,该方法包括以下步骤:步骤S302,文件格式转换器将目标PLD(编程逻辑器件)的SVF文件(串行向量格式文件)转换成EPF文件(嵌入式编码格式文件),并将EPF文件作为在系统编程加以保存和传递;步骤S304,文件解释器校验EPF文件的有效性、是否与目标PLD匹配、以及是否为最新的在系统编程文件;步骤S306,文件解释器通过对EPF文件进行相应处理来对目标PLD进行在系统编程。

上述的步骤S302具体包括以下步骤:步骤A:文件格式转换器对目标PLD的SVF文件中的SVF命令进行逐条处理,将SVF命令字和参数关键字替换成相应的二进制符号编码,将扫描数值和扫描数据压缩编码成二进制序列,同时插入标识目标PLD在系统编程各阶段的二进制符号编码,得到二进制编程数据;步骤B:文件格式转换器对二进制编程数据进行无损压缩,并将EPF文件长度信息和EPF文件版本信息添加到压缩数据之前;以及步骤C:文件格式转换器对EPF文件长度信息、EPF文件版本信息、以及压缩数据进行CRC-16计算,将计算结果添加到EPF文件长度信息之前,将EPF文件头部和压缩数据的总合保存为EPF文件。

其中,上述EPF文件的结构在图4中示出,具体包括EPF文件头部和EPF压缩数据。其中,EPF文件头部包括CRC-16校验信息(3字节)、EPF文件长度信息(5字节)、以及EPF文件版本信息(8字节)。其中,CRC-16校验信息由符号编码0x65开头,后接2字节CRC-16计算结果;文件长度信息由符号编码0x7F开头,后接4字节文件长度值;文件版本信息由符号编码0x78开头,后接文件格式转换器版本号(1字节)、目标PLD功能编码(2字节)、目标PLD在系统编程文件版本号(1字节)、目标PLD所在嵌入式系统的硬件功能编码(2字节)、嵌入式系统的硬件版本号(1字节)。

在步骤S304中,文件解释器对EPF文件中除CRC-16校验信息之外的部分进行CRC-16计算,比较计算结果与CRC-16校验信息,如果二者一致,则说明EPF文件有效,否则,则说明EPF文件无效;文件解释器核查EPF文件版本信息,以确认EPF文件是否与目标PLD匹配、以及是否为最新的在系统编程文件。

上述的步骤S306具体包括以下步骤:步骤A:文件解释器对EPF文件压缩数据部分进行解压缩,还原出二进制编程数据;以及步骤B:文件解释器识别二进制编程数据中的SVF命令,从中提取扫描数据,驱动JTAG接口信号,对目标PLD进行在系统编程。

以下将结合具体实例来详细描述文件格式转换器和文件解释器的处理。

实例1

以下将结合图5来描述文件格式转换器102的处理流程。如图5所示,文件格式转换器102的处理包括以下步骤:

S1、打开一个目标PLD的SVF文件,分别从SIR命令、SDR命令中提取该PLD的指令寄存器长度和各种数据寄存器长度;

S2、与所有型号PLD在它们的边界扫描描述(BSD)文件中定义的指令寄存器长度、数据寄存器长度进行比较,确定目标PLD的型号;

S3、如果已经扫描完所有目标PLD的SVF文件,继续执行S4,否则打开雏菊花链中下一个目标PLD的SVF文件,回到S1;

S4、逐个处理目标PLD,扫描它的SVF文件;

S5、根据雏菊花链中所有器件的指令寄存器长度以及当前目标PLD在雏菊花链中的位置,计算指令前缀、指令后缀、数据前缀、数据后缀,分别以0x06(HIR)、0x07(TIR)、0x08(HDR)、0x09(TDR)四个符号编码开头写入EPF文件;

S6、逐条扫描当前目标PLD的SVF命令;

S7、如果这条SVF命令处于当前目标PLD在系统编程某个阶段的起始位置,则向EPF文件写入对应这一阶段的符号编码,0x7A表示器件标识检查(IDCODE),0x7B表示擦除(ERASE),0x7C表示编程(PROGRAM),0x7D表示校验(VERIFY);

S8、识别SVF命令字,将相应的符号编码写入EPF文件;

S9、采用“比特级联”算法对SVF命令中的扫描数值进行编码,写入EPF文件;

S10、识别这条SVF中的参数关键字,将相应的符号编码写入EPF文件;

S11、采用“比特流压缩”算法对SVF命令中的扫描数据进行编码,写入EPF文件;

S12、如果已经扫描完当前目标PLD的SVF文件,继续执行S13,否则读取下一条SVF命令,回到S7;

S13、如果已经扫描完所有目标PLD的SVF文件,继续执行S14,否则处理雏菊花链中的下一个目标PLD,回到S5;

S14、采用Deflate算法对EPF文件进行无损压缩,得到EPF压缩数据,这种方法先后对原始数据使用LZ77和Huffman两种算法进行压缩;

S15、在EPF压缩数据之前添加5字节EPF文件长度信息和8字节EPF文件版本信息,EPF文件长度信息包括1字节EPF文件长度符号编码0x7F和4字节EPF文件长度值,EPF文件长度值等于EPF压缩数据量加上EPF文件头部的数据量,8字节EPF文件版本信息包括EPF文件版本符号编码0x78、文件格式转换器版本号、目标PLD功能编码、目标PLD在系统编程文件版本号、目标PLD所在嵌入式系统的硬件功能编码和版本号;

S16、对EPF文件长度信息、EPF文件版本信息和EPF压缩数据进行CRC-16计算,把2字节计算结果和1字节CRC-16校验符号编码0x65添加到EPF文件长度信息之前,CRC-16的生成多项式为x^16+x^15+x^2+1;

S17、将EPF文件头部和EPF压缩数据的总合保存为最终的EPF文件,其中EPF文件头部包括3字节CRC-16校验信息、5字节EPF文件长度信息、8字节EPF文件版本信息。

步骤S8和S10用二进制符号编码替代SVF命令字和参数关键字,文件格式转换器使用到的符号编码列在以下表格中示出:

  符号  编码  符号  编码  符号  编码  符号  编码  ENDDATA  0x00  SDR  0x12  SMASK  0x1D  DMASK  0x62  RUNTEST  0x01  TDI  0x13  MAX  0x1E  COMMENT  0x63  ENDDR  0x02  TDO  0x14  ON  0x1F  HEADER  0x64  ENDIR  0x03  MASK  0x15  OFF  0x20  FILECRC  0x65  ENDSTATE  0x04  MEM  0x19  SETFLOW  0x30  CONTINUE  0x70  TRST  0x05  WAIT  0x1A  RESETFLOW  0x31  EPFVERSION  0x78

  HIR  0x06  TCK  0x1B  CRC  0x47  IDCODE  0x7A  TIR  0x07  SHR  0x23  CMASK  0x48  ERASE  0x7B  HDR  0x08  SHL  0x24  RMASK  0x49  PROGRAM  0x7C  TDR  0x09  HEAP  0x32  READ  0x50  VERIFY  0x7D  FREQUENCY  0x0B  REPEAT  0x33  ENDLOOP  0x59  FILESIZE  0x7F  STATE  0x10  VAR  0x55  SECUREHEAP  0x60  EPFEND  0xFE  SIR  0x11  SEC  0x1C  VUES  0x61  FILEEND  0xFF

步骤S9所指的扫描数值包括:SIR、SDR、HIR、TIR、HDR、TDR命令中的扫描数据长度值,FREQUENCY命令中的频率值,RUNTEST命令中的时钟周期值和时延值。“比特级联”算法如图6所示,它把这些扫描数值拆成一串相连的字节,每个字节的低7位包含数值信息,最高位用来表示这一字节是否扫描数值的结尾,1表示后续还有级联字节,0表示这是当前扫描数值的最后一个字节。

步骤S11所指的扫描数据包含在一对括号中,由TDI、TDO、MASK和SMASK四个参数关键字引导。“比特流压缩”算法采用的五种压缩类型在以下表格中示出:

  压缩类型编码 压缩方法  0x00 不压缩。  0x01 对重复的0x00进行压缩,压缩数据中记录0x00的个数。  0x02 对重复的0xFF进行压缩,压缩数据中记录0xFF的个数。  0x03~0xFE 对重复的数据块进行压缩,数据块的长度为N个半位元组 (nibble)进行压缩,N=压缩类型编码,压缩数据中记录数 据块的个数。  0xFF 对数据比特流采用哈夫曼(Huffman)算法压缩。

压缩类型编码0x00表示后续的扫描数据未经压缩。

压缩类型编码0x01表示扫描数据由重复的0x00组成。例如(0x0000000000000000000003)压缩成0x01000A03,其中0x01是压缩类型编码,0x00是替换节,0x0A表示扫描数据包含10个连续的替换节,0x03是剩余的未压缩字节。

压缩类型编码0x02表示扫描数据由重复的0xFF组成。例如(0xFFFFFFFFFFFFFFFF74)压缩成0x02FF0874,其中0x02是压缩类型编码,0xFF是替换节,0x08表示扫描数据包含8个连续的替换节,0x74是剩余的未压缩字节。

压缩类型编码0x03至0xFE表示扫描数据由重复的N个半位元组(nibble)组成。例如(0x342810342810342810342810342810)压缩成0x0634281005,其中0x06是压缩类型编码,表示替换节长度是6个半位元组,替换节内容为紧接着的0x342810,最后的0x05表示扫描数据包含5个替换节。

压缩类型编码0xFF表示扫描数据按照哈夫曼(Huffman)算法压缩。例如(0x04020401030904040404040404040404)压缩成0xFF044090181C2400,其中0xFF是压缩类型编码,第二个字节0x04为替换节,它是扫描数据中出现频率最高的字节,从第三个字节开始压缩数据中的每一个比特等于0时表示该位置出现替换节,等于1时表示该位置出现的字节就是紧接着的8个比特。

实例2

以下将结合图7来描述文件解释器104的处理流程。如图7所示,文件解释器104的处理包括以下步骤:

S1、对EPF文件中除CRC-16校验信息以外的部分进行CRC-16计算,如果计算结果与EPF文件中的CRC-16校验信息一致,继续执行S2,否则提示CRC-16校验出错,结束编程过程;

S2、核查EPF文件版本信息,如果与目标PLD相匹配,继续执行S3,否则提示文件版本校验出错,结束编程过程;

S3、按照Deflate算法解压缩EPF文件中的压缩数据,还原EPF编程数据;

S4、在EPF编程数据中识别各种符号编码表示的命令字,按照

“比特级联”算法解析扫描数值,按照“比特流压缩”算法解析扫描数据,步骤S5至S12根据不同的符号编码实施不同处理;

S5、对于FREQUENCY命令的符号编码0x0B,根据其扫描数值设置JTAG接口信号频率;

S6、对于ENDIR和ENDDR命令的符号编码0x03和0x02,根据其扫描数值分别设置TAP控制器状态机的JTAG指令寄存器扫描(IR scan)结束状态和JTAG数据寄存器扫描(DR scan)结束状态;

S7、对于HIR、TIR、HDR、TDR四条命令的符号编码0x06、0x07、0x08、0x09,根据它们的扫描数值分别确定指令前缀、指令后缀、数据前缀、数据后缀的长度,根据它们的扫描数据分别设置指令前缀、指令后缀、数据前缀、数据后缀的取值;

S8、对于SIR命令符号编码0x11,首先向雏菊花链发送指令前缀,其次把扫描数据作为JTAG指令输入目标PLD,然后向雏菊花链发送指令后缀,最后驱动TAP控制器状态机,使它跃迁到步骤B6设置的JTAG指令寄存器扫描(IR scan)结束状态;

S9、对于SDR命令符号编码0x12,首先向雏菊花链发送数据前缀,其次把扫描数据作为JTAG数据输入目标PLD,然后向雏菊花链发送数据后缀,最后驱动TAP控制器状态机,使它跃迁到步骤B6设置的JTAG数据寄存器扫描(DR scan)结束状态;

S10、对于TCK命令符号编码0x1B,首先驱动TAP控制器状态机,使它跃迁到运行测试/空闲(Run-Test/Idle)状态,然后在TCK信号发送一定周期数的时钟脉冲,TCK时钟周期数由扫描数值确定;

S11、对于标识在系统编程阶段IDCODE、ERASE、PROGRAM、VERIFY的符号编码0x7A、0x7B、0x7C、0x7D,用它更新当前编程进度;

S12、对于标识EPF编程数据结尾EPFEND的符号编码0xFE,提示在系统编程完成,编程过程执行结束;

S13、如果步骤S5至S11执行成功,读取下一个符号编码,回到S4继续执行,否则提示当前在系统编程进度操作失败,结束编程过程。

步骤S8的指令寄存器扫描(IR scan)过程使用了由HIR、TIR两条命令确定的指令前缀和指令后缀。其中指令前缀是雏菊花链中位于目标PLD之前的器件的JTAG旁路指令,在向目标PLD发送JTAG指令前首先发送这些JTAG旁路指令;指令后缀是雏菊花链中位于目标PLD之后的器件的JTAG旁路指令,这些JTAG旁路指令在目标PLD的JTAG指令发送完毕后输入雏菊花链。

步骤S9的数据寄存器扫描(DR scan)过程使用了由HDR、TDR两条命令确定的数据前缀和数据后缀。其中,数据前缀用于填充雏菊花链中位于目标PLD之前的器件的JTAG旁路寄存器,在向目标PLD发送JTAG数据前首先发送这些填充数据;指令后缀用于填充雏菊花链中位于目标PLD之后的器件的JTAG旁路寄存器,这些填充数据在目标PLD的JTAG数据发送完毕后输入雏菊花链。

本发明提供的在系统编程方法通过两次压缩编码处理,把文本格式的SVF文件转换成二进制格式的EPF文件。第一次处理在用二进制符号编码替换SVF命令字和参数关键字的同时压缩扫描数值和扫描数据,产生的EPF编程数据既获得5倍的平均压缩率,也具有便于解析的特点。第二次处理利用Deflate算法进一步压缩EPF编程数据,平均压缩率达到8倍,最终生成的EPF文件获得平均40倍的压缩率,尤其适用于在存储资源和运算资源受限的嵌入式系统内提供PLD在线升级功能的场合。由于EPF文件从SVF文件转换得到,这种在系统编程方法同样具有良好的兼容性,适用于几乎所有PLD制造商的器件。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号