《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 適于底層協(xié)議棧開發(fā)的數(shù)據(jù)采集與仿真系統(tǒng)
適于底層協(xié)議棧開發(fā)的數(shù)據(jù)采集與仿真系統(tǒng)
黃建堯, 劉開華, 李 琨
天津大學 電子信息工程學院, 天津 300072
摘要: 針對數(shù)字通信系統(tǒng)中底層協(xié)議棧開發(fā)過程中處理數(shù)據(jù)量大,出現(xiàn)問題不易再現(xiàn)、難于追蹤的問題,設計了一種專門用于底層協(xié)議棧開發(fā)的高速數(shù)據(jù)采集、仿真系統(tǒng)。系統(tǒng)采用USB總線作為高速數(shù)據(jù)通路,使用FPGA進行格式轉(zhuǎn)換及數(shù)據(jù)緩沖。論述了仿真系統(tǒng)的工作原理和系統(tǒng)框架,分析了數(shù)據(jù)轉(zhuǎn)換、解析的流程,給出了系統(tǒng)仿真的一般模式。
中圖分類號: TP274
文獻標識碼: A
Data acquisition and simulation system for underlying protocol stack development
HUANG Jian Yao, LIU Kai Hua, LI Kun
School of Electronic and Information Engineering, Tianjin University, Tianjin 300072, China
Abstract: A data acquisition and simulation system is developed for underlying protocol stack development to overcome the shortcomings such as large data quantity, difficult to reproduce and recover in the procedure of underlying protocol stack developing of digital communication systems. USB is adopted as the high speed data channel for the data acquisition system. FPGA is used for format converting and data buffering. The principle and framework of the simulation system is expounded. The procedure of data conversion and resolution are analyzed. A common pattern of the simulation system is shown.
Key words : data acquisition; simulation; USB; FPGA

    隨著軟件無線電思想與技術(shù)的發(fā)展,現(xiàn)代數(shù)字通信系統(tǒng)中,越來越多地使用DSP等數(shù)字信號處理器結(jié)合高速AD、DA轉(zhuǎn)換器進行OSI 7層通信體系模型中物理層(信號的調(diào)制、解調(diào))和數(shù)據(jù)鏈路層(信道編、解碼)部分的數(shù)據(jù)處理工作。近年來,數(shù)字信號處理理論發(fā)展迅猛,數(shù)字信號處理器工作頻率及能力不斷提高,數(shù)字通信系統(tǒng)中越來越多的工作能夠通過DSP來完成,因而DSP本身的程序結(jié)構(gòu)也越來越復雜。由于通信信號(尤其是無線通信)本身具有很強的實時性、隨機性的特點,造成DSP的輸入數(shù)據(jù)缺乏規(guī)律性,一閃即逝,從而導致相應的處理程序出現(xiàn)了問題不易復現(xiàn),且問題難于追蹤、捕捉,這就給DSP的程序設計與調(diào)試帶來了較大困難。針對這一問題,本文根據(jù)一般底層通信協(xié)議棧的數(shù)據(jù)處理方法,設計了一套適合于對底層協(xié)議棧進行開發(fā)和調(diào)試的數(shù)據(jù)采集仿真系統(tǒng),以達到追蹤、再現(xiàn)問題并查找程序缺陷的目的。
1 數(shù)據(jù)采集系統(tǒng)
    數(shù)據(jù)采集系統(tǒng)主要完成從正在工作中的通信終端中采集數(shù)據(jù)的任務。
1.1 采集點的選擇
    整個通信系統(tǒng)中有多個數(shù)據(jù)采集切入點可選,可以對中頻信號直接采樣,也可以對基帶信號采樣,還可以通過模擬系統(tǒng)中的AD數(shù)據(jù)接收時序,直接接收AD輸出數(shù)據(jù)。但前兩種采集點不能確保采集到的信號數(shù)據(jù)與DSP輸入數(shù)據(jù)完全一致,而模擬AD數(shù)據(jù)時序的方式則可能影響DSP與AD之間的主從關系,影響DSP協(xié)議棧的正常運行,而且各種外部中斷的采集也比較困難。因而最為穩(wěn)妥的方式是DSP通過數(shù)據(jù)總線輸出其接收到的數(shù)據(jù)。這種方法的缺點是需要占用DSP少量資源,但這與協(xié)議棧運行相比,完全可以忽略不計,不計不會影響協(xié)議棧本身的運行。
1.2 硬件連接
    參考文獻[1]對各種數(shù)據(jù)采集系統(tǒng)進行了分析比較,并指出USB總線為數(shù)據(jù)采集卡與PC機較理想的接口,因此選用CY68013A作為USB接口芯片。采用1片FPGA進行DSP與CY68013A之間數(shù)據(jù)格式的轉(zhuǎn)換,CY68013A固件程序存放在E2PROM中,通過I2C總線連接,連接方式如圖1所示。

    其中,DSP除了輸出16位數(shù)據(jù)總線之外,還引出7位地址線(A0~A6),用以區(qū)分不同的數(shù)據(jù)類型。FPGA須將DSP外部總線輸出的數(shù)據(jù)格式轉(zhuǎn)換為CY68013A外部GPIF可兼容的格式。
1.3 FPGA程序設計
    CY68013A外部GPIF端口可作為數(shù)據(jù)輸入端口的僅有16位(FD0~FD15),而DSP輸出的信息數(shù)據(jù)一共有23位(16位數(shù)據(jù)線D0~D15和7位地址線A0~A6),故而需要將多出的7位地址信息嵌入到數(shù)據(jù)中去。將1個16位數(shù)據(jù)拆分成2個,每個數(shù)據(jù)中的低8位(FD0~FD7)用于存儲原數(shù)據(jù)信息(D0~D7或D8~D15),高7位(FD8~FD14)存放地址類型信息(A0~A6),最高位(FD15)用于標識當前數(shù)據(jù)中FD0~FD7是原數(shù)據(jù)的D0~D7或是D8~D15,具體格式如圖2(b)所示。CY68013A GPIF端口使用內(nèi)部48 MHz時鐘,根據(jù)參考文獻[2],每個GPIF信號周期為20.83 ns,二者時鐘不同步,FPGA為了與高速設備兼容,需要使用更高的時鐘源。因此,為了保證GPIF能夠采集到RDY信號,F(xiàn)PGA輸出的信號至少需要保持1.5個GPIF信號周期。GPIF每次從外部讀取數(shù)據(jù)存入FIFO需要6個狀態(tài),故而每個輸出數(shù)據(jù)間隔應大于6個GPIF信號周期。以TI公司C55系列DSP為例,主頻時鐘144 MHz,與FPGA連接的為EMIFS外部總線,則FPGA轉(zhuǎn)換信號時序如圖2所示。其中,圖2(a)為DSP EMIFS輸出時序, 圖2(b)為經(jīng)FPGA轉(zhuǎn)換后的CY68013A GPIF輸入時序及數(shù)據(jù)格式。

    考慮到DSP輸出數(shù)據(jù)時鐘可能較CY68013A GPIF采集時鐘快,因而FPGA需要設計內(nèi)置的FIFO存儲器,用于緩存DSP輸出的數(shù)據(jù)。
1.4 USB固件設計
    由于CY68013A內(nèi)置的8051內(nèi)核時鐘周期較慢,不適于高速傳輸,因而采集程序中僅使用8051進行初始化配置,而不干預數(shù)據(jù)傳輸過程。CY68013A通過外部GPIF讀取數(shù)據(jù)存入FIFO中,F(xiàn)IFO滿時通過USB傳入PC機。采用Cypress公司提供的通用程序框架以及圖形化GPIF設計工具,參照圖2(b)的時序,編輯GPIF波形。USB總線選擇傳輸大量數(shù)據(jù)時比較常用的Bulk傳輸模式,硬件配置程序采用Cypress公司提供的程序模板,參考文獻[3]對該模板進行了詳細說明,這里不再贅述,程序框架與參考文獻[4、5]類似。
1.5 PC機接收程序
    USB接口驅(qū)動程序可直接使用Cypress公司提供的ez-usb驅(qū)動。由于ez-usb驅(qū)動沒有提供高級的文件操作IO方式,因而需要調(diào)用比較底層的DeviceIoControl函數(shù)來處理??紤]到Bulk傳輸方式完全是由主機端(PC機)發(fā)起讀操作,從機端(采集板)只能被動地等待,而當CY68013A內(nèi)置的FIFO寫滿之后,如果主機不能及時地發(fā)起讀操作,則FIFO不再接收數(shù)據(jù)寫入操作,因而會有少量的數(shù)據(jù)丟失。對于底層協(xié)議棧調(diào)試,這種少量的數(shù)據(jù)丟失可能引起程序流程錯誤,是不能接受的。因此PC機端接收程序應采用多線程處理方式,將接收USB數(shù)據(jù)的工作列為單獨的線程,并將其優(yōu)先級設置為實時性最高的THREAD_PRIORITY_TIME_CRITICAL,防止接收數(shù)據(jù)過程被系統(tǒng)中其他進程打斷,以確保每次讀操作能夠及時發(fā)出。同時也要保證負責數(shù)據(jù)采集的PC機操作系統(tǒng)中同時運行的進程盡量少,關掉不必要的后臺進程。
    PC機接收到的數(shù)據(jù)先存入臨時文件中,以備后續(xù)解析、仿真程序使用。臨時文件以字(16 bit)為單位存儲,每個數(shù)據(jù)用2個字來表示,低字節(jié)在前,與FPGA轉(zhuǎn)換后的數(shù)據(jù)格式一致,如表1所示。

2 仿真系統(tǒng)
    仿真系統(tǒng)使用采集系統(tǒng)采集到的數(shù)據(jù),再現(xiàn)通信終端中的協(xié)議棧運行狀態(tài),便于開發(fā)者隨時檢查程序錯誤,對程序進行調(diào)試。
2.1 系統(tǒng)框架
    要想再現(xiàn)底層協(xié)議棧運行狀態(tài),除了保證協(xié)議棧整體輸入、輸出一致外,最大的難度在于系統(tǒng)的定時,要能夠準確再現(xiàn)各種事件的發(fā)生時刻?;谲浖o線電技術(shù)的數(shù)字通信系統(tǒng)大都采用過采樣方式,AD/DA速率都比較高而且穩(wěn)定,因而底層協(xié)議棧也大多以AD/DA的輸入、輸出中斷作為系統(tǒng)定時。當通信終端作為接收機時,底層協(xié)議棧需要以AD采樣數(shù)據(jù)作為其他部分(信道估計與均衡、解調(diào)、信道解碼等)的驅(qū)動數(shù)據(jù);作為發(fā)射機時,DA輸出數(shù)據(jù)是底層協(xié)議棧的最終輸出結(jié)果,需要仿真程序進行驗證。故而仿真程序可以采用AD/DA中斷來劃分程序運行的最小時間片,其他各種事件的發(fā)生都通過中斷個數(shù)來計時,仿真程序通過判斷AD/DA數(shù)據(jù)的個數(shù)調(diào)用各程序函數(shù)來再現(xiàn)底層協(xié)議棧運行狀況及數(shù)據(jù)流向。這樣就可以在不增加開銷的情況下,盡最大可能保證仿真程序與實際DSP中運行的協(xié)議棧一致,方便再現(xiàn)問題。
2.2  輸出數(shù)據(jù)
    根據(jù)1.1節(jié)所選擇的數(shù)據(jù)采集點,需在DSP的底層協(xié)議棧代碼中輸出仿真時所用的數(shù)據(jù): (1)需要輸出的為前端AD/DA數(shù)據(jù),以及底層協(xié)議棧與上層協(xié)議棧之間的交互數(shù)據(jù),這是底層通信協(xié)議棧接收、發(fā)射信息時所需的輸入數(shù)據(jù)與最終的輸出結(jié)果; (2)其他外圍設備產(chǎn)生的中斷和輸入數(shù)據(jù)也會影響底層協(xié)議棧流程,是仿真時所必須的部分;(3)底層協(xié)議棧各任務掛起、運行、結(jié)束等狀態(tài)變化需要輸出,以保證仿真程序運行時刻與實際情況一致。另外,在2次AD/DA中斷之間會發(fā)生多次變化的全局變量也需要輸出,以彌補時間片劃分的不足。
2.3  數(shù)據(jù)解析
    1.5節(jié)中所存儲的接收數(shù)據(jù)不方便直接用于仿真,需要進行格式轉(zhuǎn)換。根據(jù)2.1節(jié)中所述系統(tǒng)框架,所有事件通過AD/DA數(shù)據(jù)計時,故而除AD/DA數(shù)據(jù)外,其他類型數(shù)據(jù)需要記錄AD/DA數(shù)據(jù)個數(shù)信息,作為時間戳,因而可將所有數(shù)據(jù)分為兩大類:AD/DA數(shù)據(jù)和非AD/DA數(shù)據(jù)。為仿真方便,將這2種類型數(shù)據(jù)分別存放于2個文件中。在解析數(shù)據(jù)時,需要將1.3小節(jié)中為了與CY68013A兼容而通過FPGA拆分開的2個16位數(shù)據(jù)重新合并為1個,并將不同類型的數(shù)據(jù)分開。AD/DA數(shù)據(jù)一般長度固定,由AD/DA轉(zhuǎn)換器分辨率(位數(shù))而定,例如,AD/DA數(shù)據(jù)為16位,每次中斷輸出1個數(shù)據(jù),則解析后的數(shù)據(jù)格式如表2所示。

  非AD/DA數(shù)據(jù)根據(jù)程序需求,長度不固定,可在協(xié)議棧程序輸出數(shù)據(jù)中包含長度信息,也可在接收程序與輸出程序中提前規(guī)定好數(shù)據(jù)長度。例如,非AD/DA數(shù)據(jù)以字為單位,數(shù)據(jù)長度為N,則解析后的數(shù)據(jù)格式如表3所示。

    由于底層協(xié)議棧需要兼顧外圍硬件控制,各種外部中斷比較多,很可能會打斷數(shù)據(jù)輸出,因而在解析數(shù)據(jù)時,需要考慮各種數(shù)據(jù)之間的嵌套。為此,可以對每種數(shù)據(jù)采用單獨的緩沖區(qū),待解析到1條完整數(shù)據(jù)之后再存入文件中,同時還要保證文件中各種非AD/DA數(shù)據(jù)按照發(fā)生時間的先后順序排列。其流程如圖3所示。

2.4 系統(tǒng)仿真
    系統(tǒng)仿真之前,首先要將運行于DSP中的底層協(xié)議棧代碼轉(zhuǎn)換為PC機上可運行的代碼,一般DSP大多采用C語言和匯編語言相結(jié)合的方式進行開發(fā),C代碼基本上不需要進行大量修改,而匯編代碼需要根據(jù)其工作原理,轉(zhuǎn)譯成C代碼。系統(tǒng)仿真時采用2.3節(jié)中解析后的數(shù)據(jù)文件作為輸入,按照2.1節(jié)定義的仿真系統(tǒng)框架,以AD/DA數(shù)據(jù)為驅(qū)動,通過判斷非AD/DA數(shù)據(jù)的發(fā)生時刻(AD/DA數(shù)據(jù)計數(shù)值)來調(diào)動底層協(xié)議棧各部分任務運行,以達到再現(xiàn)協(xié)議棧運行狀況、調(diào)試程序的目的。仿真流程如圖4所示。有些硬件操作需要底層協(xié)議??刂?,仿真時可以按照“[發(fā)生時間] 硬件操作內(nèi)容”的格式寫到文件中作為仿真程序的輸出。這樣通過查詢輸出文件,各種硬件操作的先后關系一目了然,更形象化,有利于發(fā)現(xiàn)硬件控制上的邏輯錯誤。

    本文設計了一種專門用于底層協(xié)議棧開發(fā)的數(shù)據(jù)采集與仿真系統(tǒng),利用USB高速傳輸特點以及物理連接的便利性,采用CY68013A進行數(shù)據(jù)傳遞,充分利用其GPIF資源,使用FPGA進行格式轉(zhuǎn)換。文中對仿真系統(tǒng)的整體框架和數(shù)據(jù)轉(zhuǎn)換細節(jié)進行了詳細說明。該系統(tǒng)可用于各種類型協(xié)議棧調(diào)試,便于追蹤、再現(xiàn)問題。經(jīng)過實驗驗證,系統(tǒng)可承受100 Mb/s的實時數(shù)據(jù)流,在數(shù)字集群手持終端開發(fā)中進行了廣泛應用,不僅降低了協(xié)議棧的開發(fā)難度,而且縮短了開發(fā)周期,有很高的實用性。
參考文獻
[1]  劉澤西,程晶晶,孔力.基于USB2.0接口的高速實時數(shù)據(jù)采集系統(tǒng)[J].測控技術(shù),2007,26(2):34-37.
[2]  Cypress Semiconductor Corporation.CY7C68013A, CY7C-68014A, CY7C68015A, CY7C68016A, EZ-USB FX2LP  USB microcontroller high speed USB peripheral controller[EB/OL]. http://www.cypress.com/?rID=14181,2009-05-22.
[3]  梁鴻翔,王潤田.基于USB2.0的同步高速數(shù)據(jù)采集器的設計[J].電子技術(shù)應用,2004,31(8):13-15.
[4]  安榮,任勇峰,李圣昆.基于FPGA和USB2.0的數(shù)據(jù)采集系統(tǒng)[J].儀器儀表與傳感器,2009(3):49-51.
[5] 周彬,牛俊邦,魏嬌.基于USB2.0低功耗實時數(shù)據(jù)采集系統(tǒng)的設計[J].儀器儀表與傳感器,2009(4):33-35.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 成人a免费α片在线视频网站 | 国产女人伦码一区二区三区不卡 | 国产美女拍拍拍在线观看 | 国内自拍第100页 | 性做久久久久久久免费看 | 午夜三级在线观看 | 亚洲小视频 | 国产亚洲自在精品久久 | 日本草草视频在线观看 | 天天都色 | 中文字幕无线精品乱码一区 | 亚洲高清在线视频 | 亚洲精品免费观看 | 朝鲜美女免费一级毛片 | 国产国语在线播放视频 | 中国一级做a爱片免费 | 久久精品亚洲精品一区 | 性感美女视频免费网站午夜 | 国产精选在线播放 | 亚洲国产综合人成综合网站00 | 一区二区三区四区免费视频 | 六月丁香婷婷天天在线 | 久久免费视频观看 | 国产精品久久久99 | 男人的天堂欧美精品色偷偷 | 中文字幕在线免费观看 | 日本一区二区三区精品视频 | 黄色毛片免费 | 99视频在线免费 | 亚洲a人| 免费一级毛片在线播放欧美 | 最新主播福利视频在线观看 | 色综合久久久久久久 | 国产亚洲精品久久综合影院 | 99精品久久秒播无毒不卡 | 日本三级香港三级网站 | 日本韩国三级在线观看 | 在线观看二区三区午夜 | 国产精品高清免费网站 | 能在线观看的一区二区三区 | 亚洲一区二区在线视频 |