概念
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的內容。
範例
一、File -> Convert Programming File...
四、單擊Input files to convert下的Flash Loader,確保選取到Flash Loader之後,點擊Add Deivce
沒有留言:
張貼留言