新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 高速HDLC數(shù)據(jù)實(shí)時(shí)接收/測(cè)試儀的設(shè)計(jì)實(shí)現(xiàn)

高速HDLC數(shù)據(jù)實(shí)時(shí)接收/測(cè)試儀的設(shè)計(jì)實(shí)現(xiàn)

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:介紹了高速HDLC數(shù)據(jù)接收/測(cè)試儀的設(shè)計(jì)實(shí)現(xiàn)方案。該測(cè)試儀通過(guò)使用現(xiàn)場(chǎng)可編程邏輯電路(FPGA)技術(shù)和多線程軟件結(jié)構(gòu),將硬件的高速處理特性和軟件的靈活性相結(jié)合?;赑CI總線的硬件接收卡將高速數(shù)據(jù)實(shí)時(shí)傳送至系統(tǒng)緩沖區(qū),然后調(diào)用軟件進(jìn)行并行數(shù)據(jù)處理,從數(shù)據(jù)流中提取出測(cè)試信息,完成接收與測(cè)試功能。

本文引用地址:http://butianyuan.cn/article/226428.htm

關(guān)鍵詞:HDLC 實(shí)時(shí)數(shù)據(jù)處理 多線程

在通信系統(tǒng)的測(cè)試中,經(jīng)常需要實(shí)時(shí)接收和處理HDLC格式數(shù)據(jù)。使用自行開(kāi)發(fā)的高速HDLC數(shù)據(jù)實(shí)時(shí)接收/測(cè)試儀可以很好地保證數(shù)據(jù)處理的靈活性,用戶可以根據(jù)具體的處理環(huán)境來(lái)定制測(cè)試儀的功能和性能指標(biāo)。本文結(jié)合一個(gè)通信誤碼率測(cè)試 儀的開(kāi)發(fā)過(guò)程,介紹高速HDLC數(shù)據(jù)接收/測(cè)試處理板的設(shè)計(jì)原理和結(jié)構(gòu)。

1 系統(tǒng)組成

該高速HDLC數(shù)據(jù)接收/測(cè)試儀共分為兩部分,一部分為數(shù)據(jù)接收硬件,由一塊微機(jī)插卡實(shí)現(xiàn);另一部分為接收終端軟件,由運(yùn)行于Windows操作系統(tǒng)平臺(tái)的軟件實(shí)現(xiàn)。硬件板卡基于PCI總線結(jié)構(gòu),使用FPGA技術(shù)將數(shù)據(jù)讀寫(xiě)和HDLC協(xié)議解釋固化于硬件平臺(tái),以提高實(shí)時(shí)處理性能,同時(shí)在終端軟件上采用多線程并行處理技術(shù)減少處理延時(shí),完成實(shí)時(shí)數(shù)據(jù)處理和指標(biāo)統(tǒng)計(jì)。

2 高速HDLC數(shù)據(jù)接收/測(cè)試儀硬件設(shè)計(jì)

2.1 基本技術(shù)要求

(1)可接收HDLC格式數(shù)據(jù),也可接收同步觸發(fā)模式數(shù)據(jù),其工作狀態(tài)可由軟件通過(guò)計(jì)算機(jī)端口進(jìn)行控制;

(2)接收板可接收的最高數(shù)據(jù)速率為10Mbit/s;

(3)可將HDLC格式數(shù)據(jù)中的空幀過(guò)濾掉,也可接收所有數(shù)據(jù)幀,其工作模式由軟件控制;

(4)可工作于自發(fā)自收狀態(tài),以利于調(diào)試;

(5)接收板的兼容性要好。

2.2 接收板工作原理

數(shù)據(jù)接收板原理框圖如圖1所示。測(cè)試數(shù)據(jù)通過(guò)RS-422電纜傳送到數(shù)字接收板的數(shù)據(jù)接收端,經(jīng)電平轉(zhuǎn)換后,磅給FPGA處理。接收板上由接收芯片MC3486接收RS-422電纜傳輸?shù)牟罘中盘?hào),并轉(zhuǎn)換為T(mén)TL電平輸入FPGA進(jìn)行信號(hào)處理。FPGA產(chǎn)生20位地址和寫(xiě)信號(hào),將8位的數(shù)據(jù)由SDRAM左端口寫(xiě)入,同時(shí)將工作狀態(tài)反映在狀態(tài)控制端口,計(jì)算機(jī)查詢端口狀態(tài),產(chǎn)生相應(yīng)的地址和讀信號(hào),由SDRAM的右端口將數(shù)據(jù)讀出。為協(xié)調(diào)數(shù)據(jù)到達(dá)的不均勻性和軟件讀寫(xiě)的均勻性,對(duì)SDRAM的讀寫(xiě)采用“乒乓式”緩沖,即將SDRAM分為高低兩區(qū),F(xiàn)PGA寫(xiě)高區(qū)時(shí),計(jì)算機(jī)讀低區(qū);FPGA寫(xiě)低區(qū)時(shí),計(jì)算機(jī)讀高區(qū)。從而保證了讀寫(xiě)高速進(jìn)行且不會(huì)發(fā)生沖突。GAL16V8的作用是對(duì)端口地址高8位進(jìn)行譯碼,以保留FPGA管腳資源。

在實(shí)現(xiàn)“乒乓式”緩沖讀寫(xiě)時(shí),具體是讀高區(qū)數(shù)據(jù)(起始地址為d8000)還是讀低區(qū)數(shù)據(jù)(起始地址為d90000),要通過(guò)查詢方式判定。測(cè)試軟件不斷查詢端口201h的q5,若q5為1,則查詢q7和q2,若q7=1,則讀高區(qū)數(shù)據(jù),若q2=1,則讀低區(qū)數(shù)據(jù)。為了保證讀取的數(shù)據(jù)不掉幀,系統(tǒng)應(yīng)能在掉幀時(shí)發(fā)出警告信息。為此,在FPGA內(nèi)做一4位計(jì)數(shù)器,對(duì)幀數(shù)計(jì)數(shù),幀計(jì)數(shù)器的值傳給端口201h的最低兩位q1和q0。軟件中設(shè)置一參數(shù)counter,首先使counter的值與幀計(jì)數(shù)器的值相同,以后每讀一幀數(shù)據(jù),counter加1(若counter大于3,則置其為0),同時(shí)讀取幀計(jì)數(shù)器的值(即q1、q0的值),與counter比較,二者不同時(shí)則發(fā)出警告信息。

接收板的狀態(tài)控制端口參數(shù)列于表1。

表1 實(shí)時(shí)HDLC數(shù)據(jù)接收板端口控制參數(shù)

端口名稱(chēng) 端口作用 數(shù)據(jù)流向 功 能
201h 狀態(tài)控制 雙向端口 讀入時(shí) Q7=1,計(jì)算機(jī)讀SDRAM低區(qū) 寫(xiě)入時(shí) Q0=0,過(guò)濾空幀
Q0=1,接收所有幀
Q7=0,計(jì)算機(jī)讀SDRAM高區(qū) Q1=0,工作于HDLC
Q1=1,工作于同步
202h 空幀計(jì)數(shù)器 只讀 對(duì)空幀計(jì)數(shù)
203h 數(shù)據(jù)幀計(jì)數(shù)器 只讀 對(duì)數(shù)據(jù)幀計(jì)數(shù)

讀取HDLC格式的數(shù)據(jù)時(shí),每幀需從第四個(gè)地址單元讀取數(shù)據(jù),即D8003h和D9003h;讀取固定速率突發(fā)方式的數(shù)據(jù)時(shí),每幀需從第一個(gè)地址單元讀取數(shù)據(jù)。讀取的每幀數(shù)據(jù)中包含有該幀數(shù)據(jù)個(gè)數(shù)的信息,通過(guò)此信息,軟件決定何時(shí)讀完幀數(shù)據(jù)。測(cè)試數(shù)據(jù)通通RS-422電纜傳送到插卡的數(shù)據(jù)接收端,經(jīng)電平轉(zhuǎn)換后,送給FPGA處理。主要是將HDLC格式和固定速度突發(fā)方式的數(shù)據(jù)解調(diào),解調(diào)后的有效數(shù)據(jù)以乒乓方式發(fā)生一高速雙口RAM,計(jì)算機(jī)通過(guò)訪問(wèn)RAM(地址定為D8000~D9FFFh)來(lái)讀取測(cè)試數(shù)據(jù)。

3 高速HDLC數(shù)據(jù)接收/測(cè)試儀軟件設(shè)計(jì)

測(cè)試儀軟件負(fù)責(zé)讀取緩沖區(qū)數(shù)據(jù)并實(shí)時(shí)處理和顯示。軟件由Visual C++編寫(xiě),可運(yùn)行于Win95/98/2000/NT平臺(tái)。軟件采用多線程并行處理構(gòu)架,如圖2所示。

3.1 界面線程

界面線程負(fù)責(zé)顯示數(shù)據(jù)處理結(jié)果和用戶交互操作。界面線程將數(shù)據(jù)處理的結(jié)果實(shí)時(shí)顯示出來(lái),包括統(tǒng)計(jì)結(jié)果、數(shù)據(jù)源碼和數(shù)據(jù)段信息等測(cè)試內(nèi)容。

3.2 緩沖區(qū)線程

緩沖區(qū)線程負(fù)責(zé)將該緩沖區(qū)內(nèi)的數(shù)據(jù)及時(shí)讀取并鎖定至軟件緩沖區(qū),并且將數(shù)據(jù)進(jìn)行初始處理。

在整個(gè)測(cè)試儀軟件中,緩沖區(qū)線程負(fù)責(zé)主要的數(shù)據(jù)處理工作。在緩沖區(qū)線程中,一個(gè)處理循環(huán)在不停運(yùn)行,直到界面線程的暫停和終止命令發(fā)生時(shí)停止。在該處理循環(huán)中,不停地對(duì)端口201h的q5位進(jìn)行查詢,以判別是否有數(shù)據(jù)到達(dá)。如果有數(shù)據(jù),則判別緩沖區(qū)位置,并將硬件緩沖區(qū)的數(shù)據(jù)及時(shí)讀至軟件緩沖區(qū),等待后續(xù)處理。為協(xié)調(diào)高速數(shù)據(jù)和后緩數(shù)據(jù)處理之間的時(shí)間矛盾,軟件采用三級(jí)緩沖:第一級(jí)緩沖通過(guò)板卡將數(shù)據(jù)寫(xiě)入至系統(tǒng)內(nèi)存;第二級(jí)緩沖將系統(tǒng)內(nèi)存管理的硬件緩沖緩沖區(qū)數(shù)據(jù)移至軟件緩沖區(qū);第三級(jí)緩沖將軟件緩沖區(qū)數(shù)據(jù)移至處理緩沖區(qū)。

為提高數(shù)據(jù)處理靈活性,測(cè)試儀軟件提供定制緩沖區(qū)功能。通過(guò)該功能,操作者可以根據(jù)實(shí)際接收的數(shù)據(jù)情況來(lái)靈活配置測(cè)試儀。對(duì)于高頻度短數(shù)據(jù),采用較大緩沖區(qū);反之,對(duì)于較低頻度長(zhǎng)數(shù)據(jù),采用較小緩沖區(qū)。這樣,可減少數(shù)據(jù)緩沖的時(shí)間消耗,提高實(shí)時(shí)性。

3.3 數(shù)據(jù)處理線程

數(shù)據(jù)處理線程負(fù)責(zé)根據(jù)數(shù)據(jù)協(xié)議對(duì)原始數(shù)據(jù)進(jìn)行拆包、信息處理和實(shí)時(shí)統(tǒng)計(jì)。

對(duì)于HDLC幀格式數(shù)據(jù),HDLC協(xié)議層數(shù)據(jù)處理已在硬件FPGA中完成,輸出至緩沖區(qū)的數(shù)據(jù)直接就是透明數(shù)據(jù)。此時(shí),數(shù)據(jù)處理線程的主要處理對(duì)象就是存于數(shù)據(jù)處理緩沖區(qū)中的數(shù)據(jù)。根據(jù)數(shù)據(jù)協(xié)議,測(cè)試儀軟件首先將數(shù)據(jù)組合幀人原始數(shù)據(jù)中取出,并分離出組合幀中包含的總幀長(zhǎng)、包含子幀數(shù)等信息。然后根據(jù)這些信息將組合幀拆分成子幀,再根據(jù)數(shù)據(jù)協(xié)議將內(nèi)部包含的通信信息取出,并調(diào)用實(shí)時(shí)統(tǒng)計(jì)模塊進(jìn)行指標(biāo)統(tǒng)計(jì)。數(shù)據(jù)處理流程如圖3所示。

本文介紹的高速HDLC數(shù)據(jù)接收/測(cè)試儀具有可靠性高、運(yùn)行性能穩(wěn)定、功能定制靈活等優(yōu)點(diǎn)。以它為主要框架的通信誤碼率測(cè)試儀已經(jīng)成功應(yīng)用于某衛(wèi)星地面站設(shè)備的出廠測(cè)試中。在測(cè)試過(guò)程中,程序穩(wěn)定可靠運(yùn)行,同時(shí),基于Windows的圖形界面提供了充足的信息顯示和良好的人機(jī)交互接口,提高了測(cè)試結(jié)果的可視性。今后,測(cè)試儀將從硬件和軟件兩個(gè)方面進(jìn)一步提高響應(yīng)能力,提高數(shù)據(jù)吞吐效率,使之更好地滿足實(shí)際使用要求。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉