使用 Xilinx 開發板:連接 Interrupt
故事是這樣子的,一般來說 IP 的工作流程,我們會透過 AXI Lite 寫入 register 叫 IP 開始工作,那我們要怎麼知道 IP 工作已經完成了?
...故事是這樣子的,一般來說 IP 的工作流程,我們會透過 AXI Lite 寫入 register 叫 IP 開始工作,那我們要怎麼知道 IP 工作已經完成了?
...上一章
我們看了怎麼從記憶體中讀取資料放給
IP 模組,這篇我們就反過來,從 IP 模組中送資料給記憶體。
很多東西跟讀取是一樣的,會跳過不少 DMA 相關的介紹,比較簡單一些。
在上一篇我們看到如何連接 AHB bus 之後,這篇我們來看看 AXI stream。
如果有看過 AXI Lite 介面的使用方式,它是幫你把 AXI 的讀寫轉化成內部的
registers,而每次的讀寫都是超級花費時間的事情,如果有大量的資料需要讀寫,用 AXI Lite
並在讀寫空間開幾百個 registers 就很不適合,太浪費時間,沒辦法有效率的把資料送進 IP,或從 IP 讀出來。
在上一篇,我們在 PynqZ2 上面建立了 SoC,並且能用 AXI Lite 介面去控制它,然而現實中使用
AXI 其實是相對奢侈的;在比較簡單的實作上,會使用較簡單的 APB 或是 AHB bus。
在這篇文章我們就來說明要怎麼實作並連接一個 AHB 的 IP,並讓 PS side 可以存取。
故事是這樣子的,之前說到 強者我同學給了我一些 Pynq AHB 相關的文章,最近忙完一個階段重新開始改稿,發現只有那一篇好像有點乾,就決定把它擴展一下。
...故事是這個樣子的,大概在一年半前,我花了幾個月小玩了一下從 COSCUP 那邊拿到的 FPGA,那時候是在我的桌電 - 也就是 Archlinux 上進行開發。
最近因為一些原因又把這塊板子拿出來,但這次,我改用我新的筆電,裝的是 Windows 的 WSL 搭配 ubuntu 22.04,然後就發現,
我在文章中
列出來的幾項工具,包括 yosys, nextpnr, prjtrellis,
只有 yosys 能在 ubuntu 上用 apt 完成安裝,其他都在自己編譯,不像 Archlinux 上有人幫你弄好 AUR 了。
這篇文就是安裝工具的筆記,希望能幫到其他想在 ubuntu 上玩 lattice FPGA 的人, 主要參考這篇文章 ,以及一些工具 Github 的 issue。
...終於來到我隱藏已久的終極目標了。
沒錯,其實我在拿到這片 FPGA,在想要做什麼的時候,經過一天得到的答案就是這個:Nand2Tetris
,
用 FPGA 真的把這顆 CPU 給做出來,前面什麼 UART、HDMI、BRAM 都不過是前菜罷了,實際上我在下很大一盤棋。
當然,因為我們用的是 verilog 的關係,我們不會真的從 nand gate 開始往上堆,而是用 verilog 內建的運算來實作,
所以 nand2tetris 第一、二章用 nand 弄出邏輯閘和加法器的部分就跳過,直接從 ALU 開始。
這次的更新比較久一點,故事是這樣子的,在試完 HDMI 之後,我花了一點時間在試著連 FPGA 版上有實體 chip 的其他裝置, 包括:SDRAM、Flash 跟 SDcard。問題是這幾個都沒那麼好連,特別是沒有 LA 的狀況下根本就是瞎子摸象, 只能用 verilator 跑跑波型,波型對了放上去不會動你也不知道是什麼問題。
...上一章我們打通了 FPGA 的開源工具鏈,接下來我們就能測試一下 icesugar-pro 有的介面,
首先實作 FPGA 還是需要有輸入輸出,否則也只是弄出一個無法互動的程式,而最簡單的輸出入介面,就當屬 UART 了。
icesugar-pro 的 github 上,也附上了一個 UART 的範例
,
會不斷對你的電腦輸出 “0” 到 “9”(然後這段 code 還有 bug XD),這篇我們就來寫一個有 tx, rx 的 UART 模組吧。