什麼是交握(Handshake)

透過交換發送端的請求(req)與接收端的回應(ack),確實傳遞資料的方式。在時脈域之間只同步 req 與 ack,期間資料保持不變,因此安全,但每次傳輸需要數個週期以上。

日文名稱: ハンドシェイク

「交握(Handshake)」出現在3領域的8道練習題中(時序分析與CDC, 介面與匯流排規格, 邏輯電路等)。

這個名詞所屬的領域: 時序分析與CDC

練習交握(Handshake)的題目

在使用req與ack的4相交握中,傳遞1筆資料時訊號的順序何者正確?

  1. A將req設為1的同時開始改變資料 → 接收端將ack設為1 → 將req與ack同時設為0
  2. B接收端先將ack設為1 → 發送端確定資料並將req設為1 → 接收端取入資料 → 將req與ack同時設為0
  3. C確定資料並將req設為1 → 接收端取入資料並將ack設為1 → 將req設為0 → 將ack設為0
查看答案與解析

正確答案:C. 確定資料並將req設為1 → 接收端取入資料並將ack設為1 → 將req設為0 → 將ack設為0

在4相交握中,req與ack各上升、下降1次,共4次變化完成1次傳遞。發送端確定資料後拉高req,接收端看到同步化後的req就取入資料並拉高ack。發送端看到同步化後的ack就拉低req,接收端看到req下降後拉低ack。req與ack都是1位元,因此可用2級同步器安全傳遞。若一邊改變資料一邊拉高req,接收端可能取入變化中的值。

以交握進行時脈域間資料傳輸的缺點,何者正確?

  1. Areq與ack的同步化需要往返,1次傳輸需花費許多週期,不適合連續大量傳輸
  2. B傳遞多位元資料時,各位元同步化的錯開會使資料損壞
  3. C發送端與接收端的時脈頻率不相同就無法使用
查看答案與解析

正確答案:A. req與ack的同步化需要往返,1次傳輸需花費許多週期,不適合連續大量傳輸

在4相交握中,req傳到接收端需要同步化的2個週期,ack傳回發送端需要2個週期,各自回到0也需要同樣的時間,因此1次傳輸在兩個時脈域合計需要8個週期以上。所以適合用於如控制暫存器設定值這類偶爾才傳遞的資料。資料在傳輸期間一直保持穩定,因此不會發生位元錯開造成的錯誤,也不受頻率比限制。若要幾乎每個週期都傳送資料,則使用非同步FIFO。

解析中的「交握(Handshake)」

出現「交握(Handshake)」的題目(8題)

  1. 在使用req與ack的4相交握中,傳遞1筆資料時訊號的順序何者正確?
  2. 以交握進行時脈域間資料傳輸的缺點,何者正確?
  3. 在AXI各通道使用VALID與READY進行的交握(handshake)中,資料在何時完成傳遞?
  4. 以正反器接收非同步訊號時,因無法滿足設置時間或保持時間,導致輸出暫時無法確定是0還是1的狀態,稱為什麼?
  5. 對4位元資料的各位元分別加上2級同步器,傳到另一個時脈域。當資料從 0111 變為 1000 時,可能發生的問題何者正確?
  6. 將在 500 MHz 時脈域中只有1個週期(2 ns)為1的脈衝,以2級同步器傳到 100 MHz 時脈域。可能發生的問題何者正確?
  7. 以翻轉同步將脈衝從快速時脈域傳到慢速時脈域時,下列限制何者正確?
  8. 下列關於AXI匯流排之特徵,何者正確?

相關名詞

時脈域 同步器(Synchronizer) 亞穩態 AXI 正反器 保持時間 MTBF(平均故障間隔) 格雷碼 多週期路徑 非同步 FIFO

前往名詞解釋列表