基于USB接口的VSAT基帶數(shù)據(jù)采集系統(tǒng)的設計
0 引言
在眾多的衛(wèi)星通信系統(tǒng)中,vsat(甚小口徑衛(wèi)星終端)衛(wèi)星通信系統(tǒng)由于具有眾多特點,近年來發(fā)展很快,特別在專業(yè)通信網(wǎng)領域存在廣闊的市場,利用此系統(tǒng)進行通信具有靈活性強、可靠性高、成本低、使用方便及小站可直接裝在用戶端等特點,并且vsat用戶數(shù)據(jù)終端可直與計算機聯(lián)網(wǎng),完成數(shù)據(jù)傳遞、文件交換、圖像傳輸?shù)韧ㄐ湃蝿?,從而擺脫了遠距離通信地面中繼站的問題,因此,此系統(tǒng)廣泛用于石油、銀行、鐵路、民航、軍事等行業(yè)。
在vsat系統(tǒng)中,用戶終端通常是由數(shù)字衛(wèi)星接收機和計算機終端組成,數(shù)字衛(wèi)星接收機包括下變頻器、解碼器、fec(前向糾錯),解復用器、數(shù)字基帶處理器和頻率合成器等部分,接收機輸出的數(shù)據(jù)一般通過rs-232,rs-422/449以1.2kbit/s-64kbit/s的數(shù)據(jù)率交給計算機完成應用處理,有些高速衛(wèi)星數(shù)據(jù)接收設備解調以后,數(shù)據(jù)通過額外高速數(shù)據(jù)卡送入計算機。這種傳統(tǒng)的數(shù)據(jù)卡不僅安裝麻煩,且易受機箱內(nèi)環(huán)境的干擾,特別是這種卡通常只能接收單路數(shù)據(jù),受計算機插槽數(shù)量和地址,中斷資源的限制,不可能掛接多個設備,因此,資源浪費尤其嚴重。
針對這種情況,本文結合衛(wèi)星接收設備數(shù)據(jù)采集的實際需要,設計了一種基于usb(通用串行總線)接口的usat基帶數(shù)據(jù)采集系統(tǒng),該系統(tǒng)通過對usb接口控制邏輯的合理設計和芯片內(nèi)部fifo的有效運用,充分應用了cpld(復雜可編程邏輯器件)的靈活性,僅采用單片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(通用串行總線)是一種應用在pc領域的新型接口技術,支持在主機與各種即插即用外設之間進行數(shù)據(jù)傳輸,它由主機預定傳輸數(shù)據(jù)的標準協(xié)議,在總線上的各種設備分享usb總線帶寬,它的主要優(yōu)點是:數(shù)據(jù)傳輸速率明顯快于一般的串口,支持控制傳輸、中斷傳輸、塊傳輸?shù)暮屯絺鬏?種傳輸方式,以滿足不同外設的需要,最多可連接127個外設,支持熱拔插和即插即用,占用的系統(tǒng)資源少(只占用1個irp(i/o請求包));無總線競爭等。usb總線技術的提出就是想利用單一的總線技術來滿足多種應用領域的需要,usb1.1協(xié)議支持低速1.5mbit/s和全速12mbit/s兩種傳輸速度。2000年發(fā)布了usb2.0協(xié)議,它向下兼容usb1.1協(xié)議,但在usb1.1的基礎上有了質的提高,其理論傳輸速度可到480mbit/s。
1.2 系統(tǒng)結構
該系統(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),先進行各路信號的時鐘上升沿檢測,如檢測到時鐘上升沿,則在相應路數(shù)的標志位置1,這表明此時采到的數(shù)據(jù)有效,若沒檢測到時鐘上升沿,則在相應路數(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ù)字信號的實時采集,從而減少了很多硬件電路,降低了成本和復雜性,實現(xiàn)更為方便,這也是本系統(tǒng)的一個創(chuàng)新點。

2 硬件構成
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與外設有可編程接口gpie和從fifo兩種接口方式??删幊探涌趃pif是主機方式,可以由軟件設置讀寫控制波形,靈活性很大,幾乎可以對任何8bit/16bit接口的控制器、存儲器和總線進行數(shù)據(jù)的主動讀寫,使用非常靈活,從fifo方式是從機方式,外部控制器可像對普通fifo一樣對fx2的多層緩沖fifo進行讀寫。在本設計中為了方便控制,采用從fifo方式。
2.2 cpld芯片epm7128slc84
在本設計中,所用的cpld采用altera公司的epm7128slc84。它屬于max7000系列,是altera公司的基于第2代max結構的cpld。它提供多達5000個可用門、128個宏單元,其引腳到引腳延時快達6ns??梢匀菁{各種獨立的組合邏輯和時序邏輯功能,epm7128s的優(yōu)點是它基于e2prom,可以通過jtag口進行在線編輯,設計者可將設計內(nèi)容從pc機上通過下載電纜和jtag口對epm7128s進行任意次修改,它有多達100個i/o引腳可供編程使用,方便系統(tǒng)擴展存儲空間和外設。
本系統(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引腳,flaga-flagd為fifo標志引腳,用于映射fifo的當前狀態(tài),slwr/slrd是cy7c68013從fifo的寫使能/讀允許信號,cpld向cy7c68013從fifo提供從fifo輸出允許信號sloe,僅在數(shù)據(jù)輸出時有效,fd[15:0]為16位雙向數(shù)據(jù)總線。fifoadr[1:0]為端點fifo選擇信號。
3 軟件設計
本系統(tǒng)軟件設計部分包括固件、驅動程序和應用程序的設計。
3.1 usb設備固件程序設計
固件程序是指運行在設備cpu中的程序,是整個程序設備的核心,可采用匯編語言和c語言設計,cypress為用戶提供了一個固件程序框架,幫助用戶完成相當一部分usb協(xié)議相關的工作,用戶只需根據(jù)外設功能的具體要求,在相應的函數(shù)中填寫函數(shù)體。cypress提供的這一框架程序簡化了用戶的固件程序設計。
本系統(tǒng)固件開發(fā)所使用的編程語言為德國keil公司的c51編譯器,集成開發(fā)環(huán)境為μvision2,該固件共包含以下5個文件:
1)ez-usb.lib
是ez usb函數(shù)庫對象程序代碼。
2)usbjmptb.obj
定義了fx2中int2和int4的中斷跳轉表。
3)dscr.a51
包含描述符的表數(shù)據(jù),包括設備描述符、設置描述符、接口描述符、端點描述符和字串描述符等,用來定義設備的id號、端點的設置特性,主機就是通過讀取設備的描述符來獲取usb外設的功能特性,從而給設備加載相應的驅動程序并配置設備。
4)fw.c
是固件運行的主程序文件,負責處理主機發(fā)出的各種usb設備請求,該程序首先初始化所有的內(nèi)部狀態(tài)變量,然后調用td_init函數(shù)進行初始化,并打開中斷。之后,固件程序開始列舉usb設備,直至在端點0上接收到setup令牌包時為止。一旦接收到stup令牌,其將重復執(zhí)行下面的任務分配過程:調用用戶函數(shù)td_poll,以完成用戶指定的任務;檢測是否有usb設備請求(setup令牌)如果有,則執(zhí)行指令并作出相應的操作,如果沒有,則繼續(xù)向下執(zhí)行,檢測usb核是否有usb掛起實踐,如果有usb掛起事件,則調用用戶程序td_suspend,交由用戶處理;當td_suspend返回為真時,usb核檢測是否重新開始事件,如果沒有usb掛起事件,則使處理器處于掛起狀態(tài),當檢測有重新開始的事件,usb核調用用戶程序td_resume,并繼續(xù)執(zhí)行本步驟,當td_suspend返回為假時,則繼續(xù)執(zhí)行本步驟。
5)periph.c
包含各種用戶功能函數(shù)(如td_init、td_poll等)及其int2中斷服務子程序的定義,它實現(xiàn)了本系統(tǒng)的主要功能。
在本系統(tǒng)中,把端點2配置為批量傳輸、in方向,封包大小為512字節(jié),每微幀包含2個封包,數(shù)據(jù)傳輸速率為64mbit/s為就可滿足實際需要,終端0作為默認的控制傳輸管道來處理usb事件。
3.2 驅動程序設計
fx2的設備驅動程序有兩種:一種用來在設備接入時從主機下載固件到ram中,稱為固件下載驅動程序(ezloader.sys);另一種是在設備重新列舉后加載的設備驅動程序(ezusb.sys)。應用軟件通過該設備驅動程序與fx2通信。
固件的程序代碼既可以通過外部e2prom下載,也可以通過主機下載在本系統(tǒng)中選擇從主機下載,此時外接e2prom中存放的是固件下載的pid/vid,且第1個字節(jié)是0xc0h,系統(tǒng)通過該pid/vid找到固件下載驅動程序(ezloader.sys)將相應的固件代碼下載到fx2的ram中。ezloader.sys的生成是利用cypress公司提供的固件下載驅動程序源代碼和用戶編譯成功的固件代碼。在win2000
ddk中創(chuàng)建的,并根據(jù)e2prom提供的pid/vid修改相應的.inf文件,在將固件下載ram中后,系統(tǒng)清楚內(nèi)存中的固件下載驅動程序,并進行重新列舉,讓c8051固件控制fx2,此時,系統(tǒng)獲得由c8051固件提供的pid/vid(與e2prom中的不同),認為有新的usb設備接入,并據(jù)此加載相應的設備驅動程序。
ezusb.sys是本系統(tǒng)運行時所使用的主要驅動程序,它定義了幾個ioctl代碼,其中:ioctl_ezusb_get_device_descriptor用于讀取usb設備描述符;ioctl_ezusb_get_configuration_descriptor用于讀取usb設備的配置信息,ioctl_ezusb_bulk_read用于主機讀取usb設備發(fā)出的塊數(shù)據(jù),ioctl_ezusb_get_current_frame_number,用于讀取usb傳輸過程中當前的幀序號。
3.3 用戶程序設計
應用程序開發(fā)中,可用vc++編制應用程序。所有的用戶程序是通過i/o控制調用來訪問ez-usb的設備驅動程序的,可以把ez-usb設備當成文件來操作,利用createfile得到ez-usb句柄,通過得到的句柄,用一個win32函數(shù)deviceiocontrol(),把ioctl和相關的輸入輸出緩沖區(qū)提交給驅動程序,來進行控制傳輸,用readfile,writefile進行批量傳輸。當應用軟件退出時,用closehandle()關閉設備。
4 結束語
本文結合實際工程的需要,提出了基于usb接口的vsat基帶數(shù)據(jù)采集的設計方案,并給出了硬件系統(tǒng)及軟件設計方法,在usat通信的實際應用中,該系統(tǒng)與后端軟件結合,很容易實現(xiàn)對vsat數(shù)據(jù)的分析與處理,可廣泛應用于vsat通信系統(tǒng)中。
評論