



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
FPGA燒寫的方式和具體過程分析做了三年四個項目最近才第一次需要深入的搞一下FPGA燒寫。在這里簡單總結一下FPGA燒寫的具體過程和玩的花樣大家常用的辦法對于大部分人來說,至少入門時會用到的燒寫方式就兩種:①通過JTAG直接將bitsteam燒錄到FPGA。斷電后信息丟失。這種方式多用于發(fā)開調試階段,板子一直連著電腦。通過ISE或者Vivado(2020年開始估計還有Vitis)使用JTAG接口燒錄。②在設計release以后,到產品上一般都是把配置文件通過IDE工具保存存在NorFlash里。上電后自動編程FPGA。較為進階的一種方法通常情況下這兩種方式也就可以滿足大部分需求了。開發(fā)調試直接JTAG。產品出貨前,配置文件通過JTAG接口,用VIVADO或者SDK等工具燒進Flash。之后把接口封起來。產品需要更新的時候,派技術支持去,重新打開接口,插上JTAG,把新的配置文件燒入Flash。但是這次項目是個小型手持測量設備,JTAG接口只有在設備拆散狀態(tài)下通過擴展板才能使用。組裝好后FPGA只能通過Flash來編程。由于是個精密儀器,每次拆開再組裝,整個設備都需要重新校準,非常費事費力。組裝后更新Flash里面的配置文件只能用別的辦法了。這種情況下常用的方法是通過一個和外界有通信能力的微控制器將image發(fā)送給FPGA,再由FPGA寫入Flash。這種remoteupdateXilinx提供了一種解決方案,相對應的ApplicationNote是:QuickBootMethodforFPGADesignRemoteUpdate(文檔號碼XAPP1081)采用這種方案的前提是理解FPGA通過Flash配置的細節(jié),所以以7系FPGA為例先需要看一下這個文檔:7SeriesFPGAsConfiguration(UG470)主要是看第五章:Chapter5ConfigurationDetailsXilinx遠程燒錄FPGA方法遠程燒錄一般是為了設備出廠以后還需對FPGA進行更新或者升級。為了避免在燒錄過程中新的配置文件損壞,導致FPGA不能正常啟動。通常采取的是雙保險策略,有個goldbitstream,是出廠是寫入Flash的,是測試過絕對可以啟動FPGA的,還有一個是updatebistream,出廠時就是一個goldbitstream的copy,FPGA每次啟動都是默認寫讀取這個updatebitstream。之后的更新也就是去重寫這個updatebitstream,一旦在更新過程出了問題,比如突然斷電。updatebistream損害或者殘缺,FPGA在嘗試從updatebitstream啟動失敗后就會去讀取goldbitstream。這種方法保證了一個相對安全的update方法,所以也是一種非常經典的方法。去掉廢話來概括這種方法每一個bitstream都長這樣:FPGA會先去找synchroword(7系列的spi接口的話就是0xAA995566)找到以后讀取首地址,然后跳到首地址,開始讀取所有的配置數據。此文介紹的這種雙保險策略就是在Flash中存入兩個bitstream。但是精髓所在是這兩個Bitstream在內存中怎么放。如下圖所示,update的bitstream會被拆成兩段,synchronword和首地址會被存在goldbitstream前面,然后其他部分存在goldstream之后。而且updatebitsteam尾部還會人為加入一個CRC。這種鬼畜結構的目的這種結構可以提供一種非常安全可靠的update模式。為什么會安全可靠。先來說一下這種結構下的update流程:當我們想要updatebistream的時候:①首先updatesynchroword和首地址所在的sector(Flash里可以擦除的最小單元)會被擦除。②然后開始在update所在的地方擦除所有內容,寫入新的bitstream。包括CRC。(這個CRC是生成bitstream的時候加入的。具體操作看下一章)。③當寫入結束后整個新寫入的內容會被讀出來計算CRC,然后和嵌入的CRC來做比較。當CRC一致時,說明在傳輸和寫入過程沒有出現問題。新寫入的配置內容完整,有效。這時update的synchroword和首地址才會寫入最開始被擦除sector。這樣一來,如果CRC不一致,說明這是個badupdate,新寫入的配置內容不可用。那么被擦除的synchroword和首地址不會被寫入。第一個sector是空的。當FPGA上電后,它是在這個sector里找不的updateimage的同步字和首地址的,繼續(xù)讀下去會讀到屬于goldbitstream的同步字和首地址。如下圖所示:實際操作步驟和文檔中的坑首先好消息是,上述的這些Flash擦除,寫入,各種地址,sector,page等等Xilinx已經寫好了VHDL的模塊。可以直接拿來用。自己需要實現的是remote端往FPGA的數據傳輸。具體如下圖:具體實現步驟如下:①實現remote端的update程序,該程序需要讀取updateimage然后通過某種接口和通信協(xié)議將image發(fā)送給FPGA。這一步該需求和情況自由發(fā)揮。例如物聯網的可以用藍牙或者WIFI。②實現FPGA端的數據接收。該模塊將數據寫入Xilinx提供的FlashProgrammer③下載XAPP1081文檔中的例子KC705BoardDemonstrations,page33。例子中兩個VHDL模塊按下圖實例化。注意這兩個模塊必須共用一個時鐘,而且這個時鐘就是SPI的時鐘,所以注意不要太快。一般20Mhz一下。④集成前三條實現的模塊,調試??梢詫崿F將數據從remote端發(fā)送給FPGA,經過SPiFlashProgrammer寫入Flash。⑤把bitstream格式轉換成mcs格式。將goldbistream。bit格式轉換成mcs格式。VIVADO下使用tcl命令write_cgfmen-formatmcs-interfacespix1。一定要加-interfacespix1,不然所有的bits都會被swap?、尥ㄟ^Xilinx例子中提供的PerlScript生成goldinitimage。script的輸入就是剛才轉換的mcs格式的goldbitstream.mcs。輸出之一是goldinitimage這個image就是圖4中描述的那種鬼畜布局的雙bitstream,只不過兩個bitstream是一樣的。updatebitstream是gold的copy。⑦將goldinital.mcs通過VIVADO或者PROMgen用JTAG直接燒入Flash⑧同樣的方式用PerlScript生成updateimage。輸入是xxx.mcs。輸出之一是xxx_update.mcs。這個就是上文所屬的加了CRC的updateimage。生成過程中perlscript會給出Flash的首地址和結束地址。將SpiFlashProgrammer中的首尾地址改成這兩個地址。注意:因為首尾地址是寫在VHDL里的,也就是說Image的大小是固定的。為了防止在未來,updateimage變大??梢灶A留一部分出來。例如:目前的大小是3.3MB。我們預留0.7MB給未來可能出現的更新。那么我們需要生成的image需要4MB大。這是要給perlscript一個附加的agrument:-imagesize32⑨將xxx_update.mcs轉換成.hex文件。網上有不少工具可以。實在不行谷歌一下mcs格式,自己寫個script轉換一下。⑩FPGA上電,取消SpiFlashProgra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省武漢市問津教育聯合體2024-2025學年高一上學期12月月考地理試題(解析版)
- 機械制造技術基礎 機械制造工程基礎學習課件
- 鎖骨穿刺常規(guī)護理
- 產業(yè)數字化科技創(chuàng)新園產業(yè)生態(tài)系統(tǒng)建設方案
- 山東省煙臺市2023-2024學年高二上學期1月期末英語試題(含答案)
- 2024年初級經濟師題庫附答案(基礎題)
- 2025至2030年中國帶表筆插架數據監(jiān)測研究報告
- 2025年河南推拿職業(yè)學院單招職業(yè)適應性測試題庫完整版
- 2025年度現代服務業(yè)廠房轉租管理協(xié)議
- 肝硬化腹水中醫(yī)護理方案
- 數字賦能農村特色產業(yè)發(fā)展的實證研究
- 新版華師大版八年級下數學教案全冊
- 高中主題班會 《哪吒2》:成長與蛻變課件-高一下學期開學主題班會
- 《教育強國建設規(guī)劃綱要(2024-2035年)》解讀與專題培訓
- 【歷史】“開元盛世”課件-+2024-2025學年統(tǒng)編版歷史七年級下冊
- 2025年春新人教版化學九年級下冊課件 第九單元 溶液 1-課題1 溶液及其應用 第1課時 溶液的形成
- 2024-2025學年高中物理第十二章機械波4波的衍射和干涉課時作業(yè)含解析新人教版選修3-4
- 2025年新華師大版數學七年級下冊全冊導學案
- 《供熱工程》課件
- 倉管員業(yè)務技能培訓
- 安全管理人員七大職責
評論
0/150
提交評論