文獻標識碼: A
文章編號: 0258-7998(2013)03-0119-04
非對稱的點對點通信在應(yīng)用中十分常見,,非對稱指的是某一方向的數(shù)據(jù)傳輸量明顯大于相反方向,。高速數(shù)據(jù)傳輸系統(tǒng)主要傳輸圖像數(shù)據(jù),需要完成由PC向存儲設(shè)備的高速傳輸,,它是非對稱的,。針對圖像數(shù)據(jù)的高速傳輸,美國國家半導(dǎo)體公司推出了CameraLink標準[1],,美國自動化成像協(xié)會提出了GigE Vision標準[2],。這兩個標準均整合了相機,GigE Vision甚至集成了部分TCP/IP協(xié)議,,而系統(tǒng)中數(shù)據(jù)傳輸是由以太網(wǎng),、高速接口級聯(lián)而成,故不可以直接使用以上標準,。對于點對點通信,,有著完備的協(xié)議和專用設(shè)備,如USB3.0[3]接口,。但對于本系統(tǒng)簡單的點對點高速傳輸,,其實現(xiàn)比較復(fù)雜。高速總線主要有HOTLink和低擺幅差分信號LVDS(Low Voltage Differential Signaling)[4],,其中LVDS可以在差分PCB線對或平衡電纜上以幾百兆至幾千兆比特每秒的速率傳輸數(shù)字信號,,在實際中應(yīng)用較多,Cameralink標準的電氣連接也是基于LVDS的,。
為提高帶寬,,LVDS標準提議使用提高總線位寬的方法[5],三線同步串行傳輸已得到實現(xiàn)[6],。同樣,,使用DDR傳輸也是提高帶寬的一種方法,也已實現(xiàn)[7],。
本文結(jié)合增加總線位寬和DDR傳輸兩種方法,,提出一種基于LVDS并口的通信協(xié)議:幀格式、數(shù)據(jù)分包方法,,分析協(xié)議效率和基于停止等待ARQ的差錯,、流量控制方法,在IEEE802.3千兆以太網(wǎng)的應(yīng)用中證明該協(xié)議完全可行,。
1 高速數(shù)據(jù)傳輸系統(tǒng)
高速數(shù)據(jù)傳輸系統(tǒng)通過存儲設(shè)備連接顯示設(shè)備,,通過IEEE802.3千兆網(wǎng)卡連接控制計算機,其結(jié)構(gòu)如圖1所示。
千兆網(wǎng)卡和存儲設(shè)備分別由兩片FPGA控制,,數(shù)據(jù)經(jīng)FPGA通過高速接口傳輸至存儲設(shè)備,,為使千兆網(wǎng)卡能全速工作,接口速率至少為1 Gb/s,。
2 停止等待ARQ通信協(xié)議設(shè)計
2.1 協(xié)議電氣接口
由于千兆網(wǎng)卡和SDRAM間為超短距離傳輸,,故本協(xié)議使用LVDS接口。為提高接口速率,,采用并行接口[5],;為減少傳輸數(shù)據(jù)冗余,采用源同步,,即1路時鐘,,4路數(shù)據(jù),雙沿采樣(DDR)的源同步方式,。此時當(dāng)時鐘頻率為150 MHz時,,總理論帶寬就可達1.2 Gb/s,。
2.2 幀格式
通信協(xié)議的設(shè)計中首要問題是幀格式的設(shè)計[8]。超近距離非對稱點對點通信有源端,、宿端明確,、誤碼率低的特點,故幀格式設(shè)計依照減少冗余,、降低校驗復(fù)雜度的原則,。其由命令幀和應(yīng)答幀組成,幀格式如圖2,、圖3所示,。傳輸數(shù)據(jù)的長度以字節(jié)為單位,上升沿發(fā)送高4位數(shù)據(jù),,下降沿發(fā)送低4位數(shù)據(jù),,每一個時鐘周期正好傳送1 B數(shù)據(jù)。
2.2.1 開始停止界定符
一幀的開始由前導(dǎo)碼標志,,但無停止碼,,數(shù)據(jù)的長度由長度字段指示。為保證每次通信開始時數(shù)據(jù)總線均發(fā)生翻轉(zhuǎn),,前導(dǎo)碼使用FF00,;總線空閑時,保持最后發(fā)送的數(shù)據(jù)不變,。
2.2.2 其他字段
命令幀由長度,、類型、數(shù)據(jù),、校驗字段構(gòu)成:長度字段長度為2 B,,高字節(jié)先發(fā),其表示“類型”,、“數(shù)據(jù)”,、“校驗”字段總長度;類型字段長度為1 B,,最多可表示256種命令(例:0x10:寫寄存器,,0x11:讀寄存器,0x12:寫RAM數(shù)據(jù)),;數(shù)據(jù)字段長度可變,,數(shù)據(jù)類型為寫寄存器時其由1 B的寫寄存器地址和1 B的寫寄存器內(nèi)容組成,為讀寄存器時由1 B的讀寄存器地址組成,寫RAM時為待寫入數(shù)據(jù)(由于長度字段為2 B,所以待寫入數(shù)據(jù)最長為65 533 B);校驗字段長度為1 B,,為模256校驗結(jié)果,。
應(yīng)答幀由長度、類型、操作結(jié)果,、響應(yīng),、校驗字段構(gòu)成:長度、類型,、校驗字段的構(gòu)成同命令幀,;操作結(jié)果字段長度為1 B,其表示接受端對命令的處理結(jié)果,;響應(yīng)字段長度可變,數(shù)據(jù)類型為寫寄存器時其為1 B長度的寄存器內(nèi)容,,寫RAM時為2 B的已接收數(shù)據(jù)長度,,主要用于流量控制。
2.3 收發(fā)流程
由于使用源同步傳輸,系統(tǒng)不需要再進行同步操作[9],,發(fā)送時將時鐘延遲數(shù)據(jù)90度以獲得更佳時序,。每次通信由發(fā)送端發(fā)送命令幀開始,發(fā)送端收到應(yīng)答幀結(jié)束,。
讀寫寄存器幀格式相對固定,,本文對寫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)答幀后再進行下幀的發(fā)送,。
圖 5為接收端流程,,接收端啟動后一直處在等待狀態(tài),直到收到前導(dǎo)碼后啟動接收流程,,通過判讀長度字段獲得幀長信息,,在接收校驗完數(shù)據(jù)后應(yīng)答實際接收數(shù)據(jù)長度給發(fā)送端并復(fù)位系統(tǒng)等待下次傳輸。
2.4 差錯和流量控制
通信中的誤碼率非零,,為保證數(shù)據(jù)的可靠傳輸,,協(xié)議中需包含校驗部分以進行差錯控制。為簡化設(shè)計,,校驗部分只進行檢錯,,不進行糾錯,放棄使用常見復(fù)雜的CRC32校驗,,使用簡單的256求模校驗,,即除前導(dǎo)碼、長度字段外所有數(shù)據(jù)字節(jié)之和為256。
當(dāng)發(fā)送端數(shù)據(jù)發(fā)送速率高于接收端處理速率或通信出現(xiàn)錯誤時需要進行流量控制,,本協(xié)議使用停止等待ARQ協(xié)議,,停止等待ARQ在傳播延時較低的信道中工作良好[10]且易于實現(xiàn)。正常情況下發(fā)送端在收到最近發(fā)出的命令幀對應(yīng)的應(yīng)答幀后再發(fā)送下一命令幀,,控制邏輯如下:
(1) 發(fā)送端發(fā)送命令幀并啟動延遲計數(shù)器,,等待應(yīng)答幀;
(2)接收端收到命令幀校驗接收后將實際寫入到緩沖區(qū)內(nèi)的數(shù)據(jù)長度由應(yīng)答幀響應(yīng)給發(fā)送端,,其間如果校驗錯誤則丟棄該幀數(shù)據(jù),;
(3) 發(fā)送端收到應(yīng)答幀后根據(jù)響應(yīng)字段長度決定重發(fā)、補發(fā)或繼續(xù)發(fā)送下幀數(shù)據(jù)(響應(yīng)長度為0,,重發(fā)數(shù)據(jù),;響應(yīng)長度小于已發(fā)長度,補發(fā)剩余數(shù)據(jù),;響應(yīng)長度等于已發(fā)長度,,發(fā)送下幀數(shù)據(jù)),如果發(fā)送端等待應(yīng)答幀超時則重新發(fā)送上幀數(shù)據(jù),。
3 協(xié)議效率分析
如圖2,、圖3幀格式所示,高速并口協(xié)議在讀寫寄存器操作時命令幀長度較短,,協(xié)議效率固定,,而寫RAM操作參數(shù)可以配置。因此,,對寫RAM操作的協(xié)議效率進行分析有較大意義,。
協(xié)議效率主要受命令幀最大長度、傳輸/傳播延遲和誤碼率影響,。命令幀數(shù)據(jù)字段長度最大值由人為設(shè)定,,范圍為1~65 533 B,記為Lm/B,;傳輸延遲由數(shù)據(jù)幀的總長度決定,,記為Dt/s;傳播延遲由通信鏈路的長度所決定,,記為Dp/s,;收發(fā)系統(tǒng)工作頻率記為Fs/Hz,總傳輸有效數(shù)據(jù)長度記為Lp/B,,總傳輸數(shù)據(jù)幀長度為Lt/B,,誤碼率為Er,通信線路長度為Dis/m,。則Dt=Lt×Fs,,Dp=2×Dis/(2.8×108),。
由圖 6可見,命令幀最大長度一定的情況下,,隨著通信鏈路長度的增加(即傳播延時的增加),,協(xié)議效率將降低;在傳播延時一定的情況下,,隨著命令幀最大長度的增加,,協(xié)議效率增加,但這種增加不是線性的,,長度達到2 000 B后增長趨于平緩,。
最大命令幀長度直接影響到收發(fā)端的緩沖空間,綜合考慮數(shù)據(jù)最大長度為2 048 B,、3 072 B或4 096 B最佳,。此時在鏈路長度為20 cm時效率可達99.26%、99.51%和99.63%,。
忽略傳播延時,由式(3),,數(shù)據(jù)最大長度一定時,,不同誤碼率下的協(xié)議效率如圖7所示。
由圖 7可見相同誤碼率下數(shù)據(jù)最大長度越大協(xié)議效率越高,,當(dāng)誤碼率高于10-6時誤碼率才對協(xié)議效率有較大影響,。誤碼率低于10-8時,最大長度為2 048 B時效率可達99.27%,,最大長度為3 072 B時效率可達99.51%,,最大長度為4 096 B時效率可達99.64%.
實際應(yīng)用中由于每次傳送的數(shù)據(jù)不會都按照最大數(shù)據(jù)長度傳輸以及系統(tǒng)組幀、解幀需要時間,,故協(xié)議效率會低于理論值,。相對于IEEE802.3協(xié)議98.28%的理論效率[11],本協(xié)議優(yōu)勢明顯,。
實際中,,使用本通信協(xié)議進行千兆網(wǎng)卡與SDRAM間的數(shù)據(jù)傳輸,通信鏈路長度20 cm,,鏈路誤碼率小于10-12,,幀最大數(shù)據(jù)長度2 048 B。千兆網(wǎng)卡以90 MB/s連續(xù)接收電腦端發(fā)來60 MB數(shù)據(jù),,高速接口可以準確無誤地將數(shù)據(jù)傳送至SDRAM中,。計算機發(fā)送1 480 000 B數(shù)據(jù)給千兆網(wǎng)卡,數(shù)據(jù)被分成了7 722幀,,協(xié)議效率為96.96%(含傳播延時82.37%);計算機發(fā)送148 000 000 B數(shù)據(jù)給千兆網(wǎng)卡,,數(shù)據(jù)被分成了817156幀,協(xié)議效率為96.97%(含傳播延時81.80%)。平均每幀有效數(shù)據(jù)長度低于200 B,,由此可見本通信接口在應(yīng)用中尚有較大裕量,,系統(tǒng)中的速率瓶頸在千兆網(wǎng)絡(luò)處。
參考文獻
[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] 盂令軍,張國兵,,王宏濤,等.基于FPGA的LVDS高速差分接口應(yīng)用[J].化工自動化及儀表,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.