摘 要: 分析了SGPIO總線的數(shù)據(jù)傳輸機制,用CPLD模擬SGPIO總線協(xié)議來實現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其與串并數(shù)據(jù)轉(zhuǎn)換集成芯片進行對比,說明了前者的應用優(yōu)勢,并且指出了其應用場合。采用Lattice Diamond IDE進行了Verilog HDL代碼編寫和綜合,并用ModelSim進行時序仿真,最終下載到CPLD器件進行測試。結(jié)果證明了采用CPLD實現(xiàn)SGPIO總線協(xié)議的可行性以及將其應用到板級之間數(shù)據(jù)通信的優(yōu)越性。
關鍵詞: SGPIO總線;CPLD;串并數(shù)據(jù)轉(zhuǎn)換;板級通信
當前,隨著人們對于集成電路的性能要求越來越高,其復雜度日益提升。如何在集成電路板復雜度保持不變的情況下優(yōu)化板上芯片的布局,以節(jié)省出寶貴的板上空間去放置其他必需的芯片,盡可能地降低因布局空間而產(chǎn)生的制板成本以及芯片數(shù)量產(chǎn)生的成本,是電路板設計者所要考慮的一個重要問題。
對于板級之間的信號傳輸,最常見也是最基本的做法就是直接傳輸,即有多少路信號需要傳輸,就用相同線寬的傳輸電纜或者相同引腳數(shù)的轉(zhuǎn)接口,類似于并行總線,而在需要傳輸?shù)男盘柭窋?shù)比較多的情況下,這種做法就使得需要的傳輸線纜線寬很寬,或者轉(zhuǎn)接口的引腳數(shù)眾多,帶來制作成本上升、使用不方便等問題。
1 CPLD模擬SGPIO總線
1.1 CPLD模擬SGPIO總線的優(yōu)點
眾所周知,串行總線與并行總線相比具有結(jié)構(gòu)簡單、占用I/O引腳少及成本低等優(yōu)點,利用串行總線替代并行總線來實現(xiàn)數(shù)據(jù)傳輸也有多種實現(xiàn)形式。本文提出的一種實現(xiàn)形式是利用CPLD模擬SGPIO總線協(xié)議來實現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其用于板級之間的數(shù)據(jù)通信。本設計的優(yōu)點在于:(1)4路串行總線完成多路并行數(shù)據(jù)的傳輸,簡化了傳輸電纜,節(jié)約了成本;(2)只需一塊CPLD芯片就能完成很多塊串并數(shù)據(jù)轉(zhuǎn)換集成芯片的功能,既節(jié)省芯片成本,又節(jié)省板上布局空間;(3)在相同時鐘頻率和相同傳輸電纜長度的情況下,其數(shù)據(jù)傳輸率快于I2C串行總線,因為同一時間段內(nèi),SGPIO總線有兩根串行信號線單向傳輸信號。
1.2 SGPIO總線的數(shù)據(jù)傳輸[2]
SGPIO總線框圖如圖1所示。
共有4根信號線,分別定義如下。
SClock:由啟動設備驅(qū)動的時鐘線。SFF 8485中SCLK最大值為100 kHz,SGPIO總線用于其他應用時,SCLK由設備本身支持的最大時鐘和傳輸電纜長度所限定。
SLoad:由啟動設備驅(qū)動,與SClock同步,該信號指出位流就要結(jié)束并將要重新啟動新一輪的位流,用來指示一幀新數(shù)據(jù)的開始。
SDataOut:由啟動設備驅(qū)動,發(fā)往目標設備的串行信號。
SDataIn:由目標設備驅(qū)動,發(fā)往啟動設備的串行信號。
利用SClock和SLoad信號來控制兩路串行信號SDataOut、SDataIn的單向傳輸。
SClock時鐘脈沖由啟動設備發(fā)出,啟動設備應使用SClock的上升沿來發(fā)送SLoad和SDataOut信號,目標設備使用SClock的上升沿來發(fā)送SDataIn信號;目標設備應使用SClock的下降沿來鎖存SLoad和SDataOut信號,啟動設備應使用SClock的下降沿來鎖存SDataIn信號。當不使用SGPIO總線時(如在復位期間),啟動設備應當將SClock設置為“1”(即置它為三態(tài))。
SLoad信號指出位流就要結(jié)束并將要重新啟動新一輪的位流。當SLoad設置為“1”時的時鐘周期是該輪位流的最后一個時鐘周期。當不使用SGPIO總線時(如在復位期間),啟動設備應當將SLoad設置為“1”(即置它為三態(tài))。當正在使用SGPIO總線,但沒有進行位流交換時,啟動設備應當將SLoad設置為“0”。這就讓目標設備知道啟動設備還沒有被撤除,仍然在線。
2 兩種串行傳輸實現(xiàn)形式
基于上面對于SGPIO總線協(xié)議的介紹,設計出CPLD模擬SGPIO總線協(xié)議來實現(xiàn)并行數(shù)據(jù)的串行傳輸原理框圖,并與串并數(shù)據(jù)轉(zhuǎn)換集成芯片作板上空間、芯片數(shù)量方面的對比。原理框圖如圖3所示。
由圖3可以看到,左右兩邊框圖里的電路實現(xiàn)的功能是一樣的,即并行數(shù)據(jù)串行傳輸。所不同的是,對于一路SGPIO總線而言,右邊一顆CPLD芯片就實現(xiàn)了74LV595、74LV165、74LVC07(可選)3顆芯片的功能。圖3中使用了3路SGPIO總線,也就是說,右邊一顆CPLD芯片可以實現(xiàn)9顆串并數(shù)據(jù)轉(zhuǎn)換集成芯片的功能,這個優(yōu)勢是顯而易見的。只要所選用的CPLD芯片有足夠的GPIO引腳以及產(chǎn)生足夠的時鐘信號,那么就能實現(xiàn)多路SGPIO總線進行更多路并行信號的傳輸。對于板級之間的數(shù)據(jù)通信,每路SGPIO總線只需一根4線寬的傳輸電纜就能完成多路并行信號的板級傳輸,同時還能保證一定的傳輸速率。
3 功能設定及時序仿真
設定圖3中右邊板有8路并行信號輸入到CPLD進行并串轉(zhuǎn)換,CPLD輸出符合SGPIO總線協(xié)議的SDataOut、SCLK、SLoad 3路信號,與此同時,左邊板中由SCLK和SLoad信號控制的74LV165輸出符合SGPIO總線信號時序關系的SDataIn信號。由于本文中SGPIO總線使用的重復性,因此只做一路4線SGPIO總線的功能驗證。采用Lattice Diamond IDE進行了Verilog HDL代碼編寫和綜合,采用Mentor公司的ModelSim Plus SE進行時序仿真,選用Lattice MachXO2系列中LCMXO2-640HC-4TG100C。CPLD時序仿真波形如圖4所示。
圖4中的信號依次定義如下[3]:
?。?)parallel_serial_clock為8路并行信號輸入CPLD進行串行轉(zhuǎn)換時的時鐘信號(上升沿有效);
?。?)RSTn為CPLD復位信號(“0”有效);
?。?)parallel_databus_input為8路并行信號輸入,測試值設定為10100111;
?。?)data_ready為8路并行輸入信號準備就緒(“1”有效);
(5)LOAD_XMT_shftreg為8路并行輸入信號準備裝載到CPLD中數(shù)據(jù)移位寄存器(“1”有效);
?。?)sending_ready為CPLD輸出串行數(shù)據(jù)準備就緒(“1”有效);
?。?)SDataOut為8路并行輸入信號經(jīng)由CPLD轉(zhuǎn)換輸出的串行信號;
?。?)SCLK為CPLD輸出的與parallel_serial_clock同步、同頻率的時鐘信號;
?。?)SLoad為CPLD輸出的,符合SGPIO總線時序要求的數(shù)據(jù)幀指示信號(“1”有效);
?。?0)SDataIn為由SCLK和SLoad控制下的74LV165輸入到CPLD的8 bit串行信號。
從圖4中可以看到,并行輸入信號8b′1010 0111經(jīng)由CPLD轉(zhuǎn)換,在SDataOut信號中以位流形式輸出,在sending_ready信號有效期間的時鐘有效沿到來之時,SDataOut信號開始輸出“0”(起始位),“1”“1”“1”“0” “0”“1”“0”“1”,“1”(停止位),而SLoad信號恰好在SDataOut信號前一個時鐘有效沿完成有效跳變(維持一個時鐘周期);與此同時,在SLoad信號有效的下一個時鐘有效沿,SDataIn信號開始以位流形式輸入到CPLD。SDataOut、SCLK、SLoad、SDataIn信號符合SGPIO總線協(xié)議中4線的時序關系。至此,時序仿真波形驗證了CPLD模擬SGPIO總線進行并行數(shù)據(jù)串行傳輸?shù)目尚行浴?br />
CPLD器件的資源使用情況如圖5所示。其中,PIO為主要IO單元;SLICE為物理邏輯單元;IOLOGIC為IO邏輯單元;GSR為CPLD內(nèi)核控制寄存器。
由圖5可知,本設計經(jīng)綜合、適配、布局布線后,占用器件資源情況良好,比較精簡,下載到CPLD器件后,在10 MHz時鐘頻率下運行正常。
本文利用CPLD來模擬SGPIO總線,實現(xiàn)了一種并行數(shù)據(jù)的串行傳輸方式,并將其用于板級之間的通信,只需要一根或多根4線寬的傳輸線纜就能完成板級間的多路乃至更多路信號的通信,在保證一定傳輸速率的前提下,減少了傳輸線寬,同時也給芯片密集度越來越高的電路板節(jié)省了寶貴的布局空間,具有實際應用價值。
參考文獻
[1] Wikipedia. SGPIO[EB/OL]. http://en.wikipedia.org/wiki/SGPIO, 2012-09-11.
[2] SFF Committee. SFF-8485 specification for serial GPIO (SGPIO) Bus. Revision 0.7[S].2006.
[3] CILETTI M D. Verilog HDL高級數(shù)字設計[M].張雅琦,李鏘,等譯.北京:電子工業(yè)出版社,2005.