第一格:資料已經準備好了
資料先生:「我的資料準備好了,所以我把 valid 拉高。你現在不收也沒關係,我會保持資料不變。」
接收小姐:「收到。但我的 buffer 還滿著,ready 先維持 0。」
第二格:等待不是重送
資料先生:「我繼續保持 valid=1,資料也還是同一筆。這不是每個 cycle 都送一筆新的喔。」
旁白: 只有 valid && ready 同時成立的 clock edge,才算完成一次 transfer。
第三格:握手完成
接收小姐:「空間準備好了,ready=1!」
資料先生:「太好了。這個 clock edge,我們正式完成交接。」
cycle 1 2 3 4
valid 1 1 1 0
ready 0 0 1 1
transfer 0 0 1 0
第四格:最常見的誤會
新手工程師:「那我看到 ready=0,就把 valid 放掉?」
資料先生與接收小姐:「不行!這樣資料可能永遠等不到交接。」
帶走一句話
送出端一旦宣告 valid,通常就必須維持 valid 與資料穩定,直到某個 clock edge 看見 ready=1。