2024年3月10日 星期日

Zynq 系列:FPGA 的第一個實驗 PS + PL for NAND Gate

前幾天終於把 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 0Device ID 時,翻遍了都找不到,由於這個 ID 是初始化的重要位址,找不到我是要怎麼做下去阿!

一度我以為是 bitstream 的問題、硬體層沒設計好,或是在生成 BSP 的時候,有哪個地方沒注意到,但重覆操作了幾次,都沒問題阿! 那 Device ID 怎麼還是不見蹤影? 是鬼打牆喔?

因為時間關係,這個問題就先被我擱置不管,過了幾天後,我努力在網路上尋找是不是有人跟我碰到一樣的狀況,後來才終於這篇文章上找到答案「Introducing Vitis Unified IDE」。

靠! 原來不是我搞錯,而是新版本的 Vitis SDK 不止介面大改版,連一些已經沿用多年的細節都改掉了,Device ID 被取消掉,直接用 Base Address 就可以完成初始化。

好吧,只能承認自己的愚蠢,沒有第一時間就了解新版到底改動了什麼,不過想了想,反正之後也會碰到,那還不如先遇到、先解決。

這也帶給我去錄新的教學影片的動力,畢竟新版本的介面差異確實有點大。

後續我會安排超過十個的 FPGA 實驗,希望都可以順順利利的完成,然後再開始寫我的教學筆記,以及錄製教學影片。

沒有留言:

張貼留言

出乎意料之外的新產品進展

一個星期前我寫下「 新產品的契機 」來記錄內心對於新產品的期待與不安,但沒料到的是在短短一週內,竟然接連傳來好消息,這該歸功於我們的合作夥伴,他們的推廣能力超出我的預期。 下週又有兩個潛力十足的新產品應用要出機,今天被告知其中一個可能有非常可觀的數量。 對我來說,沒看到真的訂單,...