基于SOPC的簡(jiǎn)易誤碼率測(cè)試儀設(shè)計(jì)技術(shù)
本設(shè)計(jì)主要用于石油勘探儀器車與外部設(shè)備連接電纜的通信可靠性測(cè)試。誤碼率測(cè)試儀主要由測(cè)試信號(hào)發(fā)生模塊、收發(fā)模塊、誤碼統(tǒng)計(jì)模塊以及鍵盤和液晶顯示模塊等部分組成。通過對(duì)測(cè)量參數(shù)的設(shè)置,該設(shè)備可以對(duì)通信線路進(jìn)行不同速率、不同碼元的誤碼率閉環(huán)測(cè)量,并通過圖形點(diǎn)陣顯示屏進(jìn)行實(shí)時(shí)顯示,以供評(píng)估使用。
常見的誤碼率測(cè)試儀多數(shù)專用于測(cè)試各種標(biāo)準(zhǔn)高速信道,不便于測(cè)試實(shí)際應(yīng)用中大量的專用信道,并且價(jià)格高,搭建測(cè)試平臺(tái)復(fù)雜。隨著大規(guī)模集成電路的迅速發(fā)展,F(xiàn)PGA在保持其集成度高、體積小、功耗低、性價(jià)比高等特點(diǎn)的同時(shí),能夠?qū)崿F(xiàn)越來越復(fù)雜的功能,廣泛應(yīng)用于通信設(shè)備的設(shè)計(jì)實(shí)現(xiàn)。本設(shè)計(jì)采用Altera公司的Cyclone系列FPGA芯片EPlCl2,內(nèi)嵌Nios II軟核CPU,并利用SOPC技術(shù)進(jìn)行了整體設(shè)計(jì),在保證具有良好性能的同時(shí),更有利于后期的優(yōu)化和升級(jí)。接口采用ECL(電流開關(guān)型邏輯電路)電平,可以直接鏈接測(cè)試電纜,方便現(xiàn)場(chǎng)測(cè)試。
1 SOPC和Nios II概述
SOPC(System On Programmable Chip,可編程片上系統(tǒng))是基于大規(guī)模FPGA的單片系統(tǒng),是美國(guó)Altera公司于2000年提出的(同時(shí)推出了相應(yīng)的開發(fā)軟件QuartusII)。SOPC的設(shè)計(jì)技術(shù)是現(xiàn)代計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)、EDA技術(shù)和大規(guī)模集成電路技術(shù)高度發(fā)展的產(chǎn)物。SOPCBuilder是Altera公司為硬件設(shè)計(jì)人員開發(fā)的一套系統(tǒng)級(jí)硬件設(shè)計(jì)工具,通過它可以方便地創(chuàng)建Nios II CPU系統(tǒng)級(jí)設(shè)計(jì)項(xiàng)目,從而為設(shè)計(jì)人員提供SOPC設(shè)計(jì)必需的軟硬件設(shè)計(jì)平臺(tái)。
Nios II嵌入式處理器是FPGA生產(chǎn)廠商Altera公司推出的軟核CPU,是一種面向用戶的、可以靈活定制的通用精簡(jiǎn)指令集架構(gòu)(RISC)32位高性能嵌入式CPU。NiosII以軟核的方式提供給用戶,并專門為在Altera的FPGA上實(shí)現(xiàn)做了優(yōu)化,用于SOPC集成,最后在FPGA上實(shí)現(xiàn)。Nios II IDE是SOPC系統(tǒng)的軟件開發(fā)環(huán)境,在Nios II IDE中可以進(jìn)行軟件的編寫、下載和調(diào)試等工作。
2 誤碼率測(cè)試儀功能概述
誤碼率測(cè)試儀分別設(shè)有2個(gè)通信測(cè)試端口——輸出端口和輸入端口,分別連接到待測(cè)試電纜的兩端,構(gòu)成數(shù)據(jù)傳輸回路。FPGA內(nèi)部有一個(gè)Nios II軟核CPU,負(fù)責(zé)初始化和管理該系統(tǒng);用VHDL語(yǔ)言編寫了收發(fā)芯片AM7968和AM7969的控制器接口模塊,完成測(cè)試碼發(fā)送、接收、誤碼率統(tǒng)計(jì)的任務(wù);系統(tǒng)還設(shè)有4×4的矩陣掃描鍵盤和128×64分辨率的0LED圖像點(diǎn)陣顯示屏作為人機(jī)接口,如圖1所示。
用戶通過矩陣鍵盤輸入并設(shè)置測(cè)試代碼、通信速率以及測(cè)量模式(定時(shí)測(cè)量、定量測(cè)量)。確認(rèn)開始測(cè)量后,Nios配置AM7968和AM7969,并通過AM7968發(fā)送測(cè)試代碼,經(jīng)待測(cè)試電纜及AM7969接收到數(shù)據(jù)后,將接收的代碼與原始數(shù)據(jù)比較。如果發(fā)現(xiàn)不等,即認(rèn)為是誤碼,統(tǒng)計(jì)誤碼個(gè)數(shù)的計(jì)數(shù)器加1。當(dāng)測(cè)量停止時(shí),0LED顯示屏輸出誤碼率數(shù)值及其他測(cè)量信息。
3 硬件設(shè)計(jì)
3. 1 收發(fā)模塊設(shè)計(jì)
誤碼率測(cè)試儀的收發(fā)芯片采用的是美國(guó)AMD公司的AM7968和AM7969。
AM7968發(fā)送端芯片和AM7969接收端芯片提供通過同軸電纜或者光線傳輸?shù)囊话阃ㄓ媒涌?,通信速率?0~175 Mbps的范圍內(nèi)可以調(diào)節(jié)。AM7968/AM7969為并行TTL總線接口,一共有12位的數(shù)據(jù)和控制總線,可以靈活配置成8~10位數(shù)據(jù)總線,對(duì)應(yīng)4~2位控制總線的接口形式。
(1)發(fā)送端設(shè)計(jì)
如圖2所示,芯片AM7968是信號(hào)的發(fā)送端。根據(jù)功能設(shè)置,測(cè)試代碼的發(fā)送模式有固定代碼模式、循環(huán)碼模式和自定義代碼模式3種。故設(shè)置控制寄存器(mode_reg)位寬為2:OO為初始狀態(tài),系統(tǒng)位于初始化狀態(tài);01為固定代碼模式,發(fā)送系統(tǒng)預(yù)設(shè)的代碼;lO為循環(huán)代碼模式,測(cè)試代碼從00h~FFh連續(xù)循環(huán)發(fā)送;11為自定義代碼模式,發(fā)送用戶自定義的代碼。
發(fā)送頻率的設(shè)置,是通過AM7968的輸入時(shí)鐘(50MHz)直接分頻實(shí)現(xiàn)的。在AM7968的控制器中,設(shè)有時(shí)鐘分頻寄存器(clk_div_reg)。該寄存器位寬為8。也就是說,用戶可以在40~175 Mbps范圍之內(nèi),設(shè)定256種不同頻率,進(jìn)行誤碼率的測(cè)試工作,盡可能地滿足用戶的測(cè)試頻率要求。
[!--empirenews.page--]
設(shè)備上電后進(jìn)入模式選擇,用戶根據(jù)需要設(shè)定模式,確認(rèn)后,mode_reg設(shè)置完畢。隨后進(jìn)入速率選擇,設(shè)置時(shí)鐘分頻器的數(shù)值,用以設(shè)置代碼發(fā)送速率。Control_reg提供了AM7968其他端口的設(shè)置。參數(shù)設(shè)置完畢后,設(shè)置好的代碼就配合設(shè)定好的時(shí)鐘頻率,通過通信端口發(fā)送出去了。
需要特別說明的是循環(huán)代碼的發(fā)送過程。因?yàn)椋谄渌J较?,?shù)據(jù)自發(fā)送開始就一直在數(shù)據(jù)總線上有效,只要控制好數(shù)據(jù)的發(fā)送脈沖信號(hào)即可;而循環(huán)代碼模式下,數(shù)據(jù)需要實(shí)時(shí)更新,且不能有遺漏和跳躍,因此特別設(shè)計(jì)了循環(huán)碼發(fā)生模塊。它以AM7968芯片的ACK信號(hào)作為循環(huán)代碼遞增的觸發(fā)信號(hào)。這是因?yàn)锳CK信號(hào)是AM7968在數(shù)據(jù)發(fā)送完畢后立即發(fā)送的反饋信號(hào)。所以利用這個(gè)信號(hào),就很好地保證了循環(huán)代碼的可靠性。
(2)接收端設(shè)計(jì)
如圖3所示,芯片AM7969是信號(hào)的接收端。在用戶設(shè)定了代碼模式后,AM7969的控制寄存器被配置為相應(yīng)模式。之后設(shè)置誤碼計(jì)算模式,并將誤碼計(jì)數(shù)器復(fù)位,且設(shè)置好對(duì)應(yīng)的對(duì)照代碼。
AM7969芯片中的鎖相環(huán)時(shí)鐘生成器(PLL clockgenerator),可以從接收到的數(shù)據(jù)流中分離出時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào)。
由于線路傳輸存在延時(shí)問題,會(huì)使AM7969分離的時(shí)鐘相對(duì)于發(fā)送端AM7968的時(shí)鐘滯后。對(duì)比較器兩端的輸入來說,出現(xiàn)了不同步的情況。如果AM7969也利用本地系統(tǒng)時(shí)鐘,那么其接收到的數(shù)據(jù)就會(huì)紊亂。這種方法不可取。
本系統(tǒng)采取發(fā)送同步序列的方式來進(jìn)行同步。在測(cè)量開始后,發(fā)送端發(fā)送同步序列。在10 ms內(nèi)(此時(shí)間閾值可進(jìn)行設(shè)置),如果接收端沒有收到同步序列,則判定線路故障,無法正常測(cè)量;如果在時(shí)間閾值內(nèi)收到同步序列,則立刻進(jìn)入測(cè)試狀態(tài)。例如,當(dāng)發(fā)送代碼A0后,接收端如果在時(shí)限內(nèi)(時(shí)間閾值)收到信號(hào),則進(jìn)行比較,之后發(fā)送1個(gè)反饋信號(hào)Dstrb和1個(gè)數(shù)據(jù)A1,依此類推;如果接收端沒有收到信號(hào),則系統(tǒng)將認(rèn)為是誤碼丟失,記為誤碼,同時(shí)自行發(fā)送1個(gè)偽Dstrb,繼續(xù)測(cè)量。
3.2 顯示模塊設(shè)計(jì)
顯示部分采用了Visionox公司的VGGl2864E—S002、128×64點(diǎn)陣的單色圖形顯示模塊。該模塊有以下特點(diǎn):亮度高,對(duì)比度高,視角寬,響應(yīng)速度快,溫度范圍寬,功耗低;8位并行數(shù)據(jù)接口,讀、寫操作時(shí)序;模塊內(nèi)藏64×64顯示數(shù)據(jù)RAM(RAM中每位數(shù)據(jù)對(duì)應(yīng)OLED屏上一個(gè)點(diǎn)的亮、暗狀態(tài));接口電路簡(jiǎn)單,使用方便。
本設(shè)計(jì)通過VHDL語(yǔ)言編寫接口時(shí)序IP核控制器oled.VHD,使其作為Slave device連接到Avalon總線上,實(shí)現(xiàn)了數(shù)據(jù)顯示功能。
3.3 誤碼率測(cè)試儀的SOPC設(shè)計(jì)
圖4為在SOPC Builder工作窗口中的該誤碼率測(cè)試儀的SOPC系統(tǒng)。
其中,cpu_0為主Nios II處理器,cfi_flash_bridge_O為Avalon三態(tài)橋用來連接Flash IP核控制器cfi_flash_O,sdram是SDRAM IP核控制器,timer_O是Nios II內(nèi)部定時(shí)器,oled_O是OLED IP核控制器,pio_0是按鍵外部引腳,am7968_2_O和am7969_2_0分別是用VHDL語(yǔ)言編寫的收發(fā)芯片AM7968和AM7969的1P核控制器。
[!--empirenews.page--]
3.4 用SignalTap嵌入式邏輯分析儀驗(yàn)證設(shè)計(jì)
SignalTap允許設(shè)計(jì)者在FPGA運(yùn)行期間同時(shí)監(jiān)視內(nèi)部信號(hào)。通過下載電纜或傳統(tǒng)的分析設(shè)備連接到用戶PC機(jī)上,便可以在用戶的PC機(jī)上觀察到這些信號(hào)的波形。使用SignalTap類似于使用邏輯分析儀,用戶能夠設(shè)置初始化、觸發(fā)(內(nèi)部或外部)和顯示條件并觀察內(nèi)部信號(hào),以此研究運(yùn)行狀態(tài)。用戶的分析參數(shù)可以被編譯為嵌入式邏輯分析儀(ELA),它和設(shè)計(jì)的其他數(shù)據(jù)一起配置FPGA。
圖5是將誤碼率測(cè)試儀硬件邏輯下載到FPGA中,用SignalTap看到的系統(tǒng)實(shí)際運(yùn)行時(shí)的波形截圖。它顯示的是當(dāng)測(cè)試代碼設(shè)定為循環(huán)代碼模式時(shí),測(cè)試代碼從0OH到FFH之間循環(huán)發(fā)送的波形情況。信號(hào)am_clk是系統(tǒng)時(shí)鐘;to_7969clk是信號(hào)接收端AM7969的輸入時(shí)鐘;am_ack是信號(hào)發(fā)送端AM7968的發(fā)送反饋信號(hào),每返回一個(gè)am_ack表示有一個(gè)數(shù)據(jù)已經(jīng)發(fā)送出去;to_7969_clk是指AM7969從接收到的信號(hào)中分離出來的時(shí)鐘信號(hào),從SignalTap可以看出有一定的延時(shí);am_data信號(hào)是發(fā)送端AM7968發(fā)出的數(shù)據(jù);to_7969_data是信號(hào)接收端AM7969收到的數(shù)據(jù),可以看出,線路上有一定的延時(shí);am_strb和tO_7969_dstrb分別是AM7968和AM7969的數(shù)據(jù)發(fā)送和接收的同步脈沖信號(hào),本測(cè)試儀就是利用這個(gè)信號(hào)來統(tǒng)計(jì)測(cè)試碼發(fā)送個(gè)數(shù)和測(cè)試碼接收個(gè)數(shù)的。
4 軟件設(shè)計(jì)
在軟件設(shè)計(jì)方面,本著簡(jiǎn)單易用的原則進(jìn)行,在盡可能滿足實(shí)際使用需求的同時(shí),提供友好的人機(jī)交互接口。下面分別介紹一下軟件的開發(fā)環(huán)境(Nios II IDE)和軟件開發(fā)設(shè)計(jì)。
Nios II集成開發(fā)環(huán)境(IDE)是Nios II系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以在Nios IIIDE下完成,包括編輯、編譯和調(diào)試程序。Nios II IDE提供了一個(gè)統(tǒng)一的開發(fā)平臺(tái),用于所有Nios II處理器系統(tǒng)。僅僅通過1臺(tái)PC機(jī)、1片A1tera公司的FPGA以及1根JTAG下載電纜,軟件開發(fā)人員就能夠往Nios II處理器系統(tǒng)寫入程序,并與Nios II處理器系統(tǒng)進(jìn)行通信。Nios II IDE為軟件開發(fā)提供4個(gè)主要功能:工程管理器、編輯器和編譯器、調(diào)試器、閃存編程器。
為了便于大批量地測(cè)量線路的誤碼率,方便用戶使用,設(shè)計(jì)了“自動(dòng)測(cè)量”模式。該模式的各種參數(shù)是用戶預(yù)先設(shè)置好的,其中包括測(cè)試模式、測(cè)試速率、測(cè)試代碼以及時(shí)間閾值或者數(shù)量閾值。這樣,用戶在檢測(cè)大批量的通信電纜時(shí),就不需要重復(fù)進(jìn)行繁瑣的參數(shù)設(shè)置了。表1是需要用戶設(shè)置的參數(shù),圖6為主程序流程。
5 結(jié) 論
本文結(jié)合石油勘探儀器車與外部設(shè)備連接電纜測(cè)試的實(shí)際,提出了一種采用SOPC技術(shù)的誤碼率測(cè)試儀整體設(shè)計(jì)實(shí)現(xiàn)方案。能夠較好地滿足測(cè)量要求,接口友好,并且在誤碼率上給予用戶比較客觀的評(píng)價(jià)。設(shè)備具有體積小、重量輕、功耗低、成本低、性能高、易于軟硬件升級(jí)等優(yōu)點(diǎn)。比起其他專業(yè)誤碼率測(cè)試設(shè)備,在經(jīng)濟(jì)性、實(shí)用性方面表現(xiàn)得尤為突出。