一種通過CPLD解析SGPIO的系統及方法與流程
2023-06-18 21:11:56

本發明屬於存儲硬碟陣列的管理和監控技術領域,具體涉及一種通過cpld解析sgpio的系統及方法。
背景技術:
sgpio總線在伺服器和存儲產品中使用很多;主要用來進行硬碟燈的控制。而根據sgpio總線協議描述,sload信號被置1後,會有4個比特位的信息攜帶著vendor-specificpattern(供應商具體模式),與target端交流驅動無關的信息。而這四個比特位的信息對sgpio的解析帶來了一定的麻煩,很多晶片廠商都會不使用這四個比特位,都置為0。這很大程度上降低了sgpio解析的複雜度,但是如果按照這種方式解析使用vendor-specificpattern比特位廠商的晶片sgpio信號時,會出現混亂。此為現有技術的不足之處。
因此,本發明針對現有技術中的上述缺陷,提供設計一種通過cpld解析sgpio的系統及方法,以避免解析出現錯誤。
技術實現要素:
本發明的目的在於,針對上述現有技術存在的缺陷,提供設計一種通過cpld解析sgpio的系統及方法,以解決上述技術問題。
為實現上述目的,本發明給出以下技術方案:
一種通過cpld解析sgpio的系統,它包括sgpioinitiator端,其特徵在於,所述的sgpioinitiator端通過sgpio總線連接有sgpiotarget端,所述的sgpiotarget端連接有寄存器;
所述的sgpioinitiator端為不同的廠家晶片,提供sgpio的sclock信號、sload信號和sdataout信號,並接收sgpiotarget端發出的sdatain信號;
所述的sgpiotarget端為cpld晶片,解析由sgpioinitiator端發出的sdataout信號;
所述的寄存器內設置有寄存器變量sload,對6比特位的sload信號進行移位存儲。
作為優選,當sload置1且前五個比特位都為0時,認定為此時的sload置1為上個比特流結束的標誌;並將上個比特流sgpioinitiator端發出的sdataout存入寄存器中,進行硬碟燈的控制。
作為優選,當sload置1,但是前5個比特位中不全是0,則認定為該比特位的1位vendor-specificpattern,不進行將sdataout信息作為一個比特流存入寄存器的操作。
cpld根據sdataout寫入寄存器的比特流信息對硬碟燈進行相應的控制。
一種通過cpld解析sgpio的方法,包括以下步驟:
步驟1):cpld對reset,sclock,sload,sdataout四個信號進行解析,當cpld檢測到reset有效時,轉到步驟2),否則轉到步驟3);
步驟2):對硬碟燈控制的寄存器以及sdataout,sload緩存寄存器進行復位操作,並轉到步驟1);
步驟3):判斷sclock是否有效,如果有效轉到步驟4),否則轉到步驟1);
步驟4):分別收集該比特位的sload和sdataout信號值,檢測sload是否滿足比特流結束標誌(即000001),如果滿足,則轉到步驟5);否則轉到步驟6);
步驟5):將sdataout緩存的信息賦值給控制硬碟燈的寄存器,sload信息進行移位緩存,以進行相應控制;並轉到步驟1;
步驟6):將sdataout和sload信息進行移位緩存,不寫入控制硬碟的寄存器,寄存器中信息保存原來的數據;並轉到步驟1。
本發明的有益效果在於,通過cpld監控sgpioinitiator端的sload信號,區別真正的比特流結束的高電位與vendor-specificpattern中的高電位,增加了cpld解析sgpio的準確性,可作為標準模塊對不同廠家的sgpio信號進行解析。此外,本發明設計原理可靠,結構簡單,具有非常廣泛的應用前景。
由此可見,本發明與現有技術相比,具有突出的實質性特點和顯著地進步,其實施的有益效果也是顯而易見的。
附圖說明
圖1是本發明提供的一種通過cpld解析sgpio的系統的原理框圖。
圖2是本發明提供的一種通過cpld解析sgpio的方法的解析流程圖。
其中,1-sgpioinitiator端,2-sgpoi總線,3-sgpiotarget端,4-寄存器。
具體實施方式
下面結合附圖並通過具體實施例對本發明進行詳細闡述,以下實施例是對本發明的解釋,而本發明並不局限於以下實施方式。
如圖1所示,本發明提供的一種通過cpld解析sgpio的系統,它包括sgpioinitiator端1,所述的sgpioinitiator端1通過sgpoi總線2連接有sgpiotarget端3,所述的sgpiotarget端3連接有寄存器4;
所述的sgpioinitiator端為不同的廠家晶片,提供sgpio的sclock信號、sload信號和sdataout信號,並接收sgpiotarget端發出的sdatain信號;
所述的sgpiotarget端為cpld晶片,解析由sgpioinitiator端發出的sdataout信號;
所述的寄存器內設置有寄存器變量sload,對6比特位的sload信號進行移位存儲。
本實施例中,當sload置1且前五個比特位都為0時,認定為此時的sload置1為上個比特流結束的標誌;並將上個比特流sgpioinitiator端發出的sdataout存入寄存器中,進行硬碟燈的控制。
當sload置1,但是前5個比特位中不全是0,則認定為該比特位的1位vendor-specificpattern,不進行將sdataout信息作為一個比特流存入寄存器的操作。
cpld根據sdataout寫入寄存器的比特流信息對硬碟燈進行相應的控制。
如圖2所示,本發明提供的一種通過cpld解析sgpio的方法,包括以下步驟:
步驟1):cpld對reset,sclock,sload,sdataout四個信號進行解析,當cpld檢測到reset有效時,轉到步驟2),否則轉到步驟3);
步驟2):對硬碟燈控制的寄存器以及sdataout,sload緩存寄存器進行復位操作,並轉到步驟1);
步驟3):判斷sclock是否有效,如果有效轉到步驟4),否則轉到步驟1);
步驟4):分別收集該比特位的sload和sdataout信號值,檢測sload是否滿足比特流結束標誌(即000001),如果滿足,則轉到步驟5);否則轉到步驟6);
步驟5):將sdataout緩存的信息賦值給控制硬碟燈的寄存器,sload信息進行移位緩存,以進行相應控制;並轉到步驟1;
步驟6):將sdataout和sload信息進行移位緩存,不寫入控制硬碟的寄存器,寄存器中信息保存原來的數據;並轉到步驟1。
以上公開的僅為本發明的優選實施方式,但本發明並非局限於此,任何本領域的技術人員能思之的沒有創造性的變化,以及在不脫離本發明原理前提下所作的若干改進和潤飾,都應落在本發明的保護範圍內。