CN103840823A - 基于jtag接口的宇航fpga通用刷新电路及其实现方法 - Google Patents
基于jtag接口的宇航fpga通用刷新电路及其实现方法 Download PDFInfo
- Publication number
- CN103840823A CN103840823A CN201410051652.8A CN201410051652A CN103840823A CN 103840823 A CN103840823 A CN 103840823A CN 201410051652 A CN201410051652 A CN 201410051652A CN 103840823 A CN103840823 A CN 103840823A
- Authority
- CN
- China
- Prior art keywords
- fpga
- pin
- refresh circuit
- prom
- code stream
- 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
Links
Images
Landscapes
- Dram (AREA)
Abstract
本发明涉及基于JTAG接口的宇航FPGA通用刷新电路,该刷新电路设计有7个输入管脚、8个输出管脚,分别与PROM与FPGA的管脚连接,通过JTAG接口对SRAM型FPGA进行回读操作,确定FPGA型号并校验回读数据,若发生错误则从正确的数据源读取码流,从码流中截取有效部分,并通过JTAG接口将有效码流重新写入FPGA的内部配置位,从而完成配置存储器的刷新,通过本发明中的刷新电路,能够及时检测并纠正宇航用FPGA的单粒子翻转,消除宇航用FPGA发生空间单粒子翻转导致的功能故障,提高宇航FPGA空间应用可靠性。
Description
技术领域
本发明涉及基于JTAG接口的宇航FPGA通用刷新电路及其实现方法,特别是用于检测并恢复宇航用SRAM型FPGA发生的空间单粒子翻转故障,属于集成电路技术领域。
背景技术
SRAM型FPGA的基本结构如图5,其中主要的功能模块包括:四周一圈的输入输出模块(IOB)、边沿两列块存储器(Block RAM)、内部的可编程逻辑块阵列(CLB),除此以外,还有遍布整个电路连接各个模块的互联资源。上述逻辑资源和互联资源都由下层SRAM配置位控制。大量的遍布FPGA电路的SRAM配置位决定了FPGA电路的具体功能,这些配置位的码流集合即被称为码流(bit stream)。
当SRAM型FPGA在空间环境应用时,空间高能粒子会穿透FPGA器件内部并在路径上产生电离,从而引起电路节点上瞬时电流干扰而导致电路错误。典型的6管SRAM单元由两个交叉连接的反相器以及两个用于读写控制的门控管组成,如图6所示为SRAM型FPGA的配置存储器单粒子翻转的原理。当高能粒子打在SRAM单元的灵敏区域时(以反偏n管的漏区为例),电荷在结区的收集产生了一个瞬态电流脉冲,导致该单元存储的信息由“1”变成了“0”,状态出现了翻转。这种效应就是空间单粒子翻转效应,配置位状态的翻转可能导致严重的功能故障,导致内部功能错乱、连线短路、断路等。这种配置位翻转导致的故障是永久性的故障,只能通过重新加载码流来消除。
发明内容
本发明的目的在于克服现有技术的上述缺陷,提供基于JTAG接口的宇航FPGA通用刷新电路,该电路能够消除单粒子翻转效应对SRAM型FPGA造成的不利影响,提高宇航FPGA空间应用可靠性。
本发明的另外一个目的在于提供基于JTAG接口的宇航FPGA通用刷新电路的实现方法。
本发明的上述目的主要是通过如下技术方案予以实现的:
基于JTAG接口的宇航FPGA通用刷新电路,该刷新电路连接PROM和FPGA,所述刷新电路包括15个功能管脚,其中输入管脚7个,分别为:时钟管脚clk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚initial_fpga、配置时钟管脚cclk_fpga、JTAG数据输出管脚tdo_fpga、PROM数据管脚data_prom,输出管脚8个,分别为:复位管脚prog_fpga、FPGA第0配置数据位管脚din_fpga、JTAG时钟管脚tck_fpga、JTAG数据输入管脚tdi_fpga、JTAG模式管脚tms_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom,其中:
刷新电路的clk_prom管脚连接PROM的时钟管脚CLK,刷新电路的ce_prom管脚连接PROM的片选管脚CE,刷新电路的oe_prom管脚连接PROM的输出使能管脚OE,刷新电路的data_prom管脚连接PROM的数据管脚DATA,刷新电路的cclk_fpga管脚连接FPGA的配置时钟管脚CCLK,刷新电路的done_fpga管脚连接FPGA的配置完成管脚DONE,刷新电路的initial_fpga管脚连接到FPGA的初始化完成管脚initial,刷新电路的din_fpga管脚连接到FPGA的第0配置数据位管脚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,刷新电路通过clk管脚接收外部时钟信号,刷新电路通过pause管脚接收外部的暂停或启动信号。
基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,包括如下步骤:
(1)、上电后,刷新电路初始态为空闲状态,空闲状态下若通过pause管脚从外部输入的pause信号为“1”电平,则判断done_fpga管脚从FPGA接收的done_fpga信号,若所述done_fpga信号为“1”电平则进入回读校验状态,进入步骤(3),若所述done_fpga信号为“0”电平则进入配置状态,进入步骤(2);
(2)、刷新电路从PROM中读取码流,并通过cclk_fpga管脚和din_fpga管脚将码流配置到FPGA(103)中,同时判断done_fpga管脚从FPGA接收的done_fpga信号,若所述done_fpga信号为“1”电平则配置完成,进入回读校验状态,进入步骤(3),若所述done_fpga信号为“0”电平则继续保持配置状态,重复步骤(2);
(3)、刷新电路对FPGA进行码流回读,通过CRC校验判断回读的FPGA码流是否正确,若不正确,则进入码流处理状态,进入步骤(4),若正确,则仍保持回读校验状态,重复步骤(3);
(4)、刷新电路读取PROM中的码流文件进行码流处理,形成可刷新数据,并自动跳转到刷新状态,进入步骤(5);
(5)、刷新电路对FPGA的码流进行刷新,刷新过程中检测FPGA的done信号,若检测到done_fpga管脚为“0”电平,则回到步骤(2),进入配置状态,若检测到done_fpga管脚为“1”电平,则完成刷新后回到步骤(3),进入回读校验状态;
上述步骤(1)~(5)中任何时刻刷新电路检测到外部输入的pause信号为“0”电平,则进入空闲状态。
在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,步骤(3)中刷新电路对FPGA进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
(1)、刷新电路通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚、tdo_fpga管脚对FPGA的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg;
(2)、刷新电路通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚、tdo_fpga管脚对FPGA(103)的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream;
(3)、刷新电路将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确。
在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,步骤(4)中刷新电路读取PROM中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
(1)、刷新电路通过clk_prom管脚、ce_prom管脚、oe_prom管脚向PROM(101)发送读取数据的信号,通过data_prom管脚读取PROM的码流数据,并将PROM输出的码流数据分解为4个部分,分别为头部、配置命令、CLB型码流和RAM型码流;
(2)、滤除对刷新无意义的头部;
(3)、修改配置命令中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流,不包括RAM型码流。
在上述基于JTAG接口的宇航FPGA通用刷新电路的实现方法中,步骤(5)中刷新电路对FPGA的码流进行刷新的具体步骤如下:
(1)、刷新电路通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA输入步骤(4)得到的修改配置字节数和配置起始地址后的配置命令;
(2)、刷新电路继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA输入CLB型码流;
(3)、完成CLB型码流输入后,刷新电路停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
在上述基于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管脚均输出高阻。
本发明与现有技术相比具有如下有益效果:
(1)、本发明针对现有宇航用FPGA可能出现的单粒子翻转问题,创新性的设计一种连接在PROM与FPGA之间的通用刷新电路,该刷新电路设计有7个输入管脚、8个输出管脚,分别与PROM与FPGA的管脚连接,通过从PROM中读取正确的数据,刷新FPGA中的故障区域,可恢复空间单粒子翻转造成的SRAM型FPGA功能故障,能够有效消除单粒子翻转效应对SRAM型FPGA造成的不利影响,提高宇航FPGA空间应用可靠性;
(2)、本发明宇航FPGA通用刷新电路芯片连接简单,对用户系统设计仅新增加两个外部引脚,使用方便;
(3)、本发明宇航FPGA通用刷新电路通过回读可以自动识别FPGA器件型号,适用于各种FPGA器件型号,适用范围广、通用性强;
(4)、本发明宇航FPGA通用刷新电路的刷新频率由用户决定,用户通过接到CLK上的时钟的频率可以自由调节刷新的频率,适用于各种任务需求;
(5)、本发明宇航FPGA通用刷新电路,用户可以通过PAUSE信号暂停或开启刷新功能,应用方式灵活多样,实用性强;
(6)、本发明宇航FPGA通用刷新电路的实现方法通过状态机实现,为全同步时序电路,状态完备,流程简单清晰,提高了电路可靠性;
(7)、本发明宇航FPGA通用刷新电路通过“回读检测、码流处理、重新加载”等几个步骤完成了对FPGA单粒子翻转的修复,在刷新过程中,通用智能刷新电路对码流进行筛选处理,不影响用户正常功能。
附图说明
图1为本发明刷新电路与PROM、FPGA连接示意图;
图2为本发明刷新电路实现方法流程图;
图3为本发明刷新电路在空闲状态下内部连线和引脚电平示意图;
图4为本发明SRAM型FPGA的码流结构示意图;
图5为SRAM型FPGA的体系结构图;
图6为SRAM型FPGA的配置存储器单粒子翻转的原理。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细的描述:
如图1所示为本发明刷新电路与PROM、FPGA连接示意图,由图可知刷新电路102连接PROM101和FPGA103,该刷新电路(102)包括15个功能管脚,其中输入管脚7个,分别为:时钟管脚clk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚initial_fpga、配置时钟管脚cclk_fpga、JTAG数据输出管脚tdo_fpga、PROM数据管脚data_prom,输出管脚8个,分别为:复位管脚prog_fpga、FPGA第0配置数据位管脚din_fpga、JTAG时钟管脚tck_fpga、JTAG数据输入管脚tdi_fpga、JTAG模式管脚tms_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom,其中具体连接关系如下:
刷新电路102的clk_prom管脚连接PROM101的时钟管脚CLK,刷新电路102的ce_prom管脚连接PROM101的片选管脚CE,刷新电路102的oe_prom管脚连接PROM101的输出使能管脚OE,刷新电路102的data_prom管脚连接PROM101的数据管脚DATA,刷新电路102的cclk_fpga管脚连接FPGA103的配置时钟管脚CCLK,刷新电路102的done_fpga管脚连接FPGA103的配置完成管脚DONE,刷新电路102的initial_fpga管脚连接到FPGA103的初始化完成管脚initial,刷新电路102的din_fpga管脚连接到FPGA103的第0配置数据位管脚Din,刷新电路102的tck_fpga管脚连接到FPGA103的JTAG时钟管脚TCK,刷新电路102的tms_fpga管脚连接到FPGA103的JTAG模式管脚TMS,刷新电路102的tdi_fpga管脚连接到FPGA103的JTAG数据输入管脚TDI,刷新电路102的tdo_fpga管脚连接到FPGA103的JTAG数据输出管脚TDO,刷新电路102的prog_fpga管脚连接到FPGA103的复位管脚program,刷新电路102通过clk管脚接收外部时钟信号,刷新电路(102)通过pause管脚接收外部的暂停或启动信号。
应用时,刷新电路102通过FPGA103的JTAG管脚(TCK、TMS、TDI、TDO)进行配置码流刷新;应用时,刷新电路102通过FPGA103的JTAG管脚(TCK、TMS、TDI、TDO)回读FPGA的IDcode,判断被刷新FPGA的型号;应用时,刷新电路102通过clk管脚接收外部时钟信号,并进入工作状态。
如图2所示为本发明刷新电路实现方法流程图,本发明刷新电路102包括5种工作状态,包括空闲状态201、配置状态202、码流处理状态204、回读校验状态203、刷新状态205,本发明刷新电路102的实现方法通过状态机实现,具体实现过程如下:
步骤(一)、上电后刷新电路102初始态为空闲状态,空闲状态下若通过pause管脚从外部输入的pause信号为“1”电平,则判断done_fpga管脚从FPGA103接收的done_fpga信号,若所述done_fpga信号为“1”电平则进入步骤(三)的回读校验状态,,若所述done_fpga信号为“0”电平则进入步骤(二)的配置状态;
步骤(二)、刷新电路102从PROM101中读取码流,并通过cclk_fpga管脚和din_fpga管脚将码流配置到FPGA103中,同时判断done_fpga管脚从FPGA103接收的done_fpga信号,若所述done_fpga信号为“1”电平则配置完成,进入步骤(三)的回读校验状态,若所述done_fpga信号为“0”电平则继续保持配置状态,重复步骤(二);
步骤(三)、刷新电路102对FPGA103进行码流回读,通过CRC校验判断回读的FPGA码流是否正确,若不正确,则进入步骤(四)的码流处理状态,若正确,则仍保持回读校验状态,重复步骤(三);
其中:刷新电路102对FPGA103进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
(1)刷新电路102通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚、tdo_fpga管脚对FPGA103的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg;
(2)刷新电路102通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚、tdo_fpga管脚对FPGA103的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream;
(3)刷新电路102将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确。
步骤(四)、刷新电路102读取PROM101中的码流文件进行码流处理,形成可刷新数据,并自动跳转到步骤(五)的刷新状态。
如图4所示为本发明SRAM型FPGA的基本码流结构,其中需要进行刷新处理的是配置命令402和CLB型码流403,而头部401、RAM型码流404则不能被刷新,否则会导致用户写入的RAM值发生变化,影响用户正常功能。不同型号FPGA的码流规模不同,为了正确地对码流进行筛选,刷新电路可以通过回读IDcode获取被刷FPGA的型号,相应地调整码流筛选的参数。刷新电路的刷新时序符合IEEE1149.1协议的要求。
刷新电路102读取PROM101中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
(1)刷新电路102通过clk_prom管脚、ce_prom管脚、oe_prom管脚向PROM101发送读取数据的信号,通过data_prom管脚读取PROM101的码流数据,并将PROM101输出的码流数据分解为4个部分,分别为头部401、配置命令402、CLB型码流403和RAM型码流404;
(2)滤除对刷新无意义的头部401;
(3)修改配置命令402中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流403,不包括RAM型码流404。
步骤(五)、刷新电路102对FPGA103的码流进行刷新,刷新过程中检测FPGA103的done信号,若检测到done_fpga管脚为“0”电平,则回到步骤(二),进入配置状态,若检测到done_fpga管脚为“1”电平,则完成刷新后回到步骤(三),进入回读校验状态;
刷新电路102对FPGA103的码流进行刷新的具体步骤如下:
(1)刷新电路102通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA103输入上述步骤(四)得到的修改配置字节数和配置起始地址后的配置命令;
(2)刷新电路102继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA103输入CLB型码流;
(3)完成CLB型码流输入后,刷新电路102停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
上述步骤(一)~(五)中任何时刻刷新电路102检测到外部输入的pause信号为“0”电平,则进入空闲状态。空闲状态时,刷新电路102实现连接PROM101与FPGA103配置相关管脚的功能,PROM101的CLK管脚通过刷新电路102连接到FPGA103的CCLK管脚,PROM101的CE管脚通过刷新电路102连接到FPGA103的DONE管脚,PROM101的OE管脚通过刷新电路102连接到FPGA(103)的initial管脚,PROM101的DATA管脚通过刷新电路102连接到FPGA103的Din管脚,刷新电路102的tck_fpga管脚、tms_fpga管脚、tdi_fpga管脚、prog_fpga管脚均输出高阻。
实施例1
上电后,将刷新电路102的pause管脚接“0”电平,则刷新电路102暂停工作,进入且保持在空闲状态201;刷新电路在空闲状态下,如图3,连通内部连线301、302、303、304,将PROM101和FPGA103的对应管脚连接到一起,即PROM101的CLK管脚接FPGA103的CCLK管脚、PROM101的CE管脚接FPGA103的Done管脚、PROM101的OE管脚接FPGA103的Initial管脚、PROM101的DATA管脚接FPGA103的Din管脚;同时,刷新电路102的tck_fpga、tdi_fpga、tms_fpga、prog_fpga输出为高阻态。此时,刷新电路102对PROM101和FPGA103均无影响,可看作刷新电路102被旁路。
实施例2
上电后,将刷新电路102的pause管脚接“1”电平,clk管脚接固定频率的时钟信号,开始检测done_fpga管脚的输入信号。若刷新电路102检测到done_fpga电平为“0”电平,则刷新电路102将进入配置状态202否则直接跳转到回读校验状态203。在配置状态202下,如图3,刷新电路102连通内部连线301、302、303、304,将PROM101和FPGA103的对应管脚连接到一起,即PROM101的CLK管脚接FPGA103的CCLK管脚、PROM101的CE管脚接FPGA103的Done管脚、PROM101的OE管脚接FPGA103的Initial管脚、PROM101的DATA管脚接FPGA103的Din管脚;在FPGA配置过程中,未完成配置的FPGA103的Done管脚输出为“0”电平,CCLK管脚将输出固定频率的方波,Initial管脚为“1”电平,刷新电路102通过ce_prom管脚驱动PROM101的CE管脚为“0”电平、通过clk_prom管脚输出与FPGA103的CCLK管脚同步的时钟信号驱动PROM101的CLK管脚、通过oe_prom管脚驱动PROM101的OE管脚为“1”电平,PROM101将通过DATA管脚输出配置码流;刷新电路102将DATA管脚的输入码流转发到FPGA103的Din管脚;全部码流转发完成后,FPGA103配置完成,DONE管脚被上拉为“1”电平,CCLK管脚的时钟停止输出。刷新电路102检测到done_fpga为“1”电平,则进入回读校验状态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管脚驱动PROM101的CE管脚为“0”电平、通过clk_prom管脚输出与CLK管脚同步的时钟信号驱动PROM101的CLK管脚、通过oe_prom管脚驱动PROM101的OE管脚为“1”电平,PROM101将通过DATA管脚输出配置码流,刷新电路102从data_prom管脚读取码流数据,并将PROM101输出的码流数据分解为如图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信号为“1”电平,且pause信号也为“1”电平的情况下,将一直在回读校验203、码流处理204、刷新205这三个状态之间循环操作。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (6)
1.基于JTAG接口的宇航FPGA通用刷新电路,其特征在于:所述刷新电路(102)连接PROM(101)和FPGA(103),所述刷新电路(102)包括15个功能管脚,其中输入管脚7个,分别为:时钟管脚clk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚initial_fpga、配置时钟管脚cclk_fpga、JTAG数据输出管脚tdo_fpga、PROM数据管脚data_prom,输出管脚8个,分别为:复位管脚prog_fpga、FPGA第0配置数据位管脚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)的输出使能管脚OE,刷新电路(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)的第0配置数据位管脚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数据输出管脚TDO,刷新电路(102)的prog_fpga管脚连接到FPGA(103)的复位管脚program,刷新电路(102)通过clk管脚接收外部时钟信号,刷新电路(102)通过pause管脚接收外部的暂停或启动信号。
2.根据权利要求1所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:包括如下步骤:
(1)、上电后,刷新电路(102)初始态为空闲状态,空闲状态下若通过pause管脚从外部输入的pause信号为“1”电平,则判断done_fpga管脚从FPGA(103)接收的done_fpga信号,若所述done_fpga信号为“1”电平则进入回读校验状态,进入步骤(3),若所述done_fpga信号为“0”电平则进入配置状态,进入步骤(2);
(2)、刷新电路(102)从PROM(101)中读取码流,并通过cclk_fpga管脚和din_fpga管脚将码流配置到FPGA(103)中,同时判断done_fpga管脚从FPGA(103)接收的done_fpga信号,若所述done_fpga信号为“1”电平则配置完成,进入回读校验状态,进入步骤(3),若所述done_fpga信号为“0”电平则继续保持配置状态,重复步骤(2);
(3)、刷新电路(102)对FPGA(103)进行码流回读,通过CRC校验判断回读的FPGA码流是否正确,若不正确,则进入码流处理状态,进入步骤(4),若正确,则仍保持回读校验状态,重复步骤(3);
(4)、刷新电路(102)读取PROM(101)中的码流文件进行码流处理,形成可刷新数据,并自动跳转到刷新状态,进入步骤(5);
(5)、刷新电路(102)对FPGA(103)的码流进行刷新,刷新过程中检测FPGA(103)的done信号,若检测到done_fpga管脚为“0”电平,则回到步骤(2),进入配置状态,若检测到done_fpga管脚为“1”电平,则完成刷新后回到步骤(3),进入回读校验状态;
上述步骤(1)~(5)中任何时刻刷新电路(102)检测到外部输入的pause信号为“0”电平,则进入空闲状态。
3.根据权利要求2所述的基于JTAG接口的宇航FPGA通用刷新电路的实现方法,其特征在于:所述步骤(3)中刷新电路(102)对FPGA(103)进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
(1)、刷新电路(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)中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
(1)、刷新电路(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管脚均输出高阻。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410051652.8A CN103840823B (zh) | 2014-02-14 | 2014-02-14 | 基于jtag接口的宇航fpga通用刷新电路的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410051652.8A CN103840823B (zh) | 2014-02-14 | 2014-02-14 | 基于jtag接口的宇航fpga通用刷新电路的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103840823A true CN103840823A (zh) | 2014-06-04 |
CN103840823B CN103840823B (zh) | 2017-09-05 |
Family
ID=50804022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410051652.8A Active CN103840823B (zh) | 2014-02-14 | 2014-02-14 | 基于jtag接口的宇航fpga通用刷新电路的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103840823B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104483622A (zh) * | 2014-11-27 | 2015-04-01 | 北京时代民芯科技有限公司 | 一种基于jtag接口的单粒子辐照试验测试系统及方法 |
CN105740087A (zh) * | 2016-02-02 | 2016-07-06 | 北京时代民芯科技有限公司 | 利用查找表移位寄存器进行sram型fpga刷新效果验证的方法 |
CN110032100A (zh) * | 2019-03-29 | 2019-07-19 | 中国电子科技集团公司第三十八研究所 | 一种星载监控装置 |
CN110209547A (zh) * | 2019-05-05 | 2019-09-06 | 北京空间飞行器总体设计部 | 一种sram型fpga单粒子翻转加固定时刷新频率确定方法及系统 |
CN113268263A (zh) * | 2021-06-10 | 2021-08-17 | 北京无线电测量研究所 | 一种fpga的回读刷新方法和系统 |
CN113268263B (zh) * | 2021-06-10 | 2024-06-07 | 北京无线电测量研究所 | 一种fpga的回读刷新方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040124876A1 (en) * | 2002-12-30 | 2004-07-01 | Actel Corporation | Apparatus and method of error detection and correction in a radiation-hardened static random access memory field-programmable gate array |
US20080074145A1 (en) * | 2004-07-01 | 2008-03-27 | Sidhu Lakhbeer S | Integrated circuit structures for increasing resistance to single event upset |
CN201549234U (zh) * | 2009-07-23 | 2010-08-11 | 西安空间无线电技术研究所 | 一种基于sram型fpga配置、刷新一体化装置 |
CN102054056A (zh) * | 2009-11-06 | 2011-05-11 | 复旦大学 | 一种现场可编程门阵列的抗辐射性能快速模拟方法 |
CN102135920A (zh) * | 2011-01-17 | 2011-07-27 | 中国航天科技集团公司第九研究院第七七一研究所 | 嵌入式星载计算机故障注入系统及其注入方法 |
CN102694543A (zh) * | 2012-04-20 | 2012-09-26 | 上海卫星工程研究所 | 一种防空间环境影响的星载fpga设计方法及系统 |
CN103325411A (zh) * | 2013-06-20 | 2013-09-25 | 上海航天测控通信研究所 | 一种用于fpga的抗单粒子翻转加固系统及其方法 |
-
2014
- 2014-02-14 CN CN201410051652.8A patent/CN103840823B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040124876A1 (en) * | 2002-12-30 | 2004-07-01 | Actel Corporation | Apparatus and method of error detection and correction in a radiation-hardened static random access memory field-programmable gate array |
US20080074145A1 (en) * | 2004-07-01 | 2008-03-27 | Sidhu Lakhbeer S | Integrated circuit structures for increasing resistance to single event upset |
CN201549234U (zh) * | 2009-07-23 | 2010-08-11 | 西安空间无线电技术研究所 | 一种基于sram型fpga配置、刷新一体化装置 |
CN102054056A (zh) * | 2009-11-06 | 2011-05-11 | 复旦大学 | 一种现场可编程门阵列的抗辐射性能快速模拟方法 |
CN102135920A (zh) * | 2011-01-17 | 2011-07-27 | 中国航天科技集团公司第九研究院第七七一研究所 | 嵌入式星载计算机故障注入系统及其注入方法 |
CN102694543A (zh) * | 2012-04-20 | 2012-09-26 | 上海卫星工程研究所 | 一种防空间环境影响的星载fpga设计方法及系统 |
CN103325411A (zh) * | 2013-06-20 | 2013-09-25 | 上海航天测控通信研究所 | 一种用于fpga的抗单粒子翻转加固系统及其方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104483622A (zh) * | 2014-11-27 | 2015-04-01 | 北京时代民芯科技有限公司 | 一种基于jtag接口的单粒子辐照试验测试系统及方法 |
CN104483622B (zh) * | 2014-11-27 | 2017-08-25 | 北京时代民芯科技有限公司 | 一种基于jtag接口的单粒子辐照试验测试系统及方法 |
CN105740087A (zh) * | 2016-02-02 | 2016-07-06 | 北京时代民芯科技有限公司 | 利用查找表移位寄存器进行sram型fpga刷新效果验证的方法 |
CN105740087B (zh) * | 2016-02-02 | 2018-07-31 | 北京时代民芯科技有限公司 | 利用查找表移位寄存器进行sram型fpga刷新效果验证的方法 |
CN110032100A (zh) * | 2019-03-29 | 2019-07-19 | 中国电子科技集团公司第三十八研究所 | 一种星载监控装置 |
CN110209547A (zh) * | 2019-05-05 | 2019-09-06 | 北京空间飞行器总体设计部 | 一种sram型fpga单粒子翻转加固定时刷新频率确定方法及系统 |
CN110209547B (zh) * | 2019-05-05 | 2023-06-16 | 北京空间飞行器总体设计部 | 一种sram型fpga单粒子翻转加固定时刷新频率确定方法及系统 |
CN113268263A (zh) * | 2021-06-10 | 2021-08-17 | 北京无线电测量研究所 | 一种fpga的回读刷新方法和系统 |
CN113268263B (zh) * | 2021-06-10 | 2024-06-07 | 北京无线电测量研究所 | 一种fpga的回读刷新方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103840823B (zh) | 2017-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760250B (zh) | 一种具有码流纠检错功能的单粒子加固fpga配置电路 | |
US7284166B2 (en) | Programmable multi-mode built-in self-test and self-repair structure for embedded memory arrays | |
CN101826038B (zh) | 一种抗sram fpga器件seu的电路及方法 | |
CN103631738B (zh) | 一种片外配置和回读fpga装置 | |
US20140078841A1 (en) | Programmable memory built in self repair circuit | |
CN101551763B (zh) | 现场可编程逻辑门阵列中单粒子翻转的修复方法及装置 | |
CN102262212B (zh) | 一种检测数字专用集成电路中触发器单粒子效应的系统 | |
US8065574B1 (en) | Soft error detection logic testing systems and methods | |
CN103840823A (zh) | 基于jtag接口的宇航fpga通用刷新电路及其实现方法 | |
CN103840822A (zh) | 基于selectmap的宇航fpga通用刷新电路及其实现方法 | |
CN107741559B (zh) | 一种面向空间辐射环境下的单粒子翻转测试系统及方法 | |
CN104181421A (zh) | Fpga单粒子效应动态故障测试装置及方法 | |
CN108062267A (zh) | 一种可配置寄存器文件自测试方法及生成装置 | |
CN104579313A (zh) | 一种基于配置帧的在轨sram型fpga故障检测与修复方法 | |
Hsu et al. | Built-in self-test design for fault detection and fault diagnosis in SRAM-based FPGA | |
CN104572326A (zh) | 一种基于回读自重构的SoPC芯片容错方法 | |
CN106291313B (zh) | 用于测试集成电路的方法和设备 | |
CN105740087B (zh) | 利用查找表移位寄存器进行sram型fpga刷新效果验证的方法 | |
CN106814305A (zh) | 一种基于片上嵌入式微系统的sip模块测试方法 | |
CN112698994A (zh) | 一种用于fpga内部资源测试的部分位流回读技术 | |
US8549369B2 (en) | Semiconductor-based test device that implements random logic functions | |
US9672094B1 (en) | Interconnect circuitry fault detection | |
US7171599B2 (en) | Field programmable device | |
CN114661531A (zh) | 一种针对fpga的细粒度自修复电路和方法 | |
Gericota et al. | On-line self-healing of circuits implemented on reconfigurable FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |