高速HDLC數(shù)據(jù)實時接收/測試儀的設計實現(xiàn)
摘要:介紹了高速HDLC數(shù)據(jù)接收/測試儀的設計實現(xiàn)方案。該測試儀通過使用現(xiàn)場可編程邏輯電路(FPGA)技術(shù)和多線程軟件結(jié)構(gòu),將硬件的高速處理特性和軟件的靈活性相結(jié)合。基于PCI總線的硬件接收卡將高速數(shù)據(jù)實時傳送至系統(tǒng)緩沖區(qū),然后調(diào)用軟件進行并行數(shù)據(jù)處理,從數(shù)據(jù)流中提取出測試信息,完成接收與測試功能。
本文引用地址:http://butianyuan.cn/article/226428.htm關(guān)鍵詞:HDLC 實時數(shù)據(jù)處理 多線程
在通信系統(tǒng)的測試中,經(jīng)常需要實時接收和處理HDLC格式數(shù)據(jù)。使用自行開發(fā)的高速HDLC數(shù)據(jù)實時接收/測試儀可以很好地保證數(shù)據(jù)處理的靈活性,用戶可以根據(jù)具體的處理環(huán)境來定制測試儀的功能和性能指標。本文結(jié)合一個通信誤碼率測試 儀的開發(fā)過程,介紹高速HDLC數(shù)據(jù)接收/測試處理板的設計原理和結(jié)構(gòu)。
1 系統(tǒng)組成
該高速HDLC數(shù)據(jù)接收/測試儀共分為兩部分,一部分為數(shù)據(jù)接收硬件,由一塊微機插卡實現(xiàn);另一部分為接收終端軟件,由運行于Windows操作系統(tǒng)平臺的軟件實現(xiàn)。硬件板卡基于PCI總線結(jié)構(gòu),使用FPGA技術(shù)將數(shù)據(jù)讀寫和HDLC協(xié)議解釋固化于硬件平臺,以提高實時處理性能,同時在終端軟件上采用多線程并行處理技術(shù)減少處理延時,完成實時數(shù)據(jù)處理和指標統(tǒng)計。
2 高速HDLC數(shù)據(jù)接收/測試儀硬件設計
2.1 基本技術(shù)要求
(1)可接收HDLC格式數(shù)據(jù),也可接收同步觸發(fā)模式數(shù)據(jù),其工作狀態(tài)可由軟件通過計算機端口進行控制;
(2)接收板可接收的最高數(shù)據(jù)速率為10Mbit/s;
(3)可將HDLC格式數(shù)據(jù)中的空幀過濾掉,也可接收所有數(shù)據(jù)幀,其工作模式由軟件控制;
(4)可工作于自發(fā)自收狀態(tài),以利于調(diào)試;
(5)接收板的兼容性要好。
2.2 接收板工作原理
數(shù)據(jù)接收板原理框圖如圖1所示。測試數(shù)據(jù)通過RS-422電纜傳送到數(shù)字接收板的數(shù)據(jù)接收端,經(jīng)電平轉(zhuǎn)換后,磅給FPGA處理。接收板上由接收芯片MC3486接收RS-422電纜傳輸?shù)牟罘中盘?,并轉(zhuǎn)換為TTL電平輸入FPGA進行信號處理。FPGA產(chǎn)生20位地址和寫信號,將8位的數(shù)據(jù)由SDRAM左端口寫入,同時將工作狀態(tài)反映在狀態(tài)控制端口,計算機查詢端口狀態(tài),產(chǎn)生相應的地址和讀信號,由SDRAM的右端口將數(shù)據(jù)讀出。為協(xié)調(diào)數(shù)據(jù)到達的不均勻性和軟件讀寫的均勻性,對SDRAM的讀寫采用“乒乓式”緩沖,即將SDRAM分為高低兩區(qū),F(xiàn)PGA寫高區(qū)時,計算機讀低區(qū);FPGA寫低區(qū)時,計算機讀高區(qū)。從而保證了讀寫高速進行且不會發(fā)生沖突。GAL16V8的作用是對端口地址高8位進行譯碼,以保留FPGA管腳資源。
在實現(xiàn)“乒乓式”緩沖讀寫時,具體是讀高區(qū)數(shù)據(jù)(起始地址為d8000)還是讀低區(qū)數(shù)據(jù)(起始地址為d90000),要通過查詢方式判定。測試軟件不斷查詢端口201h的q5,若q5為1,則查詢q7和q2,若q7=1,則讀高區(qū)數(shù)據(jù),若q2=1,則讀低區(qū)數(shù)據(jù)。為了保證讀取的數(shù)據(jù)不掉幀,系統(tǒng)應能在掉幀時發(fā)出警告信息。為此,在FPGA內(nèi)做一4位計數(shù)器,對幀數(shù)計數(shù),幀計數(shù)器的值傳給端口201h的最低兩位q1和q0。軟件中設置一參數(shù)counter,首先使counter的值與幀計數(shù)器的值相同,以后每讀一幀數(shù)據(jù),counter加1(若counter大于3,則置其為0),同時讀取幀計數(shù)器的值(即q1、q0的值),與counter比較,二者不同時則發(fā)出警告信息。
接收板的狀態(tài)控制端口參數(shù)列于表1。
表1 實時HDLC數(shù)據(jù)接收板端口控制參數(shù)
端口名稱 | 端口作用 | 數(shù)據(jù)流向 | 功 能 | |||
201h | 狀態(tài)控制 | 雙向端口 | 讀入時 | Q7=1,計算機讀SDRAM低區(qū) | 寫入時 | Q0=0,過濾空幀 Q0=1,接收所有幀 |
Q7=0,計算機讀SDRAM高區(qū) | Q1=0,工作于HDLC Q1=1,工作于同步 | |||||
202h | 空幀計數(shù)器 | 只讀 | 對空幀計數(shù) | |||
203h | 數(shù)據(jù)幀計數(shù)器 | 只讀 | 對數(shù)據(jù)幀計數(shù) |
讀取HDLC格式的數(shù)據(jù)時,每幀需從第四個地址單元讀取數(shù)據(jù),即D8003h和D9003h;讀取固定速率突發(fā)方式的數(shù)據(jù)時,每幀需從第一個地址單元讀取數(shù)據(jù)。讀取的每幀數(shù)據(jù)中包含有該幀數(shù)據(jù)個數(shù)的信息,通過此信息,軟件決定何時讀完幀數(shù)據(jù)。測試數(shù)據(jù)通通RS-422電纜傳送到插卡的數(shù)據(jù)接收端,經(jīng)電平轉(zhuǎn)換后,送給FPGA處理。主要是將HDLC格式和固定速度突發(fā)方式的數(shù)據(jù)解調(diào),解調(diào)后的有效數(shù)據(jù)以乒乓方式發(fā)生一高速雙口RAM,計算機通過訪問RAM(地址定為D8000~D9FFFh)來讀取測試數(shù)據(jù)。
3 高速HDLC數(shù)據(jù)接收/測試儀軟件設計
測試儀軟件負責讀取緩沖區(qū)數(shù)據(jù)并實時處理和顯示。軟件由Visual C++編寫,可運行于Win95/98/2000/NT平臺。軟件采用多線程并行處理構(gòu)架,如圖2所示。
3.1 界面線程
界面線程負責顯示數(shù)據(jù)處理結(jié)果和用戶交互操作。界面線程將數(shù)據(jù)處理的結(jié)果實時顯示出來,包括統(tǒng)計結(jié)果、數(shù)據(jù)源碼和數(shù)據(jù)段信息等測試內(nèi)容。
3.2 緩沖區(qū)線程
緩沖區(qū)線程負責將該緩沖區(qū)內(nèi)的數(shù)據(jù)及時讀取并鎖定至軟件緩沖區(qū),并且將數(shù)據(jù)進行初始處理。
在整個測試儀軟件中,緩沖區(qū)線程負責主要的數(shù)據(jù)處理工作。在緩沖區(qū)線程中,一個處理循環(huán)在不停運行,直到界面線程的暫停和終止命令發(fā)生時停止。在該處理循環(huán)中,不停地對端口201h的q5位進行查詢,以判別是否有數(shù)據(jù)到達。如果有數(shù)據(jù),則判別緩沖區(qū)位置,并將硬件緩沖區(qū)的數(shù)據(jù)及時讀至軟件緩沖區(qū),等待后續(xù)處理。為協(xié)調(diào)高速數(shù)據(jù)和后緩數(shù)據(jù)處理之間的時間矛盾,軟件采用三級緩沖:第一級緩沖通過板卡將數(shù)據(jù)寫入至系統(tǒng)內(nèi)存;第二級緩沖將系統(tǒng)內(nèi)存管理的硬件緩沖緩沖區(qū)數(shù)據(jù)移至軟件緩沖區(qū);第三級緩沖將軟件緩沖區(qū)數(shù)據(jù)移至處理緩沖區(qū)。
為提高數(shù)據(jù)處理靈活性,測試儀軟件提供定制緩沖區(qū)功能。通過該功能,操作者可以根據(jù)實際接收的數(shù)據(jù)情況來靈活配置測試儀。對于高頻度短數(shù)據(jù),采用較大緩沖區(qū);反之,對于較低頻度長數(shù)據(jù),采用較小緩沖區(qū)。這樣,可減少數(shù)據(jù)緩沖的時間消耗,提高實時性。
3.3 數(shù)據(jù)處理線程
數(shù)據(jù)處理線程負責根據(jù)數(shù)據(jù)協(xié)議對原始數(shù)據(jù)進行拆包、信息處理和實時統(tǒng)計。
對于HDLC幀格式數(shù)據(jù),HDLC協(xié)議層數(shù)據(jù)處理已在硬件FPGA中完成,輸出至緩沖區(qū)的數(shù)據(jù)直接就是透明數(shù)據(jù)。此時,數(shù)據(jù)處理線程的主要處理對象就是存于數(shù)據(jù)處理緩沖區(qū)中的數(shù)據(jù)。根據(jù)數(shù)據(jù)協(xié)議,測試儀軟件首先將數(shù)據(jù)組合幀人原始數(shù)據(jù)中取出,并分離出組合幀中包含的總幀長、包含子幀數(shù)等信息。然后根據(jù)這些信息將組合幀拆分成子幀,再根據(jù)數(shù)據(jù)協(xié)議將內(nèi)部包含的通信信息取出,并調(diào)用實時統(tǒng)計模塊進行指標統(tǒng)計。數(shù)據(jù)處理流程如圖3所示。
本文介紹的高速HDLC數(shù)據(jù)接收/測試儀具有可靠性高、運行性能穩(wěn)定、功能定制靈活等優(yōu)點。以它為主要框架的通信誤碼率測試儀已經(jīng)成功應用于某衛(wèi)星地面站設備的出廠測試中。在測試過程中,程序穩(wěn)定可靠運行,同時,基于Windows的圖形界面提供了充足的信息顯示和良好的人機交互接口,提高了測試結(jié)果的可視性。今后,測試儀將從硬件和軟件兩個方面進一步提高響應能力,提高數(shù)據(jù)吞吐效率,使之更好地滿足實際使用要求。
評論