用于fpga的功能切換的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子技術(shù)領(lǐng)域,具體來(lái)說(shuō),涉及一種用于FPGA的功能切換的方法及裝置。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)技術(shù)的迅速普及與廣泛應(yīng)用,使得網(wǎng)絡(luò)通信設(shè)備的需求越來(lái)越大。為了實(shí)現(xiàn)將網(wǎng)絡(luò)功能集成到嵌入式系統(tǒng)中,并且滿(mǎn)足不同的用戶(hù)需求,F(xiàn)PGA的網(wǎng)絡(luò)系統(tǒng)開(kāi)發(fā)受到研發(fā)人員越來(lái)越多的青睞。但是在資源有限的條件下,F(xiàn)PGA技術(shù)仍然具有許多局限性,例如,F(xiàn)PGA無(wú)法同時(shí)集成很多種邏輯功能。
[0003]FPGA配置文件一般存放于非易失性存儲(chǔ)器(如FLASH)中,當(dāng)FPGA芯片上電之后,會(huì)從FLASH中讀取配置文件,加載完成之后FPGA電路才能夠正常工作。
[0004]Xilnx FPGA提供了MultiBoot技術(shù),S卩FPGA上電之后可以選擇不同的配置文件進(jìn)行加載,從而完成FPGA電路功能的切換。該方案的缺點(diǎn)是需要在非易失性存儲(chǔ)器(FLASH)中存儲(chǔ)多份配置文件,因此需要占用較多的存儲(chǔ)資源。
[0005]MultiBoot實(shí)現(xiàn)具體過(guò)程如下:
[0006]①非易失性存儲(chǔ)器中保存兩份配置文件(如圖1):Golden Image和MultiBootImage;
[0007]②上電之后,F(xiàn)PGA內(nèi)部配置管理電路開(kāi)始工作,讀取非易失性存儲(chǔ)器(FLASH)中的配置文件,即Golden Image ;
[0008]③內(nèi)部配置管理電路讀取配置文件的過(guò)程中,將讀到的指令進(jìn)行解析執(zhí)行。這里需要關(guān)注的有兩處,首先內(nèi)部配置管理電路會(huì)讀到WBSTAR內(nèi)容X,緊接著會(huì)讀到IPROG指令,該指令作用是引導(dǎo)內(nèi)部配置管理邏輯跳轉(zhuǎn)到地址X處讀取配置文件;
[0009]④內(nèi)部配置管理電路跳轉(zhuǎn)到地址X處讀取配置文件,如果加載成功,F(xiàn)PGA正常工作;如果失敗,跳轉(zhuǎn)到⑤
[0010]⑤FPGA 跳回地址 O,加載 Go I den Image ;
[0011]MultiBoot設(shè)置通常有2種方法:
[0012]①FPGA綜合工具(ISE/VIVAD0)在生成配置文件的過(guò)程中指定WBSTAR內(nèi)容,同時(shí)嵌入IPROG指令;
[0013]②FPGA綜合工具(ISE/VIVAD0)在生成配置文件的過(guò)程中不指定WBSTAR、不嵌入IPROG指令,而是在FPGA加載配置文件完成之后,使用內(nèi)部配置管理電路(ICAP硬核)修改WBSTAR并執(zhí)行IPROG指令。
[0014]對(duì)于上述介紹的現(xiàn)有技術(shù),其存在有非常明顯的缺陷,具體如下:
[0015]①開(kāi)發(fā)成本高
[0016]當(dāng)用戶(hù)需求較多時(shí),F(xiàn)PGA電路功能隨時(shí)可能更改,這時(shí)需要多個(gè)配置文件,從而占用較多的存儲(chǔ)空間,開(kāi)發(fā)成本高。
[0017]②WBSTAR內(nèi)容更改及IPROG指令啟動(dòng)無(wú)法靈活修改,用戶(hù)體驗(yàn)差
[0018]A.配置文件生成過(guò)程中
[0019]設(shè)置WBSTAR/IPR0G方式,屬于硬編碼的方式。每次修改WBSTAR/IPR0G都需要重新生成工程;
[0020]B.配置文件加載完成之后
[0021]這種方式需要內(nèi)部配置管理電路(ICAP硬核)的參與,因此每次需要加載GoldenImage之后才能跳轉(zhuǎn)到期望地址處加載目標(biāo)配置文件。該方法由于在線(xiàn)更新WBSTAR/IPR0G,無(wú)法保存用戶(hù)上一次選擇的配置文件。
[0022]針對(duì)相關(guān)技術(shù)中的問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0023]針對(duì)相關(guān)技術(shù)中的問(wèn)題,本發(fā)明提出一種用于FPGA的功能切換的方法及裝置,能夠節(jié)省存儲(chǔ)空間并且降低開(kāi)發(fā)成本,同時(shí)實(shí)現(xiàn)了配置文件的在線(xiàn)切換以及用戶(hù)配置的保存。
[0024]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0025]根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于FPGA的功能切換的方法。
[0026]該方法包括:
[0027]為預(yù)先建立的多個(gè)子配置文件分別分配地址,并將多個(gè)子配置文件合并為總配置文件,其中,多個(gè)配置文件具有不同的邏輯功能;
[0028]修改非易失性存儲(chǔ)器FLASH中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令,并保存修改;以及,
[0029]在進(jìn)行功能切換時(shí),將FPGA中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令進(jìn)行與FLASH中相應(yīng)的修改,以加載目標(biāo)子配置文件。
[0030]在一個(gè)優(yōu)選的實(shí)施例中,進(jìn)一步包括:
[0031]建立多個(gè)子配置文件;
[0032]對(duì)多個(gè)子配置文件進(jìn)行壓縮處理;
[0033]將經(jīng)過(guò)壓縮處理后的多個(gè)子配置文件合并為總配置文件。
[0034]在一個(gè)優(yōu)選的實(shí)施例中,修改非易失性存儲(chǔ)器FLASH中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令,并保存修改包括:
[0035]將FLASH中的在線(xiàn)啟動(dòng)地址處的跳轉(zhuǎn)地址修改為目標(biāo)子配置文件的地址,并將FLASH中的在線(xiàn)啟動(dòng)觸發(fā)指令I(lǐng)PROG設(shè)置為有效。
[0036]在一個(gè)優(yōu)選的實(shí)施例中,在進(jìn)行功能切換時(shí),將FPGA中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令進(jìn)行與FLASH中相應(yīng)的修改,以加載目標(biāo)子配置文件包括:
[0037]在進(jìn)行功能切換時(shí),通過(guò)配置文件訪(fǎng)問(wèn)接口I CAP將FPGA中的在線(xiàn)啟動(dòng)寄存器WBSTAR中的跳轉(zhuǎn)地址修改為目標(biāo)子配置文件的地址;以及,將在線(xiàn)啟動(dòng)觸發(fā)指令I(lǐng)PROG設(shè)置為有效并寫(xiě)入ICAP中,以使FPGA加載目標(biāo)子配置文件。
[0038]在一個(gè)優(yōu)選的實(shí)施例中,當(dāng)FPGA重新上電后,F(xiàn)PGA通過(guò)配置文件訪(fǎng)問(wèn)接口 ICAP讀取FLASH中保存的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令,使FPGA重新加載目標(biāo)子配置文件。
[0039]根據(jù)本發(fā)明的另一方面,提供了一種用于FPGA的功能切換的裝置。
[0040]該裝置包括:
[0041]分配模塊,用于為預(yù)先建立的多個(gè)子配置文件分別分配地址;
[0042]合并模塊,用于并將多個(gè)子配置文件合并為總配置文件,其中,多個(gè)配置文件具有不同的邏輯功能;
[0043]第一修改模塊,用于修改非易失性存儲(chǔ)器FLASH中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令,并保存修改;以及,
[0044]第二修改模塊,用于在進(jìn)行功能切換時(shí),將FPGA中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令進(jìn)行與FLASH中相應(yīng)的修改,以加載目標(biāo)子配置文件。
[0045]在一個(gè)優(yōu)選的實(shí)施例中,還包括:
[0046]建立模塊,用于建立多個(gè)子配置文件;
[0047]壓縮模塊,用于對(duì)多個(gè)子配置文件進(jìn)行壓縮處理;
[0048]合并子模塊,用于將經(jīng)過(guò)壓縮處理后的多個(gè)子配置文件合并為總配置文件。
[0049]在一個(gè)優(yōu)選的實(shí)施例中,第一修改模塊進(jìn)一步用于將FLASH中的在線(xiàn)啟動(dòng)地址處的跳轉(zhuǎn)地址修改為目標(biāo)子配置文件的地址,并將FLASH中的在線(xiàn)啟動(dòng)觸發(fā)指令I(lǐng)PROG設(shè)置為有效。
[0050]在一個(gè)優(yōu)選的實(shí)施例中,第二修改模塊進(jìn)一步用于在進(jìn)行功能切換時(shí),通過(guò)配置文件訪(fǎng)問(wèn)接口 ICAP將FPGA中的在線(xiàn)啟動(dòng)寄存器WBSTAR中的跳轉(zhuǎn)地址修改為目標(biāo)子配置文件的地址;以及,將在線(xiàn)啟動(dòng)觸發(fā)指令I(lǐng)PROG設(shè)置為有效并寫(xiě)入ICAP中,以使FPGA加載目標(biāo)子配置文件。
[0051 ]在一個(gè)優(yōu)選的實(shí)施例中,進(jìn)一步包括:
[0052]配置文件訪(fǎng)問(wèn)接口 ICAP,用于當(dāng)FPGA重新上電后,F(xiàn)PGA通過(guò)ICAP讀取FLASH中保存的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令,使FPGA重新加載目標(biāo)子配置文件。
[0053]本發(fā)明通過(guò)將多個(gè)子配置文件合并為一個(gè)總配置文件,從而節(jié)省了存儲(chǔ)空間,降低了開(kāi)發(fā)成本,實(shí)現(xiàn)了節(jié)省資源的目的;并且,通過(guò)修改FPGA中的相關(guān)內(nèi)容從而實(shí)現(xiàn)了FPGA功能的在線(xiàn)切換。此外,通過(guò)修改并保存FLASH中的相關(guān)內(nèi)容,從而使FPGA在重新上電后能夠重新加載目標(biāo)子配置文件。
【附圖說(shuō)明】
[0054]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0055]圖1是根據(jù)現(xiàn)有技術(shù)實(shí)施例的基于MultiBoot特性生成的配置文件格式的示意圖;
[0056]圖2是根據(jù)本發(fā)明實(shí)施例的用于FPGA的功能切換的方法的流程圖;
[0057]圖3是根據(jù)本發(fā)明的用于FPGA的功能切換的方法的具體實(shí)施例的流程圖;
[0058]圖4是根據(jù)本發(fā)明的具體實(shí)施例的生成的總配置文件格式示意圖;
[0059]圖5是根據(jù)本發(fā)明實(shí)施例的用于FPGA的功能切換的裝置的框圖。
【具體實(shí)施方式】
[0060]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0061]根據(jù)本發(fā)明的實(shí)施例,提供了一種用于FPGA的功能切換的方法。
[0062 ]如2圖所示,根據(jù)本發(fā)明實(shí)施例的用于FPGA的功能切換的包括:
[0063]步驟S201,為預(yù)先建立的多個(gè)子配置文件分別分配地址,并將多個(gè)子配置文件合并為總配置文件,其中,多個(gè)配置文件具有不同的邏輯功能;
[0064]步驟S203,修改非易失性存儲(chǔ)器FLASH中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令,并保存修改。
[0065]步驟S205,在進(jìn)行功能切換時(shí),將FPGA中的跳轉(zhuǎn)地址和跳轉(zhuǎn)指令進(jìn)行與FLASH中相應(yīng)的修改,以加載目標(biāo)子配置文件。
[0066]具體的,在一個(gè)優(yōu)選的實(shí)施例中