基于jtag接口的宇航fpga通用刷新电路及其实现方法

文档序号:7545027阅读:282来源:国知局
基于jtag接口的宇航fpga通用刷新电路及其实现方法
【专利摘要】本发明涉及基于JTAG接口的宇航FPGA通用刷新电路,该刷新电路设计有7个输入管脚、8个输出管脚,分别与PROM与FPGA的管脚连接,通过JTAG接口对SRAM型FPGA进行回读操作,确定FPGA型号并校验回读数据,若发生错误则从正确的数据源读取码流,从码流中截取有效部分,并通过JTAG接口将有效码流重新写入FPGA的内部配置位,从而完成配置存储器的刷新,通过本发明中的刷新电路,能够及时检测并纠正宇航用FPGA的单粒子翻转,消除宇航用FPGA发生空间单粒子翻转导致的功能故障,提高宇航FPGA空间应用可靠性。
【专利说明】基于JTAG接口的宇航FPGA通用刷新电路及其实现方法
【技术领域】
[0001]本发明涉及基于JTAG接口的宇航FPGA通用刷新电路及其实现方法,特别是用于检测并恢复宇航用SRAM型FPGA发生的空间单粒子翻转故障,属于集成电路【技术领域】。
【背景技术】
[0002]SRAM型FPGA的基本结构如图5,其中主要的功能模块包括:四周一圈的输入输出模块(Ι0Β)、边沿两列块存储器(Block RAM)、内部的可编程逻辑块阵列(CLB),除此以外,还有遍布整个电路连接各个模块的互联资源。上述逻辑资源和互联资源都由下层SRAM配置位控制。大量的遍布FPGA电路的SRAM配置位决定了 FPGA电路的具体功能,这些配置位的码流集合即被称为码流(bit stream)ο
[0003]当SRAM型FPGA在空间环境应用时,空间高能粒子会穿透FPGA器件内部并在路径上产生电离,从而引起电路节点上瞬时电流干扰而导致电路错误。典型的6管SRAM单元由两个交叉连接的反相器以及两个用于读写控制的门控管组成,如图6所示为SRAM型FPGA的配置存储器单粒子翻转的原理。当高能粒子打在SRAM单元的灵敏区域时(以反偏η管的漏区为例),电荷在结区的收集产生了一个瞬态电流脉冲,导致该单元存储的信息由“I”变成了 “0”,状态出现了翻转。这种效应就是空间单粒子翻转效应,配置位状态的翻转可能导致严重的功能故障,导致内部功能错乱、连线短路、断路等。这种配置位翻转导致的故障是永久性的故障,只能通过重新加载码流来消除。

【发明内容】

[0004]本发明的目的在于克服现有技术的上述缺陷,提供基于JTAG接口的宇航FPGA通用刷新电路,该电路能够消除单粒子翻转效应对SRAM型FPGA造成的不利影响,提高宇航FPGA空间应用可靠性。
[0005]本发明的另外一个目的在于提供基于JTAG接口的宇航FPGA通用刷新电路的实现方法。
[0006]本发明的上述目的主要是通过如下技术方案予以实现的:
[0007]基于JTAG接口的宇航FPGA通用刷新电路,该刷新电路连接PROM和FPGA,所述刷新电路包括15个功能管脚,其中输入管脚7个,分别为:时钟管脚elk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚initial_fpga、配置时钟管脚cclk_fpga、JTAG数据输出管脚tdo_fpga、PROM数据管脚data_prom,输出管脚8个,分别为:复位管脚prog_fpga、FPGA第O配置数据位管脚din_fpga、JTAG时钟管脚tck_fpga、JTAG数据输入管脚tdi_fpga、JTAG 模式管脚 tms_fpga、PR0M 时钟管脚 clk_prom、PR0M输出使能管脚 oe_prom、PROM片选管脚ce_prom,其中:
[0008]刷新电路的clk_prom管脚连接PROM的时钟管脚CLK,刷新电路的ce_prom管脚连接PROM的片选管脚CE,刷新电路的oe_prom管脚连接PROM的输出使能管脚0E,刷新电路的data_prom管脚连接PROM的数据管脚DATA,刷新电路的cclk_fpga管脚连接FPGA的配置时钟管脚CCLK,刷新电路的done_fpga管脚连接FPGA的配置完成管脚DONE,刷新电路的initial_fpga管脚连接到FPGA的初始化完成管脚initial,刷新电路的din_fpga管脚连接到FPGA的第O配置数据位管脚Din,刷新电路的tck_fpga管脚连接到FPGA的JTAG时钟管脚TCK,刷新电路的tms_fpga管脚连接到FPGA的JTAG模式管脚TMS,刷新电路的tdi_fpga管脚连接到FPGA的JTAG数据输入管脚TDI,刷新电路的tdo_fpga管脚连接到FPGA的JTAG数据输出管脚TDO,刷新电路的prog_fpga管脚连接到FPGA的复位管脚program,刷新电路通过elk管脚接收外部时钟信号,刷新电路通过pause管脚接收外部的暂停或启动信号。
[0009]基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,包括如下步骤:
[0010](I)、上电后,刷新电路初始态为空闲状态,空闲状态下若通过pause管脚从外部输入的pause信号为“I”电平,则判断done_fpga管脚从FPGA接收的done_fpga信号,若所述done_fpga信号为“I”电平则进入回读校验状态,进入步骤(3),若所述done_fpga信号为“O”电平则进入配置状态,进入步骤(2);
[0011](2)、刷新电路从PROM中读取码流,并通过cclk_fpga管脚和din_fpga管脚将码流配置到FPGA (103)中,同时判断done_fpga管脚从FPGA接收的done_fpga信号,若所述done_fpga信号为“I”电平则配置完成,进入回读校验状态,进入步骤(3),若所述done_fpga信号为“O”电平则继续保持配置状态,重复步骤(2);
[0012](3 )、刷新电路对FPGA进行码流回读,通过CRC校验判断回读的FPGA码流是否正确,若不正确,则进入码流处理状态,进入步骤(4),若正确,则仍保持回读校验状态,重复步骤(3);
[0013](4)、刷新电路读取PROM中的码流文件进行码流处理,形成可刷新数据,并自动跳转到刷新状态,进入步骤(5);
[0014](5)、刷新电路对FPGA的码流进行刷新,刷新过程中检测FPGA的done信号,若检测到done_fpga管脚为“O”电平,则回到步骤(2),进入配置状态,若检测到done_fpga管脚为“I”电平,则完成刷新后回到步骤(3),进入回读校验状态;
[0015]上述步骤(I)?(5)中任何时刻刷新电路检测到外部输入的pause信号为“O”电平,则进入空闲状态。
[0016]在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,步骤(3)中刷新电路对FPGA进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
[0017](I)、刷新电路通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga 管脚对FPGA的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg ;
[0018](2)、刷新电路通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga 管脚对FPGA (103)的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream ;
[0019](3)、刷新电路将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确。
[0020]在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,步骤(4)中刷新电路读取PROM中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
[0021](I)、刷新电路通过 clk_prom 管脚、ce_prom 管脚、oe_prom 管脚向 PROM (101)发送读取数据的信号,通过data_pr0m管脚读取PROM的码流数据,并将PROM输出的码流数据分解为4个部分,分别为头部、配置命令、CLB型码流和RAM型码流;
[0022](2)、滤除对刷新无意义的头部;
[0023](3)、修改配置命令中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流,不包括RAM型码流。
[0024]在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,步骤(5)中刷新电路对FPGA的码流进行刷新的具体步骤如下:
[0025](I)、刷新电路通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA输入步骤(4)得到的修改配置字节数和配置起始地址后的配置命令;
[0026](2)、刷新电路继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA输入CLB型码流;
[0027](3)、完成CLB型码流输入后,刷新电路停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
[0028]在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,空闲状态时,刷新电路实现连接PROM与FPGA的相关管脚的功能,PROM的CLK管脚通过刷新电路连接FPGA的CCLK管脚,PROM的CE管脚通过刷新电路连接FPGA的DONE管脚,PROM的OE管脚通过刷新电路连接FPGA的initial管脚,PROM的DATA管脚通过刷新电路连接FPGA的Din管脚,刷新电路的tck_fpga管脚、tms_fpga管脚、tdi_fpga管脚、prog_fpga管脚均输出高阻。
[0029]本发明与现有技术相比具有如下有益效果:
[0030](I)、本发明针对现有宇航用FPGA可能出现的单粒子翻转问题,仓Il新性的设计一种连接在PROM与FPGA之间的通用刷新电路,该刷新电路设计有7个输入管脚、8个输出管脚,分别与PROM与FPGA的管脚连接,通过从PROM中读取正确的数据,刷新FPGA中的故障区域,可恢复空间单粒子翻转造成的SRAM型FPGA功能故障,能够有效消除单粒子翻转效应对SRAM型FPGA造成的不利影响,提高宇航FPGA空间应用可靠性;
[0031](2)、本发明宇航FPGA通用刷新电路芯片连接简单,对用户系统设计仅新增加两个外部引脚,使用方便;
[0032](3 )、本发明宇航FPGA通用刷新电路通过回读可以自动识别FPGA器件型号,适用于各种FPGA器件型号,适用范围广、通用性强;
[0033](4 )、本发明宇航FPGA通用刷新电路的刷新频率由用户决定,用户通过接到CLK上的时钟的频率可以自由调节刷新的频率,适用于各种任务需求;
[0034](5)、本发明宇航FPGA通用刷新电路,用户可以通过PAUSE信号暂停或开启刷新功能,应用方式灵活多样,实用性强;
[0035](6)、本发明宇航FPGA通用刷新电路的实现方法通过状态机实现,为全同步时序电路,状态完备,流程简单清晰,提高了电路可靠性;
[0036](7 )、本发明宇航FPGA通用刷新电路通过“回读检测、码流处理、重新加载”等几个步骤完成了对FPGA单粒子翻转的修复,在刷新过程中,通用智能刷新电路对码流进行筛选处理,不影响用户正常功能。
【专利附图】

【附图说明】[0037]图1为本发明刷新电路与PROM、FPGA连接示意图;
[0038]图2为本发明刷新电路实现方法流程图;
[0039]图3为本发明刷新电路在空闲状态下内部连线和引脚电平示意图;
[0040]图4为本发明SRAM型FPGA的码流结构示意图;
[0041 ]图5为SRAM型FPGA的体系结构图;
[0042]图6为SRAM型FPGA的配置存储器单粒子翻转的原理。
【具体实施方式】
[0043]下面结合附图和具体实施例对本发明作进一步详细的描述:
[0044]如图1所示为本发明刷新电路与PROM、FPGA连接示意图,由图可知刷新电路102连接PR0M101和FPGA103,该刷新电路(102)包括15个功能管脚,其中输入管脚7个,分别为:时钟管脚elk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚initial_fpga、配置时钟管脚cclk_fpga、JTAG数据输出管脚tdo_fpga、PROM数据管脚data_prom,输出管脚8个,分别为:复位管脚prog_fpga、FPGA第O配置数据位管脚din_fpga、JTAG时钟管脚tck_fpga、JTAG数据输入管脚tdi_fpga、JTAG模式管脚tms_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom,其中具体连接关系如下:
[0045]刷新电路102的clk_prom管脚连接PR0M101的时钟管脚CLK,刷新电路102的ce_prom管脚连接PR0M101的片选管脚CE,刷新电路102的oe_prom管脚连接PR0M101的输出使能管脚0E,刷新电路102的data_prom管脚连接PR0M101的数据管脚DATA,刷新电路102的cclk_fpga管脚连接FPGA103的配置时钟管脚CCLK,刷新电路102的done_fpga管脚连接FPGA103的配置完成管脚DONE,刷新电路102的initial_fpga管脚连接到FPGA103的初始化完成管脚initial,刷新电路102的din_fpga管脚连接到FPGA103的第O配置数据位管脚Din,刷新电路102的tck_fpga管脚连接到FPGA103的JTAG时钟管脚TCK,刷新电路102的tms_fpga管脚连接到FPGA103的JTAG模式管脚TMS,刷新电路102的tdi_fpga管脚连接到FPGA103的JTAG数据输入管脚TDI,刷新电路102的tdo_fpga管脚连接到FPGA103的JTAG数据输出管脚TD0,刷新电路102的pix)g_fpga管脚连接到FPGA103的复位管脚program,刷新电路102通过elk管脚接收外部时钟信号,刷新电路(102)通过pause管脚接收外部的暂停或启动信号。
[0046]应用时,刷新电路102通过FPGA103的JTAG管脚(TCK、TMS、TD1、TD0)进行配置码流刷新;应用时,刷新电路102通过FPGA103的JTAG管脚(TCK、TMS、TD1、TD0)回读FPGA的IDcode,判断被刷新FPGA的型号;应用时,刷新电路102通过elk管脚接收外部时钟信号,并进入工作状态。
[0047]如图2所示为本发明刷新电路实现方法流程图,本发明刷新电路102包括5种工作状态,包括空闲状态201、配置状态202、码流处理状态204、回读校验状态203、刷新状态205,本发明刷新电路102的实现方法通过状态机实现,具体实现过程如下:
[0048]步骤(一)、上电后刷新电路102初始态为空闲状态,空闲状态下若通过pause管脚从外部输入的pause信号为“I”电平,则判断done_fpga管脚从FPGA103接收的done_fpga信号,若所述done_fpga信号为“I”电平则进入步骤(三)的回读校验状态,,若所述done_fpga信号为“O”电平则进入步骤(二)的配置状态;[0049]步骤(二)、刷新电路102从PR0M101中读取码流,并通过cclk_fpga管脚和din_fpga管脚将码流配置到FPGA103中,同时判断done_fpga管脚从FPGA103接收的done_fpga信号,若所述done_fpga信号为“I”电平则配置完成,进入步骤(三)的回读校验状态,若所述done_fpga信号为“O”电平则继续保持配置状态,重复步骤(二);
[0050]步骤(三)、刷新电路102对FPGA103进行码流回读,通过CRC校验判断回读的FPGA码流是否正确,若不正确,则进入步骤(四)的码流处理状态,若正确,则仍保持回读校验状态,重复步骤(三);
[0051]其中:刷新电路102对FPGA103进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
[0052](I)刷新电路 102 通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga管脚对FPGA103的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg ;
[0053](2)刷新电路 102 通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga管脚对FPGA103的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream ;
[0054](3)刷新电路102将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确。
[0055]步骤(四)、刷新电路102读取PR0M101中的码流文件进行码流处理,形成可刷新数据,并自动跳转到步骤(五)的刷新状态。
[0056]如图4所示为本发明SRAM型FPGA的基本码流结构,其中需要进行刷新处理的是配置命令402和CLB型码流403,而头部401、RAM型码流404则不能被刷新,否则会导致用户写入的RAM值发生变化,影响用户正常功能。不同型号FPGA的码流规模不同,为了正确地对码流进行筛选,刷新电路可以通过回读IDcode获取被刷FPGA的型号,相应地调整码流筛选的参数。刷新电路的刷新时序符合IEEEl 149.1协议的要求。
[0057]刷新电路102读取PR0M101中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
[0058](I)刷新电路 102 通过 clk_prom 管脚、ce_prom 管脚、oe_prom 管脚向 PR0M101 发送读取数据的信号,通过data_prom管脚读取PR0M101的码流数据,并将PR0M101输出的码流数据分解为4个部分,分别为头部401、配置命令402、CLB型码流403和RAM型码流404 ;
[0059](2)滤除对刷新无意义的头部401 ;
[0060](3)修改配置命令402中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流403,不包括RAM型码流404。
[0061]步骤(五)、刷新电路102对FPGA103的码流进行刷新,刷新过程中检测FPGA103的done信号,若检测到done_fpga管脚为“O”电平,则回到步骤(二),进入配置状态,若检测到done_fpga管脚为“I”电平,则完成刷新后回到步骤(三),进入回读校验状态;
[0062]刷新电路102对FPGA103的码流进行刷新的具体步骤如下:
[0063](I)刷新电路 102 通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚向 FPGA103输入上述步骤(四)得到的修改配置字节数和配置起始地址后的配置命令;
[0064](2)刷新电路102继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA103输入CLB型码流;[0065](3)完成CLB型码流输入后,刷新电路102停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
[0066]上述步骤(一)?(五)中任何时刻刷新电路102检测到外部输入的pause信号为“O”电平,则进入空闲状态。空闲状态时,刷新电路102实现连接PR0M101与FPGA103配置相关管脚的功能,PR0M101的CLK管脚通过刷新电路102连接到FPGA103的CCLK管脚,PR0M101的CE管脚通过刷新电路102连接到FPGA103的DONE管脚,PR0M101的OE管脚通过刷新电路102连接至IJ FPGA (103)的initial管脚,PR0M101的DATA管脚通过刷新电路102连接到FPGA103的Din管脚,刷新电路102的tck_fpga管脚、tms_fpga管脚、tdi_fpga管脚、prog_fpga管脚均输出高阻。
[0067]实施例1
[0068]上电后,将刷新电路102的pause管脚接“O”电平,则刷新电路102暂停工作,进入且保持在空闲状态201 ;刷新电路在空闲状态下,如图3,连通内部连线301、302、303、304,将PR0M101和FPGA103的对应管脚连接到一起,即PR0M101的CLK管脚接FPGA103的CCLK管脚、PR0M101 的 CE 管脚接 FPGA103 的 Done 管脚、PR0M101 的 OE 管脚接 FPGA103 的 Initial管脚、PR0M101的DATA管脚接FPGA103的Din管脚;同时,刷新电路102的tck_fpga、tdi_fpga、tms_fpga、prog_fpga输出为高阻态。此时,刷新电路102对PR0M101和FPGA103均无影响,可看作刷新电路102被旁路。
[0069]实施例2
[0070]上电后,将刷新电路102的pause管脚接“I”电平,elk管脚接固定频率的时钟信号,开始检测done_fpga管脚的输入信号。若刷新电路102检测到done_fpga电平为“O”电平,则刷新电路102将进入配置状态202否则直接跳转到回读校验状态203。在配置状态202下,如图3,刷新电路102连通内部连线301、302、303、304 JfPROMlOl和FPGA103的对应管脚连接到一起,即PR0M101的CLK管脚接FPGA103的CCLK管脚、PR0M101的CE管脚接 FPGA103 的 Done 管脚、PR0M101 的 OE 管脚接 FPGA103 的 Initial 管脚、PR0M101 的 DATA管脚接FPGA103的Din管脚;在FPGA配置过程中,未完成配置的FPGA103的Done管脚输出为“O”电平,CCLK管脚将输出固定频率的方波,Initial管脚为“I”电平,刷新电路102通过ce_prom管脚驱动PR0M101的CE管脚为“O”电平、通过clk_prom管脚输出与FPGA103的CCLK管脚同步的时钟信号驱动PR0M101的CLK管脚、通过oe_prom管脚驱动PR0M101的OE管脚为“I”电平,PR0M101将通过DATA管脚输出配置码流;刷新电路102将DATA管脚的输入码流转发到FPGA103的Din管脚;全部码流转发完成后,FPGA103配置完成,DONE管脚被上拉为“I”电平,CCLK管脚的时钟停止输出。刷新电路102检测到done_fpga为“I”电平,贝1J进入回读校验状态203,刷新电路102通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚、tdo_fpga管脚对FPGA103的CRC寄存器的值进行回读,设此值为CRC_reg,随后刷新电路 102 通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga 管脚对 FPGA103 的码流进行回读,并通过CRC16算法计算CRC值,设此值为CRC_stream,对比CRC_reg和CRC_stream,若一致说明回读码流正确,刷新电路102继续在回读校验状态203下进行回读检测,若不一致说明发生了单粒子翻转,刷新电路102进入码流处理状态204。在码流处理状态204下,刷新电路102通过ce_prom管脚驱动PR0M101的CE管脚为“O”电平、通过clk_prom管脚输出与CLK管脚同步的时钟信号驱动PR0M101的CLK管脚、通过oe_prom管脚驱动PR0M101的OE管脚为“I”电平,PROMlOI将通过DATA管脚输出配置码流,刷新电路102从data_prom管脚读取码流数据,并将PR0M101输出的码流数据分解为如图4的4个部分,分别为头部401、配置命令402、CLB型码流403、RAM型码流404,滤除对刷新无意义的头部401,修改配置命令402中的配置字节数和配置起始地址,完成上述操作后,刷新电路102进入刷新状态205。在刷新状态下205,刷新电路102通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA103输入修改后的配置命令,随后继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA103输入CLB型码流403,完成CLB型码流403输入后,停止刷新,刷新电路102再次进入回读校验状态203。刷新电路102在Done信号为“I”电平,且pause信号也为“I”电平的情况下,将一直在回读校验203、码流处理204、刷新205这三个状态之间循环操作。
[0071]以上所述,仅为本发明最佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
[0072]本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
【权利要求】
1.基于JTAG接口的宇航FPGA通用刷新电路,其特征在于:所述刷新电路(102)连接PROM (101)和FPGA (103),所述刷新电路(102)包括15个功能管脚,其中输入管脚7个,分别为:时钟管脚elk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚initial_fpga、配置时钟管脚cclk_fpga、JTAG数据输出管脚tdo_fpga、PROM数据管脚data_prom,输出管脚8个,分别为:复位管脚prog_fpga、FPGA第O配置数据位管脚din_fpga、JTAG时钟管脚tck_fpga、JTAG数据输入管脚tdi_fpga、JTAG模式管脚tms_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom,其中: 刷新电路(102)的clk_prom管脚连接PROM (101)的时钟管脚CLK,刷新电路(102)的ce_prom管脚连接PROM (101)的片选管脚CE,刷新电路(102)的oe_prom管脚连接PROM(101)的输出使能管脚0E,刷新电路(102)的data_prom管脚连接PROM(101)的数据管脚DATA,刷新电路(102)的cclk_fpga管脚连接FPGA (103)的配置时钟管脚CCLK,刷新电路(102)的done_fpga管脚连接FPGA(103)的配置完成管脚DONE,刷新电路(102)的initial_fpga管脚连接到FPGA (103)的初始化完成管脚initial,刷新电路(102)的din_fpga管脚连接到FPGA (103)的第O配置数据位管脚Din,刷新电路(102)的tck_fpga管脚连接到FPGA (103)的JTAG时钟管脚TCK,刷新电路(102)的tms_fpga管脚连接到FPGA (103)的JTAG模式管脚TMS,刷新电路(102)的tdi_fpga管脚连接到FPGA (103)的JTAG数据输入管脚TDI,刷新电路(102)的tdo_fpga管脚连接到FPGA (103)的JTAG数据输出管脚TD0,刷新电路(102)的prog_fpga管脚连接到FPGA (103)的复位管脚program,刷新电路(102)通过elk管脚接收外部时钟信号,刷新电路(102)通过pause管脚接收外部的暂停或启动信号。
2.根据权利要求1所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:包括如下步骤: (1)、上电后,刷新电路(102)初始态为空闲状态,空闲状态下若通过pause管脚从外部输入的pause信号为“I”电平,则判断done_fpga管脚从FPGA (103)接收的done_fpga信号,若所述done_fpga信号为“I”电平则进入回读校验状态,进入步骤(3),若所述done_fpga信号为“O”电平则进入配置状态,进入步骤(2); (2)、刷新电路(102)从PROM(101)中读取码流,并通过cclk_fpga管脚和din_fpga管脚将码流配置到FPGA(103)中,同时判断done_fpga管脚从FPGA (103)接收的done_fpga信号,若所述done_fpga信号为“I”电平则配置完成,进入回读校验状态,进入步骤(3),若所述done_fpga信号为“O”电平则继续保持配置状态,重复步骤(2); (3)、刷新电路(102)对FPGA(103)进行码流回读,通过CRC校验判断回读的FPGA码流是否正确,若不正确,则进入码流处理状态,进入步骤(4),若正确,则仍保持回读校验状态,重复步骤(3); (4)、刷新电路(102)读取PROM(101)中的码流文件进行码流处理,形成可刷新数据,并自动跳转到刷新状态,进入步骤(5); (5)、刷新电路(102)对FPGA(103)的码流进行刷新,刷新过程中检测FPGA (103)的done信号,若检测到done_fpga管脚为“O”电平,则回到步骤(2),进入配置状态,若检测到done_fpga管脚为“I”电平,则完成刷新后回到步骤(3),进入回读校验状态; 上述步骤(1)~(5)中任何时刻刷新电路(102)检测到外部输入的pause信号为“O”电平,则进入空闲状态。
3.根据权利要求2所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:所述步骤(3)中刷新电路(102)对FPGA (103)进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下: (O、刷新电路(102)通过 tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga 管脚对FPGA (103)的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg ; (2)、刷新电路(102)通过tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚、tdo_fpga 管脚对FPGA (103)的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream ; (3)、刷新电路(102)将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确。
4.根据权利要求2所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:所述步骤(4)中刷新电路(102)读取PROM (101)中的码流文件进行码流处理,形成可刷新数据的具体步骤如下: (I )、刷新电路(102)通过 clk_prom 管脚、ce_prom 管脚、oe_prom 管脚向 PROM (101)发送读取数据的信号,通过data_prom管脚读取PROM (101)的码流数据,并将PROM (101)输出的码流数据分解为4个部分,分别为头部、配置命令、CLB型码流和RAM型码流; (2)、滤除对刷新无意 义的头部; (3)、修改配置命令中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流,不包括RAM型码流。
5.根据权利要求4所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:所述步骤(5)中刷新电路(102)对FPGA (103)的码流进行刷新的具体步骤如下: (1)、刷新电路(102)通过tck_fpga 管脚、tdi_fpga 管脚、tms_fpga 管脚向 FPGA (103)输入步骤(4)得到的修改配置字节数和配置起始地址后的配置命令; (2)、刷新电路(102)继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA(103)输入CLB型码流; (3)、完成CLB型码流输入后,刷新电路(102)停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
6.根据权利要求2所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:空闲状态时,刷新电路(102)实现连接PROM (101)与FPGA (103)的相关管脚的功能,PROM (101)的CLK管脚通过刷新电路(102)连接FPGA (103)的CCLK管脚,PROM (101)的CE管脚通过刷新电路(102)连接FPGA (103)的DONE管脚,PROM (101)的OE管脚通过刷新电路(102)连接FPGA (103)的initial管脚,PROM (101)的DATA管脚通过刷新电路(102)连接 FPGA (103)的 Din 管脚,刷新电路(102)的 tck_fpga 管脚、tms_fpga 管脚、tdi_fpga管脚、prog_fpga管脚均输出高阻。
【文档编号】H03K19/177GK103840823SQ201410051652
【公开日】2014年6月4日 申请日期:2014年2月14日 优先权日:2014年2月14日
【发明者】张帆, 陈雷, 赵元富, 文治平, 李学武, 张彦龙, 孙华波, 王硕, 尚祖宾, 冯长磊, 王岚施, 林彦君, 郑咸建 申请人:北京时代民芯科技有限公司, 北京微电子技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1