一種基于FPGA的高速誤碼測試儀的設計
由FPGA控制SY87700V從122M數據提取時鐘和恢復數據的功能仿真的結果波形圖(用Modelsim仿真)如下圖5所示。本文引用地址:http://www.104case.com/article/191002.htm
測試文件中給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序列的產生和誤碼的檢測和統計功能。
評論