新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于USB接口的VSAT基帶數據采集系統的設計

        基于USB接口的VSAT基帶數據采集系統的設計

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

        0 引言

        在眾多的衛星通信系統中,vsat(甚小口徑衛星終端)衛星通信系統由于具有眾多特點,近年來發展很快,特別在專業通信網領域存在廣闊的市場,利用此系統進行通信具有靈活性強、可靠性高、成本低、使用方便及小站可直接裝在用戶端等特點,并且vsat用戶數據終端可直與計算機聯網,完成數據傳遞、文件交換、圖像傳輸等通信任務,從而擺脫了遠距離通信地面中繼站的問題,因此,此系統廣泛用于石油、銀行、鐵路、民航、軍事等行業。

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

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

        該系統最多可同時采集8路數字信號,單路最高速率可達2mbit/s,系統用于控制的cpld采用altera公司的epm7128slc84;usb接口控制芯片采用cypress公司ez-usb fx2系列cy7c68013。

        1 系統原理

        1.1 usb簡介

        usb(通用串行總線)是一種應用在pc領域的新型接口技術,支持在主機與各種即插即用外設之間進行數據傳輸,它由主機預定傳輸數據的標準協議,在總線上的各種設備分享usb總線帶寬,它的主要優點是:數據傳輸速率明顯快于一般的串口,支持控制傳輸、中斷傳輸、塊傳輸的和同步傳輸4種傳輸方式,以滿足不同外設的需要,最多可連接127個外設,支持熱拔插和即插即用,占用的系統資源少(只占用1個irp(i/o請求包));無總線競爭等。usb總線技術的提出就是想利用單一的總線技術來滿足多種應用領域的需要,usb1.1協議支持低速1.5mbit/s和全速12mbit/s兩種傳輸速度。2000年發布了usb2.0協議,它向下兼容usb1.1協議,但在usb1.1的基礎上有了質的提高,其理論傳輸速度可到480mbit/s。

        1.2 系統結構

        該系統總體框架分采集控制部分、usb接口控制部分和主機3部分,系統框圖如圖1所示。

        本文引用地址:http://www.104case.com/article/21239.htm


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

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

        數據送入主機時的格式如圖2所示,前一字節為各路信號數據是否有效的標志,緊跟著的字節為各路信號的實際數據,采用這種特殊的數據格式,以區分各路信號,便于采用統一的時鐘來實現對多路多速率數字信號的實時采集,從而減少了很多硬件電路,降低了成本和復雜性,實現更為方便,這也是本系統的一個創新點。

        2 硬件構成

        2.1 ez-usb fx2(cy7c68013)芯片

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

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

        2.2 cpld芯片epm7128slc84

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

        2.3 硬件連接

        根據系統對數據傳輸的速度和實時性的要求,配置cy7c6013的工作接口模式為從fifo模式,硬件連接方式如圖3所示。

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

        3 軟件設計

        本系統軟件設計部分包括固件、驅動程序和應用程序的設計。

        3.1 usb設備固件程序設計

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

        本系統固件開發所使用的編程語言為德國keil公司的c51編譯器,集成開發環境為μvision2,該固件共包含以下5個文件:

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

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

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

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

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

        3.2 驅動程序設計

        fx2的設備驅動程序有兩種:一種用來在設備接入時從主機下載固件到ram中,稱為固件下載驅動程序(ezloader.sys);另一種是在設備重新列舉后加載的設備驅動程序(ezusb.sys)。應用軟件通過該設備驅動程序與fx2通信。
        固件的程序代碼既可以通過外部e2prom下載,也可以通過主機下載在本系統中選擇從主機下載,此時外接e2prom中存放的是固件下載的pid/vid,且第1個字節是0xc0h,系統通過該pid/vid找到固件下載驅動程序(ezloader.sys)將相應的固件代碼下載到fx2的ram中。ezloader.sys的生成是利用cypress公司提供的固件下載驅動程序源代碼和用戶編譯成功的固件代碼。在win2000 ddk中創建的,并根據e2prom提供的pid/vid修改相應的.inf文件,在將固件下載ram中后,系統清楚內存中的固件下載驅動程序,并進行重新列舉,讓c8051固件控制fx2,此時,系統獲得由c8051固件提供的pid/vid(與e2prom中的不同),認為有新的usb設備接入,并據此加載相應的設備驅動程序。

        ezusb.sys是本系統運行時所使用的主要驅動程序,它定義了幾個ioctl代碼,其中:ioctl_ezusb_get_device_descriptor用于讀取usb設備描述符;ioctl_ezusb_get_configuration_descriptor用于讀取usb設備的配置信息,ioctl_ezusb_bulk_read用于主機讀取usb設備發出的塊數據,ioctl_ezusb_get_current_frame_number,用于讀取usb傳輸過程中當前的幀序號。

        3.3 用戶程序設計

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

        4 結束語

        本文結合實際工程的需要,提出了基于usb接口的vsat基帶數據采集的設計方案,并給出了硬件系統及軟件設計方法,在usat通信的實際應用中,該系統與后端軟件結合,很容易實現對vsat數據的分析與處理,可廣泛應用于vsat通信系統中。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 彰武县| 湛江市| 玉环县| 博客| 淳安县| 天峻县| 孟连| 灌南县| 福泉市| 乳源| 定安县| 建水县| 贵南县| 衢州市| 保靖县| 剑川县| 洞口县| 云安县| 咸宁市| 怀宁县| 徐汇区| 镇江市| 本溪| 富顺县| 雷州市| 枣强县| 城固县| 石城县| 宽城| 芜湖县| 错那县| 新余市| 南华县| 栾城县| 栾川县| 都安| 临朐县| 祁东县| 灵山县| 贵定县| 丹凤县|