FPGA燒寫的方式和具體過程分析_第1頁(yè)
FPGA燒寫的方式和具體過程分析_第2頁(yè)
FPGA燒寫的方式和具體過程分析_第3頁(yè)
FPGA燒寫的方式和具體過程分析_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

FPGA燒寫的方式和具體過程分析做了三年四個(gè)項(xiàng)目最近才第一次需要深入的搞一下FPGA燒寫。在這里簡(jiǎn)單總結(jié)一下FPGA燒寫的具體過程和玩的花樣大家常用的辦法對(duì)于大部分人來說,至少入門時(shí)會(huì)用到的燒寫方式就兩種:①通過JTAG直接將bitsteam燒錄到FPGA。斷電后信息丟失。這種方式多用于發(fā)開調(diào)試階段,板子一直連著電腦。通過ISE或者Vivado(2020年開始估計(jì)還有Vitis)使用JTAG接口燒錄。②在設(shè)計(jì)release以后,到產(chǎn)品上一般都是把配置文件通過IDE工具保存存在NorFlash里。上電后自動(dòng)編程FPGA。較為進(jìn)階的一種方法通常情況下這兩種方式也就可以滿足大部分需求了。開發(fā)調(diào)試直接JTAG。產(chǎn)品出貨前,配置文件通過JTAG接口,用VIVADO或者SDK等工具燒進(jìn)Flash。之后把接口封起來。產(chǎn)品需要更新的時(shí)候,派技術(shù)支持去,重新打開接口,插上JTAG,把新的配置文件燒入Flash。但是這次項(xiàng)目是個(gè)小型手持測(cè)量設(shè)備,JTAG接口只有在設(shè)備拆散狀態(tài)下通過擴(kuò)展板才能使用。組裝好后FPGA只能通過Flash來編程。由于是個(gè)精密儀器,每次拆開再組裝,整個(gè)設(shè)備都需要重新校準(zhǔn),非常費(fèi)事費(fèi)力。組裝后更新Flash里面的配置文件只能用別的辦法了。這種情況下常用的方法是通過一個(gè)和外界有通信能力的微控制器將image發(fā)送給FPGA,再由FPGA寫入Flash。這種remoteupdateXilinx提供了一種解決方案,相對(duì)應(yīng)的ApplicationNote是:QuickBootMethodforFPGADesignRemoteUpdate(文檔號(hào)碼XAPP1081)采用這種方案的前提是理解FPGA通過Flash配置的細(xì)節(jié),所以以7系FPGA為例先需要看一下這個(gè)文檔:7SeriesFPGAsConfiguration(UG470)主要是看第五章:Chapter5ConfigurationDetailsXilinx遠(yuǎn)程燒錄FPGA方法遠(yuǎn)程燒錄一般是為了設(shè)備出廠以后還需對(duì)FPGA進(jìn)行更新或者升級(jí)。為了避免在燒錄過程中新的配置文件損壞,導(dǎo)致FPGA不能正常啟動(dòng)。通常采取的是雙保險(xiǎn)策略,有個(gè)goldbitstream,是出廠是寫入Flash的,是測(cè)試過絕對(duì)可以啟動(dòng)FPGA的,還有一個(gè)是updatebistream,出廠時(shí)就是一個(gè)goldbitstream的copy,F(xiàn)PGA每次啟動(dòng)都是默認(rèn)寫讀取這個(gè)updatebitstream。之后的更新也就是去重寫這個(gè)updatebitstream,一旦在更新過程出了問題,比如突然斷電。updatebistream損害或者殘缺,F(xiàn)PGA在嘗試從updatebitstream啟動(dòng)失敗后就會(huì)去讀取goldbitstream。這種方法保證了一個(gè)相對(duì)安全的update方法,所以也是一種非常經(jīng)典的方法。去掉廢話來概括這種方法每一個(gè)bitstream都長(zhǎng)這樣:FPGA會(huì)先去找synchroword(7系列的spi接口的話就是0xAA995566)找到以后讀取首地址,然后跳到首地址,開始讀取所有的配置數(shù)據(jù)。此文介紹的這種雙保險(xiǎn)策略就是在Flash中存入兩個(gè)bitstream。但是精髓所在是這兩個(gè)Bitstream在內(nèi)存中怎么放。如下圖所示,update的bitstream會(huì)被拆成兩段,synchronword和首地址會(huì)被存在goldbitstream前面,然后其他部分存在goldstream之后。而且updatebitsteam尾部還會(huì)人為加入一個(gè)CRC。這種鬼畜結(jié)構(gòu)的目的這種結(jié)構(gòu)可以提供一種非常安全可靠的update模式。為什么會(huì)安全可靠。先來說一下這種結(jié)構(gòu)下的update流程:當(dāng)我們想要updatebistream的時(shí)候:①首先updatesynchroword和首地址所在的sector(Flash里可以擦除的最小單元)會(huì)被擦除。②然后開始在update所在的地方擦除所有內(nèi)容,寫入新的bitstream。包括CRC。(這個(gè)CRC是生成bitstream的時(shí)候加入的。具體操作看下一章)。③當(dāng)寫入結(jié)束后整個(gè)新寫入的內(nèi)容會(huì)被讀出來計(jì)算CRC,然后和嵌入的CRC來做比較。當(dāng)CRC一致時(shí),說明在傳輸和寫入過程沒有出現(xiàn)問題。新寫入的配置內(nèi)容完整,有效。這時(shí)update的synchroword和首地址才會(huì)寫入最開始被擦除sector。這樣一來,如果CRC不一致,說明這是個(gè)badupdate,新寫入的配置內(nèi)容不可用。那么被擦除的synchroword和首地址不會(huì)被寫入。第一個(gè)sector是空的。當(dāng)FPGA上電后,它是在這個(gè)sector里找不的updateimage的同步字和首地址的,繼續(xù)讀下去會(huì)讀到屬于goldbitstream的同步字和首地址。如下圖所示:實(shí)際操作步驟和文檔中的坑首先好消息是,上述的這些Flash擦除,寫入,各種地址,sector,page等等Xilinx已經(jīng)寫好了VHDL的模塊。可以直接拿來用。自己需要實(shí)現(xiàn)的是remote端往FPGA的數(shù)據(jù)傳輸。具體如下圖:具體實(shí)現(xiàn)步驟如下:①實(shí)現(xiàn)remote端的update程序,該程序需要讀取updateimage然后通過某種接口和通信協(xié)議將image發(fā)送給FPGA。這一步該需求和情況自由發(fā)揮。例如物聯(lián)網(wǎng)的可以用藍(lán)牙或者WIFI。②實(shí)現(xiàn)FPGA端的數(shù)據(jù)接收。該模塊將數(shù)據(jù)寫入Xilinx提供的FlashProgrammer③下載XAPP1081文檔中的例子KC705BoardDemonstrations,page33。例子中兩個(gè)VHDL模塊按下圖實(shí)例化。注意這兩個(gè)模塊必須共用一個(gè)時(shí)鐘,而且這個(gè)時(shí)鐘就是SPI的時(shí)鐘,所以注意不要太快。一般20Mhz一下。④集成前三條實(shí)現(xiàn)的模塊,調(diào)試??梢詫?shí)現(xiàn)將數(shù)據(jù)從remote端發(fā)送給FPGA,經(jīng)過SPiFlashProgrammer寫入Flash。⑤把bitstream格式轉(zhuǎn)換成mcs格式。將goldbistream。bit格式轉(zhuǎn)換成mcs格式。VIVADO下使用tcl命令write_cgfmen-formatmcs-interfacespix1。一定要加-interfacespix1,不然所有的bits都會(huì)被swap?、尥ㄟ^Xilinx例子中提供的PerlScript生成goldinitimage。script的輸入就是剛才轉(zhuǎn)換的mcs格式的goldbitstream.mcs。輸出之一是goldinitimage這個(gè)image就是圖4中描述的那種鬼畜布局的雙bitstream,只不過兩個(gè)bitstream是一樣的。updatebitstream是gold的copy。⑦將goldinital.mcs通過VIVADO或者PROMgen用JTAG直接燒入Flash⑧同樣的方式用PerlScript生成updateimage。輸入是xxx.mcs。輸出之一是xxx_update.mcs。這個(gè)就是上文所屬的加了CRC的updateimage。生成過程中perlscript會(huì)給出Flash的首地址和結(jié)束地址。將SpiFlashProgrammer中的首尾地址改成這兩個(gè)地址。注意:因?yàn)槭孜驳刂肥菍懺赩HDL里的,也就是說Image的大小是固定的。為了防止在未來,updateimage變大??梢灶A(yù)留一部分出來。例如:目前的大小是3.3MB。我們預(yù)留0.7MB給未來可能出現(xiàn)的更新。那么我們需要生成的image需要4MB大。這是要給perlscript一個(gè)附加的agrument:-imagesize32⑨將xxx_update.mcs轉(zhuǎn)換成.hex文件。網(wǎng)上有不少工具可以。實(shí)在不行谷歌一下mcs格式,自己寫個(gè)script轉(zhuǎn)換一下。⑩FPGA上電,取消SpiFlashProgra

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論