CN103840822B - 基于selectmap的宇航fpga通用刷新电路的实现方法 - Google Patents
基于selectmap的宇航fpga通用刷新电路的实现方法 Download PDFInfo
- Publication number
- CN103840822B CN103840822B CN201410051615.7A CN201410051615A CN103840822B CN 103840822 B CN103840822 B CN 103840822B CN 201410051615 A CN201410051615 A CN 201410051615A CN 103840822 B CN103840822 B CN 103840822B
- Authority
- CN
- China
- Prior art keywords
- fpga
- pin
- 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.)
- Active
Links
Landscapes
- Logic Circuits (AREA)
- Stored Programmes (AREA)
- Dram (AREA)
Abstract
本发明涉及基于SELECTMAP的宇航FPGA通用刷新电路的实现方法,其中通用刷新电路设计有6个输入管脚、6个输出管脚,8个双向管脚,分别与PROM与FPGA的管脚连接,通过SELECTMAP对SRAM型FPGA进行回读操作,确定FPGA型号并校验回读数据,若发生错误则从正确的数据源读取码流,从码流中截取有效部分,并通过SELECTMAP将有效码流重新写入FPGA的内部配置位,从而完成配置存储器的刷新,通过本发明中的刷新电路,能够及时检测并纠正宇航用FPGA的单粒子翻转,消除宇航用FPGA发生空间单粒子翻转导致的功能故障,提高宇航FPGA空间应用可靠性。
Description
技术领域
本发明涉及基于SELECTMAP的宇航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”,状态出现了翻转。这种效应就是空间单粒子翻转效应,配置位状态的翻转可能导致严重的功能故障,导致内部功能错乱、连线短路、断路等。这种配置位翻转导致的故障是永久性的故障,只能通过重新加载码流来消除。
发明内容
本发明的目的在于克服现有技术的上述缺陷,提供基于SELECTMAP的宇航FPGA通用刷新电路,该电路能够消除单粒子翻转效应对SRAM型FPGA造成的不利影响,提高宇航FPGA空间应用可靠性。
本发明的另外一个目的在于提供基于SELECTMAP的宇航FPGA通用刷新电路的实现方法。
本发明的上述目的主要是通过如下技术方案予以实现的:
基于SELECTMAP的宇航FPGA通用刷新电路,所述刷新电路连接PROM和FPGA,所述刷新电路包括20个功能管脚,其中输入管脚6个,分别为:时钟管脚clk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚init_fpga、配置时钟管脚cclk_fpga、PROM数据管脚data_prom,输出管脚6个,分别为:复位管脚prog_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom、FPGA片选管脚cs_fpga、FPGA写使能管脚write_fpga,双向管脚8个,分别为:FPGA第0配置数据位管脚din_fpga、FPGA第1配置数据位管脚D1_fpga、FPGA第2配置数据位管脚D2_fpga、FPGA第3配置数据位管脚D3_fpga、FPGA第4配置数据位管脚D4_fpga、FPGA第5配置数据位管脚D5_fpga、FPGA第6配置数据位管脚D6_fpga、FPGA第7配置数据位管脚D7_fpga,其中:
刷新电路的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,刷新电路的D1_fpga管脚连接FPGA的第1配置数据位管脚D1,刷新电路的D2_fpga管脚连接FPGA的第2配置数据位管脚D2,刷新电路的D3_fpga管脚连接FPGA的第3配置数据位管脚D3,刷新电路的D4_fpga管脚连接FPGA的第4配置数据位管脚D4,刷新电路的D5_fpga管脚连接FPGA的第5配置数据位管脚D5,刷新电路的D6_fpga管脚连接FPGA的第6配置数据位管脚D6,刷新电路的D7_fpga管脚连接FPGA的第7配置数据位管脚D7,刷新电路的cs_fpga管脚连接FPGA的片选管脚CS,刷新电路的write_fpga管脚连接FPGA的写使能管脚Write,刷新电路的prog_fpga管脚连接FPGA的复位管脚program,刷新电路通过clk管脚接收外部时钟信号,刷新电路通过pause管脚接收外部的暂停或启动信号。
基于SELECTMAP的宇航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中,同时判断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”电平,则进入空闲状态。
在上述基于SELECTMAP的宇航FPGA通用刷新电路的实现方法中,步骤(3)中刷新电路对FPGA进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
(1)、刷新电路通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚对FPGA的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg;
(2)、刷新电路通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚对FPGA的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream;
(3)、刷新电路将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确。
在上述基于SELECTMAP的宇航FPGA通用刷新电路的实现方法中,步骤(4)中刷新电路读取PROM中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
(1)、刷新电路通过clk_prom管脚、ce_prom管脚、oe_prom管脚向PROM(101)发送读取数据的信号,通过data_prom管脚读取PROM(101)的码流数据,并将PROM输出的码流数据分解为4个部分,分别为头部、配置命令、CLB型码流和RAM型码流;
(2)、滤除对刷新无意义的头部;
(3)、修改配置命令中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流,不包括RAM型码流;
(4)、将修改后的配置命令及CLB型码流分解为每8位一个单元的数据包,其中最高位由din_fpga管脚输出,次高位由D1_fpga管脚输出,依次类推,最低位由D7_fpga管脚输出。
在上述基于SELECTMAP的宇航FPGA通用刷新电路的实现方法中,步骤(5)中刷新电路对FPGA的码流进行刷新的具体步骤如下:
(1)、刷新电路通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA输入步骤(4)得到的修改配置字节数和配置起始地址后的配置命令;
(2)、刷新电路继续通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA输入CLB型码流;
(3)、完成CLB型码流输入后,刷新电路停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
在上述基于SELECTMAP的宇航FPGA通用刷新电路的实现方法中,空闲状态时,刷新电路实现连接PROM与FPGA的相关管脚的功能,PROM的CLK管脚通过刷新电路连接FPGA的CCLK管脚,PROM的CE管脚通过刷新电路连接FPGA的DONE管脚,PROM的OE管脚通过刷新电路连接FPGA的initial管脚,PROM的DATA管脚通过刷新电路连接FPGA的Din管脚,刷新电路的D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚、prog_fpga管脚均输出高阻。
本发明与现有技术相比具有如下有益效果:
(1)、本发明针对现有宇航用FPGA可能出现的单粒子翻转问题,创新性的设计一种连接在PROM与FPGA之间的通用刷新电路,该刷新电路设计有6个输入管脚、4个输出管脚、10个双向管脚,分别与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包括20个功能管脚,其中输入管脚6个,分别为:时钟管脚clk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚init_fpga、配置时钟管脚cclk_fpga、PROM数据管脚data_prom,输出管脚6个,分别为:复位管脚prog_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom、FPGA片选管脚cs_fpga、FPGA写使能管脚write_fpga,双向管脚8个,分别为:FPGA第0配置数据位管脚din_fpga、FPGA第1配置数据位管脚D1_fpga、FPGA第2配置数据位管脚D2_fpga、FPGA第3配置数据位管脚D3_fpga、FPGA第4配置数据位管脚D4_fpga、FPGA第5配置数据位管脚D5_fpga、FPGA第6配置数据位管脚D6_fpga、FPGA第7配置数据位管脚D7_fpga,其中具体连接关系如下:
刷新电路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的D1_fpga管脚连接FPGA103的第1配置数据位管脚D1,刷新电路102的D2_fpga管脚连接FPGA103的第2配置数据位管脚D2,刷新电路102的D3_fpga管脚连接FPGA103的第3配置数据位管脚D3,刷新电路102的D4_fpga管脚连接FPGA103的第4配置数据位管脚D4,刷新电路102的D5_fpga管脚连接FPGA103的第5配置数据位管脚D5,刷新电路102的D6_fpga管脚连接FPGA103的第6配置数据位管脚D6,刷新电路102的D7_fpga管脚连接FPGA103的第7配置数据位管脚D7,刷新电路102的cs_fpga管脚连接FPGA103的片选管脚CS,刷新电路102的write_fpga管脚连接FPGA103的写使能管脚Write,刷新电路102的prog_fpga管脚连接FPGA103的复位管脚program,刷新电路102通过clk管脚接收外部时钟信号,刷新电路102通过pause管脚接收外部的暂停或启动信号。
应用时,刷新电路102通过FPGA103的SelectMAP管脚(din_fpga、D1_fpga、D2_fpga、D3_fpga、D4_fpga、D5_fpga、D6_fpga、D7_fpga、cclk_fpga、cs_fpga、write_fpga)进行配置码流刷新。
应用时,刷新电路102通过FPGA103的SelectMAP管脚(din_fpga、D1_fpga、D2_fpga、D3_fpga、D4_fpga、D5_fpga、D6_fpga、D7_fpga、cclk_fpga、cs_fpga、write_fpga)回读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通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_fpga管脚对FPGA103的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg;
(2)刷新电路102通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_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的型号,相应地调整码流筛选的参数。刷新电路的刷新时序符合SelectMAP并行配置的时序要求。
刷新电路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;
(4)将修改后的配置命令及CLB型码流分解为每8位一个单元的数据包,其中最高位由din_fpga管脚输出,次高位由D1_fpga管脚输出,依次类推,最低位由D7_fpga管脚输出。
步骤(五)、刷新电路102对FPGA103的码流进行刷新,刷新过程中检测FPGA103的done信号,若检测到done_fpga管脚为“0”电平,则回到步骤(二),进入配置状态,若检测到done_fpga管脚为“1”电平,则完成刷新后回到步骤(三),进入回读校验状态;
其中刷新电路102对FPGA103的码流进行刷新的具体步骤如下:
(1)刷新电路102通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA103输入上述步骤(四)得到的修改配置字节数和配置起始地址后的配置命令402;
(2)刷新电路102继续通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA103输入CLB型码流403;
(3)完成CLB型码流403输入后,刷新电路102停止刷新,不再继续输入完整码流中跟随CLB型码流403后的RAM型码流404。
上述步骤(一)~(五)中任何时刻刷新电路102检测到外部输入的pause信号为“0”电平,则进入空闲状态。空闲状态时,刷新电路102实现连接PROM101与FPGA103配置相关管脚的功能,PROM101的CLK管脚通过刷新电路102连接到FPGA103的CCLK管脚,PROM101的CE管脚通过刷新电路102连接到FPGA103的DONE管脚,PROM101的OE管脚通过刷新电路102连接到FPGA103的initial管脚,PROM101的DATA管脚通过刷新电路102连接到FPGA103的Din管脚,刷新电路102的D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_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的D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_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通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_fpga管脚对FPGA103的CRC寄存器的值进行回读,设此值为CRC_reg,随后刷新电路102通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_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的四个部分,分别为头部401、配置命令402、CLB型码流403、RAM型码流404,滤除对刷新无意义的头部401,修改配置命令402中的配置字节数和配置起始地址,将修改后的配置命令及CLB型码流分解为每8位一个单元的数据包,其中最高位由din_fpga管脚输出,次高位由D1_fpga管脚输出,依次类推,最低位由D7_fpga管脚输出,刷新电路102进入刷新状态205。在刷新状态下205,刷新电路102通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cclk_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA103输入修改后的配置命令,随后继续通过tck_fpga管脚、tdi_fpga管脚、tms_fpga管脚向FPGA103输入CLB型码流403,完成CLB型码流403输入后,停止刷新,刷新电路102再次进入回读校验状态203。刷新电路102在Done信号为“1”电平,且pause信号也为“1”电平的情况下,将一直在回读校验203、码流处理204、刷新205这三个状态之间循环操作。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (4)
1.基于SELECTMAP的宇航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)中刷新电路(102)对FPGA(103)进行码流回读,通过CRC校验判断回读的FPGA码流是否正确的具体步骤如下:
(3.1)、刷新电路(102)通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚对FPGA(103)的CRC寄存器的值进行回读,设所述CRC寄存器的值为CRC_reg;
(3.2)、刷新电路(102)通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚对FPGA(103)的码流进行回读,采用CRC16算法计算码流CRC值,设所述码流CRC值为CRC_stream;
(3.3)、刷新电路(102)将CRC_reg和CRC_stream进行对比,若一致说明回读码流正确,若不一致说明回读码流不正确;
所述刷新电路(102)连接PROM(101)和FPGA(103),所述刷新电路(102)包括20个功能管脚,其中输入管脚5个,分别为:时钟管脚clk、暂停管脚pause、配置完成管脚done_fpga、初始化完成管脚init_fpga、PROM数据管脚data_prom,输出管脚7个,分别为:配置时钟管脚cclk_fpga、复位管脚prog_fpga、PROM时钟管脚clk_prom、PROM输出使能管脚oe_prom、PROM片选管脚ce_prom、FPGA片选管脚cs_fpga、FPGA写使能管脚write_fpga,双向管脚8个,分别为:FPGA第0配置数据位管脚din_fpga、FPGA第1配置数据位管脚D1_fpga、FPGA第2配置数据位管脚D2_fpga、FPGA第3配置数据位管脚D3_fpga、FPGA第4配置数据位管脚D4_fpga、FPGA第5配置数据位管脚D5_fpga、FPGA第6配置数据位管脚D6_fpga、FPGA第7配置数据位管脚D7_fpga,其中:
刷新电路(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)的D1_fpga管脚连接FPGA(103)的第1配置数据位管脚D1,刷新电路(102)的D2_fpga管脚连接FPGA(103)的第2配置数据位管脚D2,刷新电路(102)的D3_fpga管脚连接FPGA(103)的第3配置数据位管脚D3,刷新电路(102)的D4_fpga管脚连接FPGA(103)的第4配置数据位管脚D4,刷新电路(102)的D5_fpga管脚连接FPGA(103)的第5配置数据位管脚D5,刷新电路(102)的D6_fpga管脚连接FPGA(103)的第6配置数据位管脚D6,刷新电路(102)的D7_fpga管脚连接FPGA(103)的第7配置数据位管脚D7,刷新电路(102)的cs_fpga管脚连接FPGA(103)的片选管脚CS,刷新电路(102)的write_fpga管脚连接FPGA(103)的写使能管脚Write,刷新电路(102)的prog_fpga管脚连接FPGA(103)的复位管脚program,刷新电路(102)通过clk管脚接收外部时钟信号,刷新电路(102)通过pause管脚接收外部的暂停或启动信号。
2.根据权利要求1所述的基于SELECTMAP的宇航FPGA通用刷新电路的实现方法,其特征在于:所述步骤(4)中刷新电路(102)读取PROM(101)中的码流文件进行码流处理,形成可刷新数据的具体步骤如下:
(4.1)、刷新电路(102)通过clk_prom管脚、ce_prom管脚、oe_prom管脚向PROM(101)发送读取数据的信号,通过data_prom管脚读取PROM(101)的码流数据,并将PROM(101)输出的码流数据分解为4个部分,分别为头部、配置命令、CLB型码流和RAM型码流;
(4.2)、滤除对刷新无意义的头部;
(4.3)、修改配置命令中的配置字节数和配置起始地址,使得形成的可刷新数据包括CLB型码流,不包括RAM型码流;
(4.4)、将修改后的配置命令及CLB型码流分解为每8位一个单元的数据包,其中最高位由din_fpga管脚输出,次高位由D1_fpga管脚输出,依次类推,最低位由D7_fpga管脚输出。
3.根据权利要求1所述的基于SELECTMAP的宇航FPGA通用刷新电路的实现方法,其特征在于:所述步骤(5)中刷新电路(102)对FPGA(103)的码流进行刷新的具体步骤如下:
(5.1)、刷新电路(102)通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA(103)输入步骤(4)得到的修改配置字节数和配置起始地址后的配置命令;
(5.2)、刷新电路(102)继续通过din_fpga管脚、D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚向FPGA(103)输入CLB型码流;
(5.3)、完成CLB型码流输入后,刷新电路(102)停止刷新,不再继续输入完整码流中跟随CLB型码流后的RAM型码流。
4.根据权利要求1所述的基于SELECTMAP的宇航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)的D1_fpga管脚、D2_fpga管脚、D3_fpga管脚、D4_fpga管脚、D5_fpga管脚、D6_fpga管脚、D7_fpga管脚、cs_fpga管脚、write_fpga管脚、prog_fpga管脚均输出高阻。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410051615.7A CN103840822B (zh) | 2014-02-14 | 2014-02-14 | 基于selectmap的宇航fpga通用刷新电路的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410051615.7A CN103840822B (zh) | 2014-02-14 | 2014-02-14 | 基于selectmap的宇航fpga通用刷新电路的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103840822A CN103840822A (zh) | 2014-06-04 |
CN103840822B true CN103840822B (zh) | 2017-01-04 |
Family
ID=50804021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410051615.7A Active CN103840822B (zh) | 2014-02-14 | 2014-02-14 | 基于selectmap的宇航fpga通用刷新电路的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103840822B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648439B (zh) * | 2015-07-14 | 2019-11-29 | 上海宝存信息科技有限公司 | 于控制逻辑错误时重新配置存储控制器的方法及装置 |
CN105141302A (zh) * | 2015-07-24 | 2015-12-09 | 西安空间无线电技术研究所 | 一种基于时钟沿的单粒子翻转自检纠错电路 |
CN105740087B (zh) * | 2016-02-02 | 2018-07-31 | 北京时代民芯科技有限公司 | 利用查找表移位寄存器进行sram型fpga刷新效果验证的方法 |
CN106154909A (zh) * | 2016-06-24 | 2016-11-23 | 中国电子科技集团公司第三十八研究所 | 一种实时刷新装置及其方法、具有该实时刷新装置的系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6810514B1 (en) * | 2002-07-03 | 2004-10-26 | Xilinx, Inc. | Controller arrangement for partial reconfiguration of a programmable logic device |
US7509617B1 (en) * | 2005-09-12 | 2009-03-24 | Xilinx, Inc. | Design methodology to support relocatable bit streams for dynamic partial reconfiguration of FPGAs to reduce bit stream memory requirements |
US7685380B1 (en) * | 2005-06-29 | 2010-03-23 | Xilinx, Inc. | Method for using configuration memory for data storage and read operations |
CN103325411A (zh) * | 2013-06-20 | 2013-09-25 | 上海航天测控通信研究所 | 一种用于fpga的抗单粒子翻转加固系统及其方法 |
-
2014
- 2014-02-14 CN CN201410051615.7A patent/CN103840822B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6810514B1 (en) * | 2002-07-03 | 2004-10-26 | Xilinx, Inc. | Controller arrangement for partial reconfiguration of a programmable logic device |
US7685380B1 (en) * | 2005-06-29 | 2010-03-23 | Xilinx, Inc. | Method for using configuration memory for data storage and read operations |
US7509617B1 (en) * | 2005-09-12 | 2009-03-24 | Xilinx, Inc. | Design methodology to support relocatable bit streams for dynamic partial reconfiguration of FPGAs to reduce bit stream memory requirements |
CN103325411A (zh) * | 2013-06-20 | 2013-09-25 | 上海航天测控通信研究所 | 一种用于fpga的抗单粒子翻转加固系统及其方法 |
Non-Patent Citations (1)
Title |
---|
星载高速数据处理技术研究;马寅;《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑》;20120415(第4期);第2-3章、图3-4,3-12和3-13 * |
Also Published As
Publication number | Publication date |
---|---|
CN103840822A (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103840823B (zh) | 基于jtag接口的宇航fpga通用刷新电路的实现方法 | |
CN103840822B (zh) | 基于selectmap的宇航fpga通用刷新电路的实现方法 | |
CN102332307B (zh) | Sram型fpga单粒子效应试验系统及方法 | |
Fritzemeier et al. | Increased CMOS IC stuck-at fault coverage with reduced I/sub DDQ/test sets | |
US5898776A (en) | Security antifuse that prevents readout of some but not other information from a programmed field programmable gate array | |
CN103091620B (zh) | 一种针对扫描测试中捕获功耗的优化方法 | |
US6378112B1 (en) | Verification of design blocks and method of equivalence checking of multiple design views | |
CN101617242A (zh) | 集成电路中的输入/输出压缩和引脚减少 | |
CN104181421B (zh) | Fpga单粒子效应动态故障测试装置及方法 | |
CN101551421B (zh) | 一种单粒子瞬态脉冲收集及检测电路结构 | |
CN108062267A (zh) | 一种可配置寄存器文件自测试方法及生成装置 | |
CN100357751C (zh) | 一种jtag模块及应用该模块的调试方法 | |
US20050039098A1 (en) | Apparatus and method for self testing programmable logic arrays | |
CN106814305B (zh) | 一种基于片上嵌入式微系统的sip模块测试方法 | |
CN105548866A (zh) | 一种基于辐照试验环境模拟的sram型fpga测试方法 | |
CN106154909A (zh) | 一种实时刷新装置及其方法、具有该实时刷新装置的系统 | |
CN106155857B (zh) | Fpga上电复位过程的存储单元读写检测系统及方法 | |
USRE42264E1 (en) | Field programmable device | |
CN105740087B (zh) | 利用查找表移位寄存器进行sram型fpga刷新效果验证的方法 | |
CN106291313B (zh) | 用于测试集成电路的方法和设备 | |
CN105675984A (zh) | 一种脉冲波形测试电路 | |
US20150269991A1 (en) | Memory unit and method of testing the same | |
Liu et al. | Achieving 100% cell-aware coverage by design | |
CN102571072B (zh) | 配置状态可定制的可编程逻辑电路 | |
Pundir et al. | Fault tolerant reconfigurable hardware design using BIST on SRAM: A review |
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 |