SoC FPGA開發板的FPGA配置數據下載和固化
小梅哥編寫,未經許可,嚴禁用於任何商業用途
2018年7月2日星期一
soc fpga的燒寫和固化方式與傳統的純fpga固化方式即存在形式上的相同,也存在細節上的差異,特整理此文。AC501-SoC開發板在上電時能夠根據啟動設置開關的設置,選擇從EPCS或者HPS中啟動。具體是通過EPCS還是HPS啟動,由一個6位撥碼開關通過設置不同的值來決定。
配置方式 |
MSEL0~4 |
MSEL5 |
描述 |
AS |
5’b10110 |
未使用 |
FPGA從EPCS配置 |
FPPx32/ Compression Enabled /Fast POR |
5’b10101 |
未使用 |
FPGA從HPS軟件配置,在U-Boot階段讀取存儲在SD卡上的rbf文件,然後配置FPGA |
FPPx16/ Compression Disable /Fast POR |
5’b11111 |
未使用 |
FPGA從HPS軟件配置,在U-Boot階段讀取存儲在SD卡上的rbf文件,然後配置FPGA |
AC501-SoC開發板支持兩種方式來配置FPGA:
1、使用JTAG編程:此種方式下,FPGA的配置bit流文件直接被下載入Cyclone V SoC FPGA中,下載之後FPGA就會按照該配置文件的信息運行。但是一旦FPGA的供電被關閉了,配置信息也就丟失了。
2、使用AS方式:AS方式全稱為主動串行配置(Active Serial configuration),此種方式下FPGA的配置bit流文件會被下載進串行配置器件(EPCS)中,EPCS是一種SPI接口的Nor Flash存儲器,即使掉電之後,數據依然存在不會丟失。當開發板下次上電時,如果MSEL設置了從EPCS中啟動,則Cyclone V SoC FPGA會自動從EPCS中加載配置數據。
AC501-SoC開發板上設計了標準的IDC3-10的USB Blaster接口,使用USB Blaster,實現PC連接FPGA和HPS,並完成配置bit流的傳輸以及運行調試。和傳統的單芯片純FPGA方式不同,Cyclone V SoC FPGA上的JTAG鏈同時連接了FPGA和HPS。因此在使用JTAG配置FPGA時過程也有一定的差別。接下來以一個具體的例子分別講解配置sof到FPGA中和燒寫jic格式的配置文件到EPCS中。
打開一個FPGA工程,如本例以FPGA的LED測試工程“led”為例,在菜單欄中依次點擊Tools > Programmer或直接點擊Programer圖標以打開下載界面。打開之後,軟件可能會默認搜索到工程下的led.sof文件並添加進來了,如下圖所示。如果沒有添加也沒有關系,因為添加的內容我們後面操作時也會手動將其刪除的。
如果Hardware Setup一欄沒有自動找到USB Blaster,則可能需要檢查USB Blaster是否正常連接且已經安裝好了驅動。如果USB Blaster就緒了,此刻我們直接點擊Start來下載添加的sof文件是會失敗的,這是因為JTAG鏈上連接了FPGA和HPS兩個設備,下載器不知道需要將文件下載到哪個設備中。
首先點擊左側的Auto Detect按鈕,以使用JTAG鏈檢測其連接的設備型號。會提示同一個JTAG ID對應的多個設備,根據我們使用的器件型號為5CSEBA2,因此選擇第一個然後OK。
此時軟件會提示自動檢測到的設備和Programer中已經添加的設備不匹配,詢問是否更新,點擊YES更新即可,如下圖所示。
更新完成後可以看到,Programer窗口的下方展示了JTAG鏈上的設備關系,如下圖所示。主要是TDI這個信號線,首先進入SOCVHPS中,然後從SOCVHPS的TDO端口流出,進入FPGA(5CSEBA2)的TDI端口,再從FPGA的TDO端口流出,回到JTAG接口的TDO信號上。選中Device一欄中的5CSEBA2項,右鍵單擊,在彈出的對話框中選擇Change File,然後找到sof文件並添加。
點擊sof文件對應的Program/Configure復選框以選中,然後點擊Start按鈕,就可以開始配置sof文件到FPGA中了。配置完成後,可以看到開發板上的兩個FPGA_LED燈分別閃爍,其中FPGA_LED0的閃爍頻率是FPGA_LED1的兩倍。
通過以上方式,完成了sof文件下載到FPGA中的功能。但是此時下載的數據是保存在FPGA的SRAM中的,掉電之後數據就丟失了,為了能夠實現FPGA上電自動配置的功能,可以將配置數據bit文件轉化為jic文件,燒寫到EPCS存儲器中,並設置FPGA從EPCS中啟動,這樣FPGA下次上電時就能夠自動從EPCS中加載配置數據了,無需再用JTAG下載。接下來講解AC501-SoC開發板上所用Cyclone V SoC FPGA器件的jic文件生成以及燒寫方式。
同樣還是打開一個設計好的FPGA工程,如led,然後在菜單欄中依次點擊File > Convert Programming Files,如下圖所示。
在打開的窗口中,選擇Programming file type為JTAG Indirect Configuration File(jic)、Configuration device為EPCS16,註意,是EPCS128,不是EPCQ128,File name設置一個有辨識度的名字,例如led.jic,如下圖所示:
選中下方的Flash Loader,然後點擊右側的Add Device,如下圖所示:
在彈出的對話框中選擇AC501-SoC開發板上使用的FPGA器件5CSEBA2,然後點擊OK。
選中SOF Data選項,然後點擊右側的Add File,添加led.sof並確認。
添加好之後,點擊右下角的Generate按鈕,就能生成jic文件了。
燒寫時,依然是先通過Auto Detect檢測器件,然後選中FPGA器件右擊以Change File,只是添加File的時候,選擇剛剛generate好的led.jic文件。勾選Program/Configure選項,然後點擊Start,就能夠完成燒寫到EPCS的功能了。
SoC FPGA開發板的FPGA配置數據下載和固化