《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 適于底層協(xié)議棧開發(fā)的數據采集與仿真系統(tǒng)
適于底層協(xié)議棧開發(fā)的數據采集與仿真系統(tǒng)
黃建堯, 劉開華, 李 琨
天津大學 電子信息工程學院, 天津 300072
摘要: 針對數字通信系統(tǒng)中底層協(xié)議棧開發(fā)過程中處理數據量大,,出現問題不易再現、難于追蹤的問題,設計了一種專門用于底層協(xié)議棧開發(fā)的高速數據采集,、仿真系統(tǒng),。系統(tǒng)采用USB總線作為高速數據通路,使用FPGA進行格式轉換及數據緩沖,。論述了仿真系統(tǒng)的工作原理和系統(tǒng)框架,,分析了數據轉換、解析的流程,,給出了系統(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

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

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

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

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

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

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

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

    本文設計了一種專門用于底層協(xié)議棧開發(fā)的數據采集與仿真系統(tǒng),利用USB高速傳輸特點以及物理連接的便利性,,采用CY68013A進行數據傳遞,,充分利用其GPIF資源,使用FPGA進行格式轉換,。文中對仿真系統(tǒng)的整體框架和數據轉換細節(jié)進行了詳細說明,。該系統(tǒng)可用于各種類型協(xié)議棧調試,便于追蹤,、再現問題,。經過實驗驗證,系統(tǒng)可承受100 Mb/s的實時數據流,,在數字集群手持終端開發(fā)中進行了廣泛應用,,不僅降低了協(xié)議棧的開發(fā)難度,而且縮短了開發(fā)周期,,有很高的實用性,。
參考文獻
[1]  劉澤西,程晶晶,,孔力.基于USB2.0接口的高速實時數據采集系統(tǒng)[J].測控技術,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的同步高速數據采集器的設計[J].電子技術應用,2004,31(8):13-15.
[4]  安榮,,任勇峰,,李圣昆.基于FPGA和USB2.0的數據采集系統(tǒng)[J].儀器儀表與傳感器,2009(3):49-51.
[5] 周彬,,??“睿簨桑赨SB2.0低功耗實時數據采集系統(tǒng)的設計[J].儀器儀表與傳感器,,2009(4):33-35.

此內容為AET網站原創(chuàng),,未經授權禁止轉載。