---
# System prepended metadata

title: Lab6 observe

---

Lab6 observe
這次 lab 主要分為 2 個部分，主要是驗證 firmware 端的 4 個
功能正確性，以及把它們整合在一起，最後在放到 FPGA
來上來進行驗證，相較於 LAB5 此次多了兩個 IP，分別是
axi-uartlite 和 interrupt-Control，當收到資料時，需要產生
中斷訊號的 ip 以及收資料的 ip，運作原理如下
當 ps 端寫一筆 data 給 caravel，它會透過 axi-interconnect 送
到 axi-uartlite，然後 caravel 會去接這筆資料，data 會經過
axi-uartlite-rx 傳給 caravel_uart-tx，而從 caravel 端要傳 data
給 ps 端，data 會經由 caravel_uart-rx 傳給 axi-uartlite-tx，然
後當 axi-uartlite 接收到資料時，它會去 trigger interrupt，而
資料會經由 interrupt-ctrl 傳給 ps 端。(ps 端的 irq 會讓 ps 端
知道已經有資料從 caravel 送過來了)
而其他的 ip 功能跟 lab5 相同，執行 pythin code 來進行驗
證，透過 ip 來完成資料的傳遞。
透過 read_romcode ip 來將.hex 傳遞。將資料從 DDR 內傳遞
至硬體 BRAM 內。
透過 RsetControl ip 來溝通 PS 與 Caravel 內的 MPRJ_IO。
用此 ip 設定 reset 信號控制，1 或 0 分別控制 Caravel 的
reset pin 是 assert 還是 de-assert。
透過 MPRJ_IO 經由 caravel_ps 這個 ip 在執行完後溝通。提
供 AXI Lite 接口供 PS CPU 讀取 MPRJ_IO/OUT/EN bit，用
HLS 實現並導出 IP 以供 Vivado 使用。
在此次實驗過程中，因為忘了在 include.rtl.list 放入修改的
檔案路徑，導致一直跑出 error，以及一開始在 run firmware
時會一直出現 time_out，所幸最後都有在 github 上找到解
答。