多核DSP系統高速傳輸核心的IP設計
3.1.1 發送緩沖IP模塊設計
在雙口SRAM的外圍設計了較復雜的控制邏輯構成發送緩沖區,A口和B口的地址計數器的地址由兩部分組成:ID號和地址遞加計數邏輯。A口的輸入數據來自于RapidIO封裝的數據幀,而B口的輸出數據又被送到了RapidIO發送狀態機內,只不過B口的數據是需要重發的數據。
因為RapidIO數據幀最大為68個雙字,發送窗口數被設計成7,所以已經發送的數據在這個雙口SRAM中是分段保存的。當RapidIO發送狀態機開始發送數據,同時對數據進行封裝時,A口的寫信號有效,并且A口的計數器進行遞增計數,遞增計數器和段地址構成了A口的有效地址。這樣已發送的數據就被保存在這個以雙口SRAM為核的緩沖區隊列中(最多為476個雙字數據)。在這個雙口SRAM的外圍設計了段指示變量用來指示在該段中保存字數據的個數(因為發送的數據可能有不夠256個字節,即64個雙字的情況)。
相鄰節點返回的數據響應幀內,包含相鄰節點希望接收的下一個數據幀的序號ID,當數據響應幀類型為datanot accept或data retry類型時,激活了發送狀態機內的重發機制,B口當前地址和A口的段指示變量進行比較,當B口的當前地址和A口相應的段指示變量相等時,通知發送狀態機該數據已經被重新發送完畢,結束幀的發送。只有該幀數據的正確的響應幀被接收到時,A口才能繼續發送新的數據,并且發送緩沖區的窗口向前滑動。通過使用這種方法,已發送的數據就源源不斷地保存在這個緩沖區隊列中,而且不會丟失。
3.1.2 接收緩沖IP模塊設計
在雙口SRAM的周圍加入了一些外圍的控制電路構成了接收緩沖區。雙口SRAM的A口和接收狀態機相連,雙口SRAM的B口和處理器接口相連。A口和B口分別使用了地址計數邏輯。接收緩沖IP模塊如圖5所示。本文引用地址:http://www.104case.com/article/148059.htm
由于RapidIO的一個數據幀是以272字節封裝的,并且在數據幀的第80個字節處插入了一個CRC校驗序列,這樣就增加了判斷的難度。當接收機開始接收數據幀內嵌入的第一個CRC校驗序列時,通過接收狀態機進行判斷:當接收到的第一個CRC校驗序列和接收狀態機本地產生的CRC一樣時,A口的地址計數電路繼續計數;當接收到的第一個CRC校驗序列和接收狀態機本地產生的CRC不一樣時,說明前面接收到的數據是無效的,此時地址計數電路停止計數,并且地址指示變量減去20。
當接收完一個數據幀內的所有有效數據時(不包括數據幀末尾的CRC校驗碼),地址計數電路停止計數,同時在接收狀態機內進行判斷:當接收到的數據幀末尾的CRC校驗序列和接收狀態機本地產生的CRC校驗序列一致時,地址指示變量的值不變;當接收到的數據幀末尾的CRC校驗序列和接收狀態機本地產生的CRC校驗序列不一致時,地址指示變量減63(標準的數據幀內的有效數據是64個字)。通過這樣的方法在由這個雙口SRAM構造的接收數據緩沖區內保存了一個完整有效的數據幀。
3.2 發送/接收狀態機
發送狀態機和接收狀態機模塊包含了RapidIO協議的差錯控制和流量控制的功能。差錯控制功能主要是通過使用CRC校驗機制和定時器機制來完成的。發送狀態機和接收狀態機是通過相互交換內部信息來實現對數據進行差錯控制和流量控制的,如圖6所示。
3.2.1 發送狀態機模塊設計
如圖6所示,來自處理器接口的原始數據依次傳送到RapidIO的邏輯層和物理層時,在數據的頭部封裝了地址、序號和長度等頭部信息,同時發送狀態機得到每個數據的CRC碼;當數據大于80個字節時,在第80個字節的后面插入1個CRC碼,然后在該數據幀的尾部插入1個CRC碼,這樣就將一個原始的數據轉換成了1個RapidIO數據幀,然后將這個封裝的數據幀傳到串行化數據模塊進行發送。
如果數據幀被對方節點正確的接收,則發送端口可以繼續發送數據;如果數據幀被對方拒絕接收,則停止數據的繼續發送,并且接收端口和發送端口通過同步控制幀重新進行端口同步,當這種同步重新建立后發送端口才可以繼續發送數據;在發送狀態機模塊中采用了滑動窗口技術,一方面可大大提高數據的吞吐量;另一方面可以盡量避免由于接收方緩沖區資源不足而導致的多次發送失敗。
3.2.2 接收狀態機模塊設計
當接收到數據幀后,對接收到的數據幀通過CRC校驗機制進行錯誤檢查,同時得到幀的序號和設備號等信息,并且將數據幀的接收狀態通知本地發送端口,由本地發送端口根據接收數據的狀態作出判斷,然后向對方節點設備發送響應幀信號。
當接收狀態機接收到一個完整的消息后,則由接收狀態機向本地處理器接口發出中斷信號,通知處理器將接收緩沖區內的數據取出;當接收狀態機接收到控制幀后,根據控制幀的類型作出判斷,如果是錯誤數據的響應幀,則本地發送端口和接收端口同時處于停止發送和接收數據狀態,并且通知本地發送端口發送link請求幀和link相應幀,使得接收和發送鏈路重新建立連接;如果是用于鏈路控制的控制幀,則本地發送端口根據接收到的控制幀類型向相鄰節點發送相應的響應控制幀。
3.3 時鐘信號設計
RapidIO協議規定使用雙數據時鐘發送和接收數據。
在專用電路內的時鐘布局分為發送時鐘模塊和接收時鐘模塊兩大子模塊。對時鐘的分頻和倍頻是通過專用集成電路內的數字時鐘管理器DCM完成的。來自處理器的輸出時鐘要驅動專用電路芯片和其他外設,所以在專用電路的內部加入PLL,保證輸出時鐘能提供足夠的時鐘頻率、驅動能力和較陡的時鐘邊沿。時鐘資源在專用電路內的布局如圖7所示。
發送時鐘模塊的主要功能包括:
①使用DCM的相移功能,提供RapidIO發送數據合適的采樣時鐘相位,包括從發送緩沖區將數據提取出來,以及在發送數據前提供的較好的冗余時鐘相位,保證時鐘能正確地采集發送的數據和幀同步信號。
②在進行數據串行化的時候,通過DCM的倍頻功能將上層模塊的數據發送變成雙數據進行發送,即時鐘的上沿和下沿同時發送數據。
③通過差分引腳將LVTTL發送時鐘變為LVDS差分時鐘進行發送。
接收時鐘模塊中的主要功能包括:
①接收到的差分LVDS時鐘轉換為LVTTL時鐘。
②對接收到的時鐘信號通過DCM對其進行分頻,以便能夠正確地將接收到的DDR數據轉化為SDR數據。
③對接收到的時鐘通過DCM進行相位移動,以便為接收緩沖區正確地接收數據提供正確的采樣時鐘相位。
除了此處提到的模塊,RapidIO協議專用集成電路內部還有串行和并行模塊,接口模塊等,在此就不一一介紹了。
結語
適用于多核DSP系統的高速互聯接口對于研究多核的體系結構具有實際意義。研制滿足RapidIO協議的專用集成電路不僅可以快速實現網絡結構,而且可以降低系統的功耗,提高可靠性,具有很好的應用價值。
評論