“針對衛(wèi)星接收設(shè)備數(shù)據(jù)采集的實際需要,提出一種基于USB接口的VSAT(甚小口徑衛(wèi)星終端)基帶數(shù)據(jù)采集系統(tǒng)的設(shè)計方案。”
0 引言
在眾多的衛(wèi)星通信系統(tǒng)中,VSAT(甚小口徑衛(wèi)星終端)衛(wèi)星通信系統(tǒng)由于具有眾多特點,近年來發(fā)展很快,特別在專業(yè)通信網(wǎng)領(lǐng)域存在廣闊的市場,利用此系統(tǒng)進行通信具有靈活性強、可靠性高、成本低、使用方便及小站可直接裝在用戶端等特點,并且VSAT用戶數(shù)據(jù)終端可直與計算機聯(lián)網(wǎng),完成數(shù)據(jù)傳遞、文件交換、圖像傳輸?shù)韧ㄐ湃蝿?wù),從而擺脫了遠距離通信地面中繼站的問題,因此,此系統(tǒng)廣泛用于石油、銀行、鐵路、民航、軍事等行業(yè)。
在VSAT系統(tǒng)中,用戶終端通常是由數(shù)字衛(wèi)星接收機和計算機終端組成,數(shù)字衛(wèi)星接收機包括下變頻器、解碼器、FEC(前向糾錯),解復(fù)用器、數(shù)字基帶處理器和頻率合成器等部分,接收機輸出的數(shù)據(jù)一般通過RS-232,RS-422/449以1.2kbit/s-64kbit/s的數(shù)據(jù)率交給計算機完成應(yīng)用處理。
有些高速衛(wèi)星數(shù)據(jù)接收設(shè)備解調(diào)以后,數(shù)據(jù)通過額外高速數(shù)據(jù)卡送入計算機。這種傳統(tǒng)的數(shù)據(jù)卡不僅安裝麻煩,且易受機箱內(nèi)環(huán)境的干擾,特別是這種卡通常只能接收單路數(shù)據(jù),受計算機插槽數(shù)量和地址,中斷資源的限制,不可能掛接多個設(shè)備,因此,資源浪費尤其嚴重。
針對這種情況,本文結(jié)合衛(wèi)星接收設(shè)備數(shù)據(jù)采集的實際需要,設(shè)計了一種基于USB(通用串行總線)接口的USAT基帶數(shù)據(jù)采集系統(tǒng),該系統(tǒng)通過對USB接口控制邏輯的合理設(shè)計和芯片內(nèi)部FIFO的有效運用,充分應(yīng)用了CPLD(復(fù)雜可編程邏輯器件)的靈活性,僅采用單片USB接口控制芯片就實現(xiàn)了對多路多速率數(shù)字信號的實時采集,這與以往采用USB集線器來實現(xiàn)對多路多速率數(shù)字信號采集的系統(tǒng)相比,具有成本低、實現(xiàn)方便等優(yōu)點。
該系統(tǒng)最多可同時采集8路數(shù)字信號,單路最高速率可達2Mbit/s,系統(tǒng)用于控制的CPLD采用Altera公司的EPM7128SLC84;USB接口控制芯片采用Cypress公司EZ-USB FX2系列CY7C68013。
1 系統(tǒng)原理
1.1 USB簡介
USB(通用串行總線)是一種應(yīng)用在PC領(lǐng)域的新型接口技術(shù),支持在主機與各種即插即用外設(shè)之間進行數(shù)據(jù)傳輸,它由主機預(yù)定傳輸數(shù)據(jù)的標準協(xié)議,在總線上的各種設(shè)備分享USB總線帶寬,它的主要優(yōu)點是:數(shù)據(jù)傳輸速率明顯快于一般的串口,支持控制傳輸、中斷傳輸、塊傳輸?shù)暮屯絺鬏?種傳輸方式,以滿足不同外設(shè)的需要,最多可連接127個外設(shè),支持熱拔插和即插即用,占用的系統(tǒng)資源少(只占用1個IRP(I/O請求包));無總線競爭等。
USB總線技術(shù)的提出就是想利用單一的總線技術(shù)來滿足多種應(yīng)用領(lǐng)域的需要,USB1.1協(xié)議支持低速1.5Mbit/s和全速12Mbit/s兩種傳輸速度。2000年發(fā)布了USB2.0協(xié)議,它向下兼容USB1.1協(xié)議,但在USB1.1的基礎(chǔ)上有了質(zhì)的提高,其理論傳輸速度可到480Mbit/s。
1.2 系統(tǒng)結(jié)構(gòu)
該系統(tǒng)總體框架分采集控制部分、USB接口控制部分和主機3部分,系統(tǒng)框圖如圖1所示。
外部輸入的8路信號中時鐘、數(shù)據(jù)均為TTL電平,采集用的統(tǒng)一時鐘為3M赫茲,是由USB控制芯片的外部時鐘經(jīng)八分頻得到的。
系統(tǒng)的工作過程如下:每路信號在CPLD的控制下,按采集時鐘的統(tǒng)一節(jié)拍,各路信號的數(shù)據(jù)和時鐘都被采集進CPLD。在CPLD內(nèi),先進行各路信號的時鐘上升沿檢測,如檢測到時鐘上升沿,則在相應(yīng)路數(shù)的標志位置1,這表明此時采到的數(shù)據(jù)有效,若沒檢測到時鐘上升沿,則在相應(yīng)路數(shù)地標志位置0,表明此時采集的數(shù)據(jù)無效,這樣形成的各路信號數(shù)據(jù)。
再加上各路信號數(shù)據(jù)是否有效的標志,形成2字節(jié)的數(shù)據(jù)送入USB控制芯片的FIFO中,數(shù)據(jù)進入USB控制芯片后,通過USB接口將數(shù)據(jù)傳輸?shù)街鳈C,數(shù)據(jù)在主機中用軟件進行處理,按照各路信號數(shù)據(jù)是否有效的標志位,將有效數(shù)據(jù)取出,組合成各路數(shù)據(jù)。
數(shù)據(jù)送入主機時的格式如圖2所示,前一字節(jié)為各路信號數(shù)據(jù)是否有效的標志,緊跟著的字節(jié)為各路信號的實際數(shù)據(jù),采用這種特殊的數(shù)據(jù)格式,以區(qū)分各路信號,便于采用統(tǒng)一的時鐘來實現(xiàn)對多路多速率數(shù)字信號的實時采集,從而減少了很多硬件電路,降低了成本和復(fù)雜性,實現(xiàn)更為方便,這也是本系統(tǒng)的一個創(chuàng)新點。
2 硬件構(gòu)成
2.1 EZ-USB FX2(CY7C68013)芯片
CY7C68013屬于Cypress公司的FX2系列產(chǎn)品,它提供了對USB2.0的完整解決方案,該芯片雖然采用低價的8051單片機,但仍然能獲得很高的速度,主要包括USB2.0收發(fā)器、SIE(串行接口引擎)、增強型8051處理器、8.5KB的片上RAM,4KB FIFO存儲器、I/O口、數(shù)據(jù)總線、地址總線和GPIF(通用可編程接口)。
CY7C68013與外設(shè)有可編程接口GPIE和從FIFO兩種接口方式??删幊探涌贕PIF是主機方式,可以由軟件設(shè)置讀寫控制波形,靈活性很大,幾乎可以對任何8bit/16bit接口的控制器、存儲器和總線進行數(shù)據(jù)的主動讀寫,使用非常靈活,從FIFO方式是從機方式,外部控制器可像對普通FIFO一樣對FX2的多層緩沖FIFO進行讀寫。在本設(shè)計中為了方便控制,采用從FIFO方式。
2.2 CPLD芯片EPM7128SLC84
在本設(shè)計中,所用的CPLD采用Altera公司的EPM7128SLC84。它屬于MAX7000系列,是Altera公司的基于第2代MAX結(jié)構(gòu)的CPLD。它提供多達5000個可用門、128個宏單元,其引腳到引腳延時快達6ns。
可以容納各種獨立的組合邏輯和時序邏輯功能,EPM7128S的優(yōu)點是它基于E2PROM,可以通過JTAG口進行在線編輯,設(shè)計者可將設(shè)計內(nèi)容從PC機上通過下載電纜和JTAG口對EPM7128S進行任意次修改,它有多達100個I/O引腳可供編程使用,方便系統(tǒng)擴展存儲空間和外設(shè)。
本系統(tǒng)使用EPM7128S的主要功能是對各路信號的時鐘上升沿進行檢測,另外還需要完成一些控制功能,完成各路信號數(shù)據(jù)的合路,形成特定的數(shù)據(jù)格式,送入USB控制芯片的FIFO中。
2.3 硬件連接
根據(jù)系統(tǒng)對數(shù)據(jù)傳輸?shù)乃俣群蛯崟r性的要求,配置CY7C6013的工作接口模式為從FIFO模式,硬件連接方式如圖3所示。
CPLD控制采集外部數(shù)據(jù)的時鐘可同時作為CY7C68013的從FIFO模式的讀寫控制時鐘,即CY7C68013的接口時鐘連接到IFCLK引腳,F(xiàn)LAGA-FLAGD為FIFO標志引腳,用于映射FIFO的當前狀態(tài),SLWR/SLRD是CY7C68013從FIFO的寫使能/讀允許信號,CPLD向CY7C68013從FIFO提供從FIFO輸出允許信號SLOE,僅在數(shù)據(jù)輸出時有效,F(xiàn)D[15:0]為16位雙向數(shù)據(jù)總線。FIFOADR[1:0]為端點FIFO選擇信號。
3 軟件設(shè)計
本系統(tǒng)軟件設(shè)計部分包括固件、驅(qū)動程序和應(yīng)用程序的設(shè)計。
3.1 USB設(shè)備固件程序設(shè)計
固件程序是指運行在設(shè)備CPU中的程序,是整個程序設(shè)備的核心,可采用匯編語言和C語言設(shè)計,CyPress為用戶提供了一個固件程序框架,幫助用戶完成相當一部分USB協(xié)議相關(guān)的工作,用戶只需根據(jù)外設(shè)功能的具體要求,在相應(yīng)的函數(shù)中填寫函數(shù)體。Cypress提供的這一框架程序簡化了用戶的固件程序設(shè)計。
本系統(tǒng)固件開發(fā)所使用的編程語言為德國Keil公司的C51編譯器,集成開發(fā)環(huán)境為μVision2,該固件共包含以下5個文件:
1)ez-usb.lib
是EZ USB函數(shù)庫對象程序代碼。
2)usbjmptb.obj
定義了FX2中INT2和INT4的中斷跳轉(zhuǎn)表。
3)dscr.a51
包含描述符的表數(shù)據(jù),包括設(shè)備描述符、設(shè)置描述符、接口描述符、端點描述符和字串描述符等,用來定義設(shè)備的ID號、端點的設(shè)置特性,主機就是通過讀取設(shè)備的描述符來獲取USB外設(shè)的功能特性,從而給設(shè)備加載相應(yīng)的驅(qū)動程序并配置設(shè)備。
4)fw.c
是固件運行的主程序文件,負責處理主機發(fā)出的各種USB設(shè)備請求,該程序首先初始化所有的內(nèi)部狀態(tài)變量,然后調(diào)用TD_Init函數(shù)進行初始化,并打開中斷。之后,固件程序開始列舉USB設(shè)備,直至在端點0上接收到SETUP令牌包時為止。一旦接收到STUP令牌,其將重復(fù)執(zhí)行下面的任務(wù)分配過程:調(diào)用用戶函數(shù)TD_Poll,以完成用戶指定的任務(wù);檢測是否有USB設(shè)備請求(SETUP令牌)如果有,則執(zhí)行指令并作出相應(yīng)的操作,如果沒有,則繼續(xù)向下執(zhí)行,檢測USB核是否有USB掛起實踐,如果有USB掛起事件,則調(diào)用用戶程序TD_Suspend,交由用戶處理;當TD_Suspend返回為真時,USB核檢測是否重新開始事件,如果沒有USB掛起事件,則使處理器處于掛起狀態(tài),當檢測有重新開始的事件,USB核調(diào)用用戶程序TD_Resume,并繼續(xù)執(zhí)行本步驟,當TD_Suspend返回為假時,則繼續(xù)執(zhí)行本步驟。
5)periph.c
包含各種用戶功能函數(shù)(如TD_Init、TD_Poll等)及其INT2中斷服務(wù)子程序的定義,它實現(xiàn)了本系統(tǒng)的主要功能。
在本系統(tǒng)中,把端點2配置為批量傳輸、IN方向,封包大小為512字節(jié),每微幀包含2個封包,數(shù)據(jù)傳輸速率為64Mbit/s為就可滿足實際需要,終端0作為默認的控制傳輸管道來處理USB事件。
3.2 驅(qū)動程序設(shè)計
FX2的設(shè)備驅(qū)動程序有兩種:一種用來在設(shè)備接入時從主機下載固件到RAM中,稱為固件下載驅(qū)動程序(ezloader.sys);另一種是在設(shè)備重新列舉后加載的設(shè)備驅(qū)動程序(ezusb.sys)。應(yīng)用軟件通過該設(shè)備驅(qū)動程序與FX2通信。
固件的程序代碼既可以通過外部E2PROM下載,也可以通過主機下載在本系統(tǒng)中選擇從主機下載,此時外接E2PROM中存放的是固件下載的PID/VID,且第1個字節(jié)是0xC0H,系統(tǒng)通過該PID/VID找到固件下載驅(qū)動程序(ezloader.sys)將相應(yīng)的固件代碼下載到FX2的RAM中。
ezloader.sys的生成是利用Cypress公司提供的固件下載驅(qū)動程序源代碼和用戶編譯成功的固件代碼。在Win2000 DDK中創(chuàng)建的,并根據(jù)E2PROM提供的PID/VID修改相應(yīng)的.inf文件,在將固件下載RAM中后,系統(tǒng)清楚內(nèi)存中的固件下載驅(qū)動程序,并進行重新列舉,讓C8051固件控制FX2,此時,系統(tǒng)獲得由C8051固件提供的PID/VID(與E2PROM中的不同),認為有新的USB設(shè)備接入,并據(jù)此加載相應(yīng)的設(shè)備驅(qū)動程序。
Ezusb.sys是本系統(tǒng)運行時所使用的主要驅(qū)動程序,它定義了幾個IOCTL代碼,其中:IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR用于讀取USB設(shè)備描述符;IOCTL_Ezusb_GET_CONFIGURATION_DESCRIPTOR用于讀取USB設(shè)備的配置信息,IOCTL_Ezusb_BULK_READ用于主機讀取USB設(shè)備發(fā)出的塊數(shù)據(jù),IOCTL_Ezusb_GET_CURRENT_FRAME_NUMBER,用于讀取USB傳輸過程中當前的幀序號。
3.3 用戶程序設(shè)計
應(yīng)用程序開發(fā)中,可用VC++編制應(yīng)用程序。所有的用戶程序是通過I/O控制調(diào)用來訪問EZ-USB的設(shè)備驅(qū)動程序的,可以把EZ-USB設(shè)備當成文件來操作,利用CreateFile得到EZ-USB句柄,通過得到的句柄,用一個Win32函數(shù)DeviceIoControl(),把IOCTL和相關(guān)的輸入輸出緩沖區(qū)提交給驅(qū)動程序,來進行控制傳輸,用ReadFile,WriteFile進行批量傳輸。當應(yīng)用軟件退出時,用CloseHandle()關(guān)閉設(shè)備。
4 結(jié)束語
本文結(jié)合實際工程的需要,提出了基于USB接口的VSAT基帶數(shù)據(jù)采集的設(shè)計方案,并給出了硬件系統(tǒng)及軟件設(shè)計方法,在USAT通信的實際應(yīng)用中,該系統(tǒng)與后端軟件結(jié)合,很容易實現(xiàn)對VSAT數(shù)據(jù)的分析與處理,可廣泛應(yīng)用于VSAT通信系統(tǒng)中。
編輯:jq
-
芯片
+關(guān)注
關(guān)注
452文章
50217瀏覽量
420960 -
cpld
+關(guān)注
關(guān)注
32文章
1246瀏覽量
169152 -
USB接口
+關(guān)注
關(guān)注
9文章
699瀏覽量
55538 -
fifo
+關(guān)注
關(guān)注
3文章
386瀏覽量
43496
發(fā)布評論請先 登錄
相關(guān)推薦
評論