本發(fā)明涉及數(shù)據(jù)采集和傳輸/通信技術(shù)領(lǐng)域,具體涉及一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法。
背景技術(shù):
在數(shù)據(jù)采集和傳輸領(lǐng)域,通常需要將采集的數(shù)據(jù)傳遞給計算機進行后續(xù)處理和保存,由于通用計算機(PC)接口的限制,傳輸手段十分有限,目前常用的方式有如下幾種:(1) 串口通信方式;(2) USB通信方式;(3) 網(wǎng)絡(luò)通信方式。串口通信方式下數(shù)據(jù)傳輸速率低,通常在1Mbps以下,適合于少量控制數(shù)據(jù)傳輸,且不要求較高實時性的場合;USB通信方式速度較高,如USB2.0標準設(shè)計的傳輸速率可達480Mbps,USB3.0標準將速率提升到5Gbps,但是USB通信方式有如下問題,一是長時間穩(wěn)定性較差,數(shù)據(jù)傳輸易發(fā)生中斷,二是傳輸距離受限,通過延長線方式最大傳輸距離也無法超過10米量級,無法支持較長距離下的對穩(wěn)定性有較高要求的應(yīng)用場合,不適合長時間長距離下的高速數(shù)據(jù)傳輸;網(wǎng)絡(luò)通信方式是目前較為流行的一種通信方式,一方面?zhèn)鬏斁嚯x較長,局域網(wǎng)內(nèi)傳輸距離可達250米,通過中繼器,這個距離可以更長,另一方面穩(wěn)定性好,不易受外界干擾,另外網(wǎng)絡(luò)的可擴展性也較好,便于后期維護和升級。目前在數(shù)據(jù)采集和傳輸領(lǐng)域,在距離較長的情況下,要將采集得到的數(shù)據(jù)安全快速的傳遞給PC端處理,網(wǎng)絡(luò)通信方式基本成為了唯一的選擇。就PC端而言,操作系統(tǒng)以網(wǎng)絡(luò)棧的方式對網(wǎng)絡(luò)通信提供了很好的支持。網(wǎng)絡(luò)棧即采用分層結(jié)構(gòu)將數(shù)據(jù)從底層硬件接收設(shè)備(網(wǎng)絡(luò)適配器)傳遞給上層最終用戶的一種協(xié)議實現(xiàn)方式,網(wǎng)絡(luò)棧通常作為操作系統(tǒng)的一個重要組成部分,如此PC端用戶只需要基于網(wǎng)絡(luò)棧編寫代碼即可完成網(wǎng)絡(luò)數(shù)據(jù)的接收和發(fā)送。對于通信的另一端即數(shù)據(jù)采集端而言(相對于PC端),也需要有網(wǎng)絡(luò)棧提供對通信的支持,通常而言這也就進一步要求需要提供操作系統(tǒng)支持,因為目前而言,只有操作系統(tǒng)才能提供網(wǎng)絡(luò)棧,而要運行操作系統(tǒng),就需要提供硬件平臺即CPU處理器,這將大大增加數(shù)據(jù)采集端的系統(tǒng)設(shè)計復(fù)雜度。
現(xiàn)場可編程門陣列(FPGA)是目前非常流行的一種編程器件,其靈活配置性和可編程性使其被廣泛應(yīng)用于各種領(lǐng)域。因為FPGA是一種硬件實現(xiàn)方式,傳輸速率可以達到很高,可以應(yīng)對高速數(shù)據(jù)采集場景,所以在高速數(shù)據(jù)采集應(yīng)用場合,F(xiàn)PGA也使用廣泛,通常由FPGA完成對ADC數(shù)據(jù)的接收,然后通過通用接口將數(shù)據(jù)傳遞給PC端進行后續(xù)處理。誠如前文所述,基于PC端通用接口的限制,長距離下通常采用網(wǎng)絡(luò)通信方式,而這就要求網(wǎng)絡(luò)棧支持,通常而言,在FPGA之外需要另提供CPU處理器以便運行操作系統(tǒng)以對網(wǎng)絡(luò)棧進行支持,進而提供對網(wǎng)絡(luò)通信的支持(如圖1所示)。在這種傳統(tǒng)架構(gòu)下,大大增加了硬件/軟件設(shè)計復(fù)雜度,使得開發(fā)成本和周期都大大增加。
作為網(wǎng)絡(luò)棧協(xié)議中的重要組成部分,UDP協(xié)議是不需要提供連接狀態(tài)信息的,即每個UDP報文是獨立的,這使得UDP協(xié)議的實現(xiàn)不需要保存太多的狀態(tài)信息,使得硬件上實現(xiàn)UDP協(xié)議成為可能。但UDP協(xié)議有一個缺點,即協(xié)議本身不提供可靠性數(shù)據(jù)傳輸保證,即不保證發(fā)送端發(fā)送的數(shù)據(jù)包一定會被接收端接收到,數(shù)據(jù)會發(fā)生丟失,這一缺點在之前類似專利中也未得到解決,使得此類設(shè)計無法真正用于大容量可靠數(shù)據(jù)傳輸中。為了可靠的數(shù)據(jù)傳輸,需要在UDP協(xié)議之上提供某種機制保證這一點,本設(shè)計中將通過對傳輸?shù)拿總€數(shù)據(jù)包加序列號配合重傳機制進行解決,使得UDP可以用于大容量關(guān)鍵數(shù)據(jù)的傳輸。圖2所示為簡化后基于網(wǎng)絡(luò)通信方式實現(xiàn)架構(gòu),F(xiàn)PGA內(nèi)直接實現(xiàn)UDP協(xié)議棧,外接SDRAM提供數(shù)據(jù)包緩存,使用重發(fā)機制以保證數(shù)據(jù)可靠性傳輸。精簡架構(gòu)下去除了CPU處理器和軟件需求,大大減小了系統(tǒng)復(fù)雜度和開發(fā)周期,且硬件方式實現(xiàn)UDP協(xié)議棧,相對于軟件方式下的UDP協(xié)議棧,數(shù)據(jù)傳輸效率大大增加,可以達到90%以上(軟件方式下,考慮到任務(wù)調(diào)度影響,一般只能達到80%左右)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是設(shè)計一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,擬為高速數(shù)據(jù)采集系統(tǒng)提供一種可靠的高效率的基于網(wǎng)絡(luò)通信的大容量數(shù)據(jù)傳輸實現(xiàn)方法,以降低數(shù)據(jù)采集系統(tǒng)開發(fā)難度,成本和周期。
本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,由FPGA完成對ADC數(shù)據(jù)的接收,然后FPGA直接實現(xiàn)UDP協(xié)議棧,直接和PC端通信;同時,F(xiàn)PGA外接SDRAM,用以緩存已發(fā)送的數(shù)據(jù)包;當(dāng)PC端告知FPGA端未接收到某一數(shù)據(jù)包時,F(xiàn)PGA端在接收到重發(fā)命令后從SDRAM中讀取之前緩存的數(shù)據(jù)包重發(fā)給PC端,以實現(xiàn)可靠性數(shù)據(jù)傳輸。
本發(fā)明所述的一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,所述方法通過FPGA端和PC端同步進行,其中,
FPGA端實施流程如下:FPGA端主動廣播SDCP(Self Defined Control Protocol,自定義控制協(xié)議模塊)應(yīng)答包,包中包含了FPGA端實現(xiàn)服務(wù)器的信息,這些信息被PC端獲取用以創(chuàng)建到FPGA端采集系統(tǒng)的連接;在廣播SDCP應(yīng)答包報文的同時,F(xiàn)PGA端等待接收SDCP控制報文,一旦接收到SDCP報文,將進行一系列檢測任務(wù);
PC端實施流程如下:在數(shù)據(jù)傳輸之前,PC端完成數(shù)據(jù)流通道的建立;在完成流通道創(chuàng)建之后,PC端配置采集系統(tǒng)參數(shù)進行數(shù)據(jù)采集,然后啟動數(shù)據(jù)傳輸;基于UDP協(xié)議的可靠性數(shù)據(jù)傳輸實現(xiàn)對每個數(shù)據(jù)包賦予連續(xù)的序列號,一旦啟動數(shù)據(jù)傳輸,PC端就進行正常的數(shù)據(jù)接收并對接收到的每個包進行序列號檢測,當(dāng)發(fā)現(xiàn)數(shù)據(jù)包序列號不連續(xù)時,就可以肯定存在丟包,此時PC端將丟失的序列號作為參數(shù)發(fā)送重發(fā)命令,通知FPGA端重發(fā)該序列號對應(yīng)的包,在完成既定數(shù)量的數(shù)據(jù)后,PC端需要停止數(shù)據(jù)傳輸并銷毀流通道以釋放FPGA端以及本地資源。
本發(fā)明所述的一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,所述FPGA端的檢測任務(wù)包括:
(1)是否為SDCP發(fā)現(xiàn)報文,如是,則回復(fù)SDCP應(yīng)答包;
(2)是否為UDP棧流通道配置命令,如是,則創(chuàng)建或銷毀數(shù)據(jù)流通道;
(3)是否為流啟動/停止命令,如是,則啟動或停止SDSP模塊(Self Defined Stream Protocol,自定義流協(xié)議模塊);
(4)是否為重發(fā)命令,如是,則寫入重發(fā)命令FIFO;
(5)是否為用戶配置命令,如是,則寫入用戶命令FIFO;
(6)如果命令不符合以上命令類型,則直接丟棄處理。
本發(fā)明所述的一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,所述PC端數(shù)據(jù)流通道的建立包括:
首先廣播SDCP發(fā)現(xiàn)包獲取FPGA端服務(wù)器信息,在獲取到SDCP應(yīng)答包后,PC端即獲取到和服務(wù)器端通信基本的信息,之后PC端使用SDCP控制包創(chuàng)建流通道,主要發(fā)送PC端用于數(shù)據(jù)接收的本地IP地址和端口號,該IP地址和端口號將被服務(wù)器端使用作為目的IP地址和目的端口號,即數(shù)據(jù)流的最終去處使用。
本發(fā)明所述的一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,PC端將丟失的序列號存儲在一個數(shù)組中,只要對應(yīng)序列號的包未接收到,可重復(fù)發(fā)送重發(fā)請求包。
本發(fā)明的有益效果在于:
設(shè)計了一種基于FPGA的帶重發(fā)機制的UDP協(xié)議棧實現(xiàn)方法,此方法大大簡化了系統(tǒng)復(fù)雜度,減少了開發(fā)時間和硬件成本,為高速數(shù)據(jù)采集系統(tǒng)提供了一種可靠的高效率的基于網(wǎng)絡(luò)通信的大容量數(shù)據(jù)傳輸實現(xiàn)方法。
附圖說明
圖1為傳統(tǒng)方式下網(wǎng)絡(luò)通信基本架構(gòu);
圖2為精簡方式下網(wǎng)絡(luò)通信基本架構(gòu)(FPGA直接實現(xiàn)UDP協(xié)議棧);
圖3為UDP協(xié)議棧基本實現(xiàn)架構(gòu);
圖4為SDCP頭部參考定義;
圖5為SDSP頭部參考定義;
圖6為數(shù)據(jù)包重發(fā)基本實現(xiàn)原理;
圖7為PC端實施流程圖;
圖8為FPGA端實施流程圖。
具體實施方式
為更好理解本發(fā)明,下面結(jié)合實施例及附圖對本發(fā)明作進一步描述,以下實施例僅是對本發(fā)明進行說明而非對其加以限定。
網(wǎng)絡(luò)棧分層結(jié)構(gòu)中,UDP協(xié)議作為傳輸層協(xié)議的一個重要組成部分構(gòu)成了數(shù)據(jù)傳輸?shù)幕痉绞街?。UDP協(xié)議傳輸方式是一種無連接狀態(tài)的通信方式,每個UDP數(shù)據(jù)包都是獨立的,相互之間沒有聯(lián)系,每個UDP數(shù)據(jù)包中包含了傳輸所需的所有信息:源端IP地址和端口號,目的端IP地址和端口號以及用戶數(shù)據(jù)。傳輸媒介(如路由器)不保證每個UDP包能正常到達目的端,有時目的端系統(tǒng)負載很大時,數(shù)據(jù)包即便到達了目的端也會因為目的端底層接收緩沖區(qū)資源緊張造成丟失,如果發(fā)送端不進行重發(fā),丟失的數(shù)據(jù)包將永遠丟失,這一點是UDP協(xié)議本身固有的缺點。要提供數(shù)據(jù)包的可靠接收,需要在UDP協(xié)議之上提供機制,即在數(shù)據(jù)包丟失情況下需要發(fā)送端進行重發(fā),所以基于UDP協(xié)議的通信方式需要發(fā)送端和目的端共同配合以保證數(shù)據(jù)可靠性傳輸:目的端需要檢測數(shù)據(jù)包的丟失并通過某種方式將丟失信息告知發(fā)送端,而發(fā)送端在接收到丟失信息后需要有某種策略重新發(fā)送丟失的數(shù)據(jù)包。
FPGA是一種硬件實現(xiàn)方式,可以利用其并發(fā)性高效的完成UDP協(xié)議棧的實現(xiàn)。為了支持UDP協(xié)議棧,考慮到協(xié)議之間的依賴性,還需要提供對ARP協(xié)議的支持,即FPGA需要提供ARP包和UDP包的解析邏輯。除了對ARP包和UDP包應(yīng)有的解析邏輯外,需提供一些基本寄存器以便完成通信鏈路的創(chuàng)建。為了支持可靠性數(shù)據(jù)傳輸,對于丟失的數(shù)據(jù)包需要重發(fā),這就要求需要緩存已發(fā)送的數(shù)據(jù)包,實現(xiàn)中采用了FPGA外接SDRAM的方式解決數(shù)據(jù)包緩存需求。SDRAM工作頻率可以達到167MHz,且接口簡單,便于硬件設(shè)計,故無需采用DDR,從而降低系統(tǒng)設(shè)計復(fù)雜度。
FPGA內(nèi)UDP協(xié)議?;緦崿F(xiàn)架構(gòu)如圖3所示。
基本實現(xiàn)原理如下:前端采用TSE三速以太網(wǎng)驅(qū)動模塊和外部網(wǎng)絡(luò)PHY芯片交互完成底層數(shù)據(jù)收發(fā)。對于接收到的數(shù)據(jù)包,均經(jīng)過packet_filter模塊完成報文的基本解析,packet_filter模塊剝離MAC頭段信息并檢測上層協(xié)議類型,對于ARP協(xié)議報文和IP協(xié)議報文,分別傳遞給ARP解幀/組幀模塊和IP解幀模塊,其他協(xié)議報文均直接丟棄。ARP解幀/組幀模塊完成ARP協(xié)議的解析和響應(yīng),對于響應(yīng)的ARP應(yīng)答包直接寫入ARP包FIFO中供包發(fā)送模塊讀取并發(fā)送出去。對于IP協(xié)議報文在IP解幀模塊完成IP頭段解析并檢測上層協(xié)議類型,如果上層協(xié)議是UDP,則繼續(xù)將報文傳遞給UDP解幀模塊,UDP解幀模塊完成UDP頭段解析并檢測上層協(xié)議類型,如果是SDCP包,則繼續(xù)將報文傳遞給SDCP解幀模塊,SDCP解幀模塊完成具體命令的解析并根據(jù)命令類型寫入到不同的FIFO中:(1)作為UDP棧實現(xiàn)部分的基本寄存器設(shè)置命令,包括設(shè)置數(shù)據(jù)流通道的目的端IP地址和端口號,MTU大小,心跳包頻率等信息,這些信息主要用于創(chuàng)建數(shù)據(jù)流通道;(2)控制采集系統(tǒng)的用戶命令,寫入用戶命令FIFO中,這些命令為用戶命令,控制采集系統(tǒng),如增益,曝光時間等;(3)啟動/停止流命令,直接傳遞給SDSP組幀模塊,啟動/停止數(shù)據(jù)流的發(fā)送;(4)包重發(fā)命令,寫入包重發(fā)命令FIFO中供SDRAM驅(qū)動模塊使用,SDRAM驅(qū)動模塊一方面將每個發(fā)送出去的UDP包寫入SDRAM中,如果存在重發(fā)命令,則讀取SDRAM將重發(fā)的報文讀取到重發(fā)UDP包FIFO中以供包發(fā)送模塊重發(fā)丟失的數(shù)據(jù)包。對于ARP包FIFO,UDP包FIFO,UDP重發(fā)包FIFO,包發(fā)送模塊將優(yōu)先發(fā)送ARP包,在ARP包FIFO為空的情況下,采用輪詢的策略進行UDP(重發(fā))包的發(fā)送,即三個FIFO中ARP包FIFO優(yōu)先級高,其他兩個FIFO優(yōu)先級相同。
對于正常數(shù)據(jù)流發(fā)送鏈路,SDSP組幀模塊完成用戶數(shù)據(jù)的第一層封裝,即在用戶數(shù)據(jù)之上封裝SDSP頭段信息,UDP組幀模塊在SDSP協(xié)議之上封裝UDP頭段信息,IP組幀模塊在UDP協(xié)議之上封裝IP頭段,MAC組幀模塊在IP協(xié)議之上封裝MAC頭段信息,并將最終符合網(wǎng)絡(luò)格式的數(shù)據(jù)包寫入到兩個FIFO中:(1)UDP包FIFO,該FIFO由包發(fā)送模塊讀取并發(fā)送到PC端;(2) UDP包備份FIFO,該FIFO被SDRAM驅(qū)動模塊讀取,對發(fā)送的每個數(shù)據(jù)包進行緩存,用于重發(fā)目的。
SDCP協(xié)議和SDSP協(xié)議均為自定義協(xié)議,在UDP協(xié)議之上完成命令和數(shù)據(jù)的封裝。每個SDCP頭部由固定4個字節(jié)構(gòu)成,圖4給出了SDCP協(xié)議的參考定義。每個SDSP頭部由固定8個字節(jié)構(gòu)成,圖5給出了SDSP協(xié)議的參考定義。每個UDP包均賦予唯一的序列號,序列號用于重發(fā)時在SDRAM中定位包的位置。SDRAM緩存采用環(huán)形緩沖區(qū)策略,即開始從地址0寫入,直到最后一個地址,然后又回到地址0,所以一段時間后,舊的數(shù)據(jù)將被新的數(shù)據(jù)覆蓋。此時SDRAM容量是一個限制因素,其決定了可以緩存多長時間內(nèi)的數(shù)據(jù)包,以90%發(fā)送效率計算,即千兆網(wǎng)下發(fā)送速率為112.5MBps,則64MB容量大小可以緩沖大約900ms時間長度內(nèi)發(fā)送的數(shù)據(jù)包,一般而言,鑒于數(shù)據(jù)采集系統(tǒng)通常為點對點連接方式,物理鏈路無沖突,這個時間長度可以應(yīng)對絕大多數(shù)情況,更大的SDRAM可以緩沖更長時間內(nèi)的數(shù)據(jù)包,當(dāng)然更能保證數(shù)據(jù)的可靠性傳輸。對于一般的數(shù)據(jù)采集系統(tǒng),如果只需要采集一段時間內(nèi)的數(shù)據(jù),那么就將這段時間內(nèi)的數(shù)據(jù)完全緩存下來,就不存在緩存數(shù)據(jù)被覆蓋的問題。
UDP協(xié)議本身不保證數(shù)據(jù)傳輸可靠性,本設(shè)計中采用了對每個數(shù)據(jù)包賦予序列號,同時對發(fā)送的每個數(shù)據(jù)包進行緩存的方式提供可靠性保證。PC端通過發(fā)送SDCP重發(fā)報文告知FPGA端未接收到的包對應(yīng)的序列號,F(xiàn)PGA端在接收到重發(fā)命令后從SDRAM中讀取之前緩存的數(shù)據(jù)包重發(fā)給PC端,從而完成丟棄報文的重發(fā)工作,重發(fā)基本實現(xiàn)原理如圖6所示。注意,本設(shè)計中接收端不對接收到的數(shù)據(jù)包進行確認應(yīng)答,只對未接收到的數(shù)據(jù)包發(fā)送重發(fā)命令,考慮到數(shù)據(jù)采集系統(tǒng)中通常為點對點連接方式,丟失的數(shù)據(jù)包數(shù)量較小,只對未接收到的數(shù)據(jù)包發(fā)送重發(fā)命令,而非對接收到的數(shù)據(jù)包發(fā)送確認應(yīng)答,避免了大量應(yīng)答包占用網(wǎng)絡(luò)帶寬,將大大提高數(shù)據(jù)傳輸效率。
本發(fā)明中基于FPGA的UDP協(xié)議棧具體實施示意圖如圖7和圖8所示,分為FPGA端和PC端,二者配合方能達到使用UDP協(xié)議實現(xiàn)高速可靠性數(shù)據(jù)傳輸?shù)哪康?,詳細說明如下。
FPGA端實施流程如下:上電初始化后,F(xiàn)PGA端主動廣播SDCP應(yīng)答包,包中包含了FPGA端實現(xiàn)服務(wù)器的信息,如IP地址,端口號,數(shù)據(jù)采集系統(tǒng)信息等,這些信息被PC端獲取用以創(chuàng)建到FPGA端采集系統(tǒng)的連接。在廣播SDCP應(yīng)答包報文的同時,F(xiàn)PGA端等待接收SDCP控制報文,一旦接收到SDCP報文,將完成一系列檢測任務(wù),具體如下。
1.是否為SDCP發(fā)現(xiàn)報文,如是,則回復(fù)SDCP應(yīng)答包。雖然FPGA端會主動廣播SDCP應(yīng)答包,但是PC端為了減小延遲時間,會主動發(fā)送SDCP發(fā)現(xiàn)報文獲取網(wǎng)絡(luò)上服務(wù)器信息,此時在接收到SDCP發(fā)現(xiàn)包后就需要及時回復(fù)一個應(yīng)答包以告知PC端應(yīng)有的服務(wù)器信息;
2.是否為UDP棧流通道配置命令。該命令用于創(chuàng)建/銷毀數(shù)據(jù)流通道。在正式數(shù)據(jù)傳輸之前,PC端必須先行創(chuàng)建流通道,即告知PC端用于接收數(shù)據(jù)的IP地址,端口號等信息。而完成數(shù)據(jù)接收后,PC端需要銷毀流通道以釋放FPGA端資源。
3.是否為流啟動/停止命令。該命令啟動/停止FPGA端數(shù)據(jù)流的發(fā)送,也即啟動/停止FPGA端組幀模塊。
4.是否為重發(fā)命令。PC端檢測到某個序列號的數(shù)據(jù)包丟失之后,需要將丟失包對應(yīng)的序列號發(fā)送給FPGA端,請求FPGA端重發(fā)該數(shù)據(jù)包,F(xiàn)PGA端接收到重發(fā)命令后,將以接收到的序列號作為地址信息從SDRAM中讀取之前緩沖的數(shù)據(jù)包并重發(fā)發(fā)送給PC端,從而完成丟失報文的重發(fā),包括數(shù)據(jù)可靠性傳輸。
5.是否為用戶配置命令。用戶配置命令用以配置采集系統(tǒng)參數(shù),如增益,采樣率等信息,這些命令將被轉(zhuǎn)發(fā)給采集系統(tǒng)處理。
6.如果命令不符合以上命令類型,則直接丟棄處理。
為了完成基于UDP協(xié)議的可靠性數(shù)據(jù)傳輸,PC端必須對FPGA端做對應(yīng)的配合,PC端實施流程如下:在數(shù)據(jù)傳輸之前,PC端必須完成數(shù)據(jù)流通道的建立。首先廣播SDCP發(fā)現(xiàn)包獲取FPGA端服務(wù)器信息,這些信息將被用于一對一控制通道的建立,在獲取到SDCP應(yīng)答包后,PC端即獲取到和服務(wù)器端通信基本的信息,如服務(wù)器IP地址,端口號等。之后PC端使用SDCP控制包創(chuàng)建流通道,主要發(fā)送PC端用于數(shù)據(jù)接收的本地IP地址和端口號,該IP地址和端口號將被服務(wù)器端使用作為目的IP地址和目的端口號,即數(shù)據(jù)流的最終去處使用。在完成流通道創(chuàng)建之后,PC端配置采集系統(tǒng)參數(shù),如采樣率,增益以及啟動采集系統(tǒng)進行數(shù)據(jù)采集,然后啟動數(shù)據(jù)傳輸,即啟動FPGA端SDSP組幀模塊。一旦啟動數(shù)據(jù)傳輸,PC端就進行正常的數(shù)據(jù)接收并對接收到的每個包進行序列號的檢測,因為發(fā)送端發(fā)送的序列號均是連續(xù)的,鑒于數(shù)據(jù)采集系統(tǒng)一般采用點對點連接方式,所以一旦發(fā)現(xiàn)序列號不連續(xù),就可以肯定存在丟包,此時PC端將丟失的序列號作為參數(shù)發(fā)送重發(fā)命令,通知FPGA端重發(fā)該序列號對應(yīng)的包。一般而言,PC端需要維護一個數(shù)組,將丟失的序列號存儲在數(shù)組中,只要對應(yīng)序列號的包未接收到,可重復(fù)發(fā)送重發(fā)請求包。在完成既定數(shù)量的數(shù)據(jù)后,PC端需要停止數(shù)據(jù)傳輸并銷毀流通道以釋放FPGA端以及本地資源。
以上所述實施方式僅僅是對本發(fā)明的優(yōu)選實施方式進行描述,并非對本發(fā)明的范圍進行限定,在不脫離本發(fā)明設(shè)計精神的前提下,本領(lǐng)域普通技術(shù)人員對本發(fā)明的技術(shù)方案作出的各種變形和改進,均應(yīng)落入本發(fā)明的權(quán)利要求書確定的保護范圍內(nèi)。