久久免费视频一区二区,伊人久久五月天,午夜免费激情,美女网站免费黄,日韩av专区,欧美天天色,人人澡超碰碰97碰碰碰

數(shù)據(jù)采集系統(tǒng)網(wǎng)絡傳輸平臺設(shè)計

來源:網(wǎng)絡

點擊:1099

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: 數(shù)據(jù)采集,網(wǎng)絡傳輸,W5300

      1 引言

     

      數(shù)據(jù)采集很多時候需要將數(shù)據(jù)傳輸?shù)竭h程計算機,也有些采集系統(tǒng)有很多采集點,比如火災傳感器,這就需要數(shù)據(jù)傳輸部分能夠方便地組網(wǎng)。在短距離內(nèi)USB傳輸和1394火線傳輸都是一個較為理想的方法,但涉及到遠距離傳輸和組網(wǎng)時,它們就不是那么方便了。所以很多時候通過以太網(wǎng)傳輸采集到的數(shù)據(jù)是一種較好的方式。目前設(shè)備實現(xiàn)聯(lián)網(wǎng)的做法一般是使用CPU運行操作系統(tǒng),由操作系統(tǒng)里的軟件協(xié)議棧完成對TCP/IP協(xié)議的處理。這種方式需要編寫CPU與數(shù)據(jù)采集部分接口的驅(qū)動和網(wǎng)絡通訊的傳輸軟件,開發(fā)工作量較大,設(shè)計較為復雜。并且CPU在產(chǎn)生接口時序方面較為不便,很多時候需要用FPGA+CPU的方式:FPGA完成與數(shù)據(jù)采集部分接口時序的產(chǎn)生和數(shù)據(jù)的緩存,CPU完成數(shù)據(jù)傳輸。因為數(shù)據(jù)采集系統(tǒng)中經(jīng)常會使用FPGA,如果能用FPGA和少量易用的外圍器件實現(xiàn)網(wǎng)絡傳輸則是一種較為理想的方式。我們設(shè)計了一個網(wǎng)絡傳輸平臺,主要包括FPGA、DDR芯片和硬件化的網(wǎng)絡協(xié)議棧芯片,可以通過以太網(wǎng)和計算機通訊,將數(shù)據(jù)傳輸?shù)接嬎銠C中。

     

      2 平臺結(jié)構(gòu)

     

      平臺結(jié)構(gòu)包括硬件上的結(jié)構(gòu)和FPGA邏輯結(jié)構(gòu)。其結(jié)構(gòu)如圖1所示。其中數(shù)據(jù)采集模塊是數(shù)據(jù)采集系統(tǒng)的傳輸平臺需要的一個模塊,但是目前沒有,可以根據(jù)實際需要進行開發(fā)。

     

      

     

      2.1 硬件結(jié)構(gòu)

      平臺主要包括三個部分:FPGA,DDR存儲芯片和網(wǎng)絡協(xié)議棧芯片。FPGA為平臺的主控芯片,使用Alter Cyclone II EP2C20F256,該FPGA具有1 8,752個LE,239,616位存儲器空間,26個嵌入式乘法器,4個PLL,152個用戶可用管腳,封裝采用256腳F‘meline BGA,體積較小。

      DDR存儲芯片使用MICRON M’r46V128M8—6T,容量128MB,數(shù)據(jù)線寬度為8bit,該容量是DDR單片芯片中容量最大的。芯片最高可工作在167MHz。使用DDR對布板有較高的要求,我們在布板時考慮到了過孔和焊盤長度對走線長度的影響,保證了對同一組數(shù)據(jù)線和時鐘的精確等長布線。通過估計信號的回流路徑進行走線和參考平面分割,以保證信號回路阻抗的連續(xù)性,減小信號之間的串擾。選擇了適當?shù)木€寬、疊層方式及疊層厚度,使得單端走線的阻抗控制在50歐姆,差分走線阻抗在100歐姆,以確保傳輸線的阻抗匹配。這些措施保證了良好的信號的完整性,提高了時序余度,降低了對DDR IPCore的時間參數(shù)精確性的要求,為平臺的穩(wěn)定運行打下了基礎(chǔ)。

      網(wǎng)絡協(xié)議棧芯片使用的是WIZNET W5300,芯片內(nèi)部集成了以太網(wǎng)物理層(PHY)、802.3以太網(wǎng)MAC和TCP/IP協(xié)議棧。該芯片可用在10M/100M以太網(wǎng)中,完成ISO七層模型中的物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層和數(shù)據(jù)傳輸層的任務,將控制器從復雜的網(wǎng)絡協(xié)議處理中解脫出來,提供了一個易于實現(xiàn)的網(wǎng)絡傳輸方式。

      因此我們選取了并行接口,工作在直接尋址模式。

      2.2 FPGA邏輯結(jié)構(gòu)

      在進行FPGA邏輯編寫時采用了模塊化設(shè)計,結(jié)構(gòu)主要包括四個部分:DDR接口模塊、網(wǎng)絡接口模塊、傳輸協(xié)議解析模塊和寄存器模塊。DDR接口模塊對DDR芯片進行上電初始化,產(chǎn)生DDR的讀寫時序并控制DDR刷新。網(wǎng)絡接口模塊對網(wǎng)絡協(xié)議棧芯片進行上電初始化,產(chǎn)生芯片的讀寫時序,并控制芯片發(fā)送和接受數(shù)據(jù)。傳輸協(xié)議解析模塊對網(wǎng)絡接口模塊送來的數(shù)據(jù)進行解析,轉(zhuǎn)換成對DDR或寄存器的讀寫操作,并將DDR模塊或寄存器模塊讀出的數(shù)據(jù)送給網(wǎng)絡接口模塊,通過網(wǎng)口發(fā)送出去。寄存器模塊包括16個16位的寄存器,存放參數(shù)設(shè)定和狀態(tài)信息,遠程用戶通過讀寫寄存器實現(xiàn)對數(shù)據(jù)采集的控制。

      在進行FPGA邏輯編寫時采用了層次化的設(shè)計。每層完成其特定工作,使得設(shè)計清晰明了。系統(tǒng)的層次結(jié)構(gòu)如圖2所示。

     

      

     

      從整體上來看,平臺結(jié)構(gòu)分為設(shè)備層、接口層和控制層。設(shè)備層為FPGA外圍芯片,接口層作為設(shè)備層和控制層的橋梁,面向設(shè)備發(fā)送相應指令,產(chǎn)生特定時序的信號;面向控制層提供數(shù)據(jù)。

      控制層將接口層送來的數(shù)據(jù)進行解析,轉(zhuǎn)化成對接口層的操作,控制整個平臺的工作。在網(wǎng)絡接口模塊中,同樣也可分為接口層和控制層。接口層將上層所有對W5300訪問的操作按照其時序要求產(chǎn)生相應地信號,控制層則控制w5300芯片完成以太網(wǎng)通信。

      2.2.1 DDR接口模塊

      DDR接口使用Altera提供的IPcore。該IPcore包括控制邏輯和數(shù)據(jù)通道兩部分,如圖3所示。

     

      

     

      控制邏輯面向DDR芯片執(zhí)行總線的操作,對內(nèi)提供一個簡單的接口。數(shù)據(jù)通道在內(nèi)部讀寫數(shù)據(jù)總線與DDR芯片的雙向數(shù)據(jù)總線之間提供一個接口,因為DDR芯片的數(shù)據(jù)總線是上升下降沿都傳送數(shù)據(jù),內(nèi)部總線僅在上升沿傳送數(shù)據(jù)。所以內(nèi)部數(shù)據(jù)總線寬度是DDR芯片數(shù)據(jù)總線的兩倍。本設(shè)計中內(nèi)部總線的寬度為16位。DDR突發(fā)數(shù)據(jù)傳輸長度選擇2。

      FPGA邏輯巾還包括一個隨機數(shù)Ⅻ4試模塊??梢援a(chǎn)生偽隨機數(shù)寫入DDR芯片。然后將其讀出。

      通過比較兩者是否相同,可毗判斷芯片的好壞。隨機數(shù)Ⅻ5試在上電時會執(zhí)行一次。執(zhí)行結(jié)果由扳子上LED燈指示。

      2.2 2 時絡接口模塊

      網(wǎng)絡接口模塊丹為控制層和接口層??刂茖佑啥鄠€處理模塊組成,包括:復位模塊、初始化模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊和中斷處理模塊,每個模塊完成一種情況的處理。這些模塊受一十狀態(tài)機的控制,狀志機根據(jù)不同的話分別執(zhí)行相應的模塊。狀態(tài)機的跳轉(zhuǎn)如圖4所示:

     

      

     

      系統(tǒng)上電開始,狀態(tài)機進入復位W5300狀態(tài)。在其復位管腳上產(chǎn)生一個2微秒的負脈沖以復位芯片。復位完成后進八初始化階段。初始化階段設(shè)置芯片工作方式、平臺網(wǎng)絡接口的MAC地址、源口地址、源端口號、掩碼、同蓑和協(xié)議類型等。車系統(tǒng)采用的是直接尋址方式,協(xié)議婁型選擇UDp。初始化完成后狀態(tài)機進人空用狀態(tài)。在這個狀態(tài)下,先檢測是否有中斷㈣產(chǎn)生。如果有中斷則進入中斷處理狀態(tài),執(zhí)行中斷處理模塊,如果沒有中斷則檢剁是否有發(fā)送數(shù)據(jù)請求(SendReq)。

      如果有則進入數(shù)據(jù)技逆狀志,執(zhí)行數(shù)據(jù)發(fā)送模塊。如果既沒有中斷也投有菱送數(shù)據(jù)請求。則進入數(shù)據(jù)接收狀態(tài),執(zhí)行數(shù)據(jù)接收模塊。數(shù)據(jù)接收模塊執(zhí)行時。首先要讀取W5300內(nèi)部的接收數(shù)據(jù)字節(jié)長度寄存器。如果不為0表明W5300接啦到數(shù)據(jù),則讀取數(shù)據(jù),否則直接結(jié)束數(shù)據(jù)接收過程,狀態(tài)機返到空閑狀態(tài)。

      2.2.3 協(xié)議解析模塊

      網(wǎng)絡接口模塊從W5300中讀取到數(shù)據(jù)后,將數(shù)據(jù)發(fā)送到協(xié)議解析模塊。協(xié)議解析模塊根據(jù)這些數(shù)據(jù)解析出相應的操作,讀寫寄存器或DDR存儲器。因為數(shù)據(jù)寫入寄存器只需要一個時鐘周期,所以寫入寄存器的數(shù)據(jù)可以被即時寫入。而DDR有突發(fā)數(shù)據(jù)傳輸長度的限制和刷新的存在,使得數(shù)據(jù)無法即時寫入。因此寫入DDR的數(shù)據(jù)先緩存在一個寫入FIFO中,當該FIFO中的數(shù)據(jù)大于突發(fā)數(shù)據(jù)傳輸長度時,向DDR接口模塊請求一次數(shù)據(jù)寫入。讀取數(shù)據(jù)時,因為讀寄存器和DDR的速度遠大于網(wǎng)絡的傳輸速度,因此讀取的數(shù)據(jù)需要存放在讀出FIFO中。讀取DDR時,采用了預讀方式,持續(xù)讀取DDR直到讀出FIFO滿,但實際發(fā)送的數(shù)據(jù)個數(shù)仍然為實際需要的數(shù)據(jù)量,這種方式降低了對DDR讀取的復雜度。

     

            3 傳輸協(xié)議設(shè)計

     

     

     

      我們定義了一個傳輸協(xié)議如圖5所示。協(xié)議包括16位命令、32位地址、32位長度和可選的數(shù)據(jù)部分。命令表示本次操作要完成的任務,目前定義了四個,分別是:CMD_RD_REG(讀寄存器)、CMD_WD_REG(寫寄存器)、CMD_RD_MEM(讀DDR存儲器)、CMD_RD_MEM(寫DDR存儲器)。地址表示本次操作的起始位置,長度表示本次操作的數(shù)據(jù)長度。數(shù)據(jù)是可選部分, 當命令字段為CMD WD_REG或CMDWD_MEM時,表明本次為寫操作,此時有數(shù)據(jù)部分,長度為長度字段值,平臺將把該數(shù)據(jù)寫入到寄存器或DDR存儲器指定的地址位置;當命令字段為CMD_RD REG或CMD_RD_MEM時,表明本次為讀操作,此時沒有數(shù)據(jù)部分,平臺將從寄存器或DDR存儲器指定的地址讀取指定的長度數(shù)據(jù)發(fā)送至遠程計算機。

      以一個常見的數(shù)據(jù)采集過程說明使用本協(xié)議是如何工作的。遠程軟件以本平臺P地址和端口號為源m地址和源端口號向本平臺發(fā)送一個寫寄存器命令,將寄存器模塊中控制寄存器的開始工作位寫l,該位為l則觸發(fā)數(shù)據(jù)采集接口模塊開始工作,其首先要對DDR存儲器清零,然后等待外部數(shù)據(jù)的到來,將數(shù)據(jù)存儲在DDR存儲器中,存儲完畢后將寄存器模塊中表示狀態(tài)的寄存器的數(shù)據(jù)記錄完成指示位置l。遠程軟件發(fā)出開始工作指令后應一直發(fā)送讀取寄存器命令,讀取該位直到其為l。然后發(fā)送讀DDR存儲器命令,地址為當前待讀取數(shù)據(jù)的地址,長度選取合適的數(shù)值,從DDR中讀取數(shù)據(jù)。讀取一段數(shù)據(jù)后將地址加上長度值讀取下一段數(shù)據(jù),直到數(shù)據(jù)讀取完成。

      從上可以看到遠程軟件需要一直讀取狀態(tài)寄存器以確定平臺工作狀態(tài),占用較多的計算機CPU時間,同時占用了網(wǎng)絡帶寬,在多個本平臺的存在下,這種情況更加明顯。這在多用戶的以太網(wǎng)環(huán)境里是不允許的。因此我們的平臺采用了消息機制,通過這種機制可以避免以上問題。

      我們將寄存器模塊的第一個寄存器作為消息寄存器,當該寄存器非零時,協(xié)議解析模塊將把該寄存器的值發(fā)送到遠程軟件,發(fā)送頻率每秒一次,直到該寄存器被清零。在以上舉例的數(shù)據(jù)傳輸過程中,遠程軟件發(fā)出開始工作指令后即可進入等待狀態(tài),數(shù)據(jù)采集接口模塊在數(shù)據(jù)記錄完成后將消息寄存器某位置l,平臺然后開始發(fā)送消息寄存器值。軟件接收到該寄存器值后,先發(fā)送寫寄存器命令將該寄存器清零,然后根據(jù)消息值進行相應的操作。消息寄存器為16位,因此最多可以定義16種消息。

     

      4 測試結(jié)果

     

      我們將一臺計算機和平臺通過交叉線連接起來,設(shè)定好雙方的m地址后,在計算機上通過軟件向平臺上的DDR讀寫數(shù)據(jù)來測試平臺的數(shù)據(jù)傳輸速度。寫入時使用的協(xié)議長度字段為1462,讀取時為1472,這樣發(fā)送的數(shù)據(jù)長度或讀取的數(shù)據(jù)長度加上UDP首部的長度為1500,是以太網(wǎng)的最大傳輸單元(MTU)的長度。在這種情況下測得平臺接收數(shù)據(jù)速率在70Mbps,發(fā)送數(shù)據(jù)速率達到了30Mbps。

     

      5 結(jié)論

     

      我們設(shè)計了一個網(wǎng)絡傳輸平臺,使用FPGA控制硬件化的TCP/IP協(xié)議棧芯片來完成網(wǎng)絡傳輸,避免了由于使用CPU帶來的一些問題,同時平臺具有大容量的存儲器,剩余豐富的Io管腳,在平臺基礎(chǔ)上再進行少量的開發(fā)即可實際使用。我們采用了模塊化的設(shè)計和層次化的結(jié)構(gòu)。使得平臺結(jié)構(gòu)清晰。設(shè)計了自定義的傳輸協(xié)議,針對實際環(huán)境進行了優(yōu)化。經(jīng)測試平臺達到了較高的傳輸速度,其接收數(shù)據(jù)速率達到了70Mbps,發(fā)送數(shù)據(jù)速率達到了30Mbl硌。本平臺具有設(shè)計簡潔、靈活可靠、性能突出等優(yōu)點,適合數(shù)據(jù)采集系統(tǒng)中的數(shù)據(jù)傳輸?shù)膽谩?作者:章濤,王永綱,陳俊,都軍偉)

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡及各大主流媒體。版權(quán)歸原作者所有。如認為內(nèi)容侵權(quán),請聯(lián)系我們刪除。