基于jtag接口的宇航fpga通用刷新電路及其實(shí)現(xiàn)方法
【專利摘要】本發(fā)明涉及基于JTAG接口的宇航FPGA通用刷新電路,該刷新電路設(shè)計(jì)有7個(gè)輸入管腳、8個(gè)輸出管腳,分別與PROM與FPGA的管腳連接,通過JTAG接口對SRAM型FPGA進(jìn)行回讀操作,確定FPGA型號并校驗(yàn)回讀數(shù)據(jù),若發(fā)生錯(cuò)誤則從正確的數(shù)據(jù)源讀取碼流,從碼流中截取有效部分,并通過JTAG接口將有效碼流重新寫入FPGA的內(nèi)部配置位,從而完成配置存儲(chǔ)器的刷新,通過本發(fā)明中的刷新電路,能夠及時(shí)檢測并糾正宇航用FPGA的單粒子翻轉(zhuǎn),消除宇航用FPGA發(fā)生空間單粒子翻轉(zhuǎn)導(dǎo)致的功能故障,提高宇航FPGA空間應(yīng)用可靠性。
【專利說明】基于JTAG接口的宇航FPGA通用刷新電路及其實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及基于JTAG接口的宇航FPGA通用刷新電路及其實(shí)現(xiàn)方法,特別是用于檢測并恢復(fù)宇航用SRAM型FPGA發(fā)生的空間單粒子翻轉(zhuǎn)故障,屬于集成電路【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]SRAM型FPGA的基本結(jié)構(gòu)如圖5,其中主要的功能模塊包括:四周一圈的輸入輸出模塊(Ι0Β)、邊沿兩列塊存儲(chǔ)器(Block RAM)、內(nèi)部的可編程邏輯塊陣列(CLB),除此以外,還有遍布整個(gè)電路連接各個(gè)模塊的互聯(lián)資源。上述邏輯資源和互聯(lián)資源都由下層SRAM配置位控制。大量的遍布FPGA電路的SRAM配置位決定了 FPGA電路的具體功能,這些配置位的碼流集合即被稱為碼流(bit stream)ο
[0003]當(dāng)SRAM型FPGA在空間環(huán)境應(yīng)用時(shí),空間高能粒子會(huì)穿透FPGA器件內(nèi)部并在路徑上產(chǎn)生電離,從而引起電路節(jié)點(diǎn)上瞬時(shí)電流干擾而導(dǎo)致電路錯(cuò)誤。典型的6管SRAM單元由兩個(gè)交叉連接的反相器以及兩個(gè)用于讀寫控制的門控管組成,如圖6所示為SRAM型FPGA的配置存儲(chǔ)器單粒子翻轉(zhuǎn)的原理。當(dāng)高能粒子打在SRAM單元的靈敏區(qū)域時(shí)(以反偏η管的漏區(qū)為例),電荷在結(jié)區(qū)的收集產(chǎn)生了一個(gè)瞬態(tài)電流脈沖,導(dǎo)致該單元存儲(chǔ)的信息由“I”變成了 “0”,狀態(tài)出現(xiàn)了翻轉(zhuǎn)。這種效應(yīng)就是空間單粒子翻轉(zhuǎn)效應(yīng),配置位狀態(tài)的翻轉(zhuǎn)可能導(dǎo)致嚴(yán)重的功能故障,導(dǎo)致內(nèi)部功能錯(cuò)亂、連線短路、斷路等。這種配置位翻轉(zhuǎn)導(dǎo)致的故障是永久性的故障,只能通過重新加載碼流來消除。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的上述缺陷,提供基于JTAG接口的宇航FPGA通用刷新電路,該電路能夠消除單粒子翻轉(zhuǎn)效應(yīng)對SRAM型FPGA造成的不利影響,提高宇航FPGA空間應(yīng)用可靠性。
[0005]本發(fā)明的另外一個(gè)目的在于提供基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法。
[0006]本發(fā)明的上述目的主要是通過如下技術(shù)方案予以實(shí)現(xiàn)的:
[0007]基于JTAG接口的宇航FPGA通用刷新電路,該刷新電路連接PROM和FPGA,所述刷新電路包括15個(gè)功能管腳,其中輸入管腳7個(gè),分別為:時(shí)鐘管腳elk、暫停管腳pause、配置完成管腳done_fpga、初始化完成管腳initial_fpga、配置時(shí)鐘管腳cclk_fpga、JTAG數(shù)據(jù)輸出管腳tdo_fpga、PROM數(shù)據(jù)管腳data_prom,輸出管腳8個(gè),分別為:復(fù)位管腳prog_fpga、FPGA第O配置數(shù)據(jù)位管腳din_fpga、JTAG時(shí)鐘管腳tck_fpga、JTAG數(shù)據(jù)輸入管腳tdi_fpga、JTAG 模式管腳 tms_fpga、PR0M 時(shí)鐘管腳 clk_prom、PR0M輸出使能管腳 oe_prom、PROM片選管腳ce_prom,其中:
[0008]刷新電路的clk_prom管腳連接PROM的時(shí)鐘管腳CLK,刷新電路的ce_prom管腳連接PROM的片選管腳CE,刷新電路的oe_prom管腳連接PROM的輸出使能管腳0E,刷新電路的data_prom管腳連接PROM的數(shù)據(jù)管腳DATA,刷新電路的cclk_fpga管腳連接FPGA的配置時(shí)鐘管腳CCLK,刷新電路的done_fpga管腳連接FPGA的配置完成管腳DONE,刷新電路的initial_fpga管腳連接到FPGA的初始化完成管腳initial,刷新電路的din_fpga管腳連接到FPGA的第O配置數(shù)據(jù)位管腳Din,刷新電路的tck_fpga管腳連接到FPGA的JTAG時(shí)鐘管腳TCK,刷新電路的tms_fpga管腳連接到FPGA的JTAG模式管腳TMS,刷新電路的tdi_fpga管腳連接到FPGA的JTAG數(shù)據(jù)輸入管腳TDI,刷新電路的tdo_fpga管腳連接到FPGA的JTAG數(shù)據(jù)輸出管腳TDO,刷新電路的prog_fpga管腳連接到FPGA的復(fù)位管腳program,刷新電路通過elk管腳接收外部時(shí)鐘信號,刷新電路通過pause管腳接收外部的暫?;騿?dòng)信號。
[0009]基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法中,包括如下步驟:
[0010](I)、上電后,刷新電路初始態(tài)為空閑狀態(tài),空閑狀態(tài)下若通過pause管腳從外部輸入的pause信號為“I”電平,則判斷done_fpga管腳從FPGA接收的done_fpga信號,若所述done_fpga信號為“I”電平則進(jìn)入回讀校驗(yàn)狀態(tài),進(jìn)入步驟(3),若所述done_fpga信號為“O”電平則進(jìn)入配置狀態(tài),進(jìn)入步驟(2);
[0011](2)、刷新電路從PROM中讀取碼流,并通過cclk_fpga管腳和din_fpga管腳將碼流配置到FPGA (103)中,同時(shí)判斷done_fpga管腳從FPGA接收的done_fpga信號,若所述done_fpga信號為“I”電平則配置完成,進(jìn)入回讀校驗(yàn)狀態(tài),進(jìn)入步驟(3),若所述done_fpga信號為“O”電平則繼續(xù)保持配置狀態(tài),重復(fù)步驟(2);
[0012](3 )、刷新電路對FPGA進(jìn)行碼流回讀,通過CRC校驗(yàn)判斷回讀的FPGA碼流是否正確,若不正確,則進(jìn)入碼流處理狀態(tài),進(jìn)入步驟(4),若正確,則仍保持回讀校驗(yàn)狀態(tài),重復(fù)步驟(3);
[0013](4)、刷新電路讀取PROM中的碼流文件進(jìn)行碼流處理,形成可刷新數(shù)據(jù),并自動(dòng)跳轉(zhuǎn)到刷新狀態(tài),進(jìn)入步驟(5);
[0014](5)、刷新電路對FPGA的碼流進(jìn)行刷新,刷新過程中檢測FPGA的done信號,若檢測到done_fpga管腳為“O”電平,則回到步驟(2),進(jìn)入配置狀態(tài),若檢測到done_fpga管腳為“I”電平,則完成刷新后回到步驟(3),進(jìn)入回讀校驗(yàn)狀態(tài);
[0015]上述步驟(I)?(5)中任何時(shí)刻刷新電路檢測到外部輸入的pause信號為“O”電平,則進(jìn)入空閑狀態(tài)。
[0016]在上述基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法中,步驟(3)中刷新電路對FPGA進(jìn)行碼流回讀,通過CRC校驗(yàn)判斷回讀的FPGA碼流是否正確的具體步驟如下:
[0017](I)、刷新電路通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga 管腳對FPGA的CRC寄存器的值進(jìn)行回讀,設(shè)所述CRC寄存器的值為CRC_reg ;
[0018](2)、刷新電路通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga 管腳對FPGA (103)的碼流進(jìn)行回讀,采用CRC16算法計(jì)算碼流CRC值,設(shè)所述碼流CRC值為CRC_stream ;
[0019](3)、刷新電路將CRC_reg和CRC_stream進(jìn)行對比,若一致說明回讀碼流正確,若不一致說明回讀碼流不正確。
[0020]在上述基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法中,步驟(4)中刷新電路讀取PROM中的碼流文件進(jìn)行碼流處理,形成可刷新數(shù)據(jù)的具體步驟如下:
[0021](I)、刷新電路通過 clk_prom 管腳、ce_prom 管腳、oe_prom 管腳向 PROM (101)發(fā)送讀取數(shù)據(jù)的信號,通過data_pr0m管腳讀取PROM的碼流數(shù)據(jù),并將PROM輸出的碼流數(shù)據(jù)分解為4個(gè)部分,分別為頭部、配置命令、CLB型碼流和RAM型碼流;
[0022](2)、濾除對刷新無意義的頭部;
[0023](3)、修改配置命令中的配置字節(jié)數(shù)和配置起始地址,使得形成的可刷新數(shù)據(jù)包括CLB型碼流,不包括RAM型碼流。
[0024]在上述基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法中,步驟(5)中刷新電路對FPGA的碼流進(jìn)行刷新的具體步驟如下:
[0025](I)、刷新電路通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳向FPGA輸入步驟(4)得到的修改配置字節(jié)數(shù)和配置起始地址后的配置命令;
[0026](2)、刷新電路繼續(xù)通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳向FPGA輸入CLB型碼流;
[0027](3)、完成CLB型碼流輸入后,刷新電路停止刷新,不再繼續(xù)輸入完整碼流中跟隨CLB型碼流后的RAM型碼流。
[0028]在上述基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法中,空閑狀態(tài)時(shí),刷新電路實(shí)現(xiàn)連接PROM與FPGA的相關(guān)管腳的功能,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]本發(fā)明與現(xiàn)有技術(shù)相比具有如下有益效果:
[0030](I)、本發(fā)明針對現(xiàn)有宇航用FPGA可能出現(xiàn)的單粒子翻轉(zhuǎn)問題,倉Il新性的設(shè)計(jì)一種連接在PROM與FPGA之間的通用刷新電路,該刷新電路設(shè)計(jì)有7個(gè)輸入管腳、8個(gè)輸出管腳,分別與PROM與FPGA的管腳連接,通過從PROM中讀取正確的數(shù)據(jù),刷新FPGA中的故障區(qū)域,可恢復(fù)空間單粒子翻轉(zhuǎn)造成的SRAM型FPGA功能故障,能夠有效消除單粒子翻轉(zhuǎn)效應(yīng)對SRAM型FPGA造成的不利影響,提高宇航FPGA空間應(yīng)用可靠性;
[0031](2)、本發(fā)明宇航FPGA通用刷新電路芯片連接簡單,對用戶系統(tǒng)設(shè)計(jì)僅新增加兩個(gè)外部引腳,使用方便;
[0032](3 )、本發(fā)明宇航FPGA通用刷新電路通過回讀可以自動(dòng)識別FPGA器件型號,適用于各種FPGA器件型號,適用范圍廣、通用性強(qiáng);
[0033](4 )、本發(fā)明宇航FPGA通用刷新電路的刷新頻率由用戶決定,用戶通過接到CLK上的時(shí)鐘的頻率可以自由調(diào)節(jié)刷新的頻率,適用于各種任務(wù)需求;
[0034](5)、本發(fā)明宇航FPGA通用刷新電路,用戶可以通過PAUSE信號暫停或開啟刷新功能,應(yīng)用方式靈活多樣,實(shí)用性強(qiáng);
[0035](6)、本發(fā)明宇航FPGA通用刷新電路的實(shí)現(xiàn)方法通過狀態(tài)機(jī)實(shí)現(xiàn),為全同步時(shí)序電路,狀態(tài)完備,流程簡單清晰,提高了電路可靠性;
[0036](7 )、本發(fā)明宇航FPGA通用刷新電路通過“回讀檢測、碼流處理、重新加載”等幾個(gè)步驟完成了對FPGA單粒子翻轉(zhuǎn)的修復(fù),在刷新過程中,通用智能刷新電路對碼流進(jìn)行篩選處理,不影響用戶正常功能。
【專利附圖】
【附圖說明】[0037]圖1為本發(fā)明刷新電路與PROM、FPGA連接示意圖;
[0038]圖2為本發(fā)明刷新電路實(shí)現(xiàn)方法流程圖;
[0039]圖3為本發(fā)明刷新電路在空閑狀態(tài)下內(nèi)部連線和引腳電平示意圖;
[0040]圖4為本發(fā)明SRAM型FPGA的碼流結(jié)構(gòu)示意圖;
[0041 ]圖5為SRAM型FPGA的體系結(jié)構(gòu)圖;
[0042]圖6為SRAM型FPGA的配置存儲(chǔ)器單粒子翻轉(zhuǎn)的原理。
【具體實(shí)施方式】
[0043]下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)的描述:
[0044]如圖1所示為本發(fā)明刷新電路與PROM、FPGA連接示意圖,由圖可知刷新電路102連接PR0M101和FPGA103,該刷新電路(102)包括15個(gè)功能管腳,其中輸入管腳7個(gè),分別為:時(shí)鐘管腳elk、暫停管腳pause、配置完成管腳done_fpga、初始化完成管腳initial_fpga、配置時(shí)鐘管腳cclk_fpga、JTAG數(shù)據(jù)輸出管腳tdo_fpga、PROM數(shù)據(jù)管腳data_prom,輸出管腳8個(gè),分別為:復(fù)位管腳prog_fpga、FPGA第O配置數(shù)據(jù)位管腳din_fpga、JTAG時(shí)鐘管腳tck_fpga、JTAG數(shù)據(jù)輸入管腳tdi_fpga、JTAG模式管腳tms_fpga、PROM時(shí)鐘管腳clk_prom、PROM輸出使能管腳oe_prom、PROM片選管腳ce_prom,其中具體連接關(guān)系如下:
[0045]刷新電路102的clk_prom管腳連接PR0M101的時(shí)鐘管腳CLK,刷新電路102的ce_prom管腳連接PR0M101的片選管腳CE,刷新電路102的oe_prom管腳連接PR0M101的輸出使能管腳0E,刷新電路102的data_prom管腳連接PR0M101的數(shù)據(jù)管腳DATA,刷新電路102的cclk_fpga管腳連接FPGA103的配置時(shí)鐘管腳CCLK,刷新電路102的done_fpga管腳連接FPGA103的配置完成管腳DONE,刷新電路102的initial_fpga管腳連接到FPGA103的初始化完成管腳initial,刷新電路102的din_fpga管腳連接到FPGA103的第O配置數(shù)據(jù)位管腳Din,刷新電路102的tck_fpga管腳連接到FPGA103的JTAG時(shí)鐘管腳TCK,刷新電路102的tms_fpga管腳連接到FPGA103的JTAG模式管腳TMS,刷新電路102的tdi_fpga管腳連接到FPGA103的JTAG數(shù)據(jù)輸入管腳TDI,刷新電路102的tdo_fpga管腳連接到FPGA103的JTAG數(shù)據(jù)輸出管腳TD0,刷新電路102的pix)g_fpga管腳連接到FPGA103的復(fù)位管腳program,刷新電路102通過elk管腳接收外部時(shí)鐘信號,刷新電路(102)通過pause管腳接收外部的暫?;騿?dòng)信號。
[0046]應(yīng)用時(shí),刷新電路102通過FPGA103的JTAG管腳(TCK、TMS、TD1、TD0)進(jìn)行配置碼流刷新;應(yīng)用時(shí),刷新電路102通過FPGA103的JTAG管腳(TCK、TMS、TD1、TD0)回讀FPGA的IDcode,判斷被刷新FPGA的型號;應(yīng)用時(shí),刷新電路102通過elk管腳接收外部時(shí)鐘信號,并進(jìn)入工作狀態(tài)。
[0047]如圖2所示為本發(fā)明刷新電路實(shí)現(xiàn)方法流程圖,本發(fā)明刷新電路102包括5種工作狀態(tài),包括空閑狀態(tài)201、配置狀態(tài)202、碼流處理狀態(tài)204、回讀校驗(yàn)狀態(tài)203、刷新狀態(tài)205,本發(fā)明刷新電路102的實(shí)現(xiàn)方法通過狀態(tài)機(jī)實(shí)現(xiàn),具體實(shí)現(xiàn)過程如下:
[0048]步驟(一)、上電后刷新電路102初始態(tài)為空閑狀態(tài),空閑狀態(tài)下若通過pause管腳從外部輸入的pause信號為“I”電平,則判斷done_fpga管腳從FPGA103接收的done_fpga信號,若所述done_fpga信號為“I”電平則進(jìn)入步驟(三)的回讀校驗(yàn)狀態(tài),,若所述done_fpga信號為“O”電平則進(jìn)入步驟(二)的配置狀態(tài);[0049]步驟(二)、刷新電路102從PR0M101中讀取碼流,并通過cclk_fpga管腳和din_fpga管腳將碼流配置到FPGA103中,同時(shí)判斷done_fpga管腳從FPGA103接收的done_fpga信號,若所述done_fpga信號為“I”電平則配置完成,進(jìn)入步驟(三)的回讀校驗(yàn)狀態(tài),若所述done_fpga信號為“O”電平則繼續(xù)保持配置狀態(tài),重復(fù)步驟(二);
[0050]步驟(三)、刷新電路102對FPGA103進(jìn)行碼流回讀,通過CRC校驗(yàn)判斷回讀的FPGA碼流是否正確,若不正確,則進(jìn)入步驟(四)的碼流處理狀態(tài),若正確,則仍保持回讀校驗(yàn)狀態(tài),重復(fù)步驟(三);
[0051]其中:刷新電路102對FPGA103進(jìn)行碼流回讀,通過CRC校驗(yàn)判斷回讀的FPGA碼流是否正確的具體步驟如下:
[0052](I)刷新電路 102 通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga管腳對FPGA103的CRC寄存器的值進(jìn)行回讀,設(shè)所述CRC寄存器的值為CRC_reg ;
[0053](2)刷新電路 102 通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga管腳對FPGA103的碼流進(jìn)行回讀,采用CRC16算法計(jì)算碼流CRC值,設(shè)所述碼流CRC值為CRC_stream ;
[0054](3)刷新電路102將CRC_reg和CRC_stream進(jìn)行對比,若一致說明回讀碼流正確,若不一致說明回讀碼流不正確。
[0055]步驟(四)、刷新電路102讀取PR0M101中的碼流文件進(jìn)行碼流處理,形成可刷新數(shù)據(jù),并自動(dòng)跳轉(zhuǎn)到步驟(五)的刷新狀態(tài)。
[0056]如圖4所示為本發(fā)明SRAM型FPGA的基本碼流結(jié)構(gòu),其中需要進(jìn)行刷新處理的是配置命令402和CLB型碼流403,而頭部401、RAM型碼流404則不能被刷新,否則會(huì)導(dǎo)致用戶寫入的RAM值發(fā)生變化,影響用戶正常功能。不同型號FPGA的碼流規(guī)模不同,為了正確地對碼流進(jìn)行篩選,刷新電路可以通過回讀IDcode獲取被刷FPGA的型號,相應(yīng)地調(diào)整碼流篩選的參數(shù)。刷新電路的刷新時(shí)序符合IEEEl 149.1協(xié)議的要求。
[0057]刷新電路102讀取PR0M101中的碼流文件進(jìn)行碼流處理,形成可刷新數(shù)據(jù)的具體步驟如下:
[0058](I)刷新電路 102 通過 clk_prom 管腳、ce_prom 管腳、oe_prom 管腳向 PR0M101 發(fā)送讀取數(shù)據(jù)的信號,通過data_prom管腳讀取PR0M101的碼流數(shù)據(jù),并將PR0M101輸出的碼流數(shù)據(jù)分解為4個(gè)部分,分別為頭部401、配置命令402、CLB型碼流403和RAM型碼流404 ;
[0059](2)濾除對刷新無意義的頭部401 ;
[0060](3)修改配置命令402中的配置字節(jié)數(shù)和配置起始地址,使得形成的可刷新數(shù)據(jù)包括CLB型碼流403,不包括RAM型碼流404。
[0061]步驟(五)、刷新電路102對FPGA103的碼流進(jìn)行刷新,刷新過程中檢測FPGA103的done信號,若檢測到done_fpga管腳為“O”電平,則回到步驟(二),進(jìn)入配置狀態(tài),若檢測到done_fpga管腳為“I”電平,則完成刷新后回到步驟(三),進(jìn)入回讀校驗(yàn)狀態(tài);
[0062]刷新電路102對FPGA103的碼流進(jìn)行刷新的具體步驟如下:
[0063](I)刷新電路 102 通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳向 FPGA103輸入上述步驟(四)得到的修改配置字節(jié)數(shù)和配置起始地址后的配置命令;
[0064](2)刷新電路102繼續(xù)通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳向FPGA103輸入CLB型碼流;[0065](3)完成CLB型碼流輸入后,刷新電路102停止刷新,不再繼續(xù)輸入完整碼流中跟隨CLB型碼流后的RAM型碼流。
[0066]上述步驟(一)?(五)中任何時(shí)刻刷新電路102檢測到外部輸入的pause信號為“O”電平,則進(jìn)入空閑狀態(tài)??臻e狀態(tài)時(shí),刷新電路102實(shí)現(xiàn)連接PR0M101與FPGA103配置相關(guān)管腳的功能,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]實(shí)施例1
[0068]上電后,將刷新電路102的pause管腳接“O”電平,則刷新電路102暫停工作,進(jìn)入且保持在空閑狀態(tài)201 ;刷新電路在空閑狀態(tài)下,如圖3,連通內(nèi)部連線301、302、303、304,將PR0M101和FPGA103的對應(yīng)管腳連接到一起,即PR0M101的CLK管腳接FPGA103的CCLK管腳、PR0M101 的 CE 管腳接 FPGA103 的 Done 管腳、PR0M101 的 OE 管腳接 FPGA103 的 Initial管腳、PR0M101的DATA管腳接FPGA103的Din管腳;同時(shí),刷新電路102的tck_fpga、tdi_fpga、tms_fpga、prog_fpga輸出為高阻態(tài)。此時(shí),刷新電路102對PR0M101和FPGA103均無影響,可看作刷新電路102被旁路。
[0069]實(shí)施例2
[0070]上電后,將刷新電路102的pause管腳接“I”電平,elk管腳接固定頻率的時(shí)鐘信號,開始檢測done_fpga管腳的輸入信號。若刷新電路102檢測到done_fpga電平為“O”電平,則刷新電路102將進(jìn)入配置狀態(tài)202否則直接跳轉(zhuǎn)到回讀校驗(yàn)狀態(tài)203。在配置狀態(tài)202下,如圖3,刷新電路102連通內(nèi)部連線301、302、303、304 JfPROMlOl和FPGA103的對應(yīng)管腳連接到一起,即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管腳驅(qū)動(dòng)PR0M101的CE管腳為“O”電平、通過clk_prom管腳輸出與FPGA103的CCLK管腳同步的時(shí)鐘信號驅(qū)動(dòng)PR0M101的CLK管腳、通過oe_prom管腳驅(qū)動(dòng)PR0M101的OE管腳為“I”電平,PR0M101將通過DATA管腳輸出配置碼流;刷新電路102將DATA管腳的輸入碼流轉(zhuǎn)發(fā)到FPGA103的Din管腳;全部碼流轉(zhuǎn)發(fā)完成后,F(xiàn)PGA103配置完成,DONE管腳被上拉為“I”電平,CCLK管腳的時(shí)鐘停止輸出。刷新電路102檢測到done_fpga為“I”電平,貝1J進(jìn)入回讀校驗(yàn)狀態(tài)203,刷新電路102通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳、tdo_fpga管腳對FPGA103的CRC寄存器的值進(jìn)行回讀,設(shè)此值為CRC_reg,隨后刷新電路 102 通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga 管腳對 FPGA103 的碼流進(jìn)行回讀,并通過CRC16算法計(jì)算CRC值,設(shè)此值為CRC_stream,對比CRC_reg和CRC_stream,若一致說明回讀碼流正確,刷新電路102繼續(xù)在回讀校驗(yàn)狀態(tài)203下進(jìn)行回讀檢測,若不一致說明發(fā)生了單粒子翻轉(zhuǎn),刷新電路102進(jìn)入碼流處理狀態(tài)204。在碼流處理狀態(tài)204下,刷新電路102通過ce_prom管腳驅(qū)動(dòng)PR0M101的CE管腳為“O”電平、通過clk_prom管腳輸出與CLK管腳同步的時(shí)鐘信號驅(qū)動(dòng)PR0M101的CLK管腳、通過oe_prom管腳驅(qū)動(dòng)PR0M101的OE管腳為“I”電平,PROMlOI將通過DATA管腳輸出配置碼流,刷新電路102從data_prom管腳讀取碼流數(shù)據(jù),并將PR0M101輸出的碼流數(shù)據(jù)分解為如圖4的4個(gè)部分,分別為頭部401、配置命令402、CLB型碼流403、RAM型碼流404,濾除對刷新無意義的頭部401,修改配置命令402中的配置字節(jié)數(shù)和配置起始地址,完成上述操作后,刷新電路102進(jìn)入刷新狀態(tài)205。在刷新狀態(tài)下205,刷新電路102通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳向FPGA103輸入修改后的配置命令,隨后繼續(xù)通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳向FPGA103輸入CLB型碼流403,完成CLB型碼流403輸入后,停止刷新,刷新電路102再次進(jìn)入回讀校驗(yàn)狀態(tài)203。刷新電路102在Done信號為“I”電平,且pause信號也為“I”電平的情況下,將一直在回讀校驗(yàn)203、碼流處理204、刷新205這三個(gè)狀態(tài)之間循環(huán)操作。
[0071]以上所述,僅為本發(fā)明最佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
[0072]本發(fā)明說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1.基于JTAG接口的宇航FPGA通用刷新電路,其特征在于:所述刷新電路(102)連接PROM (101)和FPGA (103),所述刷新電路(102)包括15個(gè)功能管腳,其中輸入管腳7個(gè),分別為:時(shí)鐘管腳elk、暫停管腳pause、配置完成管腳done_fpga、初始化完成管腳initial_fpga、配置時(shí)鐘管腳cclk_fpga、JTAG數(shù)據(jù)輸出管腳tdo_fpga、PROM數(shù)據(jù)管腳data_prom,輸出管腳8個(gè),分別為:復(fù)位管腳prog_fpga、FPGA第O配置數(shù)據(jù)位管腳din_fpga、JTAG時(shí)鐘管腳tck_fpga、JTAG數(shù)據(jù)輸入管腳tdi_fpga、JTAG模式管腳tms_fpga、PROM時(shí)鐘管腳clk_prom、PROM輸出使能管腳oe_prom、PROM片選管腳ce_prom,其中: 刷新電路(102)的clk_prom管腳連接PROM (101)的時(shí)鐘管腳CLK,刷新電路(102)的ce_prom管腳連接PROM (101)的片選管腳CE,刷新電路(102)的oe_prom管腳連接PROM(101)的輸出使能管腳0E,刷新電路(102)的data_prom管腳連接PROM(101)的數(shù)據(jù)管腳DATA,刷新電路(102)的cclk_fpga管腳連接FPGA (103)的配置時(shí)鐘管腳CCLK,刷新電路(102)的done_fpga管腳連接FPGA(103)的配置完成管腳DONE,刷新電路(102)的initial_fpga管腳連接到FPGA (103)的初始化完成管腳initial,刷新電路(102)的din_fpga管腳連接到FPGA (103)的第O配置數(shù)據(jù)位管腳Din,刷新電路(102)的tck_fpga管腳連接到FPGA (103)的JTAG時(shí)鐘管腳TCK,刷新電路(102)的tms_fpga管腳連接到FPGA (103)的JTAG模式管腳TMS,刷新電路(102)的tdi_fpga管腳連接到FPGA (103)的JTAG數(shù)據(jù)輸入管腳TDI,刷新電路(102)的tdo_fpga管腳連接到FPGA (103)的JTAG數(shù)據(jù)輸出管腳TD0,刷新電路(102)的prog_fpga管腳連接到FPGA (103)的復(fù)位管腳program,刷新電路(102)通過elk管腳接收外部時(shí)鐘信號,刷新電路(102)通過pause管腳接收外部的暫?;騿?dòng)信號。
2.根據(jù)權(quán)利要求1所述的基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法,其特征在于:包括如下步驟: (1)、上電后,刷新電路(102)初始態(tài)為空閑狀態(tài),空閑狀態(tài)下若通過pause管腳從外部輸入的pause信號為“I”電平,則判斷done_fpga管腳從FPGA (103)接收的done_fpga信號,若所述done_fpga信號為“I”電平則進(jìn)入回讀校驗(yàn)狀態(tài),進(jìn)入步驟(3),若所述done_fpga信號為“O”電平則進(jìn)入配置狀態(tài),進(jìn)入步驟(2); (2)、刷新電路(102)從PROM(101)中讀取碼流,并通過cclk_fpga管腳和din_fpga管腳將碼流配置到FPGA(103)中,同時(shí)判斷done_fpga管腳從FPGA (103)接收的done_fpga信號,若所述done_fpga信號為“I”電平則配置完成,進(jìn)入回讀校驗(yàn)狀態(tài),進(jìn)入步驟(3),若所述done_fpga信號為“O”電平則繼續(xù)保持配置狀態(tài),重復(fù)步驟(2); (3)、刷新電路(102)對FPGA(103)進(jìn)行碼流回讀,通過CRC校驗(yàn)判斷回讀的FPGA碼流是否正確,若不正確,則進(jìn)入碼流處理狀態(tài),進(jìn)入步驟(4),若正確,則仍保持回讀校驗(yàn)狀態(tài),重復(fù)步驟(3); (4)、刷新電路(102)讀取PROM(101)中的碼流文件進(jìn)行碼流處理,形成可刷新數(shù)據(jù),并自動(dòng)跳轉(zhuǎn)到刷新狀態(tài),進(jìn)入步驟(5); (5)、刷新電路(102)對FPGA(103)的碼流進(jìn)行刷新,刷新過程中檢測FPGA (103)的done信號,若檢測到done_fpga管腳為“O”電平,則回到步驟(2),進(jìn)入配置狀態(tài),若檢測到done_fpga管腳為“I”電平,則完成刷新后回到步驟(3),進(jìn)入回讀校驗(yàn)狀態(tài); 上述步驟(1)~(5)中任何時(shí)刻刷新電路(102)檢測到外部輸入的pause信號為“O”電平,則進(jìn)入空閑狀態(tài)。
3.根據(jù)權(quán)利要求2所述的基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法,其特征在于:所述步驟(3)中刷新電路(102)對FPGA (103)進(jìn)行碼流回讀,通過CRC校驗(yàn)判斷回讀的FPGA碼流是否正確的具體步驟如下: (O、刷新電路(102)通過 tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga 管腳對FPGA (103)的CRC寄存器的值進(jìn)行回讀,設(shè)所述CRC寄存器的值為CRC_reg ; (2)、刷新電路(102)通過tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳、tdo_fpga 管腳對FPGA (103)的碼流進(jìn)行回讀,采用CRC16算法計(jì)算碼流CRC值,設(shè)所述碼流CRC值為CRC_stream ; (3)、刷新電路(102)將CRC_reg和CRC_stream進(jìn)行對比,若一致說明回讀碼流正確,若不一致說明回讀碼流不正確。
4.根據(jù)權(quán)利要求2所述的基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法,其特征在于:所述步驟(4)中刷新電路(102)讀取PROM (101)中的碼流文件進(jìn)行碼流處理,形成可刷新數(shù)據(jù)的具體步驟如下: (I )、刷新電路(102)通過 clk_prom 管腳、ce_prom 管腳、oe_prom 管腳向 PROM (101)發(fā)送讀取數(shù)據(jù)的信號,通過data_prom管腳讀取PROM (101)的碼流數(shù)據(jù),并將PROM (101)輸出的碼流數(shù)據(jù)分解為4個(gè)部分,分別為頭部、配置命令、CLB型碼流和RAM型碼流; (2)、濾除對刷新無意 義的頭部; (3)、修改配置命令中的配置字節(jié)數(shù)和配置起始地址,使得形成的可刷新數(shù)據(jù)包括CLB型碼流,不包括RAM型碼流。
5.根據(jù)權(quán)利要求4所述的基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法,其特征在于:所述步驟(5)中刷新電路(102)對FPGA (103)的碼流進(jìn)行刷新的具體步驟如下: (1)、刷新電路(102)通過tck_fpga 管腳、tdi_fpga 管腳、tms_fpga 管腳向 FPGA (103)輸入步驟(4)得到的修改配置字節(jié)數(shù)和配置起始地址后的配置命令; (2)、刷新電路(102)繼續(xù)通過tck_fpga管腳、tdi_fpga管腳、tms_fpga管腳向FPGA(103)輸入CLB型碼流; (3)、完成CLB型碼流輸入后,刷新電路(102)停止刷新,不再繼續(xù)輸入完整碼流中跟隨CLB型碼流后的RAM型碼流。
6.根據(jù)權(quán)利要求2所述的基于JTAG接口的宇航FPGA通用刷新電路的實(shí)現(xiàn)方法,其特征在于:空閑狀態(tài)時(shí),刷新電路(102)實(shí)現(xiàn)連接PROM (101)與FPGA (103)的相關(guān)管腳的功能,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日 優(yōu)先權(quán)日:2014年2月14日
【發(fā)明者】張帆, 陳雷, 趙元富, 文治平, 李學(xué)武, 張彥龍, 孫華波, 王碩, 尚祖賓, 馮長磊, 王嵐施, 林彥君, 鄭咸建 申請人:北京時(shí)代民芯科技有限公司, 北京微電子技術(shù)研究所