摘 要: 分析了SGPIO總線的數(shù)據(jù)傳輸機(jī)制,,用CPLD模擬SGPIO總線協(xié)議來(lái)實(shí)現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其與串并數(shù)據(jù)轉(zhuǎn)換集成芯片進(jìn)行對(duì)比,,說(shuō)明了前者的應(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ì)于集成電路的性能要求越來(lái)越高,,其復(fù)雜度日益提升,。如何在集成電路板復(fù)雜度保持不變的情況下優(yōu)化板上芯片的布局,以節(jié)省出寶貴的板上空間去放置其他必需的芯片,,盡可能地降低因布局空間而產(chǎn)生的制板成本以及芯片數(shù)量產(chǎn)生的成本,,是電路板設(shè)計(jì)者所要考慮的一個(gè)重要問(wèn)題。
對(duì)于板級(jí)之間的信號(hào)傳輸,,最常見(jiàn)也是最基本的做法就是直接傳輸,,即有多少路信號(hào)需要傳輸,就用相同線寬的傳輸電纜或者相同引腳數(shù)的轉(zhuǎn)接口,,類似于并行總線,,而在需要傳輸?shù)男盘?hào)路數(shù)比較多的情況下,這種做法就使得需要的傳輸線纜線寬很寬,,或者轉(zhuǎn)接口的引腳數(shù)眾多,,帶來(lái)制作成本上升、使用不方便等問(wèn)題,。
1 CPLD模擬SGPIO總線
1.1 CPLD模擬SGPIO總線的優(yōu)點(diǎn)
眾所周知,,串行總線與并行總線相比具有結(jié)構(gòu)簡(jiǎn)單、占用I/O引腳少及成本低等優(yōu)點(diǎn),,利用串行總線替代并行總線來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸也有多種實(shí)現(xiàn)形式,。本文提出的一種實(shí)現(xiàn)形式是利用CPLD模擬SGPIO總線協(xié)議來(lái)實(shí)現(xiàn)并行數(shù)據(jù)的串行傳輸,并將其用于板級(jí)之間的數(shù)據(jù)通信,。本設(shè)計(jì)的優(yōu)點(diǎn)在于:(1)4路串行總線完成多路并行數(shù)據(jù)的傳輸,,簡(jiǎn)化了傳輸電纜,節(jié)約了成本,;(2)只需一塊CPLD芯片就能完成很多塊串并數(shù)據(jù)轉(zhuǎn)換集成芯片的功能,,既節(jié)省芯片成本,又節(jié)省板上布局空間;(3)在相同時(shí)鐘頻率和相同傳輸電纜長(zhǎng)度的情況下,,其數(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í)鐘和傳輸電纜長(zhǎng)度所限定,。
SLoad:由啟動(dòng)設(shè)備驅(qū)動(dòng),與SClock同步,,該信號(hào)指出位流就要結(jié)束并將要重新啟動(dòng)新一輪的位流,,用來(lái)指示一幀新數(shù)據(jù)的開(kāi)始。
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)來(lái)控制兩路串行信號(hào)SDataOut,、SDataIn的單向傳輸。
SClock時(shí)鐘脈沖由啟動(dòng)設(shè)備發(fā)出,,啟動(dòng)設(shè)備應(yīng)使用SClock的上升沿來(lái)發(fā)送SLoad和SDataOut信號(hào),,目標(biāo)設(shè)備使用SClock的上升沿來(lái)發(fā)送SDataIn信號(hào);目標(biāo)設(shè)備應(yīng)使用SClock的下降沿來(lái)鎖存SLoad和SDataOut信號(hào),,啟動(dòng)設(shè)備應(yīng)使用SClock的下降沿來(lái)鎖存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總線,但沒(méi)有進(jìn)行位流交換時(shí),,啟動(dòng)設(shè)備應(yīng)當(dāng)將SLoad設(shè)置為“0”,。這就讓目標(biāo)設(shè)備知道啟動(dòng)設(shè)備還沒(méi)有被撤除,仍然在線,。
2 兩種串行傳輸實(shí)現(xiàn)形式
基于上面對(duì)于SGPIO總線協(xié)議的介紹,,設(shè)計(jì)出CPLD模擬SGPIO總線協(xié)議來(lái)實(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總線,,也就是說(shuō),右邊一顆CPLD芯片可以實(shí)現(xiàn)9顆串并數(shù)據(jù)轉(zhuǎn)換集成芯片的功能,,這個(gè)優(yōu)勢(shì)是顯而易見(jiàn)的,。只要所選用的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]:
(1)parallel_serial_clock為8路并行信號(hào)輸入CPLD進(jìn)行串行轉(zhuǎn)換時(shí)的時(shí)鐘信號(hào)(上升沿有效),;
?。?)RSTn為CPLD復(fù)位信號(hào)(“0”有效);
?。?)parallel_databus_input為8路并行信號(hào)輸入,,測(cè)試值設(shè)定為10100111,;
(4)data_ready為8路并行輸入信號(hào)準(zhǔn)備就緒(“1”有效),;
?。?)LOAD_XMT_shftreg為8路并行輸入信號(hào)準(zhǔn)備裝載到CPLD中數(shù)據(jù)移位寄存器(“1”有效);
?。?)sending_ready為CPLD輸出串行數(shù)據(jù)準(zhǔn)備就緒(“1”有效),;
(7)SDataOut為8路并行輸入信號(hào)經(jīng)由CPLD轉(zhuǎn)換輸出的串行信號(hào),;
?。?)SCLK為CPLD輸出的與parallel_serial_clock同步、同頻率的時(shí)鐘信號(hào),;
?。?)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í)鐘有效沿到來(lái)之時(shí),,SDataOut信號(hào)開(kāi)始輸出“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)開(kāi)始以位流形式輸入到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)綜合,、適配、布局布線后,,占用器件資源情況良好,,比較精簡(jiǎn),下載到CPLD器件后,,在10 MHz時(shí)鐘頻率下運(yùn)行正常,。
本文利用CPLD來(lái)模擬SGPIO總線,實(shí)現(xiàn)了一種并行數(shù)據(jù)的串行傳輸方式,,并將其用于板級(jí)之間的通信,,只需要一根或多根4線寬的傳輸線纜就能完成板級(jí)間的多路乃至更多路信號(hào)的通信,在保證一定傳輸速率的前提下,,減少了傳輸線寬,,同時(shí)也給芯片密集度越來(lái)越高的電路板節(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.