本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種基于FPGA的數(shù)據(jù)處理方法及裝置。
背景技術(shù):
現(xiàn)場(chǎng)可編程門陣列FPGA由于其高速性和靈活性,成為當(dāng)今嵌入式系統(tǒng)開(kāi)發(fā)中最熱門的關(guān)鍵技術(shù)之一,被廣泛應(yīng)用于各個(gè)行業(yè)領(lǐng)域。FPGA大都基于易失性RAM結(jié)構(gòu)的,下電后配置文件會(huì)丟失,所以需要一個(gè)非易失性存儲(chǔ)器事先將配置文件存儲(chǔ)起來(lái),每次上電時(shí)加載到FPGA里面去。加載時(shí)間通常取決于配置文件的大小,F(xiàn)PGA器件越大,配置文件越大,加載時(shí)間也就越長(zhǎng)。
在眾多當(dāng)代應(yīng)用中,嵌入式系統(tǒng)必須滿足及其苛刻的時(shí)序要求,其中之一就是啟動(dòng)時(shí)間,例如計(jì)算機(jī)設(shè)備上的PCI Express(PCIe)接口,系統(tǒng)上電后100ms,系統(tǒng)的根組件就開(kāi)始掃描總線以便弄清拓?fù)浣Y(jié)構(gòu),并在這一過(guò)程中進(jìn)行初始化配置,如果PCIe設(shè)備沒(méi)有準(zhǔn)備好響應(yīng)配置請(qǐng)求,根組件就找不到此PCIe設(shè)備,并認(rèn)為它不存在,該設(shè)備將無(wú)法加入PCIe總線系統(tǒng)。
目前市場(chǎng)上很多FPGA器件帶有PCIe IP核,可以輕松在FPGA內(nèi)部實(shí)現(xiàn)PCIe功能,減少PCB面積。根據(jù)計(jì)算機(jī)PCIe設(shè)備的啟動(dòng)時(shí)序要求,需要FPGA在100ms內(nèi)完成配置,針對(duì)帶有PCIe功能的FPGA快速配置方法目前是將FPGA配置文件放入外部非易失性存儲(chǔ)器中,每次上電主動(dòng)或被動(dòng)加載配置文件。主動(dòng)即是FPGA自行讀取外部非易失性存儲(chǔ)器內(nèi)部的配置文件并寫入內(nèi)部易失性存儲(chǔ)器中;被動(dòng)即是通過(guò)微處理器從外部非易失性存儲(chǔ)器讀取FPGA配置文件,然后模擬FPGA的加載時(shí)序,寫入到FPGA內(nèi)部易失性存儲(chǔ)器中。
然而因?yàn)槭褂脝蝹€(gè)非易失性存儲(chǔ)器,這就需要對(duì)非易失性存儲(chǔ)器帶寬要求很高。非易失性存儲(chǔ)器分類包括EEPROM和閃存flash,EEPROM容量小、速度慢通常作為硬件設(shè)置數(shù)據(jù)存儲(chǔ)器,配置文件的存儲(chǔ)需要使用閃存flash;閃存flash分為norflash和nandflash,nandflash容量大通常作為U盤、硬盤等存儲(chǔ)工具,而配置文件的存儲(chǔ)需要使用norflash;nor flash分為串行SPI flash和并行CFI flash,SPI flash因?yàn)槭谴械?,帶寬很低,無(wú)法滿足快速配置的需求,只有高速的并行CFI flash可以滿足需求,但是這類flash價(jià)格昂貴,管腳巨多。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于FPGA的數(shù)據(jù)處理方法及裝置,能夠有效解決現(xiàn)場(chǎng)可編程門陣列FPGA加載配置文件時(shí)間過(guò)長(zhǎng)導(dǎo)致計(jì)算機(jī)無(wú)法識(shí)別FPGA內(nèi)部PCIE的問(wèn)題。
本發(fā)明中一種基于FPGA的數(shù)據(jù)處理方法包括:
接收FPGA發(fā)送的第一配置文件;
按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;
向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取;
其中N為自然數(shù)。
可選的,
將所述第一配置文件設(shè)置為第一升級(jí)配置文件和第一出廠配置文件;
將所述第二配置文件設(shè)置為第二升級(jí)配置文件和第二出廠配置文件。
可選的,
將所述非易失性存儲(chǔ)器設(shè)置為具有升級(jí)存儲(chǔ)區(qū)和出廠存儲(chǔ)區(qū);
所述升級(jí)存儲(chǔ)區(qū)用于存儲(chǔ)第一升級(jí)配置文件的子文件;
所述出廠存儲(chǔ)區(qū)用于存儲(chǔ)第一出廠配置文件的子文件。
可選的,
步驟所述向所述FPGA發(fā)送所述第二配置文件之后還包括:
判斷FPGA是否成功讀取第二升級(jí)文件;
若是,則結(jié)束加載進(jìn)程;
若否,則向所述FPGA發(fā)送所述第二出廠配置文件,控制所述FPGA進(jìn)行讀取。
可選的,
步驟所述按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中包括:
將所述第一配置文件被拆分為由字節(jié)Byte組成的文件,1個(gè)字節(jié)Byte由8個(gè)bit組成;
將所有字節(jié)Byte的bit0和bit1組合成第一子文件,存入第一非易失性存儲(chǔ)器;
將所有字節(jié)Byte的bit2和bit3組合成第二子文件,存入第二非易失性存儲(chǔ)器;
將所有字節(jié)Byte的bit4和bit5組合成第三子文件,存入第三非易失性存儲(chǔ)器;
將所有字節(jié)Byte的bit6和bit7組合成第四子文件,存入第四非易失性存儲(chǔ)器。
本發(fā)明還提供了一種基于FPGA的數(shù)據(jù)處理裝置,包括:
接收單元,用于接收FPGA發(fā)送的第一配置文件;
拆分單元,用于按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件;
存儲(chǔ)單元,用于將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
并行處理單元,用于并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
合并單元,用于將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;
發(fā)送單元,用于向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取;
其中N為自然數(shù)。
可選的,
所述裝置還包括:
第一設(shè)置單元,用于將所述第一配置文件設(shè)置為第一升級(jí)配置文件和第一出廠配置文件;
第二設(shè)置單元,用于將所述第二配置文件設(shè)置為第二升級(jí)配置文件和第二出廠配置文件。
可選的,
所述裝置還包括:
第三設(shè)置單元,用于將所述非易失性存儲(chǔ)器設(shè)置為具有升級(jí)存儲(chǔ)區(qū)和出廠存儲(chǔ)區(qū);
所述升級(jí)存儲(chǔ)區(qū)用于存儲(chǔ)第一升級(jí)配置文件的子文件;
所述出廠存儲(chǔ)區(qū)用于存儲(chǔ)第一出廠配置文件的子文件。
可選的,
所述裝置還包括:
判斷單元:
用于在所述向所述FPGA發(fā)送所述第二配置文件之后,判斷FPGA是否成功讀取第二升級(jí)文件;
第二發(fā)送單元,用于向所述FPGA發(fā)送所述第二出廠配置文件。
可選的,
所述拆分單元,用于將所述第一配置文件被拆分為由字節(jié)Byte組成的文件,1個(gè)字節(jié)Byte由8個(gè)bit組成;
所述存儲(chǔ)單元包括:
第一存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit0和bit1組合成第一子文件,存入第一非易失性存儲(chǔ)器;
第二存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit2和bit3組合成第二子文件,存入第二非易失性存儲(chǔ)器;
第三存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit4和bit5組合成第三子文件,存入第三非易失性存儲(chǔ)器;
第四存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit6和bit7組合成第四子文件,存入第四非易失性存儲(chǔ)器。
下面對(duì)本發(fā)明提供的基于FPGA的數(shù)據(jù)處理方法及裝置所帶來(lái)的核心有益效果進(jìn)行描述:
該基于FPGA的數(shù)據(jù)處理方法包括:接收FPGA發(fā)送的第一配置文件;按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取。由于將配置文件拆分后分別存儲(chǔ),從而配置時(shí)間縮短至單獨(dú)一個(gè)非易失性存儲(chǔ)器的N分之一,例如將配置文件大小設(shè)置為6MB,單個(gè)非易失性存儲(chǔ)器為串行SPI nor flash,帶寬為20MB/s,通過(guò)對(duì)四個(gè)非易失性存儲(chǔ)器并行處理,帶寬為80MB/s。在短時(shí)間內(nèi)完成加載解決現(xiàn)場(chǎng)可編程門陣列FPGA加載配置文件時(shí)間過(guò)長(zhǎng)導(dǎo)致計(jì)算機(jī)無(wú)法識(shí)別FPGA內(nèi)部PCIE的問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明中一種基于FPGA的數(shù)據(jù)處理方法第一實(shí)施例的流程圖;
圖2為本發(fā)明中一種基于FPGA的數(shù)據(jù)處理方法第二實(shí)施例的流程圖;
圖3為本發(fā)明中一種基于FPGA的數(shù)據(jù)處理裝置實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明提供了一種基于FPGA的數(shù)據(jù)處理方法及裝置,能夠有效解決現(xiàn)場(chǎng)可編程門陣列FPGA加載配置文件時(shí)間過(guò)長(zhǎng)導(dǎo)致計(jì)算機(jī)無(wú)法識(shí)別FPGA內(nèi)部PCIE的問(wèn)題。
下面請(qǐng)參閱圖1,本發(fā)明提供的一種基于FPGA的數(shù)據(jù)處理方法,包括:
101、接收FPGA發(fā)送的第一配置文件;
在本實(shí)施例中,接收FPGA發(fā)送的第一配置文件,目的是為了防止FPGA下電后配置文件丟失。該FPGA可以為帶有PCIE功能現(xiàn)場(chǎng)可編程門陣列。使用配置PCIEIP核的FPGA能夠?qū)崿F(xiàn)PCIE功能,有效減少PCB的占據(jù)面積。
需要說(shuō)明的是,由于FPGA大都基于易失性RAM結(jié)構(gòu),因此FPGA下電后配置文件容易丟失。
需要說(shuō)明的是,此類第一和第二等描述僅僅表示對(duì)對(duì)象的區(qū)分,不起到限制作用,這里僅作為對(duì)處理動(dòng)作前后對(duì)象的差異進(jìn)行區(qū)分,不對(duì)配置文件等實(shí)質(zhì)內(nèi)容構(gòu)成限定。
102、按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
在本實(shí)施例中,第一配置文件被拆分為N個(gè)第一配置文件的子文件,這里所指的子文件可以這樣定義,即所有子文件的總和能夠還原該第一配置文件。用集合的角度解釋可以認(rèn)為第一配置文件構(gòu)成所有第一配置文件的子文件的集合。前面已經(jīng)介紹過(guò)由于FPGA大都基于易失性RAM結(jié)構(gòu),F(xiàn)PGA下電后配置文件容易丟失,因此需要非易失性存儲(chǔ)器事先將配置文件存儲(chǔ)起來(lái),每次上電時(shí),將配置文件加載到FPGA中。具體拆分的規(guī)則及儲(chǔ)存規(guī)則將在后續(xù)實(shí)施例中進(jìn)行說(shuō)明。
103、并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
104、將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;
在本實(shí)施例中,N個(gè)非易失性存儲(chǔ)器中的子文件被并行處理,配置文件配置時(shí)間縮短至單獨(dú)一個(gè)非易失性存儲(chǔ)器的N分之一,N個(gè)處理子文件進(jìn)行合并后得到第二配置文件。
105、向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取。
本實(shí)施例中,首先接收FPGA發(fā)送的第一配置文件;接著按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;然后并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;再將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;最后向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取。由于將配置文件拆分后分別存儲(chǔ),從而配置時(shí)間縮短至單獨(dú)一個(gè)非易失性存儲(chǔ)器的N分之一,例如將配置文件大小設(shè)置為6MB,單個(gè)非易失性存儲(chǔ)器為串行SPI nor flash,帶寬為20MB/s,通過(guò)對(duì)四個(gè)非易失性存儲(chǔ)器并行處理,帶寬為80MB/s。在短時(shí)間內(nèi)完成加載解決現(xiàn)場(chǎng)可編程門陣列FPGA加載配置文件時(shí)間過(guò)長(zhǎng)導(dǎo)致計(jì)算機(jī)無(wú)法識(shí)別FPGA內(nèi)部PCIE的問(wèn)題。
本發(fā)明提供的一種基于FPGA的數(shù)據(jù)處理方法第一實(shí)施例的變形例,和第一實(shí)施例不同在于用第一升級(jí)配置文件替換第一配置文件。即實(shí)現(xiàn)配置文件的一個(gè)作用為觸發(fā)系統(tǒng)升級(jí)處理,從而加快系統(tǒng)升級(jí)速度。
接收FPGA發(fā)送的第一升級(jí)配置文件;
按預(yù)定規(guī)則,對(duì)所述第一升級(jí)配置文件進(jìn)行拆分,得到N個(gè)第一升級(jí)配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
將所述N個(gè)處理子文件進(jìn)行合并,得到第二升級(jí)配置文件;
向所述FPGA發(fā)送所述第二升級(jí)配置文件,控制所述FPGA進(jìn)行讀取。
本實(shí)施例為本發(fā)明的一個(gè)實(shí)際應(yīng)用。
本發(fā)明提供的一種基于FPGA的數(shù)據(jù)處理方法第一實(shí)施例的另一個(gè)變形例,和第一實(shí)施例不同在于用第一出廠配置文件替換第一配置文件。即實(shí)現(xiàn)配置文件的一個(gè)作用為觸發(fā)系統(tǒng)出廠配置處理,從而加快系統(tǒng)恢復(fù)出廠設(shè)置速度。
接收FPGA發(fā)送的第一出廠配置文件;
按預(yù)定規(guī)則,對(duì)所述第一出廠配置文件進(jìn)行拆分,得到N個(gè)第一出廠配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
將所述N個(gè)處理子文件進(jìn)行合并,得到第二出廠配置文件;
向所述FPGA發(fā)送所述第二出廠配置文件,控制所述FPGA進(jìn)行讀取。
本實(shí)施例為本發(fā)明的另一個(gè)實(shí)際應(yīng)用。
本發(fā)明提供的一種基于FPGA的數(shù)據(jù)處理方法第二實(shí)施例包括:
201、接收FPGA發(fā)送的第一升級(jí)配置文件和第一出廠配置文件;
在本實(shí)施例中,接收FPGA發(fā)送第一升級(jí)配置文件和第一出廠配置文件的動(dòng)作不限定在同一時(shí)間內(nèi)完成,可以先接收第一出廠配置文件,也可以先接收第一升級(jí)配置文件。
202、按預(yù)定規(guī)則,對(duì)所述第一升級(jí)配置文件進(jìn)行拆分,得到N個(gè)第一升級(jí)配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器升級(jí)存儲(chǔ)區(qū)中;對(duì)所述第一出廠配置文件進(jìn)行拆分,得到N個(gè)第一出廠配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器出廠存儲(chǔ)區(qū)中;
203、并行處理N個(gè)非易失性存儲(chǔ)器升級(jí)存儲(chǔ)區(qū)中的子文件,得到N個(gè)處理子文件;將所述N個(gè)處理子文件進(jìn)行合并,得到第二升級(jí)配置文件;并行處理N個(gè)非易失性存儲(chǔ)器出廠存儲(chǔ)區(qū)中的子文件,得到N個(gè)處理子文件;將所述N個(gè)處理子文件進(jìn)行合并,得到第二出廠配置文件;
204、向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀??;
205、判斷FPGA是否成功讀取第二升級(jí)文件;
若是,則結(jié)束加載進(jìn)程;若否,則進(jìn)行步驟206;
206、向所述FPGA發(fā)送所述第二出廠配置文件,控制所述FPGA進(jìn)行讀取。
需要說(shuō)明的是,步驟“并行處理N個(gè)非易失性存儲(chǔ)器出廠存儲(chǔ)區(qū)中的子文件,得到N個(gè)處理子文件;將所述N個(gè)處理子文件進(jìn)行合并,得到第二出廠配置文件;”也可以在步驟205之后、步驟206之前。
在實(shí)際應(yīng)用中,出廠配置文件可以在出廠時(shí)通過(guò)編程器固化進(jìn)非易失性存儲(chǔ)器的出廠存儲(chǔ)區(qū),這樣可靠性更好;只有升級(jí)配置文件才會(huì)按以上方法存入非易失性存儲(chǔ)器,受外部干擾可靠性較差,所以才會(huì)有當(dāng)升級(jí)配置文件加載失敗時(shí)會(huì)切換到出廠配置文件。
本實(shí)施例中,非易失性存儲(chǔ)器被劃分為兩個(gè)區(qū),所述升級(jí)存儲(chǔ)區(qū)用于存儲(chǔ)第一升級(jí)配置文件的子文件;出廠存儲(chǔ)區(qū)用于存儲(chǔ)第一出廠配置文件的子文件。當(dāng)發(fā)生FPGA未成功加載升級(jí)配置文件的情況時(shí),可以通過(guò)加載出廠配置文件來(lái)避免上電后首先讀取升級(jí)區(qū)域的配置文件對(duì)FPGA進(jìn)行加載,然后判斷是否加載成功,如果加載失敗則重新讀取出廠區(qū)域的配置文件對(duì)FPGA進(jìn)行加載,也就是說(shuō),即使升級(jí)區(qū)域的配置文件異常導(dǎo)致加載失敗,依然可以從出廠區(qū)域啟動(dòng)并且再次進(jìn)行升級(jí),防止設(shè)備產(chǎn)生故障。升級(jí)容錯(cuò)功能解決了當(dāng)升級(jí)過(guò)程中出現(xiàn)異常導(dǎo)致系統(tǒng)無(wú)法工作而需要返廠維修的問(wèn)題。
下面以一個(gè)前述實(shí)施例中的拆分實(shí)例進(jìn)行說(shuō)明:將所述第一配置文件被拆分為由字節(jié)Byte組成的文件,1個(gè)字節(jié)Byte由8個(gè)bit組成;
將所有字節(jié)Byte的bit0和bit1組合成第一子文件,存入第一非易失性存儲(chǔ)器;
將所有字節(jié)Byte的bit2和bit3組合成第二子文件,存入第二非易失性存儲(chǔ)器;
將所有字節(jié)Byte的bit4和bit5組合成第三子文件,存入第三非易失性存儲(chǔ)器;
將所有字節(jié)Byte的bit6和bit7組合成第四子文件,存入第四非易失性存儲(chǔ)器。
將配置文件大小設(shè)置為6MB,單個(gè)非易失性存儲(chǔ)器為串行SPI nor flash,帶寬為20MB/s,通過(guò)對(duì)四個(gè)非易失性存儲(chǔ)器并行處理,帶寬為80MB/s。在短時(shí)間內(nèi)完成加載解決現(xiàn)場(chǎng)可編程門陣列FPGA加載配置文件時(shí)間過(guò)長(zhǎng)導(dǎo)致計(jì)算機(jī)無(wú)法識(shí)別FPGA內(nèi)部PCIE的問(wèn)題。
下面請(qǐng)參閱圖3,本發(fā)明還提供了一種基于FPGA的數(shù)據(jù)處理裝置實(shí)施例包括:
接收單元301,用于接收FPGA發(fā)送的第一配置文件;
拆分單元302,用于按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件;
存儲(chǔ)單元303,用于將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
并行處理單元304,用于并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
合并單元305,用于將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;
第一發(fā)送單元306,用于向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取。
下面以實(shí)際應(yīng)用中的例子對(duì)上述單元之間的通信關(guān)系進(jìn)行說(shuō)明:
接收單元301接收FPGA發(fā)送的第一配置文件;
在本實(shí)施例中,接收單元301接收FPGA發(fā)送的第一配置文件,目的是為了防止FPGA下電后配置文件丟失。該FPGA可以為帶有PCIE功能現(xiàn)場(chǎng)可編程門陣列。使用配置PCIEIP核的FPGA能夠?qū)崿F(xiàn)PCIE功能,有效減少PCB的占據(jù)面積。
需要說(shuō)明的是,由于FPGA大都基于易失性RAM結(jié)構(gòu),因此FPGA下電后配置文件容易丟失。
需要說(shuō)明的是,此類第一和第二等描述僅僅表示對(duì)對(duì)象的區(qū)分,不起到限制作用,這里僅作為對(duì)處理動(dòng)作前后對(duì)象的差異進(jìn)行區(qū)分,不對(duì)配置文件等實(shí)質(zhì)內(nèi)容構(gòu)成限定。
拆分單元302按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并由存儲(chǔ)單元303將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;
在本實(shí)施例中,第一配置文件被拆分為N個(gè)第一配置文件的子文件,這里所指的子文件可以這樣定義,即所有子文件的總和能夠還原該第一配置文件。用集合的角度解釋可以認(rèn)為第一配置文件構(gòu)成所有第一配置文件的子文件的集合。前面已經(jīng)介紹過(guò)由于FPGA大都基于易失性RAM結(jié)構(gòu),F(xiàn)PGA下電后配置文件容易丟失,因此需要非易失性存儲(chǔ)器事先將配置文件存儲(chǔ)起來(lái),每次上電時(shí),將配置文件加載到FPGA中。具體拆分的規(guī)則及儲(chǔ)存規(guī)則將在后續(xù)實(shí)施例中進(jìn)行說(shuō)明。
并行處理單元304并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;
合并單元305將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;
在本實(shí)施例中,N個(gè)非易失性存儲(chǔ)器中的子文件被并行處理,配置文件配置時(shí)間縮短至單獨(dú)一個(gè)非易失性存儲(chǔ)器的N分之一,N個(gè)處理子文件進(jìn)行合并后得到第二配置文件。
第一發(fā)送單元306向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取。
本實(shí)施例中,首先接收FPGA發(fā)送的第一配置文件;接著按預(yù)定規(guī)則,對(duì)所述第一配置文件進(jìn)行拆分,得到N個(gè)第一配置文件的子文件,并將N個(gè)子文件存入對(duì)應(yīng)的N個(gè)非易失性存儲(chǔ)器中;然后并行處理N個(gè)非易失性存儲(chǔ)器中的子文件,得到N個(gè)處理子文件;再將所述N個(gè)處理子文件進(jìn)行合并,得到第二配置文件;最后向所述FPGA發(fā)送所述第二配置文件,控制所述FPGA進(jìn)行讀取。由于將配置文件拆分后分別存儲(chǔ),從而配置時(shí)間縮短至單獨(dú)一個(gè)非易失性存儲(chǔ)器的N分之一,例如將配置文件大小設(shè)置為6MB,單個(gè)非易失性存儲(chǔ)器為串行SPI nor flash,帶寬為20MB/s,通過(guò)對(duì)四個(gè)非易失性存儲(chǔ)器并行處理,帶寬為80MB/s。在短時(shí)間內(nèi)完成加載解決現(xiàn)場(chǎng)可編程門陣列FPGA加載配置文件時(shí)間過(guò)長(zhǎng)導(dǎo)致計(jì)算機(jī)無(wú)法識(shí)別FPGA內(nèi)部PCIE的問(wèn)題
需要說(shuō)明的是,所述裝置還包括:
第一設(shè)置單元,用于將所述第一配置文件設(shè)置為第一升級(jí)配置文件和第一出廠配置文件;
第二設(shè)置單元,用于將所述第二配置文件設(shè)置為第二升級(jí)配置文件和第二出廠配置文件。
所述裝置還包括:
第三設(shè)置單元,用于將所述非易失性存儲(chǔ)器設(shè)置為具有升級(jí)存儲(chǔ)區(qū)和出廠存儲(chǔ)區(qū)。
所述裝置還包括:
判斷單元307用于在所述向所述FPGA發(fā)送所述第二配置文件之后,判斷FPGA是否成功讀取第二升級(jí)文件;
第二發(fā)送單元308,用于向所述FPGA發(fā)送所述第二出廠配置文件。
所述拆分單元,用于將所述第一配置文件被拆分為由字節(jié)Byte組成的文件,1個(gè)字節(jié)Byte由8個(gè)bit組成;
所述存儲(chǔ)單元包括:
第一存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit0和bit1組合成第一子文件,存入第一非易失性存儲(chǔ)器;
第二存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit2和bit3組合成第二子文件,存入第二非易失性存儲(chǔ)器;
第三存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit4和bit5組合成第三子文件,存入第三非易失性存儲(chǔ)器;
第四存儲(chǔ)子單元,用于將所有字節(jié)Byte的bit6和bit7組合成第四子文件,存入第四非易失性存儲(chǔ)器。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不處理。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccess Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。