前幾天終於把 FPGA 的第一個小實驗給做完了,其實它就是很單純地用 Verilog 寫一個 AND Gate 的功能,作為 Zynq 系統中的 PL 層使用;然後在 PS 層中的軟體就寫一個 NOT 的功能,再把 PS + PL 給串接起來,變成 NAND Gate。
這個實驗主要是在熟悉 Vivado 以及 Vitis SDK 工具的操作流程,畢竟功能雖然簡單,但軟硬體要整合該做的流程是一樣的。
我主要是把開發板上兩個指撥開關的訊號直接接到 PL 層,然後再透過 AXI GPIO 的匯流排把 PL 層的輸出訊號給 ARM;接著,再把這個訊號做 NOT 處理,然後透過 AXI GPIO 把處理後的訊號傳到開發板上的 LED 燈。
在實作的過程中,本來我最擔心的 Vivado RTL 開發以及 IP 包裝,反而都非常順利,一下就進行到可以產生 bitstream;雖然過程中針對設定板子的檔案還有點陌生,但也是很快就解決了。
但想不到問題竟然是發生在軟體端,當 Launch Vitis SDK 後,它的開發介面怎麼跟我之前學的都不太一樣,然後我在找 AXI GPIO 0 的 Device ID 時,翻遍了都找不到,由於這個 ID 是初始化的重要位址,找不到我是要怎麼做下去阿!
一度我以為是 bitstream 的問題、硬體層沒設計好,或是在生成 BSP 的時候,有哪個地方沒注意到,但重覆操作了幾次,都沒問題阿! 那 Device ID 怎麼還是不見蹤影? 是鬼打牆喔?
因為時間關係,這個問題就先被我擱置不管,過了幾天後,我努力在網路上尋找是不是有人跟我碰到一樣的狀況,後來才終於這篇文章上找到答案「Introducing Vitis Unified IDE」。
靠! 原來不是我搞錯,而是新版本的 Vitis SDK 不止介面大改版,連一些已經沿用多年的細節都改掉了,Device ID 被取消掉,直接用 Base Address 就可以完成初始化。
好吧,只能承認自己的愚蠢,沒有第一時間就了解新版到底改動了什麼,不過想了想,反正之後也會碰到,那還不如先遇到、先解決,這也帶給我去錄新的教學影片的動力,畢竟新版本的介面差異確實有點大。
後續我會安排超過十個的 FPGA 實驗,希望都可以順順利利的完成,然後再開始寫我的教學筆記,以及錄製教學影片。
沒有留言:
張貼留言