新聞中心

EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于USB接口的VSAT基帶數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

基于USB接口的VSAT基帶數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

——
作者:徐廷生,唐波,閔玲,何小海 (四川大學(xué)電子信息學(xué)院 四川省成都市 610065) 時(shí)間:2007-01-26 來源:《電子工程師》 收藏

0 引言

在眾多的衛(wèi)星通信系統(tǒng)中,vsat(甚小口徑衛(wèi)星終端)衛(wèi)星通信系統(tǒng)由于具有眾多特點(diǎn),近年來發(fā)展很快,特別在專業(yè)通信網(wǎng)領(lǐng)域存在廣闊的市場,利用此系統(tǒng)進(jìn)行通信具有靈活性強(qiáng)、可靠性高、成本低、使用方便及小站可直接裝在用戶端等特點(diǎn),并且vsat用戶數(shù)據(jù)終端可直與計(jì)算機(jī)聯(lián)網(wǎng),完成數(shù)據(jù)傳遞、文件交換、圖像傳輸?shù)韧ㄐ湃蝿?wù),從而擺脫了遠(yuǎn)距離通信地面中繼站的問題,因此,此系統(tǒng)廣泛用于石油、銀行、鐵路、民航、軍事等行業(yè)。

在vsat系統(tǒng)中,用戶終端通常是由數(shù)字衛(wèi)星接收機(jī)和計(jì)算機(jī)終端組成,數(shù)字衛(wèi)星接收機(jī)包括下變頻器、解碼器、fec(前向糾錯(cuò)),解復(fù)用器、數(shù)字基帶處理器和頻率合成器等部分,接收機(jī)輸出的數(shù)據(jù)一般通過rs-232,rs-422/449以1.2kbit/s-64kbit/s的數(shù)據(jù)率交給計(jì)算機(jī)完成應(yīng)用處理,有些高速衛(wèi)星數(shù)據(jù)接收設(shè)備解調(diào)以后,數(shù)據(jù)通過額外高速數(shù)據(jù)卡送入計(jì)算機(jī)。這種傳統(tǒng)的數(shù)據(jù)卡不僅安裝麻煩,且易受機(jī)箱內(nèi)環(huán)境的干擾,特別是這種卡通常只能接收單路數(shù)據(jù),受計(jì)算機(jī)插槽數(shù)量和地址,中斷資源的限制,不可能掛接多個(gè)設(shè)備,因此,資源浪費(fèi)尤其嚴(yán)重。

針對這種情況,本文結(jié)合衛(wèi)星接收設(shè)備數(shù)據(jù)采集的實(shí)際需要,設(shè)計(jì)了一種基于usb(通用串行總線)接口的usat基帶數(shù)據(jù)采集系統(tǒng),該系統(tǒng)通過對usb接口控制邏輯的合理設(shè)計(jì)和芯片內(nèi)部fifo的有效運(yùn)用,充分應(yīng)用了cpld(復(fù)雜可編程邏輯器件)的靈活性,僅采用單片usb接口控制芯片就實(shí)現(xiàn)了對多路多速率數(shù)字信號的實(shí)時(shí)采集,這與以往采用usb集線器來實(shí)現(xiàn)對多路多速率數(shù)字信號采集的系統(tǒng)相比,具有成本低、實(shí)現(xiàn)方便等優(yōu)點(diǎn)。

該系統(tǒng)最多可同時(shí)采集8路數(shù)字信號,單路最高速率可達(dá)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ù),支持在主機(jī)與各種即插即用外設(shè)之間進(jìn)行數(shù)據(jù)傳輸,它由主機(jī)預(yù)定傳輸數(shù)據(jù)的標(biāo)準(zhǔn)協(xié)議,在總線上的各種設(shè)備分享usb總線帶寬,它的主要優(yōu)點(diǎn)是:數(shù)據(jù)傳輸速率明顯快于一般的串口,支持控制傳輸、中斷傳輸、塊傳輸?shù)暮屯絺鬏?種傳輸方式,以滿足不同外設(shè)的需要,最多可連接127個(gè)外設(shè),支持熱拔插和即插即用,占用的系統(tǒng)資源少(只占用1個(gè)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接口控制部分和主機(jī)3部分,系統(tǒng)框圖如圖1所示。

本文引用地址:http://m.butianyuan.cn/article/21239.htm


外部輸入的8路信號中時(shí)鐘、數(shù)據(jù)均為ttl電平,采集用的統(tǒng)一時(shí)鐘為3m赫茲,是由usb控制芯片的外部時(shí)鐘經(jīng)八分頻得到的。

系統(tǒng)的工作過程如下:每路信號在cpld的控制下,按采集時(shí)鐘的統(tǒng)一節(jié)拍,各路信號的數(shù)據(jù)和時(shí)鐘都被采集進(jìn)cpld。在cpld內(nèi),先進(jìn)行各路信號的時(shí)鐘上升沿檢測,如檢測到時(shí)鐘上升沿,則在相應(yīng)路數(shù)的標(biāo)志位置1,這表明此時(shí)采到的數(shù)據(jù)有效,若沒檢測到時(shí)鐘上升沿,則在相應(yīng)路數(shù)地標(biāo)志位置0,表明此時(shí)采集的數(shù)據(jù)無效,這樣形成的各路信號數(shù)據(jù),再加上各路信號數(shù)據(jù)是否有效的標(biāo)志,形成2字節(jié)的數(shù)據(jù)送入usb控制芯片的fifo中,數(shù)據(jù)進(jìn)入usb控制芯片后,通過usb接口將數(shù)據(jù)傳輸?shù)街鳈C(jī),數(shù)據(jù)在主機(jī)中用軟件進(jìn)行處理,按照各路信號數(shù)據(jù)是否有效的標(biāo)志位,將有效數(shù)據(jù)取出,組合成各路數(shù)據(jù)。

數(shù)據(jù)送入主機(jī)時(shí)的格式如圖2所示,前一字節(jié)為各路信號數(shù)據(jù)是否有效的標(biāo)志,緊跟著的字節(jié)為各路信號的實(shí)際數(shù)據(jù),采用這種特殊的數(shù)據(jù)格式,以區(qū)分各路信號,便于采用統(tǒng)一的時(shí)鐘來實(shí)現(xiàn)對多路多速率數(shù)字信號的實(shí)時(shí)采集,從而減少了很多硬件電路,降低了成本和復(fù)雜性,實(shí)現(xiàn)更為方便,這也是本系統(tǒng)的一個(gè)創(chuàng)新點(diǎn)。

2 硬件構(gòu)成

2.1 ez-usb fx2(cy7c68013)芯片

cy7c68013屬于cypress公司的fx2系列產(chǎn)品,它提供了對usb2.0的完整解決方案,該芯片雖然采用低價(jià)的8051單片機(jī),但仍然能獲得很高的速度,主要包括usb2.0收發(fā)器、sie(串行接口引擎)、增強(qiáng)型8051處理器、8.5kb的片上ram,4kb fifo存儲器、i/o口、數(shù)據(jù)總線、地址總線和gpif(通用可編程接口)。

cy7c68013與外設(shè)有可編程接口gpie和從fifo兩種接口方式。可編程接口gpif是主機(jī)方式,可以由軟件設(shè)置讀寫控制波形,靈活性很大,幾乎可以對任何8bit/16bit接口的控制器、存儲器和總線進(jìn)行數(shù)據(jù)的主動讀寫,使用非常靈活,從fifo方式是從機(jī)方式,外部控制器可像對普通fifo一樣對fx2的多層緩沖fifo進(jìn)行讀寫。在本設(shè)計(jì)中為了方便控制,采用從fifo方式。

2.2 cpld芯片epm7128slc84

在本設(shè)計(jì)中,所用的cpld采用altera公司的epm7128slc84。它屬于max7000系列,是altera公司的基于第2代max結(jié)構(gòu)的cpld。它提供多達(dá)5000個(gè)可用門、128個(gè)宏單元,其引腳到引腳延時(shí)快達(dá)6ns??梢匀菁{各種獨(dú)立的組合邏輯和時(shí)序邏輯功能,epm7128s的優(yōu)點(diǎn)是它基于e2prom,可以通過jtag口進(jìn)行在線編輯,設(shè)計(jì)者可將設(shè)計(jì)內(nèi)容從pc機(jī)上通過下載電纜和jtag口對epm7128s進(jìn)行任意次修改,它有多達(dá)100個(gè)i/o引腳可供編程使用,方便系統(tǒng)擴(kuò)展存儲空間和外設(shè)。
本系統(tǒng)使用epm7128s的主要功能是對各路信號的時(shí)鐘上升沿進(jìn)行檢測,另外還需要完成一些控制功能,完成各路信號數(shù)據(jù)的合路,形成特定的數(shù)據(jù)格式,送入usb控制芯片的fifo中。

2.3 硬件連接

根據(jù)系統(tǒng)對數(shù)據(jù)傳輸?shù)乃俣群蛯?shí)時(shí)性的要求,配置cy7c6013的工作接口模式為從fifo模式,硬件連接方式如圖3所示。

cpld控制采集外部數(shù)據(jù)的時(shí)鐘可同時(shí)作為cy7c68013的從fifo模式的讀寫控制時(shí)鐘,即cy7c68013的接口時(shí)鐘連接到ifclk引腳,flaga-flagd為fifo標(biāo)志引腳,用于映射fifo的當(dāng)前狀態(tài),slwr/slrd是cy7c68013從fifo的寫使能/讀允許信號,cpld向cy7c68013從fifo提供從fifo輸出允許信號sloe,僅在數(shù)據(jù)輸出時(shí)有效,fd[15:0]為16位雙向數(shù)據(jù)總線。fifoadr[1:0]為端點(diǎn)fifo選擇信號。

3 軟件設(shè)計(jì)

本系統(tǒng)軟件設(shè)計(jì)部分包括固件、驅(qū)動程序和應(yīng)用程序的設(shè)計(jì)。

3.1 usb設(shè)備固件程序設(shè)計(jì)

固件程序是指運(yùn)行在設(shè)備cpu中的程序,是整個(gè)程序設(shè)備的核心,可采用匯編語言和c語言設(shè)計(jì),cypress為用戶提供了一個(gè)固件程序框架,幫助用戶完成相當(dāng)一部分usb協(xié)議相關(guān)的工作,用戶只需根據(jù)外設(shè)功能的具體要求,在相應(yīng)的函數(shù)中填寫函數(shù)體。cypress提供的這一框架程序簡化了用戶的固件程序設(shè)計(jì)。

本系統(tǒng)固件開發(fā)所使用的編程語言為德國keil公司的c51編譯器,集成開發(fā)環(huán)境為μvision2,該固件共包含以下5個(gè)文件:

1)ez-usb.lib
是ez usb函數(shù)庫對象程序代碼。

2)usbjmptb.obj
定義了fx2中int2和int4的中斷跳轉(zhuǎn)表。

3)dscr.a51
包含描述符的表數(shù)據(jù),包括設(shè)備描述符、設(shè)置描述符、接口描述符、端點(diǎn)描述符和字串描述符等,用來定義設(shè)備的id號、端點(diǎn)的設(shè)置特性,主機(jī)就是通過讀取設(shè)備的描述符來獲取usb外設(shè)的功能特性,從而給設(shè)備加載相應(yīng)的驅(qū)動程序并配置設(shè)備。

4)fw.c
是固件運(yùn)行的主程序文件,負(fù)責(zé)處理主機(jī)發(fā)出的各種usb設(shè)備請求,該程序首先初始化所有的內(nèi)部狀態(tài)變量,然后調(diào)用td_init函數(shù)進(jìn)行初始化,并打開中斷。之后,固件程序開始列舉usb設(shè)備,直至在端點(diǎn)0上接收到setup令牌包時(shí)為止。一旦接收到stup令牌,其將重復(fù)執(zhí)行下面的任務(wù)分配過程:調(diào)用用戶函數(shù)td_poll,以完成用戶指定的任務(wù);檢測是否有usb設(shè)備請求(setup令牌)如果有,則執(zhí)行指令并作出相應(yīng)的操作,如果沒有,則繼續(xù)向下執(zhí)行,檢測usb核是否有usb掛起實(shí)踐,如果有usb掛起事件,則調(diào)用用戶程序td_suspend,交由用戶處理;當(dāng)td_suspend返回為真時(shí),usb核檢測是否重新開始事件,如果沒有usb掛起事件,則使處理器處于掛起狀態(tài),當(dāng)檢測有重新開始的事件,usb核調(diào)用用戶程序td_resume,并繼續(xù)執(zhí)行本步驟,當(dāng)td_suspend返回為假時(shí),則繼續(xù)執(zhí)行本步驟。

5)periph.c
包含各種用戶功能函數(shù)(如td_init、td_poll等)及其int2中斷服務(wù)子程序的定義,它實(shí)現(xiàn)了本系統(tǒng)的主要功能。
在本系統(tǒng)中,把端點(diǎn)2配置為批量傳輸、in方向,封包大小為512字節(jié),每微幀包含2個(gè)封包,數(shù)據(jù)傳輸速率為64mbit/s為就可滿足實(shí)際需要,終端0作為默認(rèn)的控制傳輸管道來處理usb事件。

3.2 驅(qū)動程序設(shè)計(jì)

fx2的設(shè)備驅(qū)動程序有兩種:一種用來在設(shè)備接入時(shí)從主機(jī)下載固件到ram中,稱為固件下載驅(qū)動程序(ezloader.sys);另一種是在設(shè)備重新列舉后加載的設(shè)備驅(qū)動程序(ezusb.sys)。應(yīng)用軟件通過該設(shè)備驅(qū)動程序與fx2通信。
固件的程序代碼既可以通過外部e2prom下載,也可以通過主機(jī)下載在本系統(tǒng)中選擇從主機(jī)下載,此時(shí)外接e2prom中存放的是固件下載的pid/vid,且第1個(gè)字節(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ū)動程序,并進(jìn)行重新列舉,讓c8051固件控制fx2,此時(shí),系統(tǒng)獲得由c8051固件提供的pid/vid(與e2prom中的不同),認(rèn)為有新的usb設(shè)備接入,并據(jù)此加載相應(yīng)的設(shè)備驅(qū)動程序。

ezusb.sys是本系統(tǒng)運(yùn)行時(shí)所使用的主要驅(qū)動程序,它定義了幾個(gè)ioctl代碼,其中:ioctl_ezusb_get_device_descriptor用于讀取usb設(shè)備描述符;ioctl_ezusb_get_configuration_descriptor用于讀取usb設(shè)備的配置信息,ioctl_ezusb_bulk_read用于主機(jī)讀取usb設(shè)備發(fā)出的塊數(shù)據(jù),ioctl_ezusb_get_current_frame_number,用于讀取usb傳輸過程中當(dāng)前的幀序號。

3.3 用戶程序設(shè)計(jì)

應(yīng)用程序開發(fā)中,可用vc++編制應(yīng)用程序。所有的用戶程序是通過i/o控制調(diào)用來訪問ez-usb的設(shè)備驅(qū)動程序的,可以把ez-usb設(shè)備當(dāng)成文件來操作,利用createfile得到ez-usb句柄,通過得到的句柄,用一個(gè)win32函數(shù)deviceiocontrol(),把ioctl和相關(guān)的輸入輸出緩沖區(qū)提交給驅(qū)動程序,來進(jìn)行控制傳輸,用readfile,writefile進(jìn)行批量傳輸。當(dāng)應(yīng)用軟件退出時(shí),用closehandle()關(guān)閉設(shè)備。

4 結(jié)束語

本文結(jié)合實(shí)際工程的需要,提出了基于usb接口的vsat基帶數(shù)據(jù)采集的設(shè)計(jì)方案,并給出了硬件系統(tǒng)及軟件設(shè)計(jì)方法,在usat通信的實(shí)際應(yīng)用中,該系統(tǒng)與后端軟件結(jié)合,很容易實(shí)現(xiàn)對vsat數(shù)據(jù)的分析與處理,可廣泛應(yīng)用于vsat通信系統(tǒng)中。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉