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