本發(fā)明涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,具體而言,涉及一種FPGA配置文件自動(dòng)加載系統(tǒng)及方法。
背景技術(shù):
現(xiàn)場可編輯門陣列(Field-Programmable Gate Array,F(xiàn)PGA)可根據(jù)用戶需求靈活地對(duì)其編程以實(shí)現(xiàn)用戶功能,如協(xié)助中央處理器(Center Process Unit,CPU)完成系統(tǒng)內(nèi)部單元管理和控制、管理中央處理器的啟動(dòng)以及監(jiān)控中央處理器的運(yùn)行狀態(tài)等,由于具有豐富的邏輯資源與I/O資源且開發(fā)周期短、設(shè)計(jì)成本低、易于產(chǎn)品更新?lián)Q代等優(yōu)點(diǎn),在通信產(chǎn)品領(lǐng)域得到了廣泛的應(yīng)用。
由于FPGA芯片是基于掉電易失性存儲(chǔ)器而設(shè)計(jì),所以需要通過非易失性存儲(chǔ)器存儲(chǔ)FPGA配置文件,在系統(tǒng)上電時(shí)將FPGA配置文件加載到FPGA芯片中以便進(jìn)行正常工作,對(duì)FPGA配置文件進(jìn)行更新則是通過更新非易失性存儲(chǔ)器中存儲(chǔ)的FPGA配置文件,故FPGA配置文件是否便于自動(dòng)加載和更新成為通信產(chǎn)品易維護(hù)性、易擴(kuò)展性等的重要參考標(biāo)準(zhǔn)。
現(xiàn)有的解決方案中,F(xiàn)PGA配置文件的自動(dòng)加載和更新需要通過中央處理器聯(lián)合復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)或者微處理器(Microcontroller Unit,MCU)來實(shí)現(xiàn),系統(tǒng)架構(gòu)復(fù)雜且成本較高;現(xiàn)有的解決方案中,如果FPGA配置文件失效會(huì)導(dǎo)致系統(tǒng)不能正常加載,并且沒有FPGA配置文件的自動(dòng)更新功能,不便于FPGA配置文件的在線升級(jí)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種FPGA配置文件自動(dòng)加載系統(tǒng)及方法,以解決現(xiàn)有技術(shù)中FPGA配置文件自動(dòng)加載系統(tǒng)架構(gòu)復(fù)雜且FPGA配置文件加載可靠性不高的問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例采用的技術(shù)方案如下:
本發(fā)明實(shí)施例提出一種FPGA配置文件自動(dòng)加載系統(tǒng),所述FPGA配置文件自動(dòng)加載系統(tǒng)包括:FPGA芯片、復(fù)位與解復(fù)位模塊及主從配置文件切換模塊;所述復(fù)位與解復(fù)位模塊包括第一延時(shí)電路、開關(guān)電路、第一復(fù)位芯片及第二復(fù)位芯片,所述第一延時(shí)電路和所述第二復(fù)位芯片均與所述FPGA芯片電連接,所述第一延時(shí)電路、開關(guān)電路、第一復(fù)位芯片、第二復(fù)位芯片依次電連接;所述主從配置文件切換模塊包括第二延時(shí)電路、選通電路、主flash模塊和從flash模塊,所述FPGA芯片通過所述選通電路與所述主flash模塊和從flash模塊電連接,所述第二延時(shí)電路與所述FPGA芯片及所述選通電路均電連接,所述主flash模塊和從flash模塊均存儲(chǔ)有FPGA配置文件;所述FPGA芯片用于控制所述第一延時(shí)電路輸出第一延時(shí)信號(hào),所述開關(guān)電路用于根據(jù)所述第一延時(shí)信號(hào)向所述第一復(fù)位芯片輸出控制信號(hào),所述第一復(fù)位芯片用于在被所述控制信號(hào)觸發(fā)時(shí)向所述第二復(fù)位芯片輸出第一復(fù)位信號(hào),所述第二復(fù)位芯片用于在上電時(shí)或收到所述第一復(fù)位信號(hào)時(shí)向所述FPGA芯片輸出配置信號(hào);所述FPGA芯片還用于控制所述第二延時(shí)電路輸出第二延時(shí)信號(hào),所述選通電路用于依據(jù)所述第二延時(shí)信號(hào)選通所述主flash模塊或從flash模塊,所述FPGA芯片用于在所述配置信號(hào)的控制下從所述主flash模塊或從flash模塊加載所述FPGA配置文件。
本發(fā)明實(shí)施例還提出一種FPGA配置文件自動(dòng)加載方法,應(yīng)用于FPGA配置文件自動(dòng)加載系統(tǒng),所述FPGA配置文件自動(dòng)加載系統(tǒng)包括FPGA芯片、復(fù)位與解復(fù)位模塊及主從配置文件切換模塊;所述復(fù)位與解復(fù)位模塊包括第一延時(shí)電路、開關(guān)電路、第一復(fù)位芯片及第二復(fù)位芯片,所述第一延時(shí)電路和所述第二復(fù)位芯片均與所述FPGA芯片電連接,所述第一延時(shí)電路、開關(guān)電路、第一復(fù)位芯片和所述第二復(fù)位芯片依次電連接;所述主從配置文件切換模塊包括第二延時(shí)電路、選通電路、主flash模塊和從flash模塊,所述FPGA芯片通過所述選通電路與所述主flash模塊和從flash模塊電連接,所述第二延時(shí)電路與所述FPGA芯片及所述選通電路均電連接,所述主flash模塊和從flash模塊均存儲(chǔ)有FPGA配置文件;所述FPGA配置文件自動(dòng)加載方法包括:所述FPGA芯片控制所述第一延時(shí)電路輸出第一延時(shí)信號(hào);所述開關(guān)電路根據(jù)所述第一延時(shí)信號(hào)向所述第一復(fù)位芯片輸出控制信號(hào),以不觸發(fā)所述第一復(fù)位芯片輸出第一復(fù)位信號(hào);所述第二復(fù)位芯片上電時(shí)輸出配置信號(hào);所述FPGA芯片控制所述第二延時(shí)電路輸出第二延時(shí)信號(hào);所述選通電路依據(jù)所述第二延時(shí)信號(hào)選通所述主flash模塊;所述FPGA芯片在所述配置信號(hào)的控制下從所述主flash模塊加載所述FPGA配置文件;若所述FPGA芯片從所述主flash模塊加載所述FPGA配置文件失敗,則所述開關(guān)電路根據(jù)所述第一延時(shí)電路經(jīng)預(yù)定時(shí)間延時(shí)后的第一延時(shí)信號(hào)向所述第一復(fù)位芯片輸出控制信號(hào),以觸發(fā)所述第一復(fù)位芯片輸出第一復(fù)位信號(hào);所述第二復(fù)位芯片收到所述第一復(fù)位信號(hào)時(shí)向所述FPGA芯片輸出配置信號(hào);所述選通電路依據(jù)所述第二延時(shí)電路經(jīng)預(yù)定時(shí)間延時(shí)后的第二延時(shí)信號(hào)選通所述從flash模塊;所述FPGA芯片在所述配置信號(hào)的控制下從所述從flash模塊加載所述FPGA配置文件。
相對(duì)現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明提供的一種FPGA配置文件自動(dòng)加載系統(tǒng)及方法,F(xiàn)PGA芯片在第二復(fù)位芯片輸出的配置信號(hào)的控制下從主flash模塊或者從flash模塊加載存儲(chǔ)的FPGA配置文件,當(dāng)所述FPGA芯片從所述主flash模塊加載所述FPGA配置文件失敗時(shí),可從所述從flash模塊加載存儲(chǔ)的FPGA配置文件。該FPGA配置文件自動(dòng)加載系統(tǒng)的架構(gòu)簡單,通過此方式加載FPGA配置文件具有更高的可靠性和易操作性。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明第一實(shí)施例提供的FPGA配置文件自動(dòng)加載系統(tǒng)的結(jié)構(gòu)框圖。
圖2示出了本發(fā)明第一實(shí)施例提供的FPGA芯片與復(fù)位與解復(fù)位模塊的電路連接示意圖。
圖3示出了本發(fā)明第一實(shí)施例提供的FPGA芯片與主從配置文件模塊的電路連接示意圖。
圖4示出了本發(fā)明第一實(shí)施例提供的FPGA配置文件自動(dòng)加載方法的流程示意圖。
圖5示出了本發(fā)明第二實(shí)施例提供的FPGA配置文件更新及重新加載方法的流程示意圖。
圖標(biāo):100-FPGA配置文件自動(dòng)加載系統(tǒng);110-中央處理器;120-FPGA芯片;130-復(fù)位與解復(fù)位模塊;140-主從配置文件切換模塊;132-第一延時(shí)電路;134-開關(guān)電路;136-第一復(fù)位芯片;138-第二復(fù)位芯片;142-第二延時(shí)電路;144-選通電路;146-主flash模塊;148-從flash模塊;1441-反向電路;1443-總線切換開關(guān)。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。同時(shí),在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于區(qū)分描述,而不能理解為指示或暗示相對(duì)重要性。
第一實(shí)施例
圖1示出了本發(fā)明第一實(shí)施例提供的FPGA配置文件自動(dòng)加載系統(tǒng)100的結(jié)構(gòu)框圖。該FPGA配置文件自動(dòng)加載系統(tǒng)100包括中央處理器110、FPGA芯片120、復(fù)位與解復(fù)位模塊130及主從配置文件切換模塊140,該中央處理器110、復(fù)位與解復(fù)位模塊130及主從配置文件切換模塊140均與該FPGA芯片120電連接。
該中央處理器110可用于向該FPGA芯片120發(fā)送喂狗信號(hào)WDI以啟動(dòng)該FPGA配置文件自動(dòng)加載系統(tǒng)100,該中央處理器110還可用于更新FPGA配置文件時(shí)通過LOCAl BUS總線將新版本的FPGA配置文件傳送至該FPGA芯片120中。在本實(shí)施例中,當(dāng)該中央處理器110及時(shí)給該FPGA芯片120發(fā)送喂狗信號(hào)WDI,表明該中央處理器110正常運(yùn)行。
該FPGA芯片120可用于加載FPGA配置文件、將新版本的FPGA配置文件更新至主從配置文件切換模塊140中以及當(dāng)FPGA配置文件加載成功時(shí)向中央處理器110輸出第二復(fù)位信號(hào)CPU_RST以解復(fù)位該中央處理器110;該FPGA芯片120還用于在中央處理器110向該FPGA芯片120發(fā)送喂狗信號(hào)WDI超時(shí)時(shí),向中央處理器110輸出第二復(fù)位信號(hào)CPU_RST以復(fù)位該中央處理器110,保證該中央處理器110出現(xiàn)故障時(shí)能及時(shí)恢復(fù)正常。
該復(fù)位與解復(fù)位模塊130用于控制所述FPGA芯片120加載FPGA配置文件,其包括第一延時(shí)電路132、開關(guān)電路134、第一復(fù)位芯片136及第二復(fù)位芯片138,該第一延時(shí)電路132、第二復(fù)位芯片138均與該FPGA芯片120電連接,該第一延時(shí)電路132、開關(guān)電路134、第一復(fù)位芯片136、第二復(fù)位芯片138依次電連接。該第一延時(shí)電路132用于依據(jù)FPGA芯片120輸出的第一使能信號(hào)RST_EN輸出第一延時(shí)信號(hào)DELAY1;該開關(guān)電路134用于依據(jù)該第一延時(shí)信號(hào)DELAY1向該第一復(fù)位芯片136輸出控制信號(hào)PWR;該第一復(fù)位芯片136用于在被該控制信號(hào)PWR觸發(fā)時(shí)向該第二復(fù)位芯片138輸出第一復(fù)位信號(hào)MANUAL_RST;該第二復(fù)位芯片138用于在該FPGA配置文件自動(dòng)加載系統(tǒng)100上電或者收到該第一復(fù)位信號(hào)MANUAL_RST時(shí)向該FPGA芯片120輸出配置信號(hào)nCONFIG。
該主從配置文件切換模塊140用于給該FPGA芯片120加載或更新FPGA配置文件時(shí)提供加載或更新通道,其包括第二延時(shí)電路142、選通電路144、主flash模塊146和從flash模塊148,該第二延時(shí)電路142與該FPGA芯片120、選通電路144均電連接,該主flash模塊146和從flash模塊148均存儲(chǔ)有FPGA配置文件。該選通電路144用于選通該主flash模塊146或從flash模塊148以使該FPGA芯片120加載或者更新FPGA配置文件,該選通電路144包括反向電路1441及總線切換開關(guān)1443,該反向電路1441電連接于該第二延時(shí)電路142和該總線切換開關(guān)1443之間,該總線切換開關(guān)1443同時(shí)與該主flash模塊146、從flash模塊148、FPGA芯片120電連接。該第二延時(shí)電路142用于上電加載該FPGA配置文件時(shí)依據(jù)該FPGA芯片120輸出的第二使能信號(hào)BOOT_EN1輸出第二延時(shí)信號(hào)DELAY2,該第二延時(shí)電路142還用于更新FPGA配置文件時(shí)依據(jù)該FPGA芯片120輸出的第三使能信號(hào)BOOT_EN2輸出第三延時(shí)信號(hào)DELAY3。該反向電路1441用于加載FPGA配置文件時(shí)依據(jù)第二延時(shí)信號(hào)DELAY2輸出不同的選通信號(hào)SEL以及更新FPGA配置文件時(shí)依據(jù)第三延時(shí)信號(hào)DELAY3輸出不同的選通信號(hào)SEL;該總線切換開關(guān)1443用于依據(jù)該不同的選通信號(hào)SEL來選通該主flash模塊146或從flash模塊148。
在本實(shí)施例中,當(dāng)該第二復(fù)位芯片138上電向該FPGA芯片120輸出配置信號(hào)nCONFIG且該總線切換開關(guān)1443選通該主flash模塊146時(shí),該FPGA芯片120從主flash模塊146中加載存儲(chǔ)的FPGA配置文件;當(dāng)該第二復(fù)位芯片138收到第一復(fù)位信號(hào)MANUAL_RST向該FPGA芯片120輸出配置信號(hào)nCONFIG且該總線切換開關(guān)1443選通從flash模塊148時(shí),該FPGA芯片120從該從flash模塊148中加載存儲(chǔ)的FPGA配置文件。
圖2示出了本發(fā)明第一實(shí)施例提供的FPGA芯片120與復(fù)位與解復(fù)位模塊130的電路連接示意圖,該第一延時(shí)電路132包括第一電容C1和第一電阻R1,該開關(guān)電路134包括第一場效應(yīng)管Q1和第二場效應(yīng)管Q2,其中,該第一場效應(yīng)管Q1為N溝道場效應(yīng)管,該第二場效應(yīng)管Q2為P溝道場效應(yīng)管。該第一電容C1和第一電阻R1串聯(lián)于電源GP3V3和地之間,該FPGA芯片120的第一輸入輸出端口IO1電連接于該第一電容C1和第一電阻R1之間;該第一場效應(yīng)管Q1的柵極電連接于該第一電容C1和第一電阻R1之間,該第一場效應(yīng)管Q1的源極接地,該第一場效應(yīng)管Q1的漏極與該第二場效應(yīng)管Q2的柵極電連接,該第一場效應(yīng)管Q1的漏極通過第一上拉電阻R2與該電源GP3V3電連接,該第二場效應(yīng)管Q2的源極與該電源GP3V3電連接,該第二場效應(yīng)管Q2的漏極與該第一復(fù)位芯片136的電源輸入端VCC電連接,并且該第二場效應(yīng)管Q2的漏極通過第一下拉電阻R3接地;該第一復(fù)位芯片136的第一復(fù)位端RESET1與該第二復(fù)位芯片138的復(fù)位信號(hào)輸入端#MR電連接,該第一復(fù)位芯片136的第一復(fù)位端RESET1通過第四上拉電阻R4與電源GP3V3電連接,該第二復(fù)位芯片138的第二復(fù)位端#RESET與該FPGA芯片120的配置控制輸入端NCONFIG電連接,該第二復(fù)位芯片138的第二復(fù)位端#RESET通過第二下拉電阻R5接地。
圖3示出了本發(fā)明第一實(shí)施例提供的FPGA芯片120與主從配置文件切換模塊140的電路連接示意圖,該第二延時(shí)電路142包括第二電容C2和第二電阻R6,該反向電路1441包括第三場效應(yīng)管Q3和第四場效應(yīng)管Q4,其中,該第三場效應(yīng)管Q3和第四場效應(yīng)管Q4均為N溝道場效應(yīng)管。該第二電阻R6和該第二電容C2串聯(lián)于電源GP3V3和地之間,該FPGA芯片120的第二輸入輸出端口IO2電連接于該第二電容C2和第二電阻R6之間,該第三場效應(yīng)管Q3的柵極電連接于該第二電容C2和第二電阻R6之間,該第三場效應(yīng)管Q3的源極接地,該第三場效應(yīng)管Q3的漏極與該第四場效應(yīng)管Q4的柵極電連接,該第三場效應(yīng)管Q3的漏極通過第二上拉電阻R7與該電源GP3V3電連接,該第四場效應(yīng)管Q4的漏極通過第三上拉電阻R8與該電源GP3V3電連接,該第四場效應(yīng)管Q4的源極接地;該第四場效應(yīng)管Q4的柵極和漏極均與該總線切換開關(guān)1443電連接,該反向電路1441輸出的選通信號(hào)SEL包括第一選通信號(hào)SEL1和第二選通信號(hào)SEL2,其中,該第四場效應(yīng)管Q4的柵極輸出的信號(hào)為第一選通信號(hào)SEL1,該第四場效應(yīng)管Q4的漏極輸出的信號(hào)為第二選通信號(hào)SEL2;該總線切換開關(guān)1443同時(shí)電連接于該主flash模塊146和從flash模塊148,并且該總線切換開關(guān)1443還與該FPGA芯片120的第三輸入輸出端口IO3、一組SPI接口(SPI_CS、SPI_CLK、SPI_MISO、SPI_MOSI)電連接以建立SPI通道實(shí)現(xiàn)FPGA配置文件的加載及更新。
在本實(shí)施例中,該FPGA配置文件自動(dòng)加載系統(tǒng)100上電時(shí),該FPGA芯片120由于未加載FPGA配置文件,第一輸入輸出端口IO1、第二輸入輸出端口IO2管腳屬性均為高阻,第一使能信號(hào)RST_EN起始電平為低電平,第二使能信號(hào)BOOT_EN1起始電平為低電平,第一延時(shí)電路132輸出的第一延時(shí)信號(hào)DELAY1為低電平,此時(shí)第一場效應(yīng)管Q1和第二場效應(yīng)管Q2均為截止?fàn)顟B(tài),故第一復(fù)位芯片136沒有被提供電源,由于第四上拉電阻R4的作用使第一復(fù)位信號(hào)MANUAL_RST為高電平,第二復(fù)位芯片138未被觸發(fā)。第二延時(shí)電路142輸出的第二延時(shí)信號(hào)DELAY2為低電平,此時(shí)第三場效應(yīng)管Q3為截止?fàn)顟B(tài),第四場效應(yīng)管Q4為導(dǎo)通狀態(tài),第一選通信號(hào)SEL1為高電平,第二選通信號(hào)SEL2為低電平,該總線切換開關(guān)1443選通主flash模塊146;第二復(fù)位芯片138上電時(shí)輸出T3秒低電平的配置信號(hào)nCONFIG拉低該FPGA芯片120的NCONFIG管腳對(duì)該FPGA芯片120進(jìn)行復(fù)位,T3秒以后該FPGA芯片120被解復(fù)位,該FPGA芯片120從選通的主flash模塊146加載FPGA配置文件,該FPGA芯片120加載FPGA配置文件的時(shí)間一般在T4秒以內(nèi)。在本實(shí)施例中,該第一使能信號(hào)RST_EN通過第一延時(shí)電路132的最大延遲時(shí)間可為T1秒,T1=R1*C1*ln[(V11-V10)/(V11-V1T)],其中,V11為第一電容C1可以充電的最終電壓,V10為第一電容C1的起始電壓,V1T為T1時(shí)刻第一電容C1的充電電壓;該第二使能信號(hào)BOOT_EN1通過第二延時(shí)電路142的最大延遲時(shí)間可為T2秒,T2=R2*C2*ln[(V21-V20)/(V21-V2T)],其中,V21為第二電容C2可以充電的最終電壓,V20為第二電容C2的起始電壓,V2T為T2時(shí)刻第二電容C2的充電電壓。需要說明的是,在本實(shí)施例中,T1≥T3+T4,T1=T2,該復(fù)位與解復(fù)位模塊130通過延遲復(fù)位保證了該FPGA配置文件自動(dòng)加載系統(tǒng)100的所有電源上電完成后經(jīng)過T3秒再加載FPGA配置文件。
在上電后T1秒內(nèi),如果該FPGA芯片120加載FPGA配置文件失敗,第二延時(shí)電路142計(jì)時(shí)到T2秒后,控制第二使能信號(hào)BOOT_EN1為高電平,則第二延時(shí)電路142輸出的經(jīng)T2秒延時(shí)后的第二延時(shí)信號(hào)DELAY2為高電平,此時(shí)第三場效應(yīng)管Q3為導(dǎo)通狀態(tài),第四場效應(yīng)管Q4為截止?fàn)顟B(tài),第一選通信號(hào)SEL1為低電平,第二選通信號(hào)SEL2為高電平,該總線切換開關(guān)1443選通從flash模塊148。該第一延時(shí)電路132計(jì)時(shí)到T1秒后控制第一使能信號(hào)RST_EN為高電平,第一延時(shí)電路132輸出的經(jīng)T1秒延時(shí)后的第一延時(shí)信號(hào)DELAY1為高電平,此時(shí)第一場效應(yīng)管Q1和第二場效應(yīng)管Q2均為導(dǎo)通狀態(tài),故第一復(fù)位芯片136被提供電源并輸出第一復(fù)位信號(hào)MANUAL_RST,該第一復(fù)位信號(hào)MANUAL_RST為低電平,用于觸發(fā)該第二復(fù)位芯片138向該FPGA芯片120輸出低電平的配置信號(hào)nCONFIG,以控制該FPGA芯片120從選通的從flash模塊148重新加載FPGA配置文件;當(dāng)該FPGA芯片120加載FPGA配置文件成功時(shí),該FPGA配置文件通過控制第一使能信號(hào)RST_EN為低電平,進(jìn)而保證該第一復(fù)位芯片136不被供電。
當(dāng)進(jìn)行FPGA配置文件的更新時(shí),如果更新主flash模塊146存儲(chǔ)的FPGA配置文件,通過FPGA芯片120控制第三使能信號(hào)BOOT_EN2為低電平,進(jìn)而選通主flash模塊146將從中央處理器110送入的新版本FPGA配置文件更新至該主flash模塊146中;如果更新從flash模塊148存儲(chǔ)的FPGA配置文件,通過該FPGA芯片120控制第三使能信號(hào)BOOT_EN2為高電平,進(jìn)而選通從flash模塊148將從中央處理器110送入的新版本FPGA配置文件更新至該從flash模塊148;當(dāng)完成FPGA配置文件的更新時(shí),中央處理器110通過控制該FPGA芯片120以使該第一使能信號(hào)RST_EN為高電平,此時(shí)第一復(fù)位芯片136被提供電源向第二復(fù)位芯片138輸出T5秒低電平的第一復(fù)位信號(hào)MANUAL_RST,該第二復(fù)位芯片138依據(jù)該第一復(fù)位信號(hào)MANUAL_RST向該FPGA芯片120輸出配置信號(hào)nCONFIG,該配置信號(hào)nCONFIG控制該FPGA芯片120重新加載更新過的FPGA配置文件,實(shí)現(xiàn)了在非斷電情況下在線更新FPGA配置文件。
需要說明的是,在本實(shí)施例中,T3由第二復(fù)位芯片138的參數(shù)決定,通常為幾百毫秒級(jí);T4為該FPGA芯片120加載FPGA配置文件的整個(gè)過程需要的時(shí)間,通常為秒級(jí);T5由第一復(fù)位芯片136的參數(shù)決定,通常為幾百毫秒級(jí)。
圖4示出了本發(fā)明第一實(shí)施例提供的FPGA配置文件自動(dòng)加載方法的流程示意圖,下面將對(duì)圖4所示的具體流程進(jìn)行詳細(xì)闡述。
步驟S401,F(xiàn)PGA芯片120控制第一延時(shí)電路132輸出第一延時(shí)信號(hào)DELAY1。
在本實(shí)施例中,當(dāng)該FPGA配置文件自動(dòng)加載系統(tǒng)100上電時(shí),該FPGA芯片120向該第一延時(shí)電路132輸出第一使能信號(hào)RST_EN,該第一使能信號(hào)RST_EN的起始電平為低電平,該第一延時(shí)電路132依據(jù)該第一使能信號(hào)RST_EN輸出的第一延時(shí)信號(hào)DELAY1為低電平。
步驟S402,該開關(guān)電路134根據(jù)該第一延時(shí)信號(hào)DELAY1向該第一復(fù)位芯片136輸出控制信號(hào)PWR,以不觸發(fā)該第一復(fù)位芯片136輸出第一復(fù)位信號(hào)MANUAL_RST。
在本實(shí)施例中,由于第一延時(shí)信號(hào)DELAY1為低電平,開關(guān)電路134依據(jù)該第一延時(shí)信號(hào)DELAY1輸出的控制信號(hào)PWR為低電平,該低電平不能觸發(fā)該第一復(fù)位芯片136,該第一復(fù)位芯片136沒有被提供電源。
步驟S403,該第二復(fù)位芯片138上電時(shí)輸出配置信號(hào)nCONFIG。
在本實(shí)施例中,第一復(fù)位芯片136因沒有被提供電源,未向該第二復(fù)位芯片138輸出第一復(fù)位信號(hào)MANUAL_RST,第二復(fù)位芯片138由于上電向該FPGA芯片120輸出了配置信號(hào)nCONFIG。
步驟S404,該FPGA芯片120控制第二延時(shí)電路142輸出第二延時(shí)信號(hào)DELAY2。
在本實(shí)施例中,當(dāng)該FPGA配置文件自動(dòng)加載系統(tǒng)100上電時(shí),該FPGA芯片120向該第二延時(shí)電路142輸出第二使能信號(hào)BOOT_EN1,該第二使能信號(hào)BOOT_EN1的起始電平為低電平,該第二延時(shí)電路142依據(jù)該第二使能信號(hào)BOOT_EN1輸出的第二延時(shí)信號(hào)DELAY2為低電平。
步驟S405,選通電路144依據(jù)該第二延時(shí)信號(hào)DELAY2選通主flash模塊146。
在本實(shí)施例中,由于第二延時(shí)信號(hào)DELAY2為低電平,反向電路1441依據(jù)該第二延時(shí)信號(hào)DELAY2輸出的第一選通信號(hào)SEL1為高電平,第二選通信號(hào)SEL2為低電平,故該總線切換開關(guān)1443選通主flash模塊146。
步驟S406,該FPGA芯片120在該配置信號(hào)nCONFIG的控制下從該主flash模塊146加載FPGA配置文件。
在本實(shí)施例中,該配置信號(hào)nCONFIG為T3秒的低電平信號(hào),通過拉低FPGA芯片120的配置控制輸入端NCONFIG使該FPGA芯片120復(fù)位,T3秒后該FPGA芯片120被解復(fù)位,該FPGA芯片120從選通的主flash模塊146中加載FPGA配置文件。
步驟S407,判斷FPGA配置文件是否加載成功。
在本實(shí)施例中,該第一延時(shí)電路132計(jì)時(shí)到T1秒,控制第一使能信號(hào)RST_EN為高電平,則表明該FPGA芯片120從主flash模塊146中加載FPGA配置文件失??;若第一使能信號(hào)RST_EN為低電平,則加載FPGA配置文件成功。
步驟S408,若該FPGA芯片120從主flash模塊146加載該FPGA配置文件失敗,則開關(guān)電路134根據(jù)該第一延時(shí)電路132經(jīng)預(yù)定時(shí)間延時(shí)后的第一延時(shí)信號(hào)DELAY1向該第一復(fù)位芯片136輸出控制信號(hào)PWR,以觸發(fā)該第一復(fù)位芯片136輸出第一復(fù)位信號(hào)MANUAL_RST。
在本實(shí)施例中,該第一延時(shí)電路132中設(shè)置的預(yù)定時(shí)間為T1秒,T1秒后該FPGA配置文件加載失敗,則此時(shí)第一使能信號(hào)為高電平,第一延時(shí)電路132根據(jù)該第一使能信號(hào)RST_EN輸出的經(jīng)T1秒延時(shí)后的第一延時(shí)信號(hào)DELAY1為高電平,該開關(guān)電路134向該第一復(fù)位芯片136輸出的控制信號(hào)PWR為高電平,此時(shí)第一復(fù)位芯片136被觸發(fā)向該第一復(fù)位芯片136輸出第一復(fù)位信號(hào)MANUAL_RST。
步驟S409,該第二復(fù)位芯片138收到該第一復(fù)位信號(hào)MANUAL_RST時(shí)向該FPGA芯片120輸出配置信號(hào)nCONFIG。
在本實(shí)施例中,此時(shí)第一復(fù)位信號(hào)MANUAL_RST為低電平,控制該第二復(fù)位芯片138向該FPGA芯片120輸出配置信號(hào)nCONFIG,且該配置信號(hào)nCONFIG為低電平。
步驟S410,該選通電路144依據(jù)該第二延時(shí)電路142經(jīng)預(yù)定時(shí)間延時(shí)后的第二延時(shí)信號(hào)DELAY2選通該從flash模塊148。
在本實(shí)施例中,該第二延時(shí)電路142中設(shè)置的預(yù)定時(shí)間為T2秒,其中,T2與該第一延時(shí)電路132中設(shè)置的預(yù)定時(shí)間T1相同。第二延時(shí)電路142計(jì)時(shí)到T2秒,控制第二使能信號(hào)BOOT_EN1為高電平,該第二延時(shí)電路142依據(jù)該第二使能信號(hào)BOOT_EN1輸出的第二延時(shí)信號(hào)DELAY2為高電平,該反向電路1441依據(jù)該第二延時(shí)信號(hào)DELAY2輸出的第一選通信號(hào)SEL1為低電平,第二選通信號(hào)SEL2為高電平,該總線切換開關(guān)1443選通從flash模塊148。
步驟S411,該FPGA芯片120在該配置信號(hào)nCONFIG的控制下從該從flash模塊148加載該FPGA配置文件。
在本實(shí)施例中,該配置信號(hào)nCONFIG通過拉低FPGA芯片120的配置控制輸入端NCONFIG使該FPGA芯片120復(fù)位,T3秒后該FPGA芯片120解復(fù)位,該FPGA芯片120從選通的從flash模塊148加載FPGA配置文件。
步驟S412,該FPGA配置文件加載成功后,該FPGA芯片120解復(fù)位與該FPGA芯片120電連接的中央處理器110,該中央處理器110啟動(dòng)完成后向該FPGA芯片120發(fā)送喂狗信號(hào)WDI以啟動(dòng)該FPGA配置文件自動(dòng)加載系統(tǒng)100。
在本實(shí)施例中,若該FPGA芯片120從主flash模塊146加載FPGA配置文件成功,則直接在步驟S407后執(zhí)行步驟S412。
需要說明的是,上述的部分步驟并不代表嚴(yán)格按照上述方式被執(zhí)行,例如,步驟S401、S404也可同時(shí)被執(zhí)行。
第二實(shí)施例
圖5示出了本發(fā)明第二實(shí)施例提供的FPGA配置文件更新及重新加載方法的流程示意圖,下面將對(duì)圖5所示的具體流程進(jìn)行詳細(xì)闡述。
步驟S501,F(xiàn)PGA芯片120判斷通過主flash模塊146或從flash模塊148的FPGA配置文件啟動(dòng)。
在本實(shí)施例中,F(xiàn)PGA芯片120正常工作時(shí),通過反向電路1441輸出的第一選通信號(hào)SEL1及第二選通信號(hào)SEL2的電平來判斷該FPGA芯片120通過主flash模塊146還是通過從flash模塊148的配置文件啟動(dòng),當(dāng)該第一選通信號(hào)SEL1為高電平、第二選通信號(hào)SEL2為低電平時(shí),該FPGA芯片120通過主flash模塊146的配置文件啟動(dòng),當(dāng)該第一選通信號(hào)SEL1為低電平、第二選通信號(hào)SEL2為高電平時(shí),該FPGA芯片120通過從flash模塊148的配置文件啟動(dòng)。
步驟S502,該FPGA芯片120控制第二延時(shí)電路142輸出第三延時(shí)信號(hào)DELAY3。
在本實(shí)施例中,當(dāng)FPGA芯片120通過主flash模塊146的配置文件啟動(dòng),則此時(shí)該FPGA芯片120更新主flash模塊146的FPGA配置文件,該FPGA芯片120控制第三使能信號(hào)BOOT_EN2為低電平,該第二延時(shí)電路142依據(jù)該第三使能信號(hào)BOOT_EN2輸出的第三延時(shí)信號(hào)DELAY3為低電平;當(dāng)FPGA芯片120通過從flash模塊148的配置文件啟動(dòng),則此時(shí)該FPGA芯片120更新從flash模塊148的FPGA配置文件,該FPGA芯片120控制第三使能信號(hào)BOOT_EN2為高電平,該第二延時(shí)電路142依據(jù)該第三使能信號(hào)BOOT_EN2輸出的第三延時(shí)信號(hào)DELAY3為高電平。
當(dāng)然,上述的步驟S501也可省略。也就是說,無論FPGA芯片120通過主flash模塊146還是從flash模塊148的配置文件啟動(dòng),該FPGA芯片120可通過控制該第三使能信號(hào)BOOT_EN2的電平進(jìn)而選擇更新主flash模塊146或從flash模塊148的FPGA配置文件。
步驟S503,該選通電路144依據(jù)該第三延時(shí)信號(hào)DELAY3選通該主flash模塊146或從flash模塊148。
在本實(shí)施例中,當(dāng)?shù)谌訒r(shí)信號(hào)DELAY3為低電平時(shí),該第一選通信號(hào)SEL1為高電平、第二選通信號(hào)SEL2為低電平,該總線切換開關(guān)1443選通主flash模塊146;當(dāng)?shù)谌訒r(shí)信號(hào)DELAY3為高電平時(shí),該第一選通信號(hào)SEL1為低電平、第二選通信號(hào)SEL2為高電平時(shí),該總線切換開關(guān)1443選通從flash模塊148。
步驟S504,該中央處理器110將新版本的FPGA配置文件傳送至該FPGA芯片120,該FPGA芯片120將新版本的FPGA配置文件更新至該主flash模塊146或從flash模塊148。
在本實(shí)施例中,該中央處理器110通過LOCAl BUS總線將新版本的FPGA配置文件傳送至該FPGA芯片120中,該FPGA芯片120通過SPI總線與該總線切換開關(guān)1443電連接,該FPGA芯片120內(nèi)部邏輯實(shí)現(xiàn)將LOCAl BUS總線轉(zhuǎn)到SPI總線,將新版本的FPGA配置文件通過建立的SPI通道更新至該主flash模塊146或從flash模塊148。
步驟S505,該新版本的FPGA配置文件更新完成后,該FPGA芯片120重新加載更新后的FPGA配置文件。
在本實(shí)施例中,當(dāng)新版本的FPGA配置文件更新完成時(shí),中央處理器110通過控制該FPGA芯片120以使該第一使能信號(hào)RST_EN為高電平,此時(shí)第一復(fù)位芯片136被提供電源向第二復(fù)位芯片138輸出第一復(fù)位信號(hào)MANUAL_RST,該第一復(fù)位信號(hào)MANUAL_RST為低電平觸發(fā)第二復(fù)位芯片138向該FPGA芯片120輸出配置信號(hào)nCONFIG,以復(fù)位該FPGA芯片120,該FPGA解復(fù)位后重新加載更新后的FPGA配置文件。需要說明的是,該FPGA芯片120重新加載更新后的FPGA配置文件的過程與本發(fā)明第一實(shí)施例所提供的自動(dòng)加載FPGA配置文件過程一致。
需要說明的是,在本實(shí)施例中,若該FPGA芯片120通過主flash模塊146的配置文件啟動(dòng),但需要更新從flash模塊148的FPGA配置文件時(shí),該第三延時(shí)信號(hào)DELAY3由低電平變?yōu)楦唠娖降念A(yù)定時(shí)間與第一實(shí)施例中第二延時(shí)電路142中設(shè)置的預(yù)定時(shí)間T2秒相同。
綜上所述,本發(fā)明實(shí)施例所提供的FPGA配置文件自動(dòng)加載系統(tǒng)及方法,F(xiàn)PGA芯片在第二復(fù)位芯片輸出的配置信號(hào)的控制下從主flash模塊或者從flash模塊加載存儲(chǔ)的FPGA配置文件,當(dāng)所述FPGA芯片從所述主flash模塊加載所述FPGA配置文件失敗時(shí),可從所述從flash模塊加載存儲(chǔ)的FPGA配置文件,保證了系統(tǒng)正常加載的可靠性;同時(shí),在FPGA芯片正常工作時(shí),F(xiàn)PGA芯片可將中央處理器送入的FPGA配置文件更新至主flash模塊或者從flash模塊,并且在更新完成后可在線實(shí)現(xiàn)重新加載更新后的FPGA配置文件。該FPGA配置文件自動(dòng)加載系統(tǒng)的架構(gòu)簡單,F(xiàn)PGA配置文件的加載及更新具有更高的可靠性和易操作性,在產(chǎn)品的成本控制、易維護(hù)性、易擴(kuò)展性等方面具有重要的意義。
需要說明的是,在本文中,諸如“第一”和“第二”等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。