文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)03-0119-04
非對(duì)稱(chēng)的點(diǎn)對(duì)點(diǎn)通信在應(yīng)用中十分常見(jiàn),非對(duì)稱(chēng)指的是某一方向的數(shù)據(jù)傳輸量明顯大于相反方向。高速數(shù)據(jù)傳輸系統(tǒng)主要傳輸圖像數(shù)據(jù),需要完成由PC向存儲(chǔ)設(shè)備的高速傳輸,它是非對(duì)稱(chēng)的。針對(duì)圖像數(shù)據(jù)的高速傳輸,美國(guó)國(guó)家半導(dǎo)體公司推出了CameraLink標(biāo)準(zhǔn)[1],美國(guó)自動(dòng)化成像協(xié)會(huì)提出了GigE Vision標(biāo)準(zhǔn)[2]。這兩個(gè)標(biāo)準(zhǔn)均整合了相機(jī),GigE Vision甚至集成了部分TCP/IP協(xié)議,而系統(tǒng)中數(shù)據(jù)傳輸是由以太網(wǎng)、高速接口級(jí)聯(lián)而成,故不可以直接使用以上標(biāo)準(zhǔn)。對(duì)于點(diǎn)對(duì)點(diǎn)通信,有著完備的協(xié)議和專(zhuān)用設(shè)備,如USB3.0[3]接口。但對(duì)于本系統(tǒng)簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)高速傳輸,其實(shí)現(xiàn)比較復(fù)雜。高速總線主要有HOTLink和低擺幅差分信號(hào)LVDS(Low Voltage Differential Signaling)[4],其中LVDS可以在差分PCB線對(duì)或平衡電纜上以幾百兆至幾千兆比特每秒的速率傳輸數(shù)字信號(hào),在實(shí)際中應(yīng)用較多,Cameralink標(biāo)準(zhǔn)的電氣連接也是基于LVDS的。
為提高帶寬,LVDS標(biāo)準(zhǔn)提議使用提高總線位寬的方法[5],三線同步串行傳輸已得到實(shí)現(xiàn)[6]。同樣,使用DDR傳輸也是提高帶寬的一種方法,也已實(shí)現(xiàn)[7]。
本文結(jié)合增加總線位寬和DDR傳輸兩種方法,提出一種基于LVDS并口的通信協(xié)議:幀格式、數(shù)據(jù)分包方法,分析協(xié)議效率和基于停止等待ARQ的差錯(cuò)、流量控制方法,在IEEE802.3千兆以太網(wǎng)的應(yīng)用中證明該協(xié)議完全可行。
1 高速數(shù)據(jù)傳輸系統(tǒng)
高速數(shù)據(jù)傳輸系統(tǒng)通過(guò)存儲(chǔ)設(shè)備連接顯示設(shè)備,通過(guò)IEEE802.3千兆網(wǎng)卡連接控制計(jì)算機(jī),其結(jié)構(gòu)如圖1所示。
千兆網(wǎng)卡和存儲(chǔ)設(shè)備分別由兩片FPGA控制,數(shù)據(jù)經(jīng)FPGA通過(guò)高速接口傳輸至存儲(chǔ)設(shè)備,為使千兆網(wǎng)卡能全速工作,接口速率至少為1 Gb/s。
2 停止等待ARQ通信協(xié)議設(shè)計(jì)
2.1 協(xié)議電氣接口
由于千兆網(wǎng)卡和SDRAM間為超短距離傳輸,故本協(xié)議使用LVDS接口。為提高接口速率,采用并行接口[5];為減少傳輸數(shù)據(jù)冗余,采用源同步,即1路時(shí)鐘,4路數(shù)據(jù),雙沿采樣(DDR)的源同步方式。此時(shí)當(dāng)時(shí)鐘頻率為150 MHz時(shí),總理論帶寬就可達(dá)1.2 Gb/s。
2.2 幀格式
通信協(xié)議的設(shè)計(jì)中首要問(wèn)題是幀格式的設(shè)計(jì)[8]。超近距離非對(duì)稱(chēng)點(diǎn)對(duì)點(diǎn)通信有源端、宿端明確、誤碼率低的特點(diǎn),故幀格式設(shè)計(jì)依照減少冗余、降低校驗(yàn)復(fù)雜度的原則。其由命令幀和應(yīng)答幀組成,幀格式如圖2、圖3所示。傳輸數(shù)據(jù)的長(zhǎng)度以字節(jié)為單位,上升沿發(fā)送高4位數(shù)據(jù),下降沿發(fā)送低4位數(shù)據(jù),每一個(gè)時(shí)鐘周期正好傳送1 B數(shù)據(jù)。
2.2.1 開(kāi)始停止界定符
一幀的開(kāi)始由前導(dǎo)碼標(biāo)志,但無(wú)停止碼,數(shù)據(jù)的長(zhǎng)度由長(zhǎng)度字段指示。為保證每次通信開(kāi)始時(shí)數(shù)據(jù)總線均發(fā)生翻轉(zhuǎn),前導(dǎo)碼使用FF00;總線空閑時(shí),保持最后發(fā)送的數(shù)據(jù)不變。
2.2.2 其他字段
命令幀由長(zhǎng)度、類(lèi)型、數(shù)據(jù)、校驗(yàn)字段構(gòu)成:長(zhǎng)度字段長(zhǎng)度為2 B,高字節(jié)先發(fā),其表示“類(lèi)型”、“數(shù)據(jù)”、“校驗(yàn)”字段總長(zhǎng)度;類(lèi)型字段長(zhǎng)度為1 B,最多可表示256種命令(例:0x10:寫(xiě)寄存器,0x11:讀寄存器,0x12:寫(xiě)RAM數(shù)據(jù));數(shù)據(jù)字段長(zhǎng)度可變,數(shù)據(jù)類(lèi)型為寫(xiě)寄存器時(shí)其由1 B的寫(xiě)寄存器地址和1 B的寫(xiě)寄存器內(nèi)容組成,為讀寄存器時(shí)由1 B的讀寄存器地址組成,寫(xiě)RAM時(shí)為待寫(xiě)入數(shù)據(jù)(由于長(zhǎng)度字段為2 B,所以待寫(xiě)入數(shù)據(jù)最長(zhǎng)為65 533 B);校驗(yàn)字段長(zhǎng)度為1 B,為模256校驗(yàn)結(jié)果。
應(yīng)答幀由長(zhǎng)度、類(lèi)型、操作結(jié)果、響應(yīng)、校驗(yàn)字段構(gòu)成:長(zhǎng)度、類(lèi)型、校驗(yàn)字段的構(gòu)成同命令幀;操作結(jié)果字段長(zhǎng)度為1 B,其表示接受端對(duì)命令的處理結(jié)果;響應(yīng)字段長(zhǎng)度可變,數(shù)據(jù)類(lèi)型為寫(xiě)寄存器時(shí)其為1 B長(zhǎng)度的寄存器內(nèi)容,寫(xiě)RAM時(shí)為2 B的已接收數(shù)據(jù)長(zhǎng)度,主要用于流量控制。
2.3 收發(fā)流程
由于使用源同步傳輸,系統(tǒng)不需要再進(jìn)行同步操作[9],發(fā)送時(shí)將時(shí)鐘延遲數(shù)據(jù)90度以獲得更佳時(shí)序。每次通信由發(fā)送端發(fā)送命令幀開(kāi)始,發(fā)送端收到應(yīng)答幀結(jié)束。
讀寫(xiě)寄存器幀格式相對(duì)固定,本文對(duì)寫(xiě)RAM操作分析。每次通信發(fā)送端發(fā)送命令幀,接收端在接收、處理完數(shù)據(jù)后響應(yīng)應(yīng)答幀。
圖4為發(fā)送端處理流程,只要緩沖區(qū)內(nèi)有數(shù)據(jù),發(fā)送端就組幀發(fā)送,每次發(fā)送有效數(shù)據(jù)的最大值可自定義(本文中為2 048 B),發(fā)送完數(shù)據(jù)收到應(yīng)答幀后再進(jìn)行下幀的發(fā)送。
圖 5為接收端流程,接收端啟動(dòng)后一直處在等待狀態(tài),直到收到前導(dǎo)碼后啟動(dòng)接收流程,通過(guò)判讀長(zhǎng)度字段獲得幀長(zhǎng)信息,在接收校驗(yàn)完數(shù)據(jù)后應(yīng)答實(shí)際接收數(shù)據(jù)長(zhǎng)度給發(fā)送端并復(fù)位系統(tǒng)等待下次傳輸。
2.4 差錯(cuò)和流量控制
通信中的誤碼率非零,為保證數(shù)據(jù)的可靠傳輸,協(xié)議中需包含校驗(yàn)部分以進(jìn)行差錯(cuò)控制。為簡(jiǎn)化設(shè)計(jì),校驗(yàn)部分只進(jìn)行檢錯(cuò),不進(jìn)行糾錯(cuò),放棄使用常見(jiàn)復(fù)雜的CRC32校驗(yàn),使用簡(jiǎn)單的256求模校驗(yàn),即除前導(dǎo)碼、長(zhǎng)度字段外所有數(shù)據(jù)字節(jié)之和為256。
當(dāng)發(fā)送端數(shù)據(jù)發(fā)送速率高于接收端處理速率或通信出現(xiàn)錯(cuò)誤時(shí)需要進(jìn)行流量控制,本協(xié)議使用停止等待ARQ協(xié)議,停止等待ARQ在傳播延時(shí)較低的信道中工作良好[10]且易于實(shí)現(xiàn)。正常情況下發(fā)送端在收到最近發(fā)出的命令幀對(duì)應(yīng)的應(yīng)答幀后再發(fā)送下一命令幀,控制邏輯如下:
(1) 發(fā)送端發(fā)送命令幀并啟動(dòng)延遲計(jì)數(shù)器,等待應(yīng)答幀;
(2)接收端收到命令幀校驗(yàn)接收后將實(shí)際寫(xiě)入到緩沖區(qū)內(nèi)的數(shù)據(jù)長(zhǎng)度由應(yīng)答幀響應(yīng)給發(fā)送端,其間如果校驗(yàn)錯(cuò)誤則丟棄該幀數(shù)據(jù);
(3) 發(fā)送端收到應(yīng)答幀后根據(jù)響應(yīng)字段長(zhǎng)度決定重發(fā)、補(bǔ)發(fā)或繼續(xù)發(fā)送下幀數(shù)據(jù)(響應(yīng)長(zhǎng)度為0,重發(fā)數(shù)據(jù);響應(yīng)長(zhǎng)度小于已發(fā)長(zhǎng)度,補(bǔ)發(fā)剩余數(shù)據(jù);響應(yīng)長(zhǎng)度等于已發(fā)長(zhǎng)度,發(fā)送下幀數(shù)據(jù)),如果發(fā)送端等待應(yīng)答幀超時(shí)則重新發(fā)送上幀數(shù)據(jù)。
3 協(xié)議效率分析
如圖2、圖3幀格式所示,高速并口協(xié)議在讀寫(xiě)寄存器操作時(shí)命令幀長(zhǎng)度較短,協(xié)議效率固定,而寫(xiě)RAM操作參數(shù)可以配置。因此,對(duì)寫(xiě)RAM操作的協(xié)議效率進(jìn)行分析有較大意義。
協(xié)議效率主要受命令幀最大長(zhǎng)度、傳輸/傳播延遲和誤碼率影響。命令幀數(shù)據(jù)字段長(zhǎng)度最大值由人為設(shè)定,范圍為1~65 533 B,記為L(zhǎng)m/B;傳輸延遲由數(shù)據(jù)幀的總長(zhǎng)度決定,記為Dt/s;傳播延遲由通信鏈路的長(zhǎng)度所決定,記為Dp/s;收發(fā)系統(tǒng)工作頻率記為Fs/Hz,總傳輸有效數(shù)據(jù)長(zhǎng)度記為L(zhǎng)p/B,總傳輸數(shù)據(jù)幀長(zhǎng)度為L(zhǎng)t/B,誤碼率為Er,通信線路長(zhǎng)度為Dis/m。則Dt=Lt×Fs,Dp=2×Dis/(2.8×108)。
由圖 6可見(jiàn),命令幀最大長(zhǎng)度一定的情況下,隨著通信鏈路長(zhǎng)度的增加(即傳播延時(shí)的增加),協(xié)議效率將降低;在傳播延時(shí)一定的情況下,隨著命令幀最大長(zhǎng)度的增加,協(xié)議效率增加,但這種增加不是線性的,長(zhǎng)度達(dá)到2 000 B后增長(zhǎng)趨于平緩。
最大命令幀長(zhǎng)度直接影響到收發(fā)端的緩沖空間,綜合考慮數(shù)據(jù)最大長(zhǎng)度為2 048 B、3 072 B或4 096 B最佳。此時(shí)在鏈路長(zhǎng)度為20 cm時(shí)效率可達(dá)99.26%、99.51%和99.63%。
忽略傳播延時(shí),由式(3),數(shù)據(jù)最大長(zhǎng)度一定時(shí),不同誤碼率下的協(xié)議效率如圖7所示。
由圖 7可見(jiàn)相同誤碼率下數(shù)據(jù)最大長(zhǎng)度越大協(xié)議效率越高,當(dāng)誤碼率高于10-6時(shí)誤碼率才對(duì)協(xié)議效率有較大影響。誤碼率低于10-8時(shí),最大長(zhǎng)度為2 048 B時(shí)效率可達(dá)99.27%,最大長(zhǎng)度為3 072 B時(shí)效率可達(dá)99.51%,最大長(zhǎng)度為4 096 B時(shí)效率可達(dá)99.64%.
實(shí)際應(yīng)用中由于每次傳送的數(shù)據(jù)不會(huì)都按照最大數(shù)據(jù)長(zhǎng)度傳輸以及系統(tǒng)組幀、解幀需要時(shí)間,故協(xié)議效率會(huì)低于理論值。相對(duì)于IEEE802.3協(xié)議98.28%的理論效率[11],本協(xié)議優(yōu)勢(shì)明顯。
實(shí)際中,使用本通信協(xié)議進(jìn)行千兆網(wǎng)卡與SDRAM間的數(shù)據(jù)傳輸,通信鏈路長(zhǎng)度20 cm,鏈路誤碼率小于10-12,幀最大數(shù)據(jù)長(zhǎng)度2 048 B。千兆網(wǎng)卡以90 MB/s連續(xù)接收電腦端發(fā)來(lái)60 MB數(shù)據(jù),高速接口可以準(zhǔn)確無(wú)誤地將數(shù)據(jù)傳送至SDRAM中。計(jì)算機(jī)發(fā)送1 480 000 B數(shù)據(jù)給千兆網(wǎng)卡,數(shù)據(jù)被分成了7 722幀,協(xié)議效率為96.96%(含傳播延時(shí)82.37%);計(jì)算機(jī)發(fā)送148 000 000 B數(shù)據(jù)給千兆網(wǎng)卡,數(shù)據(jù)被分成了817156幀,協(xié)議效率為96.97%(含傳播延時(shí)81.80%)。平均每幀有效數(shù)據(jù)長(zhǎng)度低于200 B,由此可見(jiàn)本通信接口在應(yīng)用中尚有較大裕量,系統(tǒng)中的速率瓶頸在千兆網(wǎng)絡(luò)處。
參考文獻(xiàn)
[1] BASLER. Camera link specifications of the camera link interface standard for digital cameras and frame grabbers[S]. October 2000.
[2] Automated Imaging Association. GigE vision 1.0[S]. May 2006.
[3] Universal Serial Bus 3.0 Specification Revision 1.0 [S]. June 6, 2011:47.
[4] 向冰.高速圖像串行總線傳輸[J].現(xiàn)代電子技術(shù), 2006(24):97-100.
[5] Electrical characteristics of low voltage differential signaling(LVDS) interface circuits revision 1.2[S].May,2000:10.
[6] 王文華,何斌,任建岳.LVDS三線同步串口的傳輸速率[J].液晶與顯示,2011,26(3):344-349.
[7] 盂令軍,張國(guó)兵,王宏濤,等.基于FPGA的LVDS高速差分接口應(yīng)用[J].化工自動(dòng)化及儀表,2010,37(5):94-96.
[8] Zheng Qiao. An embedded short-range wireless data communication protocol design[C]. Apperceiving Computing and Intelligence Analysis, 2009:399.
[9] 陳瑩,高雙成.基于FPGA的LVDS接口應(yīng)用[J].電子科技2012,25(1):10.
[10] ALBERTO L G, INDRA W.通信網(wǎng)-基本概念與主體結(jié)構(gòu)[M].王海濤,李建華,譯.北京:清華大學(xué)出版社,2005.
[11] Carrier sense multiple access with collision detection(CSMA/ CD) access method and physical layer specifications[S].IEEE Std 802.3, 1998 Edition:76.