MY CLASSROOM

四格漫畫:Valid 與 Ready 到底誰等誰?

讓資料先生與接收小姐演一次握手協定,四格看懂 valid-ready 最常見的設計誤會。

第一格:資料已經準備好了

資料先生:「我的資料準備好了,所以我把 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