分類

2022年10月2日 星期日

如何在啟動FPGA板後就自動完成燒錄?

概念

PS. 這篇是基於Altera DE0 board (Cyclone III FPGA)撰寫,所以對於Xilinx或其他FPGA使用者而言,一些實驗細節或用詞請自行斟酌著看,但概念大同小異。

很多做過MCU的人都知道,在對MCU燒錄完程式後,程式就存在MCU裡了。即使MCU斷電後再重新上電,MCU也會繼續按照程式的內容持續運作。這是因為對MCU燒錄實質上就是將程式寫入到MCU的內的ROM(通常是flash)中,所以能夠實現掉電仍保持資料的效果,也就是Non-Volatile Memory(NVM)的應用。關於記憶體還有很多可以展開的內容,這就不再篇題了。

那麼FPGA之所以做不到像MCU一樣,上電即執行是因為FPGA的結構是基於SRAM所建立的Lookup table(LUT),而SRAM是屬於一種Volatile Memory,所以當我們使用JTAG將.sof檔燒錄到FPGA晶片上之後,這些資料是直接儲存在SRAM結構的LUT中,因此一旦FPGA掉電,SRAM中的資料就會消失,再上電後SRAM裡就不會再有先前寫入的資料,這也就是為什麼FPGA重新上電之前燒入的程式又不在了的原因。

當我們的系統做穩定後並想要長期使用時,當然希望能夠永久保持FPGA內的電路(對,我就是寫"電路"而不是"程式"是因為FPGA本來就是基於HDL),難道每次系統上電了就要用電腦連接JTAG去燒錄一次?因此Altrea創造了FPGA Configuration Memory為這一個難題提供了一個解決方案。

FPGA Configuration Memory是一個Altera自行開發的一種flash,這個系列又稱為Serial Configuration Devices 其中有EPCS1、EPCS4、EPCS16、EPCS64與EPCS128……等等,而Altera FPGA 內部設計了一個專用的硬體電路,使FPGA一上電就立刻讀取Configuration Memory的內容,並燒錄到FPGA內部的SRAM裡,如此一來可以讓每次FPGA上電後自動完成燒錄並立馬開始運作HDL code的內容。


範例

❗執行以下的步驟前請先確認HDL code已經完成Compilation

一、File -> Convert Programming File...

Fig. 1


二、選擇.jic檔
Fig. 2


三、這個步驟要先知道自己所使用的FPGA晶片是哪一款?

我的Cyclone III是EP3C16,所以可以看到datasheet如Fig. 2所示,EP3C16是使用Configuration Devices的EPCS4、EPCS16、EPCS64、EPCS128
我這裡直接給個連結"Cyclone® Handbook",我不確定連結之後會不會死去,如果連結死去可以在intel的網站上搜尋"Serial Configuration Devices"或使用型號的Handbook,相信也可以找到相關文件。


Fig. 2

確認自己所對應的Devices,例如我就選EPCS4,如Fig. 3


Fig. 3


四、單擊Input files to convert下的Flash Loader,確保選取到Flash Loader之後,點擊Add Deivce

Fig. 4


五、選擇所自己使用的Device後按OK,如Fig. 5所示
Fig. 5


六、單擊Input files to convert下的SOF Data,確保選取到SOF Data之後,點擊Add File...如Fig. 6所示
Fig. 6


七、選擇Compilation完成之後所產生的.sof檔案,如Fig. 7所示

Fig. 7


八、單擊SOF Data下的.sof檔,確保選取到.sof檔之後,點擊Properties,然後會彈出視窗問是否要壓縮,這裡勾選之後點擊OK如Fig. 8所示
Fig. 8



九、接著點選Generate後會教出成功產生.jic檔的提示,如Fig. 9所示
Fig. 9


十、接著打開Programmer -> Add File選取前一步驟產生的.jic檔,然後將Program/Configure勾選起來再點擊Start即完成燒錄,在此之後就可以享受上電即執行HDL的方便了。
Fig. 10




沒有留言:

張貼留言

如何在啟動FPGA板後就自動完成燒錄?

概念 PS. 這篇是基於Altera DE0 board (Cyclone III  FPGA)撰寫,所以對於Xilinx或其他FPGA使用者而言,一些實驗細節或用詞請自行斟酌著看,但概念大同小異。 很多做過MCU的人都知道,在對MCU燒錄完程式後,程式就存在MCU裡了。即使MC...