【SoC FPGA学习】十、SoC FPGA 开发板的 FPGA 配置数据下载和固化
文章目錄
- 一、SoC FPGA 啟動配置方式介紹
- 二、USB Blaster 驅動安裝
- 三、sof 文件生成與燒寫
- 四、jic 文件生成與燒寫
一、SoC FPGA 啟動配置方式介紹
Cyclone V 的 FPGA 側是基于 SRAM 的結構的, 而 SRAM 中的數據掉電就會丟失,因此系統上電后,必須要由配置電路將正確的配置數據加載到 SRAM 中,然后 FPGA 才能夠正常的運行。
Intel Cyclone V SoC FPGA 支持在上電時根據啟動設置引腳的電平狀態選擇從 EPCS(一種配置器件) 或者 HPS(硬件處理器系統) 中啟動。一般的硬件板卡在設計時,都使用撥碼開關來設置啟動設置引腳的電平。具體是通過 EPCS 還是 HPS 啟動,由一個 6 位撥碼開關通過設置不同的值來決定。 下圖所示為 AC501-SoC 開發板上的啟動設置撥碼開關。
Cyclone V SoC FPGA 有 5 位的啟動設置引腳用于啟動方式的設置,為MSEL0~MSEL4。這四個引腳的不同狀態,會設定不同的啟動方式,詳細的啟動方式與 MSEL 腳狀態如下表所示。
| AS(FPGA主動串行配置) | 10010 | FPGA從EPCS快速配置 |
| AS(FPGA主動串行配置) | 10011 | FPGA從EPCS標準速度配置 |
| FPPx32/Compression Enabled /Fast POR | 01010 | FPGA 從 HPS 軟件配置,在 應用程序中 讀取存儲在 SD 卡上的 rbf 文件,然后配置 FPGA |
| FPPx16/Compression Disable /Fast POR | 00000 | FPGA 從 HPS 軟件配置,在 U-Boot 階段 讀取存儲在 SD 卡上的 rbf 文件,然后配置 FPGA |
| JTAG方式 | \ | FPGA 的配置 bit 流文件直接被下載入Cyclone V SoC FPGA 中,下載之后 FPGA 就會按照該配置文件的信息運行。 但是一旦 FPGA 的供電被關閉了,配置信息也就丟失了 |
上表中,最常用的兩種數據配置方式如下:
- 1、使用 JTAG 編程: FPGA 的配置 bit 流文件直接被下載入Cyclone V SoC FPGA 中,下載之后 FPGA 就會按照該配置文件的信息運行。 但是一旦 FPGA 的供電被關閉了,配置信息也就丟失了。
- 2、使用 AS 方式: AS 方式全稱為主動串行配置(Active Serialconfiguration), 此種方式下 FPGA 的配置 bit 流文件會被下載進串行配置器件(EPCS) 中, EPCS 是一種 SPI 接口的 Nor Flash 存儲器,即使掉電之后,數據依然存在不會丟失。當開發板下次上電時,如果 MSEL 撥碼開關設置了從 EPCS 中啟動,則 Cyclone V SoC FPGA 會自動從 EPCS 中加載配置數據。
一般的原廠或第三方合作廠商在設計硬件板卡時, 都直接在板卡上集成了對應的 USB Blaster II 下載調試電路,該電路實現了 USB 轉 JTGA 協議的功能,使用該電路就能實現 PC 通過 JTAG 協議和 SoC FPGA 芯片通信的功能。而在 AC501-SoC 開發板上, 并未設計板載的 USB Blaster II 下載調試電路, 但是提供了標準的 IDC3-10 的 USB Blaster 接口, 使用時可以使用獨立的 USB Blaster 設備, 通過該接口與 AC501-SoC 開發板上的 SoC FPGA 器件相連, 以支持 PC 使用 JTAG 協議連接 FPGA 和 HPS,并完成配置 bit 流的傳輸以及運行調試的功能。
和傳統的單芯片純 FPGA 方式不同, Cyclone V SoC FPGA 上的 JTAG 鏈同時連接了 FPGA 和 HPS。 因此在使用 JTAG 配置 FPGA 時過程也有一定的差別。 接下來以一個具體的例子分別講解配置 sof 到 FPGA 中和燒寫 jic 格式的配置文件到 EPCS 中的方法。
二、USB Blaster 驅動安裝
USBBlaster驅動是給FPGA下載程序時候用的,不安裝的話會無法下載程序到FPGA。需要注意的是,安裝USB Blaster之前,確保自己安裝好了Quartus軟件。
驅動安裝參考梅哥:http://www.corecourse.cn/forum.php?mod=viewthread&tid=27738
注意,當USB Blaster 的USB一端連接上PC端后,理論上在設備管理器中就會更新出USB Blaster,無論下面哪種形式都可以:
如果并沒有出現上述兩種圖標,要么是線壞了(我的就是這種情況,多謝小慶幫忙解決!),要么就是USB Blaster壞了!
如果出現的是標黃的USB-Blaster,說明是驅動沒有安裝好,這時可以右擊USB-Blaster,選擇其中的“更新驅動程序”
然后選擇“瀏覽我的電腦以查找驅動程序(R)”
接著選擇quartus安裝目錄下的drivers所在目錄【注意一定是drivers所在目錄】,并勾選下面的“包括子文件夾(I)”后,點擊下一步,即可自自動安裝。
安裝完畢后,如下圖所示,單擊關閉即可。
而后再看設備管理器,會發現標黃的USB-Blaster會變成如下圖所示
至此USB-Blaster的驅動安裝完畢。
三、sof 文件生成與燒寫
在sof文件燒寫之前,還是有必要再回顧一下生成sof文件的方法,如下圖所示:
我們可以根據時間戳,判斷sof文件是否是最新生成的
接下來便是下載sof文件,在下載 sof 時,對 FPGA 的啟動方式設置無任何要求,任意一種狀態都可以,因為 JTAG 模式配置 FPGA 的優先等級最高, 不受啟動方式設置的影響。
打開一個 FPGA 工程,如本例以 FPGA 的 LED 測試工程“led”為例。(該工程位于:AC501-SoC開發板資料文件夾版\Demos\FPGA下,注意要將其拷貝到沒有中文的目錄下。)
在菜單欄中依次點擊 Tools > Programmer 或直接點擊 Programer 圖標以打開下載界面,如下圖所示。
打開之后,軟件可能會默認搜索到工程下的 led.sof 文件并添加進來了,如下圖所示。如果沒有添加也沒有關系, 因為添加的內容我們后面操作時也會手動將其刪除的。
需要我們關注的是其中的USB-Blaster[USB-0]一欄是否正常顯示,如果 Hardware Setup 一欄沒有自動找到 USB Blaster,則可能需要檢查以下兩個方面
-
①、USB Blaster 是否正常連接
-
②、USB Blaster 驅動是否裝好
- 參考上面的 1.1 小節
-
③、正常連接并且驅動已經安裝好,但是沒有選中,選中方法如下:
單擊其中的,然后雙擊下圖中的USB-Blaster,雙擊完畢后該界面上方的 Currently selected hardware會顯示,最后Close。
close出來再看,會發現此時USB-Blaster[USB-0]便顯示出來了!
如果 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,然后找到該工程output_files目錄下的 led.sof 文件并添加,如下圖所示:
選擇后的顯示效果如下圖所示,同時此時led.cdf后面會顯示一個*,表示修改了未保存,可以通過ctrl+s進行保存!
點擊 sof 文件對應的 Program/Configure 復選框以選中(最后修改完畢后,別忘了保存led.cdf文件),然后點擊 Start 按鈕,就可以開始配置 sof 文件到 FPGA 中了,如下圖所示:
燒寫成功后,右上角會顯示Successful!
配置完成后, 可以看到開發板上的兩個 FPGA_LED 燈分別閃爍,其中 FPGA_LED0 的閃爍頻率是 FPGA_LED1的兩倍。
四、jic 文件生成與燒寫
通過以上方式,完成了 sof 文件下載到 FPGA 中的功能。但是此時下載的數據是保存在 FPGA 的 SRAM 中的,掉電之后數據就丟失了,為了能夠實現FPGA 上電自動配置的功能,可以將配置數據 bit 文件轉化為 jic 文件,燒寫到 EPCS 存儲器中,并設置 FPGA 從 EPCS 中啟動,這樣 FPGA 下次上電時就能夠自動從 EPCS 中加載配置數據了, 無需再用 JTAG 下載。
接下來講解 AC501-SoC 開發板上所用 Cyclone V SoC FPGA 器件的 jic 文件生成以及燒寫方式。
當需要燒寫 jic 文件到 epcs 中時,需要首先設置 FPGA 從 EPCS 中啟動,即設置 MSEL[4…0]為 10010 ,即 FPGA從EPCS快速配置。
同樣還是打開一個設計好的 FPGA 工程,如 led,然后在菜單欄中依次點擊 File > Convert Programming Files,如下圖所示。
在打開的窗口中, 選擇 Programming file type 為 JTAG Indirect ConfigurationFile(jic)、 Configuration device 為 EPCS16, 注意, 是 EPCS128, 不是EPCQ128, File name 設置一個有辨識度的名字,例如 led.jic,如下圖所示:
接著選中下方的 Flash Loader,然后點擊右側的 Add Device, 如下圖所示:
在彈出的對話框中選擇用戶使用的開發板上使用的 FPGA 器件。例如對于AC501-SoC,應該選擇 5CSEBA2。 而如果用戶使用的是 DE10-Nano-SoC 開發板,則應該選擇 5CSEBA6, 然后點擊 OK,如下圖所示:
選中 SOF Data 選項,然后點擊右側的 Add File,添加 led.sof 并確認,如下圖所示:
然后選擇output_files文件夾下的led.sof文件,并單擊Open。
添加好之后,點擊右下角的 Generate 按鈕, 就能生成 jic 文件了,如下圖所示:
在生成過程中,會彈出問你是否要覆蓋led.jic文件,選擇Yes即可!
生成完畢后,彈出如下圖所示提示框,點擊OK即可關閉,如下圖所示:
而后點擊叉號關閉Convert Programming File窗口,如下圖所示:
接著進行燒寫,依然是先通過 Auto Detect 檢測器件,然后選中 FPGA 器件右擊以Change File,只是添加 File 的時候,選擇剛剛 generate 好的 led.jic 文件。 勾選Program/Configure 選項,然后點擊 Start,就能夠完成燒寫到 EPCS 的功能了。如下圖所示:
燒寫完成后,給開發板重新上電, 可以看到開發板上的兩個 FPGA_LED 燈分別閃爍,其中 FPGA_LED0 的閃爍頻率是 FPGA_LED1的兩倍,并且斷電再上電后仍可以保持程序不丟失!
總結
以上是生活随笔為你收集整理的【SoC FPGA学习】十、SoC FPGA 开发板的 FPGA 配置数据下载和固化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言学习笔记(一)
- 下一篇: C语言short精解