《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于CPLD的SGPIO總線實(shí)現(xiàn)及應(yīng)用
基于CPLD的SGPIO總線實(shí)現(xiàn)及應(yīng)用
來源:微型機(jī)與應(yīng)用2013年第5期
陳嘯宇,劉錦高
(華東師范大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 200241)
摘要: 分析了SGPIO總線的數(shù)據(jù)傳輸機(jī)制,用CPLD模擬SGPIO總線協(xié)議來實(shí)現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其與串并數(shù)據(jù)轉(zhuǎn)換集成芯片進(jìn)行對(duì)比,說明了前者的應(yīng)用優(yōu)勢(shì),并且指出了其應(yīng)用場(chǎng)合。采用Lattice Diamond IDE進(jìn)行了Verilog HDL代碼編寫和綜合,并用ModelSim進(jìn)行時(shí)序仿真,最終下載到CPLD器件進(jìn)行測(cè)試。結(jié)果證明了采用CPLD實(shí)現(xiàn)SGPIO總線協(xié)議的可行性以及將其應(yīng)用到板級(jí)之間數(shù)據(jù)通信的優(yōu)越性。
Abstract:
Key words :

摘  要: 分析了SGPIO總線的數(shù)據(jù)傳輸機(jī)制,用CPLD模擬SGPIO總線協(xié)議來實(shí)現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其與串并數(shù)據(jù)轉(zhuǎn)換集成芯片進(jìn)行對(duì)比,說明了前者的應(yīng)用優(yōu)勢(shì),并且指出了其應(yīng)用場(chǎng)合。采用Lattice Diamond IDE進(jìn)行了Verilog HDL代碼編寫和綜合,并用ModelSim進(jìn)行時(shí)序仿真,最終下載到CPLD器件進(jìn)行測(cè)試。結(jié)果證明了采用CPLD實(shí)現(xiàn)SGPIO總線協(xié)議的可行性以及將其應(yīng)用到板級(jí)之間數(shù)據(jù)通信的優(yōu)越性。
關(guān)鍵詞: SGPIO總線;CPLD;串并數(shù)據(jù)轉(zhuǎn)換;板級(jí)通信

 當(dāng)前,隨著人們對(duì)于集成電路的性能要求越來越高,其復(fù)雜度日益提升。如何在集成電路板復(fù)雜度保持不變的情況下優(yōu)化板上芯片的布局,以節(jié)省出寶貴的板上空間去放置其他必需的芯片,盡可能地降低因布局空間而產(chǎn)生的制板成本以及芯片數(shù)量產(chǎn)生的成本,是電路板設(shè)計(jì)者所要考慮的一個(gè)重要問題。
對(duì)于板級(jí)之間的信號(hào)傳輸,最常見也是最基本的做法就是直接傳輸,即有多少路信號(hào)需要傳輸,就用相同線寬的傳輸電纜或者相同引腳數(shù)的轉(zhuǎn)接口,類似于并行總線,而在需要傳輸?shù)男盘?hào)路數(shù)比較多的情況下,這種做法就使得需要的傳輸線纜線寬很寬,或者轉(zhuǎn)接口的引腳數(shù)眾多,帶來制作成本上升、使用不方便等問題。
1 CPLD模擬SGPIO總線
1.1 CPLD模擬SGPIO總線的優(yōu)點(diǎn)

 眾所周知,串行總線與并行總線相比具有結(jié)構(gòu)簡單、占用I/O引腳少及成本低等優(yōu)點(diǎn),利用串行總線替代并行總線來實(shí)現(xiàn)數(shù)據(jù)傳輸也有多種實(shí)現(xiàn)形式。本文提出的一種實(shí)現(xiàn)形式是利用CPLD模擬SGPIO總線協(xié)議來實(shí)現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其用于板級(jí)之間的數(shù)據(jù)通信。本設(shè)計(jì)的優(yōu)點(diǎn)在于:(1)4路串行總線完成多路并行數(shù)據(jù)的傳輸,簡化了傳輸電纜,節(jié)約了成本;(2)只需一塊CPLD芯片就能完成很多塊串并數(shù)據(jù)轉(zhuǎn)換集成芯片的功能,既節(jié)省芯片成本,又節(jié)省板上布局空間;(3)在相同時(shí)鐘頻率和相同傳輸電纜長度的情況下,其數(shù)據(jù)傳輸率快于I2C串行總線,因?yàn)橥粫r(shí)間段內(nèi),SGPIO總線有兩根串行信號(hào)線單向傳輸信號(hào)。
1.2 SGPIO總線的數(shù)據(jù)傳輸[2]
 SGPIO總線框圖如圖1所示。

 共有4根信號(hào)線,分別定義如下。
 SClock:由啟動(dòng)設(shè)備驅(qū)動(dòng)的時(shí)鐘線。SFF 8485中SCLK最大值為100 kHz,SGPIO總線用于其他應(yīng)用時(shí),SCLK由設(shè)備本身支持的最大時(shí)鐘和傳輸電纜長度所限定。
 SLoad:由啟動(dòng)設(shè)備驅(qū)動(dòng),與SClock同步,該信號(hào)指出位流就要結(jié)束并將要重新啟動(dòng)新一輪的位流,用來指示一幀新數(shù)據(jù)的開始。
 SDataOut:由啟動(dòng)設(shè)備驅(qū)動(dòng),發(fā)往目標(biāo)設(shè)備的串行信號(hào)。
 SDataIn:由目標(biāo)設(shè)備驅(qū)動(dòng),發(fā)往啟動(dòng)設(shè)備的串行信號(hào)。
 利用SClock和SLoad信號(hào)來控制兩路串行信號(hào)SDataOut、SDataIn的單向傳輸。
SClock時(shí)鐘脈沖由啟動(dòng)設(shè)備發(fā)出,啟動(dòng)設(shè)備應(yīng)使用SClock的上升沿來發(fā)送SLoad和SDataOut信號(hào),目標(biāo)設(shè)備使用SClock的上升沿來發(fā)送SDataIn信號(hào);目標(biāo)設(shè)備應(yīng)使用SClock的下降沿來鎖存SLoad和SDataOut信號(hào),啟動(dòng)設(shè)備應(yīng)使用SClock的下降沿來鎖存SDataIn信號(hào)。當(dāng)不使用SGPIO總線時(shí)(如在復(fù)位期間),啟動(dòng)設(shè)備應(yīng)當(dāng)將SClock設(shè)置為“1”(即置它為三態(tài))。
 SLoad信號(hào)指出位流就要結(jié)束并將要重新啟動(dòng)新一輪的位流。當(dāng)SLoad設(shè)置為“1”時(shí)的時(shí)鐘周期是該輪位流的最后一個(gè)時(shí)鐘周期。當(dāng)不使用SGPIO總線時(shí)(如在復(fù)位期間),啟動(dòng)設(shè)備應(yīng)當(dāng)將SLoad設(shè)置為“1”(即置它為三態(tài))。當(dāng)正在使用SGPIO總線,但沒有進(jìn)行位流交換時(shí),啟動(dòng)設(shè)備應(yīng)當(dāng)將SLoad設(shè)置為“0”。這就讓目標(biāo)設(shè)備知道啟動(dòng)設(shè)備還沒有被撤除,仍然在線。

2 兩種串行傳輸實(shí)現(xiàn)形式
 基于上面對(duì)于SGPIO總線協(xié)議的介紹,設(shè)計(jì)出CPLD模擬SGPIO總線協(xié)議來實(shí)現(xiàn)并行數(shù)據(jù)的串行傳輸原理框圖,并與串并數(shù)據(jù)轉(zhuǎn)換集成芯片作板上空間、芯片數(shù)量方面的對(duì)比。原理框圖如圖3所示。

  由圖3可以看到,左右兩邊框圖里的電路實(shí)現(xiàn)的功能是一樣的,即并行數(shù)據(jù)串行傳輸。所不同的是,對(duì)于一路SGPIO總線而言,右邊一顆CPLD芯片就實(shí)現(xiàn)了74LV595、74LV165、74LVC07(可選)3顆芯片的功能。圖3中使用了3路SGPIO總線,也就是說,右邊一顆CPLD芯片可以實(shí)現(xiàn)9顆串并數(shù)據(jù)轉(zhuǎn)換集成芯片的功能,這個(gè)優(yōu)勢(shì)是顯而易見的。只要所選用的CPLD芯片有足夠的GPIO引腳以及產(chǎn)生足夠的時(shí)鐘信號(hào),那么就能實(shí)現(xiàn)多路SGPIO總線進(jìn)行更多路并行信號(hào)的傳輸。對(duì)于板級(jí)之間的數(shù)據(jù)通信,每路SGPIO總線只需一根4線寬的傳輸電纜就能完成多路并行信號(hào)的板級(jí)傳輸,同時(shí)還能保證一定的傳輸速率。
3 功能設(shè)定及時(shí)序仿真
 設(shè)定圖3中右邊板有8路并行信號(hào)輸入到CPLD進(jìn)行并串轉(zhuǎn)換,CPLD輸出符合SGPIO總線協(xié)議的SDataOut、SCLK、SLoad 3路信號(hào),與此同時(shí),左邊板中由SCLK和SLoad信號(hào)控制的74LV165輸出符合SGPIO總線信號(hào)時(shí)序關(guān)系的SDataIn信號(hào)。由于本文中SGPIO總線使用的重復(fù)性,因此只做一路4線SGPIO總線的功能驗(yàn)證。采用Lattice Diamond IDE進(jìn)行了Verilog HDL代碼編寫和綜合,采用Mentor公司的ModelSim Plus SE進(jìn)行時(shí)序仿真,選用Lattice MachXO2系列中LCMXO2-640HC-4TG100C。CPLD時(shí)序仿真波形如圖4所示。

 圖4中的信號(hào)依次定義如下[3]:
?。?)parallel_serial_clock為8路并行信號(hào)輸入CPLD進(jìn)行串行轉(zhuǎn)換時(shí)的時(shí)鐘信號(hào)(上升沿有效);
?。?)RSTn為CPLD復(fù)位信號(hào)(“0”有效);
 (3)parallel_databus_input為8路并行信號(hào)輸入,測(cè)試值設(shè)定為10100111;
?。?)data_ready為8路并行輸入信號(hào)準(zhǔn)備就緒(“1”有效);
 (5)LOAD_XMT_shftreg為8路并行輸入信號(hào)準(zhǔn)備裝載到CPLD中數(shù)據(jù)移位寄存器(“1”有效);
?。?)sending_ready為CPLD輸出串行數(shù)據(jù)準(zhǔn)備就緒(“1”有效);
?。?)SDataOut為8路并行輸入信號(hào)經(jīng)由CPLD轉(zhuǎn)換輸出的串行信號(hào);
?。?)SCLK為CPLD輸出的與parallel_serial_clock同步、同頻率的時(shí)鐘信號(hào);
 (9)SLoad為CPLD輸出的,符合SGPIO總線時(shí)序要求的數(shù)據(jù)幀指示信號(hào)(“1”有效);
?。?0)SDataIn為由SCLK和SLoad控制下的74LV165輸入到CPLD的8 bit串行信號(hào)。
 從圖4中可以看到,并行輸入信號(hào)8b′1010 0111經(jīng)由CPLD轉(zhuǎn)換,在SDataOut信號(hào)中以位流形式輸出,在sending_ready信號(hào)有效期間的時(shí)鐘有效沿到來之時(shí),SDataOut信號(hào)開始輸出“0”(起始位),“1”“1”“1”“0”  “0”“1”“0”“1”,“1”(停止位),而SLoad信號(hào)恰好在SDataOut信號(hào)前一個(gè)時(shí)鐘有效沿完成有效跳變(維持一個(gè)時(shí)鐘周期);與此同時(shí),在SLoad信號(hào)有效的下一個(gè)時(shí)鐘有效沿,SDataIn信號(hào)開始以位流形式輸入到CPLD。SDataOut、SCLK、SLoad、SDataIn信號(hào)符合SGPIO總線協(xié)議中4線的時(shí)序關(guān)系。至此,時(shí)序仿真波形驗(yàn)證了CPLD模擬SGPIO總線進(jìn)行并行數(shù)據(jù)串行傳輸?shù)目尚行浴?br />  CPLD器件的資源使用情況如圖5所示。其中,PIO為主要IO單元;SLICE為物理邏輯單元;IOLOGIC為IO邏輯單元;GSR為CPLD內(nèi)核控制寄存器。

 

 

 由圖5可知,本設(shè)計(jì)經(jīng)綜合、適配、布局布線后,占用器件資源情況良好,比較精簡,下載到CPLD器件后,在10 MHz時(shí)鐘頻率下運(yùn)行正常。
 本文利用CPLD來模擬SGPIO總線,實(shí)現(xiàn)了一種并行數(shù)據(jù)的串行傳輸方式,并將其用于板級(jí)之間的通信,只需要一根或多根4線寬的傳輸線纜就能完成板級(jí)間的多路乃至更多路信號(hào)的通信,在保證一定傳輸速率的前提下,減少了傳輸線寬,同時(shí)也給芯片密集度越來越高的電路板節(jié)省了寶貴的布局空間,具有實(shí)際應(yīng)用價(jià)值。
參考文獻(xiàn)
[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高級(jí)數(shù)字設(shè)計(jì)[M].張雅琦,李鏘,等譯.北京:電子工業(yè)出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。