最早接觸到握手協(xié)議是在校期間學(xué)習(xí)PCIe的AXI總線(xiàn)時(shí),至今日雖然PCIe的結(jié)構(gòu)已經(jīng)忘得一干二凈,但握手協(xié)議經(jīng)過(guò)不斷的使用還算掌握的不錯(cuò)。
對(duì)于點(diǎn)開(kāi)這篇文章的人而言,握手協(xié)議是什么其實(shí)不需要贅述:
"Valid-Ready" 握手協(xié)議是一種常用于數(shù)字電路中的接口協(xié)議,用于控制數(shù)據(jù)的傳輸和處理。這種協(xié)議通常在兩個(gè)設(shè)備(如芯片、模塊或模塊間的通信)之間使用,以確保數(shù)據(jù)的有效傳輸和正確處理。
下面是 "Valid-Ready" 握手協(xié)議的特點(diǎn)和優(yōu)勢(shì):
特點(diǎn):
*有效數(shù)據(jù)傳輸: "Valid-Ready" 握手協(xié)議通過(guò)有效信號(hào)(Valid)來(lái)指示數(shù)據(jù)是否有效,Ready信號(hào)來(lái)指示接收方是否已準(zhǔn)備好接收數(shù)據(jù)。只有在Valid和Ready信號(hào)都為高電平時(shí),數(shù)據(jù)傳輸才會(huì)發(fā)生,從而確保數(shù)據(jù)在正確的時(shí)機(jī)傳輸。
*流控制: Ready信號(hào)可以起到流量控制的作用。如果接收方?jīng)]有準(zhǔn)備好接收數(shù)據(jù),它可以將Ready信號(hào)置低,從而停止發(fā)送方的數(shù)據(jù)傳輸,以防止數(shù)據(jù)擁塞。
*同步性: "Valid-Ready" 握手協(xié)議提供了同步機(jī)制,確保發(fā)送和接收之間的時(shí)序一致性。數(shù)據(jù)傳輸只會(huì)在雙方都準(zhǔn)備好的情況下進(jìn)行,避免了數(shù)據(jù)的不同步問(wèn)題。
*靈活性: 握手信號(hào)的有效和準(zhǔn)備狀態(tài)可以根據(jù)具體的應(yīng)用需求來(lái)控制。這使得協(xié)議可以適應(yīng)不同的數(shù)據(jù)傳輸速率和處理速度。
*錯(cuò)誤檢測(cè): 在有效信號(hào)中,還可以包含錯(cuò)誤檢測(cè)位,以便接收方可以驗(yàn)證傳輸?shù)臄?shù)據(jù)的正確性。
優(yōu)勢(shì):
*簡(jiǎn)單可靠: "Valid-Ready" 握手協(xié)議相對(duì)簡(jiǎn)單,易于實(shí)現(xiàn)和調(diào)試。它的工作原理直觀清晰,使得設(shè)計(jì)者和開(kāi)發(fā)者能夠更容易地理解和管理數(shù)據(jù)傳輸流程。
*節(jié)約資源: 與其他復(fù)雜的通信協(xié)議相比,"Valid-Ready" 握手協(xié)議在硬件資源和時(shí)鐘周期方面的需求較低。這使得它在資源受限的系統(tǒng)中具有優(yōu)勢(shì)。
*適應(yīng)性強(qiáng): 由于其簡(jiǎn)單性,"Valid-Ready" 握手協(xié)議可以適應(yīng)不同類(lèi)型的通信和數(shù)據(jù)處理需求。它可以用于內(nèi)部芯片通信,模塊之間的通信,以及許多其他數(shù)字電路場(chǎng)景。
*實(shí)時(shí)性好: 由于有效和準(zhǔn)備信號(hào)的即時(shí)性,"Valid-Ready" 握手協(xié)議通常能夠滿(mǎn)足實(shí)時(shí)數(shù)據(jù)傳輸?shù)男枨螅貏e適用于需要低延遲的應(yīng)用。
好的,冠冕堂皇的部分結(jié)束了。那么一句話(huà)來(lái)概括握手協(xié)議就是:通過(guò)valid控制信號(hào)發(fā)送,通過(guò)ready控制信號(hào)接收,通過(guò)若干info承載信息的一種接口總線(xiàn),其典型時(shí)序圖如下:
握手接口時(shí)序
對(duì)于發(fā)射模塊而言,valid/data為輸出,ready為輸入。對(duì)于接收模塊而言,valid/data為輸入,ready為輸出:
接口方向
對(duì)于握手協(xié)議的時(shí)序,有如下幾條較為通用的要求:
1.發(fā)送方在準(zhǔn)備好發(fā)送數(shù)據(jù)之后,需要將valid信號(hào)置高,表示數(shù)據(jù)有效,在接收方的ready置高前(包括當(dāng)拍)valid不可拉低;
2.接收方在準(zhǔn)備好接收數(shù)據(jù)時(shí),需要將ready信號(hào)置高,表示已準(zhǔn)備好接收數(shù)據(jù);
3.在數(shù)據(jù)傳輸期間,valid 和ready信號(hào)需要保持同步,數(shù)據(jù)傳輸只能在valid和ready信號(hào)同時(shí)為高電平時(shí)進(jìn)行;
4.解復(fù)位后(工作期間)valid不可為不定態(tài),即仿真中valid不允許出現(xiàn)X態(tài)和Z態(tài),必須為高/低電平;
5.解復(fù)位后(工作期間)ready不可為不定態(tài),即仿真中valid不允許出現(xiàn)X態(tài)和Z態(tài),必須為高/低電平,注意ready的定態(tài)要求不如valid嚴(yán)格(或者說(shuō)在valid不為1時(shí),ready的不定態(tài)一般是允許的,有時(shí)也會(huì)要求ready全程不可為不定態(tài));
6.info在valid為1時(shí)不可為不定態(tài),在valid為0時(shí)無(wú)約束;
7.在valid置起為1后,到valid和ready進(jìn)行握手前(包括當(dāng)拍),info值不能跳變;
7.
8.valid的產(chǎn)生邏輯中不可包含或隱式包含ready信號(hào);
9.ready的產(chǎn)生邏輯中可以包含valid信號(hào);
當(dāng)然了,以上是相對(duì)通用的要求,是否需要遵守可以根據(jù)實(shí)際情況來(lái)判斷。比如果接收模塊需要5拍來(lái)處理一個(gè)info,那么數(shù)據(jù)傳輸就不必非要在valid和ready同時(shí)為高時(shí)進(jìn)行,可以在valid拉高后就開(kāi)始處理,處理完成時(shí)再拉高ready接收并丟棄info。
個(gè)人的建議是,1、2、4、7、8/9選一為必須遵守的規(guī)則,其余為盡量遵守但是可以調(diào)整的規(guī)則。
-
控制器
+關(guān)注
關(guān)注
112文章
16103瀏覽量
177075 -
接收器
+關(guān)注
關(guān)注
14文章
2454瀏覽量
71751 -
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
1792瀏覽量
64411 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1595瀏覽量
80379 -
高電平
+關(guān)注
關(guān)注
6文章
144瀏覽量
21304
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論