Altera FPGA 使用JIC文件配置固化教程

很多做過單片機的朋友都知 道,我們在對MCU燒寫完程序固件後,那麼該程序固件就存儲在了該MCU內部。即使MCU斷電了再重新上電,程序也能繼續運行。這是因爲對MCU燒寫固件 的實質就是將程序固件寫入到MCU的片上程序存儲器ROM中,而現代的大部分MCU這個ROM都是FLASH存儲器。FLASH存儲器能夠掉電保持數據, 所以可以實現掉電程序不丟失。Altera或Xilinx的FPGA芯片,使用的是基於SRAM結構的查找表,而SRAM的一大特性就是掉電數據會丟失, 當我們使用JTAG將SRAM配置文件(.sof)配置到FPGA芯片中後,這些數據是直接存儲在SRAM結構的查找表中的,因此,一旦芯片掉電,則 SRAM中的數據將丟失,再次上電後,SRAM中將不再有有效的數據。這也就是我們常見的,使用JTAG下載SOF固件到FPGA中後,板子重新上電,則 之前下載的固件又不在了的原因。當我們的系統做穩定後並量產時,當然希望能夠永久保持電路固件,即讓FPGA上電後其查找表中就被寫入有效的數據。但是我 們又不能總是每次系統上電了就用JTAG去下載一次程序固件。因此,FPGA支持另外一種配置方式:主動串行配置。

   所謂主動串行配置,就是在FPGA芯片外部放置一片能夠掉電數據不丟失的存儲器,例如最常見的EPCS、QFLASH、並口FLASH,來存儲設計好的電 路固件。而FPGA芯片內部,則設計了一個專用的硬件電路,在芯片剛上電的時刻就主動去讀取存儲在該存儲器中的固件,並配置到FPGA芯片的每一個 SRAM中去。通過這樣一種方式,即可在不改變FPGA芯片SRAM工藝的查找表結構前提下,讓每次芯片上電後,都能獲得有效的配置數據。外部存儲電路配 置信息的芯片,我們稱之爲配置芯片。前些年,Altera的FPGA芯片指明只能使用其公司自己發售的EPCS芯片作爲外部配置器件,該EPCS芯片實質 就是一個SPI接口的串行FLASH芯片,不過是經過了Altera的嚴格測試,性能優異。而近些年,隨着芯片生產工藝的不斷髮展,很多其他廠家生產的 SPI接口的FLASH芯片也能夠達到EPCS的技術標準,因此Altera就放開了該限制,並指出可以使用其他芯片廠家生產的SPI接口的FLASH芯 片代替EPCS。我們芯航線starter board上就使用了一片ST公司生產的16Mbit的串行FLASH芯片M25P16來作爲配置芯片。該芯片性能優異,完全能夠達到EPCS的性能標 準,而成本則只有相同容量的EPCS芯片的一半不到。

   當我們需要將設計好的配置固件固化到該器件中時,有兩種方式,第一種方式,也就是傳統的方式是使用專用AS接口(與JTAG 10針接口獨立)來直接燒寫該配置芯片,該種方式需要在電路板上設置一個獨立的AS接口,佔用PCB板面積。第二種方式,也是現在流行的方式則是通過 JTAG接口,經由FPGA芯片間接燒寫該配置芯片。我們的開發板沒有做獨立的AS接口,因此只支持第二種燒寫方式。以下對該種燒寫方式以一個實際例子來 進行講解說明。

1,打開希望固化的FPGA設計工程,這裏我直接打開按鍵消抖這節課的工程。

2,在quartus ii軟件中點擊File—>Convert Programming Files,如下圖所示:

3,在彈出的窗口中,Programming file type 選擇JTAG Indirect Configuration File(.jic),Mode選擇Active Serial,Configuration device選擇EPCS16,File name默認是output_file.jic,這裏,我們養成良好的習慣,將其改成工程名字:key_filter.jic。

4,在input files to convert一欄中,點擊Flash Loader一項,在右側點擊Add Device選項,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

5,點擊Add Device選項後在彈出的選項卡中,選擇EP4CE10,然後點擊OK,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

6,點擊OK後會回到先前的配置頁面,此時再次鼠標點擊SOF Data,再點擊右側的Add File,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

7,在彈出的窗口中,在output files文件夾下找到“key_filter.sof”文件,點擊open,即可添加進來,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

8,點擊open後,回到配置頁面,點擊Generate按鈕,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

9,點擊Generate按鈕後,則軟件開始轉換文件,轉換成功後彈出成功提示窗口,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

10,點擊OK即可,然後close窗口。

11,打開Quartus II中的下載工具programmer,將原有的sof文件移出,重新添加key_filter.jic文件進來,勾選programming/configuration,如下圖所示:(溫馨提示:點擊圖片可查看高清大圖)

2,設置完成後,點擊Start(前提是下載器與開發板已經正確連接),則軟件開始燒錄固件,整個燒錄時間大約花費20秒鐘左右。燒錄完成後,此時固件 已經保存在了配置芯片中,但是此刻FPGA還不能運行該固件,因爲當前的固件是存在配置芯片中的,並沒有被配置到FPGA中,因此需要讓FPGA執行一次 從配置芯片中主動配置固件的過程,方法很簡單,給開發板斷電後重新上電即可。此時,我們按下按鍵0或者按鍵1,就可以看到LED的狀態發生變化了。斷電再 上電,固件依舊保持,整個設計固化工作完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章