專利名稱::適于數字通信終端底層協議棧的數據采集與仿真系統的制作方法
技術領域:
:本實用新型涉及數字通信終端的數據采集與處理系統,特別涉及一種適于數字通信終端底層協議棧的數據采集與仿真系統。
背景技術:
:隨著軟件無線電思想與技術的發展,現代數字通信系統中越來越多的使用通用數字信號處理器(DSP)結合高速模/數(A/D)、數/模(D/A)轉換器來進行通信體系模型中物理層(信號的調制、解調)和媒體接入層(信道編、解碼)的部分數據處理工作。近年來,數字信號處理理論發展迅猛,數字信號處理器工作頻率及處理能力不斷提高,數字通信系統中越來越多的工作能夠通過DSP來完成,因而DSP本身的程序結構也越來越復雜。由于通信信號(尤其是無線通信)本身具有很強的實時性、隨機性特點,造成DSP的輸入數據缺乏規律性,一閃即逝,從而導致相應的處理程序出現了問題不好復現,而且問題難于追蹤、捕捉,這就給DSP的程序設計與調試帶來了較大困難。常見的嵌入式系統調試手段有JTAG仿真器調試、串口輸出、通用輸入輸出端口(GPI0)輸出等幾種。JTAG仿真器可以連接硬件電路,通過JTAG協議直接訪問芯片內部寄存器,從而達到在線仿真的目的,可以設置斷點調試程序。但是由于底層協議棧所處理的通信信號有很強的實時性和隨機性,程序一旦出現異常,使用JTAG仿真器不具備實時調試能力,無法捕捉連續的信息,無法分析異常的前因后果,因而這種方式不適于底層協議棧調試。串口輸出是嵌入式系統遠程調試最常用的一種方法,主要是因為串口是一種比較常用的通信端口,協議簡單,大多數設備都支持,另外在計算機上處理串口數據也很容易。調試時,在目標程序中添加一些調試信息從串口輸出,在計算機上通過接收到的串口數據可以比較容易的分析目標程序的流程。但這種方法一個致命的弱點就是串口速率很低,最高只能達到115200bit/s。而對于底層通信協議棧來說,從信道接收到的數據一般都有較高的數據率,一般都達到幾Mbit/s甚至更高,如果需要跟蹤每個數據的處理流程,那么串口速率顯然是不夠用的。GPI0是另一種比較常見的嵌入式程序調試方法,程序通過設置幾個GPI0引腳的狀態,來表示某種流程或者結果,通過示波器來觀察GPI0的信號變化情況,從而得到程序的運行狀態。由于GPI0變化速率很快,因而這種方式能夠跟蹤高速信號,但其弱點是GPI0只能以電平的高低來表示兩種狀態,即使使用多個GPI0端口也只能表示有限的狀態。一些算法的實現程序,調試時需要知道某一步計算結果的具體數值,這時候GPI0調試方式就無能為力了。常見的數據采集系統一般通過A/D轉換器直接采集模擬信號。整個通信系統中有多個數據采集切入點可選,可以對中頻信號直接采樣,也可以對基帶信號采樣,但這種采集方式,采集系統需要直接連接到終端模擬信號通路上,很可能由于匹配等原因造成原信號的失真,直接影響底層協議棧解調部分的正常運行。同時由于A/D轉換器本身的差異,也不能保證采集系統采集到的數據與DSP的輸入數據完全一致,那么就不能保證對底層協議棧運行狀況再現時得到完全一致的數據流程。因而這種采集系統也不適合底層通信協議棧的調試。
發明內容鑒于上述技術現狀,本實用新型的目的是采用高速的數據采集系統,來收集底層協議棧的運行信息,之后根據收集到的信息,在計算機上進行分析,以再現當時底層協議棧的運行狀況,方便查找問題。由此設計了適于數字通信終端底層協議棧的數據采集與仿真系統。本實用新型為實現上述目的所采取的技術方案是一種適于數字通信終端底層協議棧的數據采集與仿真系統,其特征在于包括數字信號處理器、數據采集系統和計算機仿真系統,數據采集系統包括FPGA和USB接口芯片以及與之對應的FPGA程序存儲器和USB接口芯片程序存儲器,計算機仿真系統包括計算機以及運行于計算機之上的數據接收程序模塊和系統仿真程序模塊,所述的數字信號處理器分別通過地址總線、數據總線連接到數據采集系統內的FPGA上,FPGA的采集輸出端連接到USB接口芯片的數據輸入端口及寫使能上,USB接口芯片通過USB總線連接到計算機仿真系統的計算機上,計算機上運行的數據接收程序模塊與系統仿真程序模塊連接。本實用新型所產生的有益效果是采用數據采集系統直接與數字信號處理器高速數據總線相連的方式,數字信號處理器將自身的輸入數據以及其它相關運行狀態通過數據總線發送至數據采集系統,能夠保證采集到的數據與底層協議棧輸入數據完全一致。由于數據總線讀寫速率極高,耗時極短,因而不會對底層協議棧運行造成影響。該系統適合于對底層協議棧進行開發、調試,從而能夠達到追蹤、再現問題,查找程序缺陷的目的。圖1是本實用新型連接原理示意圖并作為摘要附圖;圖2是本實用新型工作程序流程圖;圖3是本實用新型的FPGA格式轉換時序圖;其中圖a是DSPEMIFS總線輸出時序圖;圖b是CY7C68013AGPIF輸入時序圖;圖4是本實用新型系統仿真程序流程圖;圖5是本實用新型數據接收程序模塊中的數據解析程序流程圖。具體實施方式以下結合附圖對本實用新型作進一步說明。為了滿足高速采集的需要,數據采集系統可以采用PCI總線、USB總線等方式與計算機相連。采用PCI總線方式的采集卡應用比較廣泛,也有很多優勢。但是它需要將采集卡安裝在計算機機箱內,受機箱內部復雜的電磁波干擾比較厲害,對于無線通信系統來說很可能會影響其正常工作。另一方面,PCI板卡安裝和拆卸不方便,不利于對移動終端進行現場數據采集。USB總線方式具有即插即用、連接簡便的特點,正好可以克服上述PCI總線的缺點,只是傳輸速率略低,理論上能夠達到480Mbit/s,但這對于大多數應用來說已經足夠,因而USB總線是數據采集卡與計算機比較理想的接口。如圖1所示,本系統包括數字信號處理器(DSP)、數據采集系統和計算機仿真系統,數據采集系統包括現場可編程門陣列(FPGA)和USB接口芯片以及與之對應的FPGA程序存儲器和USB接口芯片程序存儲器,計算機仿真系統包括計算機以及運行于計算機之上的數據接收程序模塊和系統仿真程序模塊,DSP分別通過地址總線、數據總線、片選、寫使能連接到數據采集系統內的FPGA上,FPGA的采集輸出端連接到USB接口芯片的數據輸入端口及寫使能上,USB接口芯片通過USB總線連接到計算機仿真系統的計算機上,計算機上運行的數據接收程序模塊與系統仿真程序模塊連接。DSP輸出數據格式與USB接口芯片輸入數據格式不匹配,DSP輸出數據不能直接通過USB接口芯片傳輸到計算機上,需要對其進行時序、邏輯轉換,因而采用FPGA作為中間接口芯片,實現二者的數據匹配。DSP的地址總線與數據總線連接到數據采集系統中的FPGA上,選擇一組空閑的外部總線地址空間作為采集輸出,將對應的片選(CS)與寫使能(WE)連接到數據采集系統上。數據采集系統內部包含FPGA與USB接口芯片,以及與之對應的程序存儲器。系統上電時,FPGA及USB程序存儲器將內部存儲的程序上載到對應的芯片中。FPGA與目標終端的DSP輸出總線相連,另一端與USB接口芯片的數據輸入端口相連。USB接口芯片通過USB總線連接到計算機上,計算機仿真系統中的數據接收模塊通過USB總線接收數據,并將接收到的數據解析、存儲成仿真數據文件,作為系統仿真模塊的輸入。如圖2所示,系統工作流程包括如下步驟(1)、目標終端底層協議棧運行的DSP將需要采集的各種數據通過總線發送到數據采集系統中的FPGA上;不同的地址用來區分不同的數據類型。(2).FPGA將DSP總線地址、數據格式及時序轉換成USB接口芯片的輸入格式及時序,發送到USB接口芯片的數據接收端口,并通過寫使能信號通知USB接口芯片數據已經準備好,可以接收。(3)、USB接口芯片對FPGA發送的數據進行緩存,并將其轉換成USB總線格式,等待計算機發送讀取指令時,將數據傳送到計算機上。(4)、計算機仿真系統中的數據接收模塊通過底層驅動程序,接收USB總線數據,并進行解析,存儲成仿真數據文件。(5)、系統仿真程序模塊以仿真數據文件作為輸入數據,對DSP底層協議棧運行狀況進行仿真再現,方便開發人員查找問題。在實際應用中,目標終端的DSP為TI公司0MAP5910雙核處理器中的C55x系列DSP芯片,FPGA選擇Altera公司的EP1C3芯片,USB接口芯片采用Cypress公司的CY7C68013A芯片。DSP的低七位地址總線AOA6,十六位數據總線(DOD15),慢速外部存儲器接口(EMIFS)的片選信號CS2,寫使能(TO)信號連接到FPGA上。FPGA與CY7C68013芯片的十六位數據輸入總線(FD0FD15)以及寫使能(RDY)相連。CY7C68013A芯片外部通用可編程接口(GPIF)可作為數據輸入端口的僅有十六位(FD0FD15),而DSP輸出的攜帶信息數據一共有二十三位(十六位數據線DOD15和七位地址線AOA6),故而需要將多出的七位地址信息嵌入到數據中去,將一個十六位數據拆分成兩個,每個數據中的低八位(FD0FD7)用于存儲原數據信息(DOD7或D8D15),高七位(FD8FD14)存放地址類型信息(AOA6),最高位(FD15)用于標識當前數據中FD0FD7是原數據的DOD7,還是D8D15,具體格式如圖3中的b圖所示。CY7C68013A芯片GPIF端口使用內部48MHz時鐘,每個GPIF信號周期為20.83ns。而FPGA為了與高速設備兼容,需要使用更高的時鐘源,二者時鐘不同步,為了保證GPIF能夠采集到RDY信號,FPGA輸出的信號至少需要保持1.5個GPIF信號周期。GPIF每次從外部讀取數據存入FIFO需要六個狀態,故而每個輸出數據間隔應大于六個GPIF信號周期。C55xDSP主頻時鐘144MHz,與FPGA連接的為EMIFS外部總線,則FPGA轉換信號時序如圖3所示,其中a圖為DSPEMIFS輸出時序,b圖為經FPGA轉換后的CY7C68013A芯片GPIF輸入時序及數據格式。由于CY7C68013A芯片內置的8051內核時鐘周期較慢,不適于高速傳輸,因而采集程序中僅使用8051內核時鐘進行初始化配置,而不干預數據傳輸過程。CY7C68013A芯片通過外部GPIF讀取數據,存入其內部的先進先出(FIFO)存儲器中,等待計算機從USB總線發出讀取數據的指令時將FIFO中的數據通過USB總線傳入計算機中。采用Cypress公司提供的通用程序框架以及圖形化GPIF設計工具,參照圖3中b圖的時序,編輯GPIF波形。USB總線選擇傳輸大量數據時比較常用的批量(Bulk)傳輸模式,硬件配置程序采用Cypress公司提供的程序模板。計算機仿真系統在Windows操作系統下運行,其中的數據接收程序模塊包括數據接收和數據解析兩個部分,數據接收程序使用USB驅動程序接收數據,USB接口驅動程序可直接使用Cypress公司提供的ez-usb驅動,由于ez-usb驅動沒有提供高級的文件操作10方式,因而需要調用比較底層的DeviceloControl函數來處理。考慮到Bulk傳輸方式完全是由主機端(計算機)發起讀操作,從機端(數據采集系統)只能被動的等待,而當CY7C68013A芯片內置的FIFO緩存寫滿之后,如果主機不能及時的發起讀操作,則FIFO不再接收數據寫入操作,因而會有少量的數據丟失,對于底層協議棧調試來說,這種少量的數據丟失可能引起程序流程錯誤,是不能接受的。故而數據接收程序應采用多線程處理方式,將接收USB數據的工作列為單獨的線程,并將其優先級設置為實時性最高的THREAD_PRI0RITY_TIME_CRITICAL,防止接收數據過程被系統中其它進程打斷,以確保每次讀操作能夠及時發出。同時也要保證計算機操作系統中同時運行的進程盡量少,關掉不必要的后臺進程。數據接收程序接收到的數據先存入臨時數據文件中,以備數據解析程序使用。臨時數據文件以字(十六位)為單位存儲,低字節在前,每個數據用兩個字來表示,與FPGA轉換后的數據格式一致,每個字的低字節存儲數據信息,高字節存儲地址信息,如表1所示。表1臨時數據文件存儲格式<table>tableseeoriginaldocumentpage6</column></row><table>要想再現底層協議棧運行狀態,除了保證底層協議棧整體輸入、輸出一致外,最大的難度在于系統定時,要能夠準確再現各種事件的發生時刻。基于軟件無線電技術的數字通信系統大都采用過采樣方式,A/D、D/A速率都比較高而且穩定,因而底層協議棧也大多以A/D、D/A的輸入、輸出中斷作為系統定時。再者通信終端作為接收機時,底層協議棧需要以A/D采樣數據作為其它部分(信道估計與均衡、解調、信道解碼等)的驅動數據;作為發射機時,D/A輸出數據是底層協議棧的最終輸出結果,需要仿真程序進行驗證。故而仿真程序可以采用A/D、D/A中斷來劃分程序運行的最小時間片,其它各種事件的發生都通過中斷個數來記時,仿真程序通過判斷A/D、D/A數據的個數來調用各程序函數來再現底層協議棧運行狀況及數據流向。這樣就可以在不增加開銷的情況下,盡最大可能保證仿真程序與實際DSP中運行的協議棧一致,方便再現問題。由前所述,仿真時所用的數據需在DSP的底層協議棧代碼中輸出。首先需要輸出的為前端A/D、D/A數據,以及底層協議棧與上層協議棧之間的交互數據,這是底層通信協議棧接收、發射信息時所需的輸入數據與最終的輸出結果。其次,其它外圍設備產生的中斷和輸入數據也會影響底層協議棧流程,是仿真時所必須的部分。再次,底層協議棧各任務喚醒、掛起、運行、結束等狀態變化需要輸出,以保證仿真程序運行時刻與實際情況一致。另外,在兩次A/D、D/A中斷之間會發生多次變化的全局變量也需要輸出,以彌補時間片劃分的不足。表1所示的接收數據不便直接用于仿真,需要進行格式轉換。仿真時所有事件通過A/D、D/A數據記時,故而除A/D、D/A數據外,其它類型數據需要記錄A/D、D/A數據個數信息,作為時間戳,因而可將所有數據分為兩大類A/D、D/A數據和非A/D、D/A數據。為了便于仿真,將這兩種類型數據分別存放于兩個文件中,作為系統仿真模塊的輸入文件。在解析數據時,需要將為了與CY68013A芯片兼容而通過FPGA拆分開的兩個十六位數據重新合并為一個,并將不同類型的數據分開。A/D、D/A數據一般長度固定,由A/D、D/A轉換器分辨率(位數)而定,本例中為十六位,每次中斷輸出一個數據,則解析后的數據格式如表2所示。表2A/D、D/A數據存儲格式<table>tableseeoriginaldocumentpage7</column></row><table>非A/D、D/A數據根據程序需求,長度不固定,可在協議棧程序輸出數據中包含長度信息,也可在接收程序與輸出程序中提前規定好數據長度,例如非A/D、D/A數據以字為單位,數據長度為N,則解析后的數據格式如表3所示。表3非A/D、D/A數據存儲格式<table>tableseeoriginaldocumentpage7</column></row><table>由于底層協議棧需要兼顧外圍硬件控制,各種外部中斷比較多,很可能會打斷數據輸出,因而在解析數據時,需要考慮各種數據之間的嵌套。為此可以對每種數據采用單獨的緩沖區,待解析到一條完整數據之后再存入文件中,同時還要保證文件中各種非A/D、D/A數據按照發生時間的先后順序排列。如圖5所示,數據接收程序模塊的數據解析程序包括如下步驟[0045](1)、首先在臨時數據文件中讀取一個字,判斷最高位是否為1,若不為1,表示此數據低八位存儲的是DSP發送的數據DOD7,按照表1的存儲格式,此時只收到一個數據中的第一個字(每個數據包含兩個字),需要將其緩存;若最高位為1,則表示此數據低八位存儲的是DSP發送數據的D8D15,按照表1的存儲格式,此時已經收全了一個數據中的兩個字,需要將二者低八位合并為原始數據。將當前字最高位置0之后,則高八位僅表示數據類型信息AOA6。(2)、在緩沖區中從后向前搜索,是否找到高八位相同的數據,若找到,將當前低八位數據與找到的高八位數據合并為原始數據,并記錄類型信息;若未找到,則表明當前數據或之前緩沖的數據中有錯誤發生,此時應報告錯誤信息。(3)、判斷已經合并好的數據類型是否為A/D、D/A數據,若為A/D、D/A數據,則存入A/D、D/A數據文件中,并將計數值加1;若為其它類型數據,則根據當前類型信息,查找與之匹配的緩沖區中是否已有數據存在,若已有數據存在,則將數據存入本類型緩沖區;說明此條數據正在發送過程中,判斷已存在的數據個數是否已經達到此類型數據定義的長度,若已收到一條完整數據,則將此條完整信息封存。若緩沖區中沒有數據存在,則說明當前數據為新的一條數據的開始,此時應開啟新的緩沖區用來存儲后來收到的同一類型數據,并記錄當前的A/D、D/A計數值,以此作為本條信息的開始時間。(4)、對已經封存的完整非A/D、D/A數據信息,需要按照時間發生的先后順序,存入數據文件中。由于底層協議棧中斷比較多,很有可能在發送仿真數據時被中斷打斷,同時在中斷服務程序中需要發送另一類型的數據,這樣就會造成某一條數據信息中插入其它類型數據。為了對這種情況進行正確解析,在收到一條完整非A/D、D/A數據之后,需要在所有正在處理的數據信息(包括已封存的完整數據和正在緩沖的不完整數據)中進行搜索,查找當前數據是否為最早的數據信息,如果是,則將當前數據存入非A/D、D/A數據文件中。之后繼續搜索已經封存的完整數據,查找是否有完整數據的起始時刻在剩余的正在處理數據中最早,將此條信息數據接著存入非A/D、D/A數據文件中,如此反復搜索,直到所有完整數據信息搜索完畢,此時完成一個解析過程,之后在臨時文件中讀取下一個數據,開始一個新的解析過程,之后重復(1)(4),如此往復直至臨時數據文件解析完畢,解析程序結束。系統仿真模塊使用解析程序輸出的仿真數據文件對底層協議棧運行情況進行仿真再現。系統仿真之前,首先要將運行于DSP中的底層協議棧代碼轉換為計算機上可運行的代碼,一般DSP大多采用C語言和匯編語言相結合的方式進行開發,C代碼基本上不需進行大量修改,匯編代碼需要根據其工作原理,轉譯成C代碼。系統仿真時以A/D、D/A數據為驅動,通過判斷非A/D、D/A數據的發生時刻(A/D、D/A數據計數值)來調動底層協議棧各部分任務運行,以達到再現協議棧運行狀況,調試程序的目的。如圖4所示,系統仿真模塊的仿真程序包括以下步驟(1)、首先讀取一條非A/D、D/A數據,記錄當前數據的發生時刻;(2)、讀取一個A/D、D/A數據,并進行相關的處理,之后判斷是否達到非A/D、D/A數據的發生時刻,若未達到,則繼續讀取下一個A/D、D/A數據,直到到達非A/D、D/A數據發生時刻為止;若已達到,則分析本條非A/D、D/A數據類型,并進行相關處理。分析非A/D、D/A數據的內容,調用協議棧相關程序處理本條數據。此時完成一個處理過程,之后再讀取下一條非A/D、D/A數據,重復(1)(2)步驟,直到非A/D、D/A數據文件處理完畢。8[0053]應用效果舉例例如大多數通信系統都會用到卷積碼進行前向糾錯編碼,解碼時需要采用維特比譯碼算法,計算路徑度量,保留殘留路徑,若殘留路徑選擇錯誤,則可能導致譯碼錯誤。采用本系統進行調試時,可在終端協議棧程序中輸出維特比譯碼輸入數據,以及每一條路徑的度量值和殘留路徑選擇結果,在仿真系統中對輸入數據進行相同的譯碼運算,對比接收到的路徑度量值和殘留路徑選擇結果,若發現不一致,則可以確定在哪一步,哪一個比特譯碼時出現問題,這樣有利于開發人員發現協議棧程序中的錯誤,能夠快速、準確定位問題,可以提高開發效率。又如有些硬件操作需要底層協議棧控制,仿真時可以按照“[發生時間]硬件操作內容”的格式寫到文件中,作為仿真程序的輸出,這樣通過查詢輸出文件,各種硬件操作的先后關系一目了然,更形象化,有利于發現硬件控制上的邏輯錯誤。權利要求一種適于數字通信終端底層協議棧的數據采集與仿真系統,其特征在于包括數字信號處理器、數據采集系統和計算機仿真系統,數據采集系統包括FPGA和USB接口芯片以及與之對應的FPGA程序存儲器和USB接口芯片程序存儲器,計算機仿真系統包括計算機以及運行于計算機之上的數據接收程序模塊和系統仿真程序模塊,所述的數字信號處理器分別通過地址總線、數據總線、片選、寫使能連接到數據采集系統內的FPGA上,FPGA的采集輸出端連接到USB接口芯片的數據輸入端口及寫使能上,USB接口芯片通過USB總線連接到計算機仿真系統的計算機上,計算機上運行的數據接收程序模塊與系統仿真程序模塊連接。專利摘要本實用新型涉及一種適于數字通信終端底層協議棧的數據采集與仿真系統。該系統包括DSP、數據采集系統和計算機仿真系統,數據采集系統包括FPGA和USB接口芯片以及與之對應的存儲器,計算機仿真系統包括計算機以及運行于計算機之上的數據接收程序模塊和系統仿真程序模塊,DSP分別通過地址總線、數據總線、片選、寫使能連接到FPGA上,FPGA的采集輸出端連接到USB接口芯片的數據輸入端,USB接口芯片通過USB總線連接到計算機上。采用數據采集系統直接與DSP高速數據總線相連的方式,能夠保證采集到的數據與底層協議棧輸入數據完全一致。由于數據總線讀寫速率極高,耗時極短,因而不會對底層協議棧運行造成影響。該系統適于對底層協議棧進行開發、調試,從而達到追蹤、再現問題,查找程序缺陷的目的。文檔編號G06F11/36GK201583941SQ20102004320公開日2010年9月15日申請日期2010年1月5日優先權日2010年1月5日發明者侯運林,吳華榮,王長嵩,肖文雄,黃建堯申請人:天津七一二通信廣播有限公司