專利名稱:通用高速串行通訊控制器的制作方法
技術領域:
本發明屬于數據通信領域,是一種通用高速串行通訊控制裝置。
現有的一些串行通訊控制裝置,如SIEMENS公司產品數據手冊《ESCC8 SAB 82538 Enhanced Serial Communication Controller》TB01.94中介紹的SAB82538,包括總線接口單元,并行接口,內部數據總線以及振蕩器和8個相同結構的串行接口0~7。串行接口又包括FIFO,計時器,協議處理部分(HDLC,SDLC)和DMA接口,DPLL等。總線接口單元用來與外部的數據處理器進行各種數據和控制參數的傳遞,并行接口完成一些控制功能。串行接口是該芯片的最重要的部分。接收方向的數據在串行接口內部,經過協議處理等模塊處理之后存入內部的FIFO當中,然后通過中斷信號通知外部的數據控制器,將數據通過總線接口單元由外部的數據控制器取走。發送方向的處理過程相反。該器件為8路串行HDLC格式的收發器件,產品手冊介紹其每個端口支持的串行數據速率最大可達10Mbps。其接收、發送數據存儲在內部的FIFO中。分配給發送和接收的FIFO的最大值為32 byte。FIFO與外部控制器之間采用8/16位并行數據接口,讀寫時鐘速率最高為10M。在實際應用中,每次數據的接收和發送均需要外部的控制設備進行數據的分析和控制,其執行的時間開銷嚴重影響實際串口上數據傳輸速率。這種裝置存在以下幾個問題芯片支持的數據端口少,或者每個端口支持的數據速率有限;需要較多的外圍器件配合工作,一些實現的方案還需要處理能力較強的外部芯片配合;因而總體實現的成本較高。
本發明的目的在于提供一個高速,多路,具有流量控制,同時成本低廉的通用高速串行通訊控制裝置。
本發明所述的通用高速串行通訊控制器,由接收部分和發送部分構成,
所述接收部分包括時序發生器,控制整個接收部分工作;1~8個串行數據接收器,1~8個數據緩沖器,1~8個未讀數據包計數器,構成1~8組相同的數據接收和處理單元;多路器A;數據控制器,查詢所述數據緩沖器的狀態,并根據所述數據緩沖器的狀態決定是否將所述數據緩沖器的數據通過所述多路器A和總線L1將數據寫入外部的數據存儲器;多路器B,外部的數據處理裝置通過它和總線L2判斷所述未讀數據包計數器的狀態。
所述發送部分包括時序發生器,控制整個發送部分工作;1~8個串行數據發送器,1~8個數據緩沖器,1~8個未發送數據包計數器,構成1~8組相同的數據發送和處理單元;多路器C;多路器D;所述未發送數據包計數器通過所述多路器D、總線L4與外部進行各種狀態的交互;數據控制器,在時序發生器的控制下,查詢所述未發送數據包計數器的狀態,通過多路器C、總線L3從外部的數據存儲器中提取數據,放入所述數據緩沖器中,并通過數據緩沖器將數據發送出去。
下面結合附圖對本發明進行詳細描述。
圖1為本發明的接收部分的示意圖。
圖2為本發明的發送部分的示意圖。
圖3是本發明在高速分組交換網當中的一種實際應用方案。
如圖1,接收部分101包括時序發生器102;1~8個串行數據接收器201~208,1~8個數據緩沖器301~308,1~8個未讀數據包計數器401~408,構成1~8組相同的數據接收和處理單元;多路器A103;數據控制器110;多路器B104。串行數據接收器201~208、數據緩沖器301~308、未讀數據包計數器401~408按照標號的最后一個數字一一對應,如串行數據接收器201與數據緩沖器301、未讀數據包計數器401對應。所述未讀數據包計數器是加減計數器。
在時序發生器102的控制下,接收器101通過多路器A103、總線L1向數據存儲器(圖中未示出)寫入數據,數據包通過多路器B104、總線L2與外部數據處理裝置進行各種狀態的交互。串行數據接收器201根據時序發生器102產生的時序接收串行數據,當接收到一定數量的數據位時,判斷數據緩沖器301的狀態,根據狀態判斷是否將接收到的串行數據寫入數據緩沖器301,數據緩沖器301根據是否有數據寫入來更新自身狀態。數據控制器110在時序發生器102的控制下輪流查詢數據緩沖器301~308的狀態。假設在t0時刻查詢到數據緩沖區301。它通過判斷數據緩沖區301的狀態決定是否通過多路器A103,總線L1將數據緩沖器301中的數據寫入數據存儲器。當數據緩沖區301的狀態表示已經接收到一個完整的數據包時,數據控制器110將剛剛接收到的數據包的狀態,如包長度,接收狀態等等通過多路器A103,總線L1寫入數據存儲區的某個位置,并通知相對應的未讀數據包計數器401,令其更新自身狀態。然后數據控制器110在時序發生器102的控制下查詢下一個數據緩沖區。此過程在時序產生器102的控制下循環往復。
對于多路數據,每路接收到的數據存儲在一個內部的數據緩沖器中,一個時序產生器控制數據控制器輪流查詢各路的數據緩沖器的狀況,發現有數據立刻寫入外部的數據存儲區中,同時調整其數據存儲區的地址指針。通過這樣一種結構,避免了在內部的數據緩沖器滿時,可能產生的無法及時處理的情況。同時,通過精心設計內部數據緩沖器的深度和寬度,利用串行碼流轉換成并行數據的時間差,既保證了不會由于輪詢而導致數據丟失,又不會使時序發生器工作的頻率過高。
各未讀數據包計數器可以是一個異步加減計數器。計數器的加減信號分別通過單獨的信號輸入。該計數器記錄沒有讀走的數據包的個數,外部的數據處理裝置可以通過它的狀態,知道目前是否有新的數據包需要處理。該計數器可以根據一些預先設置的值,輸出不同的狀態,表示目前的數據存儲區可供使用程度,供內部的數據控制器使用,以達到實現流量控制的功能。
接收部分所有收到的數據保存在數據存儲器中,如果外部的數據處理裝置需要知道是否有收到的數據需要處理,則通過多路器B104,總線L2判斷未讀數據包計數器401~408的狀態,獲知是否有新的數據包存在,按照預先約定的數據存儲器的地址分配,通過簡單計算,自動獲得新的數據包的位置,然后可以進行數據包的分析或處理。
發送部分501如圖2所示,包括時序發生器502;1~8個串行數據發送器601~608,1~8個數據緩沖器701~708,1~8個未發送數據包計數器801~808,構成1~8組相同的數據發送和處理單元;多路器C503,多路器D504。串行數據發送器601~608、數據緩沖器701~708、未發送數據包計數器801~808按照標號的最后一個數字一一對應,如串行數據發送器601、數據緩沖器701、未發送數據包計數器801對應。所述未發送數據包計數器,是加減計數器。
在時序發生器502的控制下,發送器501通過多路器C503,總線L3從數據存儲器(圖中未示出)讀入數據,未發送數據包計數器801~808通過多路器D504,總線L4與外部進行各種狀態的交互。外部的數據控制器將需要發送的數據包存入數據存儲器中,通過多路器D504,總線L4通知相對應的未發送數據包計數器801~808中的一個,被通知的未發送數據包計數器根據接收到的信號更新自身狀態。數據控制器510在時序發生器502的控制下,依次查詢未發送數據包計數器801~808的狀態。假設發現未發送數據包計數器801的狀態表示有數據包需要發送,則在時序發生器502的控制下,通過多路器C503,總線L3從數據存儲器中取出數據。然后判斷與串行鏈路相對應的數據緩沖器701的狀態,如其表示可以接納數據,則數據放入數據緩沖器701中。串行數據發送器601在時序發生器502的控制下,將數據緩沖器701中的數據逐個比特發送出去。當發送的數據發送完畢之后,更新數據緩沖區701的狀態。當數據控制器510判斷將一個完整的數據包讀完之后,通知相應的未發送數據包計數器801,未發送數據包計數器801更新自身狀態。至此完成一個完整的數據發送過程。
根據需要,本發明中接收部分中的串行數據接收器、數據緩沖器、未讀數據包計數器的個數和所述發送部分的串行數據發送器、數據緩沖器、未發送數據包計數器的個數,可以按8的倍數倍增。
在實際的數據通信系統中,串行數據輸入和輸出端與遠端的數據通信設備或通信終端相連,雙方使用相同的通信協議。目前在串行通信中使用較多的協議是HDLC協議。本發明的實現也可以使用該協議。在設計實例中,完成8路串行通信,每路的碼流速率為10Mbps。
圖3是該發明在高速分組交換網當中的一種實際應用方案。
在接收端,串行數據進入接收部分之后,按照雙方串行通信約定的協議,該設備的接收部分將串行數據轉換成并行數據,存入數據緩沖區中。數據控制器根據該數據的重要程度以及目前數據存儲區剩余空間的多少決定是否將數據寫入數據存儲區中。接收完一個完整正確的幀時,向未讀數據幀計數器送狀態更新信號。數據處理器根據查詢未讀數據幀計數器的狀態判斷是否有新的數據幀到達需要處理。
發送端的處理過程相反。首先由外部的數據處理器根據當前發送數據存儲區中的空余數據緩沖區的數目和所需要送出的幀的重要程度,判斷是否將數據寫入。寫入之后,向未發送數據幀計數器送狀態更新信號。發送數據控制器查詢未發送數據幀計數器,發現有需要發送的數據幀,則將數據從數據存儲區中讀出,送到數據緩沖區中。然后發送控制器將數據緩沖區中的數據按照約定的通信協議格式將數據發送出去。
在實際應用中,為了有很好的可測試性,在發送部分與接收部分之間可以增加用來進行環回測試的通路。在需要進行測試的時候,將該設備置為內部自環測試狀態,自檢控制器向發送部分的數據存儲器寫入自檢數據,通知發送部分的未發送數據幀計數器,然后自檢控制器檢查接收端的未讀數據幀計數器,再根據未讀數據幀計數器的狀態讀取相應的接收端的數據存儲器的數據,判斷是否能夠正確接收數據。這樣,就可以檢測整個發送和接收部分是否能夠正常工作了。
本發明中,所有的接收數據存儲在一個數據存儲器中,所有的發送數據存儲在另外一個數據存儲器中。根據串行碼流的速率和外部數據處理裝置的處理能力,可以合理地分配數據存儲器。通過合理地分配時序和對外部的存儲空間的合理分配和使用,在同時接收多路10Mbps的串行數據碼流的情況下,可以完成數據的接收(從串行鏈路接收數據,寫入外部數據存儲區)或發送(從外部數據存儲區讀取數據,發送出去),而不需要任何其他控制器件的參與。外圍電路僅需要一個接收數據緩沖器,一個發送數據緩沖器即可。還可以將串行數據端口相應增加,而不僅僅限定為某個數目。因外圍器件少且結構簡單,從而可以減少成本。總之,本發明低成本地實現了高速,多路的串行通信問題。
權利要求
1.一種通用高速串行通訊控制器,由接收部分(101)和發送部分(501)構成,所述接收部分(101)包括時序發生器(102),控制整個接收部分工作;1~8個串行數據接收器(201~208),1~8個數據緩沖器(301~308),1~8個未讀數據包計數器(401~408),構成1~8組相同的數據接收和處理單元;多路器A(103);數據控制器(110),查詢所述數據緩沖器的狀態,并根據所述數據緩沖器的狀態決定是否將所述數據緩沖器的數據通過所述多路器A(103)和總線L1將數據寫入外部的數據存儲器;多路器B(104),外部的數據處理裝置通過它和總線L2判斷所述未讀數據包計數器的狀態;所述發送部分(501)包括時序發生器(502),控制整個發送部分工作;1~8個串行數據發送器(601~608),1~8個數據緩沖器(701~708),1~8個未發送數據包計數器(801~808),構成1~8組相同的數據發送和處理單元;多路器C(503);多路器D(504);所述未發送數據包計數器通過所述多路器D(504)、總線L4與外部進行各種狀態的交互;數據控制器(510),在時序發生器(502)的控制下,查詢所述未發送數據包計數器的狀態,通過多路器C(503)、總線L3從外部的數據存儲器中提取數據,放入所述數據緩沖器中,并通過數據緩沖器將數據發送出去。
2.權利要求1所述的通用高速串行通訊控制器,其特征在于所述接收部分中的串行數據接收器、數據緩沖器、未讀數據包計數器的個數和所述發送部分的串行數據發送器、數據緩沖器、未發送數據包計數器的個數,可以按8的倍數倍增。
3.權利要求1或權利要求2所述的通用高速串行通訊控制器,其特征在于所述接收部分中的未讀數據包計數器和所述發送部分中的未發送數據包計數器,是加減計數器。
全文摘要
一種通用高速串行通訊控制裝置,由接收部分和發射部分構成,接收部分包括:時序發生器,串行數據接收器,數據緩沖器,未讀數據包計數器;二個多路器;數據控制器。發送部分與接收部分結構相似。通過合理地分配時序和對外部的存儲空間的合理分配和使用,在同時接收多路串行數據碼流的情況下,可以完成數據的接收或發送。要求外圍器件少且結構簡單。低成本地實現了高速,多路的串行通信。
文檔編號H04L1/00GK1306357SQ0011408
公開日2001年8月1日 申請日期2000年3月1日 優先權日2000年3月1日
發明者張偉立 申請人:深圳市中興通訊股份有限公司