誤碼分析儀作為數(shù)字通信系統(tǒng)驗(yàn)收、維護(hù)和故障查詢(xún)的理想工具,廣泛應(yīng)用于同軸電纜、光纖、衛(wèi)星及局間中繼等符合CEPT(European Confence of Postal and Telecommunications Administrations)數(shù)字系列通信系統(tǒng)傳輸質(zhì)量的監(jiān)測(cè)。評(píng)價(jià)一個(gè)通信系統(tǒng)的可靠性的指標(biāo)就是檢測(cè)該通信系統(tǒng)在數(shù)據(jù)傳輸過(guò)程中誤碼率的大小,本文設(shè)計(jì)的高速信號(hào)誤碼測(cè)試儀,用于對(duì)EPON中接收和發(fā)送突發(fā)光信號(hào)的接收模塊的可靠性進(jìn)行檢測(cè)。目前誤碼分析儀的工作模式已發(fā)展到如下4種:分析儀模式、發(fā)生器模式、分析儀/發(fā)生器模式、直通模式。本設(shè)計(jì)中的誤碼測(cè)試儀屬于第3種類(lèi)型,即該誤碼測(cè)試儀可以產(chǎn)生測(cè)試的碼流,又可以進(jìn)行誤碼測(cè)試。
誤碼測(cè)試儀主要由發(fā)送模塊,接收模塊,顯示模塊,控制模塊等幾個(gè)模塊組成,系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。其中發(fā)送、接收模塊在FPGA中實(shí)現(xiàn),控制模塊由單片機(jī)實(shí)現(xiàn),顯示模塊由單片機(jī)驅(qū)動(dòng),這樣使得設(shè)計(jì)的誤碼分析儀具有體積輕巧,接口豐富,簡(jiǎn)單易用,成本低廉,內(nèi)核可升級(jí)等特點(diǎn)。
1 基于FPGA的誤碼測(cè)試儀的設(shè)計(jì)
FPGA在該設(shè)計(jì)中實(shí)現(xiàn)了誤碼測(cè)試儀的核心功能,F(xiàn)PGA設(shè)計(jì)使用的是自頂向下模塊化的設(shè)計(jì)方法。基于FPGA設(shè)計(jì)的模塊包括:SY87739L頻率計(jì)的控制模塊、SY87700時(shí)鐘提取控制模塊、計(jì)數(shù)模塊、偽隨機(jī)序列發(fā)送模塊、數(shù)據(jù)接收模塊、與單片機(jī)的通信模塊。
1.1 頻率合成芯片SY87739L的控制模塊
在設(shè)計(jì)中SY87739L合成的頻率用于偽隨機(jī)序列合成的同步時(shí)鐘,因?yàn)樵撜`碼測(cè)試儀可以測(cè)試的頻率有32 Mb/s、64 Mb/s、122 Mb/ s、155 Mb/s 4種。所以該芯片要根據(jù)設(shè)置的參數(shù)合成相應(yīng)的頻率。具體合成哪一個(gè),由FPGA來(lái)實(shí)現(xiàn)對(duì)SY87739L的控制。
SY87739L(規(guī)程式透明3.3 V 10~729 MHz分?jǐn)?shù)N合成器)是一個(gè)頻率合成芯片。依照一參考頻率源,它可以合成10~729 MHz范圍內(nèi)的差分頻率。此外它可以精確地為標(biāo)準(zhǔn)的傳輸協(xié)議合成相應(yīng)的參考頻率。SY87739L合成的頻率是由一個(gè)32位的串行輸入的編程數(shù)據(jù)決定。PROGCS為高電平時(shí),編程數(shù)據(jù)才會(huì)被SY87739L接收。若用戶(hù)需要改變編程數(shù)據(jù)獲得一個(gè)新的頻率時(shí),應(yīng)先將PROGCS設(shè)置為高電平,延時(shí)一段時(shí)間(待32 bit編程數(shù)據(jù)被SY87739L接收)后在回落到低電平。既在PROGCS的下降沿時(shí),SY87739L會(huì)由前一時(shí)段接收到32 bit編程數(shù)據(jù)決定合成新的頻率。具體步驟如下:1)確定編程數(shù)據(jù)的值;2)設(shè)置PROGCS為高電平;3)串行輸入32 bit編程數(shù)據(jù)(由PROGDI管腳輸入),同時(shí)在PROGSK端輸入時(shí)鐘信號(hào);4)設(shè)置PROGCS為低電平;5)等待LOCKED跳為高電平。
根據(jù)SY87739L的工作原理,可以用硬件語(yǔ)言編寫(xiě)出SY87739L的控制代碼,圖2是由Verilog代碼用Synplify Pro8.1綜合出的圖元。
該模塊控制SY87739L合成32 M頻率功能仿真結(jié)果(由ModelSim SE6.1仿真)如圖3所示。
測(cè)試文件中給DATA-I賦值為00000001,可以觀察出prog_di串行輸出的編程數(shù)據(jù)為0000_01100_01101_0100_000_10001_101_101;prog_cs在prog_di有效編程數(shù)據(jù)輸出為高電平,待編程數(shù)據(jù)輸出結(jié)束后回落到低電平:PROGSK輸出SY87739L的編程時(shí)鐘。經(jīng)分析可以看出SY87739L控制模塊可以實(shí)現(xiàn)預(yù)想的功能。
1.2 時(shí)鐘提取芯片SY87700V的控制模塊
SY87700V對(duì)FPGA接收的數(shù)據(jù)進(jìn)行時(shí)鐘提取和數(shù)據(jù)恢復(fù)。將恢復(fù)的數(shù)據(jù)與接收端產(chǎn)生的本地偽隨機(jī)序列進(jìn)行對(duì)比,實(shí)現(xiàn)誤碼檢測(cè),兩數(shù)據(jù)流對(duì)比時(shí)以提取的時(shí)鐘為同步時(shí)鐘。SY87700V在提取數(shù)據(jù)前要預(yù)知提取的頻率的范圍,此頻率范圍由FPGA發(fā)送給SY87700V。SY87700V的參考時(shí)鐘是否進(jìn)行分頻,也要根據(jù)設(shè)置的參數(shù)由FPGA控制。此外該模塊還要實(shí)現(xiàn)FPGA讀取SY87700V的功能,以確定SY87700V是否完成時(shí)鐘提取及數(shù)據(jù)恢復(fù)。根據(jù)SY87700V的工作原理,可以用硬件語(yǔ)言Verilog編寫(xiě)程序在FPGA實(shí)現(xiàn)控制SY87700V的模塊,圖4是由代碼綜合出的圖元。
由FPGA控制SY87700V從122M數(shù)據(jù)提取時(shí)鐘和恢復(fù)數(shù)據(jù)的功能仿真的結(jié)果波形圖(用Modelsim仿真)如下圖5所示。
測(cè)試文件中給data_i賦值為000011111,可以觀察出FREQUSEL1輸出值1,F(xiàn)REQUSEL2輸出值為0,F(xiàn)REQUSEL3輸出值為1,DIVSEL1輸出值為0,DIVSEL2輸出值為1。CLKSEL輸出高電平(這一信號(hào)可以控制SY87700V完成提取的輸入數(shù)據(jù)時(shí)鐘的功能)。CD也輸出高電平(使SY87700V能正常的進(jìn)行數(shù)據(jù)恢復(fù)和時(shí)鐘提取)。從圖中可以看出SY87700V控制模塊輸出的信號(hào)可以控制SY87700V完成對(duì)122M數(shù)據(jù)的時(shí)鐘提取和數(shù)據(jù)恢復(fù),實(shí)現(xiàn)預(yù)想的邏輯功能。
1.3 計(jì)數(shù)模塊
計(jì)數(shù)模塊是用來(lái)計(jì)算總的碼數(shù)和誤碼數(shù)以及誤碼塊數(shù)的,該計(jì)數(shù)器是一個(gè)同步復(fù)位計(jì)數(shù)器。由verilog HDL代碼綜合出的圖元如圖6所示。
該計(jì)數(shù)模塊最大的計(jì)數(shù)值達(dá)252,用Modelsim仿真軟件對(duì)計(jì)數(shù)模塊進(jìn)行功能仿真的結(jié)果如圖7所示:
在測(cè)試文件中,c_i賦值為一個(gè)脈沖流,在cnt_o輸出的計(jì)數(shù)結(jié)果是正確的。可以判斷出該模塊的功能的正確性。
1.4 偽隨機(jī)序列發(fā)送模塊
偽隨機(jī)序列發(fā)送模塊的任務(wù)是以SY87739L合成的頻率為時(shí)鐘產(chǎn)生偽隨機(jī)序列并串行輸出偽隨機(jī)序列。該模塊可以產(chǎn)生三種級(jí)數(shù)的偽隨機(jī)序列,生成的偽隨機(jī)序列串行輸出。具體合成那一級(jí)數(shù)決定于washbone模塊(FPGA與單片機(jī)的通信控制模塊)輸出的控制信號(hào):P09T-en(合成9級(jí)m序列使能信號(hào))、P15T-en(合成15級(jí)m序列使能信號(hào))、P23T-en(合成23級(jí)m序列使能信號(hào))。三個(gè)信號(hào)中哪個(gè)為高電平就合成相應(yīng)級(jí)數(shù)的偽隨機(jī)序列。由Verilog HDL代碼綜合出的圖元如圖8所示。
功能仿真結(jié)果(合成23級(jí)偽隨機(jī)序列)如圖9所示。
在測(cè)試文件中賦給該模塊的輸入信號(hào)相應(yīng)的值,使其完成合成23級(jí)偽隨機(jī)序列的功能。在上圖中,ser_o串行輸出23級(jí)的m序列,可以判斷該模塊可以成功的合成m序列實(shí)現(xiàn)誤碼測(cè)試儀發(fā)送端的功能。
1.5 數(shù)據(jù)接收模塊
FPGA中的接收模塊實(shí)現(xiàn)的功能有:1)m序列發(fā)生,2)是誤碼檢測(cè)。前者的邏輯功能與發(fā)送端模塊相類(lèi)似,其作用是產(chǎn)生一個(gè)與發(fā)端碼形相同并且比特對(duì)齊的本地m序列;后者的作用是將收到的數(shù)據(jù)與本地m序列相比較,檢測(cè)是否有誤碼,若有誤碼則輸出一個(gè)誤碼脈沖給計(jì)數(shù)模塊進(jìn)行統(tǒng)計(jì)。該模塊可以接收三種級(jí)數(shù)的偽隨機(jī)序列,由Verilog程序綜合出的圖元如圖10所示。
發(fā)送的測(cè)試碼為周期是29-1的m序列時(shí),數(shù)據(jù)接收模塊的仿真波形如圖11所示。
在仿真文件中對(duì)該模塊輸入端口ser_i賦值一個(gè)碼流,當(dāng)賦值碼流與本地偽隨機(jī)序列同步的(同頻同相),數(shù)據(jù)接收模塊每比對(duì)一bit碼,就在sum_o端口輸出一高電平,若比對(duì)時(shí)有誤碼,則prt_o端口輸出一高電平。在上圖中,PRBS_r是本地合成的偽隨機(jī)序列,可以看出該模塊能夠?qū)崿F(xiàn)了m序列的產(chǎn)生和誤碼的檢測(cè)和統(tǒng)計(jì)功能。
1.6 FPGA與單片機(jī)通信的控制模塊
FPGA與單片機(jī)的通信控制模塊(washbone moudle)實(shí)現(xiàn)的功能有:1)控制FPGA發(fā)送數(shù)據(jù)(總碼數(shù)、誤碼數(shù)、誤碼塊數(shù))到數(shù)據(jù)線(xiàn)上;2)控制FPGA接收單片機(jī)發(fā)送到數(shù)據(jù)線(xiàn)上的控制數(shù)據(jù)。FPGA與單片機(jī)的通信控制模塊將FPGA接收到的控制信息產(chǎn)生控制其他模塊的信號(hào),這些控制信號(hào)包括SY87739L頻率合成的使能信號(hào),SY87700V控制模塊的使能信號(hào),計(jì)數(shù)器復(fù)位信號(hào),偽隨機(jī)碼的級(jí)數(shù)、速率、發(fā)送接收接口的控制信號(hào)等。由源程序綜合出的圖元如圖12所示。
當(dāng)SY87700V提取的數(shù)據(jù)頻率為30.72 MHz時(shí),SY87700V的參考頻率為3.84 MHz。圖13為FPGA與單片機(jī)的通信控制模塊的功能仿真結(jié)果。該仿真是對(duì)washbone模塊中控制FPGA接收單片機(jī)控制數(shù)據(jù)這一功能的仿真。在測(cè)試文件中RAM_data FPGA與單片機(jī)的通信數(shù)據(jù)信號(hào)賦值為0001010(控制該模塊產(chǎn)生P09T_en、mb_OO_en、mb_OI_en為高電平的信號(hào));exchange賦值高電平,既FPGA將數(shù)據(jù)(總碼數(shù),誤碼數(shù),誤碼塊數(shù))存入FPGA的內(nèi)部存儲(chǔ)單元;FPGA GSn=0.WRn=1既FPGA讀取數(shù)據(jù)線(xiàn)上的數(shù)據(jù),并存入內(nèi)部寄存器memory中。在該模塊的輸出管腳中:P09T _en、mb_OO_en、mb_OI_en輸出為高電平,既控制偽隨機(jī)發(fā)送模塊合成9級(jí)m序列,發(fā)送、接收的端口類(lèi)型都為光接口類(lèi)型。從下列仿真圖中可以判斷該模塊可以實(shí)現(xiàn)要求的邏輯功能。
2 各模塊綜合結(jié)果
2.1 綜合報(bào)告
綜合優(yōu)化(SyntIlesize)是指將HDL語(yǔ)言、原理圖等設(shè)計(jì)輸入翻譯成由與、或、非門(mén),RAM,寄存器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據(jù)目標(biāo)與要求(約束條件)優(yōu)化所生成的邏輯連接,輸出edf和edn等文件,供FPGA廠(chǎng)家的布局布線(xiàn)器進(jìn)行實(shí)現(xiàn)。
在本設(shè)計(jì)中使用綜合工具Synplify Pro8.1進(jìn)行綜合,該綜合工具綜合出的結(jié)果占用面積小、工作頻率高,綜合速度快。目前FPGA技術(shù)中最流行的高效綜合工具之一。FPGA中各模塊通過(guò)綜合工具Synplify Pro8.1綜合。在綜合前,在時(shí)序約束文件中將分頻系數(shù)為100分頻的分頻器時(shí)鐘約束為10.0MHz;接收模塊中合成m序列的同步時(shí)鐘CDR00TKP約束為125.0 MHz;CDRK輸入的是7.68 MHz的晶體振蕩器產(chǎn)生的時(shí)鐘,F(xiàn)PGA根據(jù)合成m序列的速率,判斷CDRK是否進(jìn)行二分頻,F(xiàn)PGA將處理后的CDRK作為提取時(shí)鐘芯片的參考時(shí)鐘。該時(shí)鐘約束為7.68 MHz;
DDS39REFCLK是時(shí)鐘合成模塊的參考時(shí)鐘,該時(shí)鐘約束為30MHz:DDS39TKP輸入的是時(shí)鐘合成芯片SY87739L的合成時(shí)鐘,該時(shí)鐘用于發(fā)送模塊產(chǎn)生m序列的同步時(shí)鐘,DDS39TKP約束為95 MHz。
從綜合報(bào)告中可以看出綜合后各個(gè)時(shí)鐘的綜合結(jié)果都超出了約束的頻率,滿(mǎn)足時(shí)序的要求。此外還可以從報(bào)告中得到FPGA中的資源利用情況:使用59個(gè)I/O原語(yǔ)資源,使用了0個(gè)I/O寄存器.使用了775個(gè)非I/O寄存器占FPGA總資源的50%,使用的總邏輯資源為1 253個(gè)查找表,占總資源的81%。
2.2 RTL(寄存器級(jí))視圖
RTL視圖是由與、或、非門(mén),RAM,寄存器等基本邏輯單元組成邏輯連接圖,從中可以形象的得到FPGA中各模塊的連接情況,并能判斷硬件描述語(yǔ)言編寫(xiě)出來(lái)的系統(tǒng)在邏輯上是否正確。圖14是由Synplify綜合出的RTL視圖。
分析上圖中各模塊的連接情況可以判斷出由Verilog編寫(xiě)出的程序在各模塊的邏輯連接設(shè)計(jì)上是正確的,可將綜合后的edf文件輸送給Xinlinx布局布線(xiàn)器實(shí)現(xiàn)。
3 結(jié)束語(yǔ)
本文研究的內(nèi)容是一種用于高速通信系統(tǒng)中的誤碼測(cè)試儀。該高速信號(hào)誤碼測(cè)試儀是基于FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)為核心設(shè)計(jì)而成,適用于斷線(xiàn)誤碼檢測(cè)。誤碼測(cè)試儀在發(fā)送端發(fā)送m序列作為測(cè)試數(shù)據(jù),其測(cè)試速率最高可達(dá)到155Mbps。對(duì)于高速數(shù)字電路迅速發(fā)展的今天,此誤碼測(cè)試儀的測(cè)試速率還可進(jìn)一步提高,但是一旦提高了誤碼測(cè)試儀的工作速率,就無(wú)法回避高速數(shù)字電路中信號(hào)完整性,電磁干擾等高速數(shù)字電路設(shè)計(jì)中要注意的問(wèn)題。由于使用FPGA實(shí)現(xiàn)誤碼測(cè)試儀的核心功能,該系統(tǒng)具有可以升級(jí)的特點(diǎn)。
設(shè)計(jì)中軟件部分采用的是Verilog硬件語(yǔ)言編寫(xiě)程序,軟件開(kāi)發(fā)環(huán)境使用的是Xflinx公司的EDA集成開(kāi)發(fā)工具ISE8.1,仿真工具M(jìn)odelSim SE 6.1b,綜合工具SynplifyPro8.1等幾款軟件。硬件實(shí)現(xiàn)采用的是Xilinx的SPARTANHE系列中的XC2S50E平臺(tái)級(jí)FPGA為核心功能芯片。在FP GA中實(shí)現(xiàn)誤碼測(cè)試儀的發(fā)送部分、接收部分及誤碼量統(tǒng)計(jì)模塊的設(shè)計(jì)。輔以時(shí)鐘合成芯片Micrel SY87739L、時(shí)鐘提取芯片Micrel SY87700V及單片機(jī)(C8051F010)的控制,整個(gè)系統(tǒng)的體積較小,成本也較低。
評(píng)論
查看更多