這一篇主要對比下valid-ready握手協議和enable-xoff協議,當然這個對比僅限于同時鐘域下的信號傳輸。
工作中接觸的第一個模塊采用的接口協議就是典型的enable-xoff協議,這種協議的典型特點是通過enable信號標記數據有效,通過xoff信號進行反壓,比較典型的波形如下:
上面的波形中呢,data_en就是使能信號,為1時表明上游的傳輸數據有效;data_xoff為反壓信號,為1時表明下游的接收端無法接收數據,此時數據傳輸不會立即停止,而是會繼續傳輸N拍,N的大小稱為過沖。
還有另外一種常見場景:
這種波形的特點是,數據不再是單拍有效的,而是若干拍組成一個“包”,data_sop是包頭標志,data_eop為包尾標志,data_sop和date_eop之間(左右均包含)data_en有效的數據即為整個包的數據。這種包傳輸很常見的場景是包頭為多層ID,包尾為ECC校驗,中間為payload:
這種包傳輸起反壓時,可能有兩種場景:一是過沖若干拍,二是過沖若干個包。具體的要求就要看上下游模塊的協議要求了。這種場景比較復雜暫不過多討論,只看一下最見到的單拍enable-xoff接口,可以發現其與valid-ready最大的區別在于,后者ready拉低時數據傳輸時強制停止的,只有valid和ready同時高有效才完成了一個數據的傳輸。
而前者則不然,enable信號高有效時就完成了一個數據的傳輸,而xoff為1后(起反壓,類似于ready拉低的效果)仍然會過沖幾個數據,直到enable拉低后才停止數據傳輸。
單純從代碼實現的角度看,valid-ready型接口的valid信號必然是會看上一拍是否握手,如果握手了就可以立刻開始下一個數據的發送(而不需要關心本拍ready的情況),不握手就一直維持高有效;而enable-xoff則是在感知到xoff后主動停止發送(單接口上不一定是立即停止),直到xoff降為0后再重新開始發送數據(而不能維持enable信號為1)。
比較典型的enable-xoff就是兩個fifo級聯的電路結構,從這個結構也能看出為什么xoff為高后接口不會立即停止數據發送而是會過沖幾個數據。在這種結構中,下級的fifo將afull(將滿)信號作為xoff輸入給上一級,afull信號參與fifo0的rd_en邏輯中,當afull為1時rd_en會為0。
那么顯然,即使fifo0在第一時間停止數據發送了,那么由fifo0到fifo1的路上還有4個寄存器呢呀,極端場景這4個寄存器里都有有效數據,那么下級的fifo1是必須得能夠把數據收下來的(要不然不就丟數了嗎),所以fifo1入口的接口協議就是:xoff為1之后,最多允許過沖4個數據(包括xoff為1的當拍)。
順便延伸一下,那么這個時候fifo1的afull水線應該設為多少呢?應當是N-4,N為fifo深度對吧。那么繼續深入一下,N的值最小應該為多少?答案是,N最小值應該為8,大于8肯定是沒有關系的。為什么要這么設置呢,我們來看一下下游阻塞-恢復場景(不糾結于具體的時序,只看行為):
下游阻塞 -> fifo將滿,起反壓 -> fifo接收路徑上的過沖,等待下游通流 -> 下游通流,fifo出數 -> fifo不再將滿,撤銷反壓 -> 上游恢復發送數據,那么如果在fifo1里面將滿水線以下的數據發送完成之前,上游的數據沒能補充過來(路上有流水),那么必然會造成下游的斷流現象,也就是非阻塞斷流。這對于對帶寬、延遲、抖動有要求的芯片而言是不可接受的。
因此fifo的將滿水線必須設置合理,太淺會丟數,太深會斷流。對于驗證而言,這里的性能驗證也是重中之重,而這一關過去后還有包反壓過沖場景的性能問題以及反壓流水場景:
反正哪個都夠忙上一陣的,這個不是重點也就不贅述了。說了這么多,其實valid-ready和enable-xoff接口的差異已經說的也比較清楚了:
在芯片設計中,"valid-ready握手接口"和"enable-xoff使能接口"都是用于控制數據傳輸和通信的接口,但它們在功能和用途上有一些差異。
Valid-Ready握手接口:
"Valid" 和 "Ready" 是兩個信號線,用于在數據傳輸過程中進行握手和同步。
"Valid" 信號表示數據是否有效。當數據準備好并可以傳輸時,"Valid" 信號置高。
"Ready" 信號表示接收方是否準備好接收數據。當接收方準備好接收數據時,"Ready" 信號置高。
握手的基本原則是:當發送方的 "Valid" 信號為高且接收方的 "Ready" 信號也為高時,數據可以傳輸。
Enable-XOFF使能接口:
"Enable" 和 "XOFF" 是兩個信號線,用于控制數據流的啟用和停止。
"Enable" 信號用于啟用數據傳輸,當 "Enable" 為高時,數據傳輸可以進行。
"XOFF" 信號用于停止數據傳輸,當 "XOFF" 為高時,數據傳輸被暫停。
通常,"XOFF" 信號用于流量控制,以避免數據過載,允許接收方在處理數據之前進行暫停。
在實際應用中,選擇使用哪種接口取決于項目的需求和設計目標。"Valid-Ready握手接口"通常用于高速數據。
-
寄存器
+關注
關注
31文章
5317瀏覽量
120006 -
FIFO芯片
+關注
關注
0文章
10瀏覽量
8802 -
信號傳輸
+關注
關注
4文章
412瀏覽量
20147 -
時鐘域
+關注
關注
0文章
52瀏覽量
9529
發布評論請先 登錄
相關推薦
評論