欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種FPGA配置文件加載方法和系統(tǒng)與流程

文檔序號(hào):11949646閱讀:1869來(lái)源:國(guó)知局
一種FPGA配置文件加載方法和系統(tǒng)與流程

本發(fā)明涉及FPGA在線升級(jí)領(lǐng)域,具體涉及一種FPGA配置文件加載方法和系統(tǒng)。



背景技術(shù):

FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程邏輯門陣列)由于其設(shè)計(jì)的靈活性和強(qiáng)大的性能,使其在現(xiàn)代通信設(shè)備應(yīng)用中的優(yōu)勢(shì)更加突出,已經(jīng)成為通信系統(tǒng)的核心部件之一,在系統(tǒng)中處于舉足輕重的地位。

但FPGA不同于專用芯片,在使用時(shí)必須從外部加載包含有配置程序的配置文件,才能使其具備所需的功能。一般情況下,F(xiàn)PGA在設(shè)備的開(kāi)發(fā)調(diào)試階段,大多使用JTAG(Joint Test Action Group;聯(lián)合測(cè)試工作組)下載線或?qū)S玫呐渲梦募螺d接口向其連接的外部配置芯片(Flash芯片)燒寫文件,重新上電后FPGA自動(dòng)加載配置文件中的配置程序,隨后開(kāi)始運(yùn)行實(shí)現(xiàn)相應(yīng)功能。這種方法穩(wěn)定可靠,但只能加載固定的配置文件,一旦產(chǎn)品出廠就不能通過(guò)設(shè)備的任何外部接口更新配置程序,除非有專業(yè)維護(hù)人員到現(xiàn)場(chǎng)拆解設(shè)備,通過(guò)板內(nèi)接口給FPGA升級(jí)配置程序。此方法維護(hù)不便、投入大。特別是一些偏遠(yuǎn)及無(wú)人執(zhí)守站點(diǎn)的設(shè)備,維護(hù)成本極高。因此這種傳統(tǒng)的設(shè)計(jì)方案在很多情況下,不能滿足實(shí)際需要。利用通信設(shè)備的各種外部接口升級(jí)FPGA配置程序,增強(qiáng)產(chǎn)品的易維護(hù)性,大大降低維護(hù)成本。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供一種FPGA配置文件加載方法和系統(tǒng),實(shí)現(xiàn)高可靠性的FPGA升級(jí)。

為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采取的技術(shù)方案如下:

一種FPGA配置文件加載方法,應(yīng)用于由中央處理器CPU、備份存儲(chǔ)器、配置存儲(chǔ)器以及FPGA組成的系統(tǒng),包括:

中央處理器CPU讀取所連接的備份存儲(chǔ)器中的升級(jí)配置文件;

所述CPU控制所述CPU與配置存儲(chǔ)器連接,并基于所述與配置存儲(chǔ)器的連接將所述升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器中,以完成對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí);

所述CPU控制所述FPGA與所述配置存儲(chǔ)器連接;

所述CPU控制所述FPGA基于與所述配置存儲(chǔ)器的連接讀取并加載配置存儲(chǔ)器內(nèi)的升級(jí)配置文件,以完成對(duì)所述FPGA的升級(jí)。

優(yōu)選地,在CPU讀取備份存儲(chǔ)器中的升級(jí)配置文件之前,還包括:

所述CPU獲取所述升級(jí)配置文件,并存儲(chǔ)在所述備份存儲(chǔ)器中,以完成對(duì)所述備份存儲(chǔ)器中已有配置文件的升級(jí)。

優(yōu)選地,將所述升級(jí)配置文件存儲(chǔ)至所述備份存儲(chǔ)器中之后還包括:

所述CPU記錄所述備份存儲(chǔ)器和配置存儲(chǔ)器中已有配置文件的狀態(tài)以及所述備份存儲(chǔ)器和配置存儲(chǔ)器的存儲(chǔ)內(nèi)容是否一致;其中,所述狀態(tài)為升級(jí)態(tài)或正常態(tài)。

優(yōu)選地,在升級(jí)過(guò)程中所在系統(tǒng)出現(xiàn)異常而重新啟動(dòng)后,所述CPU根據(jù)所記錄的內(nèi)容確定本次升級(jí)的起始升級(jí)對(duì)象,從與該起始升級(jí)對(duì)象對(duì)應(yīng)的升級(jí)過(guò)程處開(kāi)始執(zhí)行直至所述FPGA加載完畢所述升級(jí)配置文件;其中,所述起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件、配置存儲(chǔ)器中的已有配置文件或者FPGA。

優(yōu)選地,當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為升級(jí)態(tài)和正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件;

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為正常態(tài)和升級(jí)態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;

當(dāng)備份存儲(chǔ)器和配置存儲(chǔ)器的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容一致時(shí),起始升級(jí)對(duì)象為FPGA。

優(yōu)選地,所述CPU記錄的內(nèi)容被存儲(chǔ)于所述備份存儲(chǔ)器中;所述備份存儲(chǔ)器為所述CPU下掛的用于存儲(chǔ)所述CPU主程序的非易失性存儲(chǔ)器。

優(yōu)選地,在所述CPU獲取升級(jí)配置文件,并存儲(chǔ)在所述備份存儲(chǔ)器中之后,還包括:

所述CPU校驗(yàn)所述備份存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)所述備份存儲(chǔ)器中已有配置文件的升級(jí)完畢。

優(yōu)選地,在所述CPU將升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器之后,還包括:

所述CPU校驗(yàn)所述配置存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí)完畢;否則,重新將升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器,如果重新存儲(chǔ)次數(shù)大于設(shè)定次數(shù),則報(bào)錯(cuò)對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí)失敗。

本發(fā)明還提供一種FPGA配置文件加載系統(tǒng),包括:中央處理器CPU、切換開(kāi)關(guān)、備份存儲(chǔ)器、配置存儲(chǔ)器以及FPGA;所述CPU分別與所述備份存儲(chǔ)器、所述FPGA以及所述切換開(kāi)關(guān)連接;所述切換開(kāi)關(guān)分別與所述配置存儲(chǔ)器和所述FPGA連接;其中,

中央處理器CPU,設(shè)置為讀取所連接的備份存儲(chǔ)器中的升級(jí)配置文件;

所述CPU,還設(shè)置為控制所述切換開(kāi)關(guān)使得所述CPU與配置存儲(chǔ)器連接,并基于所述與配置存儲(chǔ)器的連接將所述升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器中,以完成對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí);

所述CPU,還設(shè)置為控制所述切換開(kāi)關(guān)使得所述FPGA與所述配置存儲(chǔ)器連接;

所述CPU,還設(shè)置為控制所述FPGA基于與所述配置存儲(chǔ)器的連接讀取并加載配置存儲(chǔ)器內(nèi)的升級(jí)配置文件,以完成對(duì)所述FPGA的升級(jí)。

優(yōu)選地,所述CPU,還設(shè)置為獲取所述升級(jí)配置文件,并存儲(chǔ)在所述備份存儲(chǔ)器中,以完成對(duì)所述備份存儲(chǔ)器中已有配置文件的升級(jí)。

優(yōu)選地,所述CPU,還設(shè)置為記錄所述備份存儲(chǔ)器和配置存儲(chǔ)器中已有配置文件的狀態(tài)以及所述備份存儲(chǔ)器和配置存儲(chǔ)器的存儲(chǔ)內(nèi)容是否一致;其中,所述狀態(tài)為升級(jí)態(tài)或正常態(tài)。

優(yōu)選地,在升級(jí)過(guò)程中所在系統(tǒng)出現(xiàn)異常而重新啟動(dòng)后,所述CPU,還設(shè)置為根據(jù)所記錄的內(nèi)容確定本次升級(jí)的起始升級(jí)對(duì)象,從與該起始升級(jí)對(duì)象對(duì)應(yīng)的升級(jí)過(guò)程處開(kāi)始執(zhí)行直至所述FPGA加載完畢所述升級(jí)配置文件;其中,所述起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件、配置存儲(chǔ)器中的已有配置文件或者FPGA。

優(yōu)選地,當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為升級(jí)態(tài)和正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件;

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為正常態(tài)和升級(jí)態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;

當(dāng)備份存儲(chǔ)器和配置存儲(chǔ)器的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容一致時(shí),起始升級(jí)對(duì)象為FPGA。

優(yōu)選地,所述CPU記錄的內(nèi)容被存儲(chǔ)于所述備份存儲(chǔ)器中;所述備份存儲(chǔ)器為所述CPU下掛的用于存儲(chǔ)所述CPU主程序的非易失性存儲(chǔ)器。

優(yōu)選地,所述CPU,還設(shè)置為校驗(yàn)所述備份存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)所述備份存儲(chǔ)器中已有配置文件的升級(jí)完畢。

優(yōu)選地,所述CPU,還設(shè)置為校驗(yàn)所述配置存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí)完畢;否則,重新將升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器,如果重新存儲(chǔ)次數(shù)大于設(shè)定次數(shù),則報(bào)錯(cuò)對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí)失敗。

與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的技術(shù)方案,無(wú)需維護(hù)人員到現(xiàn)場(chǎng)拆解設(shè)備,只要利用設(shè)備中CPU下掛的備份存儲(chǔ)器預(yù)先存儲(chǔ)升級(jí)配置文件加以備份,在需要對(duì)FPGA進(jìn)行升級(jí)時(shí),將該備份文件寫入至FPGA啟動(dòng)時(shí)所要加載的配置存儲(chǔ)器中,即可實(shí)現(xiàn)對(duì)FPGA的升級(jí),能夠增強(qiáng)系統(tǒng)的易維護(hù)性,大大降低升級(jí)成本。并且,由于本發(fā)明實(shí)施例支持配置文件備份,可靠性高。

附圖說(shuō)明

圖1為本發(fā)明實(shí)施例的FPGA配置文件加載方法的示意圖;

圖2為本發(fā)明實(shí)施例4的FPGA配置文件加載流程示意圖;

圖3為本發(fā)明實(shí)施例5的FPGA升級(jí)中斷流程示意圖;

圖4為本發(fā)明實(shí)施例7使用不同配置文件的雙FPGA配置文件加載示意圖;

圖5為本發(fā)明實(shí)施例8使用不同配置文件的雙FPGA配置文件加載示意圖;

圖6為本發(fā)明實(shí)施例9使用不同配置文件的雙FPGA配置文件加載示意圖。

具體實(shí)施方式

為使本發(fā)明的發(fā)明目的、技術(shù)方案和有益效果更加清楚明了,下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行說(shuō)明,需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例和實(shí)施例中的特征可以相互任意組合。

本發(fā)明實(shí)施例提供一種FPGA配置文件加載方法,該方法可應(yīng)用于由中央處理器CPU、備份存儲(chǔ)器、配置存儲(chǔ)器以及FPGA組成的系統(tǒng)。在該系統(tǒng)中,CPU分別與備份存儲(chǔ)器、配置存儲(chǔ)器和FPGA連接,F(xiàn)PGA和配置存儲(chǔ)器連接。當(dāng)然,在該系統(tǒng)中,CPU和FPGA可均通過(guò)同一個(gè)切換開(kāi)關(guān)與配置存儲(chǔ)器連接,CPU控制切換開(kāi)關(guān)在不同的升級(jí)過(guò)程中配置存儲(chǔ)器與CPU或FPGA連通進(jìn)行配置文件的傳輸。具體的,所述FPGA配置文件加載方法具體包括如下步驟:

(1)對(duì)配置存儲(chǔ)器中已有配置文件進(jìn)行升級(jí)

該步驟(1)具體包括:CPU讀取所連接的備份存儲(chǔ)器中的升級(jí)配置文件,控制CPU與配置存儲(chǔ)器連接,將升級(jí)配置文件存儲(chǔ)至配置存儲(chǔ)器,以完成對(duì)配置存儲(chǔ)器中已有配置文件的升級(jí);

(2)對(duì)FPGA進(jìn)行升級(jí)

該步驟(2)具體包括:CPU控制FPGA與配置存儲(chǔ)器連接,使FPGA讀取并加載配置存儲(chǔ)器內(nèi)的升級(jí)配置文件,以完成對(duì)FPGA的升級(jí)。

其中,本發(fā)明實(shí)施例涉及的各存儲(chǔ)器(包括備份存儲(chǔ)器和配置存儲(chǔ)器)存儲(chǔ)的配置文件的內(nèi)容均為用于對(duì)FPGA進(jìn)行功能配置的配置程序。并且,各存儲(chǔ)器均為在系統(tǒng)斷電時(shí)不會(huì)丟失存儲(chǔ)內(nèi)容的非易失性存儲(chǔ)器,例如為FLASH閃存。示例性的,將升級(jí)配置文件存儲(chǔ)至各存儲(chǔ)器,具體包括:擦除各存儲(chǔ)器中已有配置文件,將升級(jí)配置文件寫入各存儲(chǔ)器。也即,在該示例中是以覆蓋寫入的方式將升級(jí)配置文件存儲(chǔ)至對(duì)應(yīng)的存儲(chǔ)器中的。

具體而言,備份存儲(chǔ)器為可以與CPU連接進(jìn)行通信的非易失性存儲(chǔ)設(shè)備,例如可以是U盤或磁盤等外部存儲(chǔ)器件。優(yōu)選的,備份存儲(chǔ)器為CPU下掛的用于存儲(chǔ)CPU主程序的非易失性存儲(chǔ)器,這樣在大批量生產(chǎn)系統(tǒng)時(shí),可不必獨(dú)立燒寫初始配置文件至配置存儲(chǔ)器,只要在燒寫CPU主程序至備份存儲(chǔ)器的同時(shí)將該初始配置文件視為升級(jí)配置文件一同燒寫至備份存儲(chǔ)器,之后在系統(tǒng)初次上電時(shí)應(yīng)用本發(fā)明實(shí)施例提供的方法即可使得FPGA加載到該配置文件進(jìn)而運(yùn)行其相應(yīng)功能,大大提高了生產(chǎn)效率。

示例性的,在系統(tǒng)首次啟動(dòng)時(shí),備份存儲(chǔ)器中存儲(chǔ)的升級(jí)配置文件可為生產(chǎn)系統(tǒng)時(shí)所燒寫的初始配置文件,配置存儲(chǔ)器中已有配置文件為空(可視為0),通過(guò)運(yùn)行本發(fā)明實(shí)施例所提供的上述方法可以將該初始配置文件寫入至配置存儲(chǔ)器,由FPGA從配置存儲(chǔ)器中加載運(yùn)行。之后,在接收到用戶觸發(fā)的升級(jí)指令后,CPU可通過(guò)系統(tǒng)的對(duì)外通信接口在線獲取升級(jí)配置文件(該文件內(nèi)容為對(duì)FPGA進(jìn)行實(shí)現(xiàn)功能的升級(jí)配置程序),將該升級(jí)配置文件以覆蓋寫入的方式存儲(chǔ)至備份存儲(chǔ)器,進(jìn)而將該升級(jí)配置文件覆蓋寫入至配置存儲(chǔ)器,由FPGA在系統(tǒng)斷電而又再次上電后不必等CPU啟動(dòng)完畢便可直接加載配置存儲(chǔ)器中的升級(jí)配置文件進(jìn)行運(yùn)行。這樣,使得FPGA的啟動(dòng)不依賴于CPU,F(xiàn)PGA加載速度快,上電時(shí)可以實(shí)現(xiàn)快速加載配置文件,F(xiàn)PGA未配置空閑時(shí)間極短,可立即可用。

與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的技術(shù)方案,無(wú)需維護(hù)人員到現(xiàn)場(chǎng)拆解設(shè)備,只要利用設(shè)備中CPU下掛的備份存儲(chǔ)器預(yù)先存儲(chǔ)升級(jí)配置文件加以備份,在需要對(duì)FPGA進(jìn)行升級(jí)時(shí),將該備份文件寫入至FPGA啟動(dòng)時(shí)所要加載的配置存儲(chǔ)器中,即可實(shí)現(xiàn)對(duì)FPGA的升級(jí),能夠增強(qiáng)系統(tǒng)的易維護(hù)性,大大降低升級(jí)成本。

在本發(fā)明實(shí)施例中,備份存儲(chǔ)器中存儲(chǔ)的升級(jí)配置文件可以是人工預(yù)先燒寫進(jìn)去的,也可以是由CPU存入至備份存儲(chǔ)器中的。作為一種優(yōu)選的實(shí)施方式,在CPU讀取所連接的備份存儲(chǔ)器中的升級(jí)配置文件之前,還包括:CPU獲取升級(jí)配置文件,并存儲(chǔ)在備份存儲(chǔ)器中,以完成對(duì)備份存儲(chǔ)器中已有配置文件的升級(jí)。具體的,CPU可以在線從其他設(shè)備下載或者從與系統(tǒng)連接的外部存儲(chǔ)設(shè)備中讀取獲得升級(jí)配置文件。

基于上述優(yōu)選實(shí)施方式,進(jìn)一步的,本發(fā)明實(shí)施例提供的方法還包括:CPU實(shí)時(shí)記錄對(duì)備份存儲(chǔ)器和配置存儲(chǔ)器中已有配置文件的狀態(tài)以及備份存儲(chǔ)器和配置存儲(chǔ)器的存儲(chǔ)內(nèi)容是否一致;其中所述狀態(tài)為升級(jí)態(tài)或正常態(tài);

在升級(jí)過(guò)程中所在系統(tǒng)出現(xiàn)異常而重新啟動(dòng)后,CPU根據(jù)所記錄的內(nèi)容確定本次升級(jí)的起始升級(jí)對(duì)象,從與該起始升級(jí)對(duì)象對(duì)應(yīng)的升級(jí)過(guò)程處開(kāi)始執(zhí)行直至FPGA加載完畢升級(jí)配置文件;其中,起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件、配置存儲(chǔ)器中的已有配置文件或者FPGA。其中,所述升級(jí)過(guò)程可指的是:對(duì)備份存儲(chǔ)器中已有配置文件進(jìn)行升級(jí)的過(guò)程、對(duì)配置文件存儲(chǔ)器中已有配置文件進(jìn)行升級(jí)的過(guò)程以及對(duì)FPGA進(jìn)行升級(jí)的過(guò)程中的任一過(guò)程。

具體的,當(dāng)備份存儲(chǔ)器和配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為升級(jí)態(tài)和正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),起始升級(jí)對(duì)象為備份存儲(chǔ)器中的已有配置文件;當(dāng)備份存儲(chǔ)器和配置存儲(chǔ)器中已有配置文件的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),起始升級(jí)對(duì)象為配置存儲(chǔ)器中的已有配置文件;當(dāng)備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為正常態(tài)和升級(jí)態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),起始升級(jí)對(duì)象為配置存儲(chǔ)器中的已有配置文件;當(dāng)備份存儲(chǔ)器和配置存儲(chǔ)器的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容一致時(shí),起始升級(jí)對(duì)象為FPGA。在該示例中,如果正在對(duì)任一存儲(chǔ)器中已有配置文件進(jìn)行升級(jí),則該存儲(chǔ)器中已有配置文件的狀態(tài)即為升級(jí)態(tài);反之,則其狀態(tài)即為正常態(tài)。

優(yōu)選的,CPU實(shí)時(shí)記錄的內(nèi)容被存儲(chǔ)于備份存儲(chǔ)器中。

在上述所有技術(shù)方案的基礎(chǔ)上,在CPU獲取升級(jí)配置文件,并存儲(chǔ)在備份存儲(chǔ)器中之后,還包括:

CPU校驗(yàn)備份存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)備份存儲(chǔ)器中已有配置文件升級(jí)完畢;

在CPU將升級(jí)配置文件存儲(chǔ)至配置存儲(chǔ)器之后,還包括:

CPU校驗(yàn)配置存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)配置存儲(chǔ)器中已有配置文件升級(jí)完畢;否則,重新將升級(jí)配置文件存儲(chǔ)至配置存儲(chǔ)器,如果重新存儲(chǔ)次數(shù)大于設(shè)定次數(shù),則報(bào)錯(cuò)對(duì)配置存儲(chǔ)器中已有配置文件的升級(jí)失敗。

基于與本發(fā)明實(shí)施例提供的FPGA配置文件加載方法相同的發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種FPGA配置文件加載系統(tǒng)。該系統(tǒng)包括:中央處理器CPU、切換開(kāi)關(guān)、備份存儲(chǔ)器、配置存儲(chǔ)器以及FPGA;所述CPU分別與所述備份存儲(chǔ)器、所述FPGA以及所述切換開(kāi)關(guān)連接;所述切換開(kāi)關(guān)分別與所述配置存儲(chǔ)器和所述FPGA連接;其中,

中央處理器CPU,設(shè)置為讀取所連接的備份存儲(chǔ)器中的升級(jí)配置文件;

所述CPU,還設(shè)置為控制切換開(kāi)關(guān)使得所述CPU與配置存儲(chǔ)器連接,并基于所述與配置存儲(chǔ)器的連接將所述升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器中,以完成對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí);

所述CPU,還設(shè)置為控制所述切換開(kāi)關(guān)使得所述FPGA與所述配置存儲(chǔ)器連接;

所述CPU,還設(shè)置為控制所述FPGA基于與所述配置存儲(chǔ)器的連接讀取并加載配置存儲(chǔ)器內(nèi)的升級(jí)配置文件,以完成對(duì)所述FPGA的升級(jí)。

在升級(jí)過(guò)程中所在系統(tǒng)出現(xiàn)異常而重新啟動(dòng)后,所述CPU,還設(shè)置為根據(jù)所記錄的內(nèi)容確定本次升級(jí)的起始升級(jí)對(duì)象,從與該起始升級(jí)對(duì)象對(duì)應(yīng)的升級(jí)過(guò)程處開(kāi)始執(zhí)行直至所述FPGA加載完畢所述升級(jí)配置文件;其中,所述起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件、配置存儲(chǔ)器中的已有配置文件或者FPGA。

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為升級(jí)態(tài)和正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件;

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;

當(dāng)所述備份存儲(chǔ)器和所述配置存儲(chǔ)器中已有配置文件的狀態(tài)依次為正常態(tài)和升級(jí)態(tài),且二者的存儲(chǔ)內(nèi)容不一致時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;

當(dāng)備份存儲(chǔ)器和配置存儲(chǔ)器的狀態(tài)均為正常態(tài),且二者的存儲(chǔ)內(nèi)容一致時(shí),起始升級(jí)對(duì)象為FPGA。

所述CPU,還設(shè)置為校驗(yàn)所述備份存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)所述備份存儲(chǔ)器中已有配置文件的升級(jí)完畢。

所述CPU,還設(shè)置為校驗(yàn)所述配置存儲(chǔ)器中的升級(jí)配置文件是否正確;如果是,則確定對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí)完畢;否則,重新將升級(jí)配置文件存儲(chǔ)至所述配置存儲(chǔ)器,如果重新存儲(chǔ)次數(shù)大于設(shè)定次數(shù),則報(bào)錯(cuò)對(duì)所述配置存儲(chǔ)器中已有配置文件的升級(jí)失敗。

以下通過(guò)介紹多個(gè)實(shí)施例來(lái)詳細(xì)闡述本發(fā)明實(shí)施例提供的技術(shù)方案。

實(shí)施例1

如圖1所示,CPU即主控單元,用于控制系統(tǒng)整體啟動(dòng)、升級(jí)、正常運(yùn)行。CPU通過(guò)以太或其它接口與外圍設(shè)備連接,用于接收用戶升級(jí)命令,接收輸入的升級(jí)數(shù)據(jù),向用戶反饋升級(jí)結(jié)果;CPU外接備份存儲(chǔ)器,備份存儲(chǔ)器用于存儲(chǔ)CPU主程序、FPGA升級(jí)配置文件(如果是初次啟動(dòng)時(shí),為生產(chǎn)時(shí)燒寫的初始配置文件),備份存儲(chǔ)器接口及類型由CPU決定,可以是FLASH芯片(如NOR-FLASH、NAND-FLASH等),也可以是存儲(chǔ)卡(如SD卡、CF卡等),或是其它形式的存儲(chǔ)器;

CPU數(shù)據(jù)接口連接切換開(kāi)關(guān),一般為SPI接口;CPU向切換開(kāi)關(guān)提供通道切換信號(hào)SW,控制由CPU或FPGA連接配置存儲(chǔ)器;

切換開(kāi)關(guān)起到SPI數(shù)據(jù)通道切換作用。

CPU連接切換開(kāi)關(guān);CPU向切換開(kāi)關(guān)提供通道切換信號(hào)SW(Switch,通道切換信號(hào)),控制由CPU或FPGA連接配置存儲(chǔ)器,此信號(hào)默認(rèn)為高,即FPGA與配置存儲(chǔ)器連接;CPU接收FPGA的DONE信號(hào),此信號(hào)為高時(shí)指示FPGA加載完成;CPU向FPGA輸出PROG/CONF信號(hào),用于控制FPGA從配置存儲(chǔ)器重新加載配置文件,此信號(hào)默認(rèn)為高,即FPGA正常工作。

備份存儲(chǔ)器:與CPU連接,用于存儲(chǔ)CPU主程序、FPGA升級(jí)配置文件,本實(shí)施例中以FLASH芯片作為備份存儲(chǔ)器。

FPGA:通過(guò)DONE、PROG/CONF信號(hào)與CPU通信,受CPU控制是否從配置存儲(chǔ)器重新加載配置文件,并向CPU輸出是否加載完成狀態(tài)的反饋信息;通過(guò)配置加載接口與切換開(kāi)關(guān)連接,用于上電或重新加載升級(jí)配置文件時(shí)輸入配置存儲(chǔ)器內(nèi)的升級(jí)配置文件。本實(shí)施例中,以FPGA最常使用SPI-FLASH配置文件加載方式進(jìn)行說(shuō)明,對(duì)于使用并行通用FLASH加載方式(BPI接口,Byte Peripheral Interface)也適用于本發(fā)明實(shí)施例提供的方法,僅接口類型不同。

FPGA應(yīng)處于使用SPI接口配置芯片的主動(dòng)加載模式,對(duì)應(yīng)Altera芯片為AS(Active Serial)方式;對(duì)應(yīng)Xilinx芯片為Master SPI方式。

切換開(kāi)關(guān):通用邏輯器件或可編程邏輯器件均可,起到SPI數(shù)據(jù)通道切換作用,由CPU輸出的SW信號(hào)控制。此信號(hào)為高時(shí),F(xiàn)PGA連接SPI-FLASH;為低時(shí)CPU連接SPI-FLASH。

配置存儲(chǔ)器:存儲(chǔ)FPGA當(dāng)前要加載的配置文件,與切換開(kāi)關(guān)通過(guò)SPI接口連接。

實(shí)施例2

為保證系統(tǒng)在升級(jí)過(guò)程中的穩(wěn)定可靠,確保備份存儲(chǔ)器與配置存儲(chǔ)器中配置文件的一致性。在備份存儲(chǔ)器中設(shè)置了升級(jí)標(biāo)志位,用于存儲(chǔ)升級(jí)過(guò)程中備份存儲(chǔ)器和配置存儲(chǔ)器中已有配置文件的狀態(tài)以及備份存儲(chǔ)器和配置存儲(chǔ)器的存儲(chǔ)內(nèi)容是否一致,防止升級(jí)過(guò)程中掉電導(dǎo)致的數(shù)據(jù)錯(cuò)誤。其中,所述狀態(tài)為升級(jí)態(tài)或正常態(tài)。

升級(jí)標(biāo)志位是由CPU寫入備份存儲(chǔ)器的,在系統(tǒng)首次啟動(dòng)時(shí),備份存儲(chǔ)器中對(duì)應(yīng)位置內(nèi)容為空。正常運(yùn)行時(shí)升級(jí)標(biāo)志位描述如下表。

表1

實(shí)施例3

本實(shí)施例說(shuō)明系統(tǒng)啟動(dòng)時(shí)的配置文件加載情況。

在生產(chǎn)過(guò)程中,使用生成的包含CPU主程序、初始配置文件在內(nèi)的存儲(chǔ)器合成文件,通過(guò)燒寫器方式,提前燒寫到備份存儲(chǔ)器芯片中,然后焊接在板卡上。無(wú)需再對(duì)FPGA下掛的配置存儲(chǔ)器燒寫配置文件。

1.系統(tǒng)首次啟動(dòng):①由于配置存儲(chǔ)器為空,此時(shí)FPGA不加載配置文件,處于未配置狀態(tài);②CPU啟動(dòng)后,確認(rèn)FPGA輸出的DONE信號(hào)為低,即FPGA未載入配置;③CPU讀取備份存儲(chǔ)器中的升級(jí)標(biāo)志位,此時(shí)該升級(jí)標(biāo)志位為空,確認(rèn)板卡為首次啟動(dòng);④CPU控制SW輸出為低,控制切換開(kāi)關(guān)切換,使CPU連接配置存儲(chǔ)器;⑤CPU寫升級(jí)標(biāo)志位:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:升級(jí)、存儲(chǔ)器內(nèi)容異同:不同;⑥CPU將備份存儲(chǔ)器中的初始配置文件覆蓋寫入配置存儲(chǔ)器中;⑦配置存儲(chǔ)器完成寫入后,CPU校驗(yàn)配置存儲(chǔ)器中數(shù)據(jù),如正確則寫升級(jí)標(biāo)志位:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:正常、存儲(chǔ)器內(nèi)容異同:相同;⑧CPU控制整板復(fù)位,重啟后進(jìn)入正常啟動(dòng)模式。

2.系統(tǒng)正常啟動(dòng):①設(shè)備上電后,F(xiàn)PGA迅速加載配置存儲(chǔ)器中的配置文件,F(xiàn)PGA正常運(yùn)行;②CPU啟動(dòng)后,確認(rèn)FPGA輸出的DONE信號(hào)為高,即FPGA已載入配置文件;③CPU讀取備份存儲(chǔ)器中的升級(jí)標(biāo)志位,此時(shí)升級(jí)標(biāo)志位為:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:正常、存儲(chǔ)器差異:相同,確認(rèn)板卡為正常啟動(dòng);④系統(tǒng)正常運(yùn)行,等待用戶操作。

實(shí)施例4

本實(shí)施例說(shuō)明配置文件加載功能實(shí)現(xiàn)流程,如圖2所示。

1.設(shè)備上電、系統(tǒng)啟動(dòng)后,F(xiàn)PGA迅速加載配置存儲(chǔ)器中的配置文件,F(xiàn)PGA正常運(yùn)行;

2.CPU啟動(dòng)后,確認(rèn)FPGA輸出的DONE信號(hào)為高,即FPGA已載入配置文件;

3.CPU讀取系統(tǒng)備份存儲(chǔ)器中的升級(jí)標(biāo)志位,此時(shí)升級(jí)標(biāo)志位為:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:正常、存儲(chǔ)器差異:相同,確認(rèn)FPGA加載正常,板卡為正常啟動(dòng);

4.用戶通過(guò)命令觸發(fā)設(shè)備進(jìn)入配置文件在線升級(jí)模式;

5.CPU寫升級(jí)標(biāo)志位:備份存儲(chǔ)器:升級(jí)、配置存儲(chǔ)器:正常、存儲(chǔ)器差異:不同;

6.CPU接收升級(jí)配置文件,寫入CPU下掛的備份存儲(chǔ)器;

7.備份存儲(chǔ)器完成寫入后,CPU校驗(yàn)寫入數(shù)據(jù)是否正確,若不正確,則向用戶反饋備份存儲(chǔ)器升級(jí)失敗,升級(jí)流程結(jié)束;

8.若正確,寫升級(jí)標(biāo)志位:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:正常、存儲(chǔ)器差異:不同;

9.CPU控制SW輸出為低,控制切換開(kāi)關(guān)切換,使CPU連接配置存儲(chǔ)器;

11.CPU寫升級(jí)標(biāo)志位:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:升級(jí)、存儲(chǔ)器差異:不同;

12.CPU將備份存儲(chǔ)器中的升級(jí)配置文件覆蓋寫入配置存儲(chǔ)器中;

13.配置存儲(chǔ)器完成寫入后,CPU校驗(yàn)配置存儲(chǔ)器中數(shù)據(jù)是否正確,若不正確,重寫配置存儲(chǔ)器數(shù)據(jù),如果重寫次數(shù)大于3次,則報(bào)錯(cuò)配置存儲(chǔ)器升級(jí)失敗,升級(jí)流程結(jié)束;

14.若正確,寫升級(jí)標(biāo)志位:備份存儲(chǔ)器:正常、配置存儲(chǔ)器:正常、存儲(chǔ)器差異:相同;

15.CPU控制SW輸出為高,控制切換開(kāi)關(guān)切換,使FPGA連接配置存儲(chǔ)器;

16.CPU將PROG/CONF置低10ms,隨后拉高,以指示FPGA開(kāi)始加載配置存儲(chǔ)器中的升級(jí)配置文件;

17.FPGA加載新的升級(jí)配置文件,系統(tǒng)進(jìn)入延時(shí)等待狀態(tài)(等待時(shí)間與FPGA容量有關(guān),各系統(tǒng)自行定義);

18.CPU讀取FPGA的DONE信號(hào)狀態(tài)是否為高,若為低,則指示FPGA重新加載升級(jí)配置文件,如果重新加載次數(shù)大于3次,則報(bào)錯(cuò)FPGA加載文件失敗,升級(jí)流程結(jié)束;

19.若為高,則確定FPGA正常加載升級(jí)配置文件,升級(jí)成功;

20.完成升級(jí)流程,系統(tǒng)進(jìn)入正常運(yùn)行模式。

實(shí)施例5

本實(shí)施例說(shuō)明配置文件在線升級(jí)中斷的情況,流程如圖3所示。

由于部分設(shè)備運(yùn)行環(huán)境較為惡劣,有可能在配置文件升級(jí)過(guò)程中出現(xiàn)設(shè)備掉電情況。本實(shí)施例針對(duì)此情況增加了升級(jí)標(biāo)志位,用于區(qū)分掉電或其它因素引起升級(jí)中斷時(shí)各存儲(chǔ)器中配置文件的狀態(tài),以便確認(rèn)設(shè)備再次上電啟動(dòng)時(shí)進(jìn)入相應(yīng)的操作程序,系統(tǒng)仍能保證設(shè)備運(yùn)行正常。

根據(jù)在線升級(jí)流程所述,升級(jí)標(biāo)志位共有4種狀態(tài)(參見(jiàn)圖3所示)。在線升級(jí)過(guò)程中,每進(jìn)行下一步操作時(shí),都會(huì)先對(duì)升級(jí)標(biāo)志位寫入相應(yīng)狀態(tài)。如果升級(jí)過(guò)程中出現(xiàn)設(shè)備掉電或其它因素引起升級(jí)中斷,則升級(jí)標(biāo)志位會(huì)保持在上一狀態(tài)。

由于升級(jí)流程中斷位置不同,當(dāng)系統(tǒng)再次啟動(dòng)后,F(xiàn)PGA有可能正常加載未升級(jí)的配置文件,或無(wú)法加載配置文件。不論FPGA的DONE信號(hào)是否正常,CPU都會(huì)讀取升級(jí)標(biāo)志位,并根據(jù)升級(jí)標(biāo)志位的不同內(nèi)容,開(kāi)始運(yùn)行升級(jí)流程中此升級(jí)標(biāo)志位對(duì)應(yīng)的下一步操作,并逐一完成在線升級(jí)流程,最終確保備份存儲(chǔ)器、配置存儲(chǔ)器中的配置文件、FPGA當(dāng)前加載的配置文件相一致,確保FPGA工作正常。

升級(jí)中斷情況后,系統(tǒng)重啟時(shí),CPU操作在線升級(jí)功能實(shí)現(xiàn)流程如圖3所示,當(dāng)備份存儲(chǔ)器升級(jí)過(guò)程中中斷時(shí),此時(shí)備份存儲(chǔ)器的狀態(tài)為升級(jí),配置存儲(chǔ)器的狀態(tài)為正常,備份存儲(chǔ)器和配置存儲(chǔ)器存儲(chǔ)的文件不同,此時(shí),起始升級(jí)對(duì)象為所述備份存儲(chǔ)器中的已有配置文件;之后,再依次執(zhí)行對(duì)配置存儲(chǔ)器中已有配置文件和FPGA的升級(jí);

當(dāng)備份存儲(chǔ)器升級(jí)完成后中斷時(shí),此時(shí)備份存儲(chǔ)器的狀態(tài)為正常,配置存儲(chǔ)器的狀態(tài)為正常,備份存儲(chǔ)器和配置存儲(chǔ)器存儲(chǔ)的文件不同,此時(shí),起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;之后,再執(zhí)行對(duì)FPGA的升級(jí)即可;

當(dāng)配置存儲(chǔ)器升級(jí)過(guò)程中中斷時(shí),此時(shí)備份存儲(chǔ)器的狀態(tài)為正常,配置存儲(chǔ)器的狀態(tài)為升級(jí),備份存儲(chǔ)器和配置存儲(chǔ)器存儲(chǔ)的文件不同,此時(shí),所述起始升級(jí)對(duì)象為所述配置存儲(chǔ)器中的已有配置文件;之后,再執(zhí)行對(duì)FPGA的升級(jí)即可;

當(dāng)正常啟動(dòng)時(shí),此時(shí)備份存儲(chǔ)器的狀態(tài)為正常,配置存儲(chǔ)器的狀態(tài)為正常,備份存儲(chǔ)器和配置存儲(chǔ)器存儲(chǔ)的文件相同,此時(shí),起始升級(jí)對(duì)象為FPGA。

實(shí)施例6

一些具有復(fù)雜功能的系統(tǒng)在設(shè)計(jì)時(shí),往往會(huì)包含多個(gè)FPGA芯片用于實(shí)現(xiàn)多個(gè)相同或不同的功能。相應(yīng)的,多FPGA的系統(tǒng)可以分為多個(gè)FPGA使用相同的配置文件或使用不同的配置文件的情況。

對(duì)于使用相同配置文件的多個(gè)FPGA的情況,系統(tǒng)設(shè)計(jì)結(jié)構(gòu)、配置文件加載和升級(jí)方法與單一FPGA的情況類似,只需要對(duì)單一的配置存儲(chǔ)器進(jìn)行配置文件升級(jí)操作即可,各個(gè)FPGA可以從該配置存儲(chǔ)器中加載配置文件,此處不再贅述。

對(duì)于多個(gè)FPGA使用不同配置文件的情況,仍然可以使用本發(fā)明上述實(shí)施例針對(duì)單個(gè)FPGA提供的技術(shù)方案來(lái)實(shí)現(xiàn)多個(gè)FPGA的配置文件加載和升級(jí)功能。所不同的是,此情況下需要每個(gè)FPGA單獨(dú)下掛一個(gè)配置存儲(chǔ)器,其備份存儲(chǔ)器可共用系統(tǒng)CPU下掛的同一片備份存儲(chǔ)器,無(wú)需新增備份存儲(chǔ)器芯片,在保證系統(tǒng)可靠性的同時(shí)可以降低系統(tǒng)設(shè)計(jì)物料成本。

實(shí)施例7

以包含兩個(gè)使用不同配置文件的FPGA的系統(tǒng)為例進(jìn)行說(shuō)明,兩個(gè)以上FPGA的系統(tǒng)設(shè)計(jì)與此類似,增加相應(yīng)的器件和控制電路即可,此處不再贅述。

如圖4所示,使用不同配置文件的雙FPGA的系統(tǒng)可以直接在僅包含單個(gè)FPGA的系統(tǒng)上對(duì)第二個(gè)FPGA增加對(duì)應(yīng)的控制信號(hào)、數(shù)據(jù)通道、切換開(kāi)關(guān)實(shí)現(xiàn)。而第二個(gè)FPGA的升級(jí)配置文件仍然可以直接存儲(chǔ)在備份存儲(chǔ)器中,即兩個(gè)FPGA共用備份存儲(chǔ)器存儲(chǔ)配置文件。

實(shí)施例8

在本實(shí)施例中,考慮到板卡上器件集成度高,PCB(Printed Circuit Board,印制電路板)面積緊張,所以與上述實(shí)施例七不同,本實(shí)施例使用CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)來(lái)代替多個(gè)切換開(kāi)關(guān)實(shí)現(xiàn)相應(yīng)的功能,以減小板上器件數(shù)量。因此采用圖5的方案,使用CPLD芯片替代圖4中對(duì)應(yīng)不同F(xiàn)PGA的兩個(gè)切換開(kāi)關(guān)。

實(shí)施例9

與實(shí)施例8的不同之處在于,圖6的設(shè)計(jì)方案,使用CPLD實(shí)現(xiàn)不同F(xiàn)PGA對(duì)應(yīng)的控制信號(hào)、數(shù)據(jù)通道、切換開(kāi)關(guān),而CPU只需通過(guò)板內(nèi)總線接口操作CPLD內(nèi)部寄存器即可實(shí)現(xiàn)相應(yīng)功能,這種設(shè)計(jì)集成度更高,設(shè)計(jì)更加簡(jiǎn)單。

上述實(shí)施例1-9所提供的技術(shù)方案,能夠增強(qiáng)系統(tǒng)設(shè)備的易維護(hù)性,降低維護(hù)成本的同時(shí),最大程度上消除了已有升級(jí)方案的不足,同時(shí)兼顧了系統(tǒng)可靠性、啟動(dòng)速度和升級(jí)速度,具體體現(xiàn)在:

1.FPGA的啟動(dòng)不依賴于CPU,F(xiàn)PGA加載速度快,上電立即可用,幾乎不存在未配置狀態(tài);

2.大批量生產(chǎn)系統(tǒng)時(shí)只需燒寫系統(tǒng)CPU下掛的備份存儲(chǔ)器,無(wú)需獨(dú)立燒寫配置存儲(chǔ)器,生產(chǎn)效率高;

3.系統(tǒng)CPU下掛的備份存儲(chǔ)器并非升級(jí)過(guò)程中的數(shù)據(jù)緩存空間,而是作為升級(jí)配置程序的備份存儲(chǔ)器件使用,易于使用,可靠性高;

4.在線升級(jí)時(shí)升級(jí)數(shù)據(jù)直接寫入系統(tǒng)CPU下掛的備份存儲(chǔ)器即可,無(wú)需等待向配置存儲(chǔ)器寫入數(shù)據(jù),升級(jí)操作速度快。

5.有完整的升級(jí)中斷保護(hù)機(jī)制,避免升級(jí)過(guò)程中出現(xiàn)異常對(duì)系統(tǒng)造成不可恢復(fù)的損壞,系統(tǒng)可靠性高。

雖然本發(fā)明所揭示的實(shí)施方式如上,但其內(nèi)容只是為了便于理解本發(fā)明的技術(shù)方案而采用的實(shí)施方式,并非用于限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭示的核心技術(shù)方案的前提下,可以在實(shí)施的形式和細(xì)節(jié)上做任何修改與變化,但本發(fā)明所限定的保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)限定的范圍為準(zhǔn)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
广水市| 多伦县| 墨玉县| 辽中县| 丰台区| 甘孜县| 汤阴县| 门源| 桂东县| 措美县| 宁夏| 荥经县| 临潭县| 斗六市| 刚察县| 宿州市| 微山县| 余姚市| 洛南县| 三明市| 霞浦县| 民县| 桑日县| 前郭尔| 彰化县| 靖安县| 云林县| 洛扎县| 修水县| 灌南县| 江达县| 庆阳市| 宝兴县| 阜南县| 麦盖提县| 垦利县| 商水县| 永州市| 宁远县| 常宁市| 盐源县|