1553B總線中曼徹斯特編解碼器的設(shè)計
(2)同步頭識別模塊
該模塊始終檢測同步頭,并給出同步頭類型。檢測方法如下,在采樣到時鐘使能信號clk2_en有效時,將rx_data_reg_2存入移位寄存器sync_reg[9:0]中,當(dāng)檢測到sync_reg[5:0]為“111000”或“000111”時,給出同步頭有效信號sync_1,用于觸發(fā)計數(shù)器和碼型轉(zhuǎn)換移位模塊工作。
(3)計數(shù)模塊
計數(shù)器cnt是一個40進(jìn)制計數(shù)器,在cnt的控制下完成整個解碼過程。當(dāng)收到同步頭有效信號sync_1時,將計數(shù)器使能信號cnt_enb置為有效(高電平),并在其控制下開始計數(shù)。
(4)碼型轉(zhuǎn)換與移位電路
該模塊在移位使能信號data_sample有效,且采樣到采樣使能信號clk2_en時,將rx_data_reg_2移入一個17位寄存器data_reg[16:O]中,移位完成后,將得到一個16位并行數(shù)據(jù)data_reg[16:1]和一個奇偶校驗(yàn)位data_reg[0]。
(5)校驗(yàn)?zāi)K
該電路將檢測并輸出同步頭類型、奇偶校驗(yàn)結(jié)果、曼徹斯特碼檢測結(jié)果、字連續(xù)性檢測結(jié)果。
同步頭類型檢測:當(dāng)cnt計數(shù)到3時,將同步頭檢測結(jié)果sync_csw和syn_dw分別寄存輸出給csw和dw。
奇偶校驗(yàn):將17位并行數(shù)據(jù)data_reg[16:O]按位同或后在cnt計數(shù)到33時將效驗(yàn)結(jié)果輸出給parity_right。
曼徹斯特碼型的有效性校驗(yàn):對16位曼徹斯特碼和1位奇偶校驗(yàn)碼的碼型進(jìn)行檢測。當(dāng)收到同步頭有效信號sync_1時將mangchester_rig-ht信號置為1,之后將每個碼元曼徹斯特檢測結(jié)果與mangchester_right做與運(yùn)算,再寄存輸出到mangchester_right。當(dāng)中間某個碼元曼徹斯特碼出錯時,mangchester_right將變?yōu)?,并在之后的檢測中一直保持為0,直到收到下一個字的sync_1信號。
字連續(xù)性檢測:若前一個字與當(dāng)前字連續(xù),則在前一個字cnt計數(shù)到39時,當(dāng)前字的同步頭有效信號sync_1應(yīng)為高電平,若不連續(xù),sync _1為低電平。所以在cnt=39時將sync_1寄存輸出給word_continue可表征字的連續(xù)性。
(6)數(shù)據(jù)有效輸出模塊
當(dāng)所有校驗(yàn)和移位都完成時,在cnt為34~38之間輸出數(shù)據(jù)有效信號data_ready。
4 仿真及FPGA實(shí)現(xiàn)
在TESTBENCH中將編碼器曼徹斯特碼的輸出直接連到解碼器曼徹斯特碼的輸入端。圖6為正確曼徹斯特碼的時序仿真波形圖,傳輸速率為10 Mb/s,系統(tǒng)時鐘為120 MHz。圖6的上半部分為編碼器信號波形,下半部分為解碼器信號波形。發(fā)送消息為連續(xù)的4個字:第1個為命令字,后3個為數(shù)據(jù)字。本文引用地址:http://www.ex-cimer.com/article/187559.htm
為了全面驗(yàn)證設(shè)計功能,需要注入不同類型的錯誤來檢測解碼器的查錯能力。其中,包括同步頭類型錯,曼徹斯特碼型錯,奇偶校驗(yàn)錯,字不連續(xù)錯等。測試過程完全按照GJB5186相關(guān)要求進(jìn)行。
該設(shè)計在XlLINX公司Spartan3E系列的XC3S500E型號FPGA上進(jìn)行了實(shí)現(xiàn)。當(dāng)編解碼器時鐘約束為7 ns時,編碼器最高跑到143 MHz,解碼器最高到157 MHz。
5 結(jié)語
根據(jù)曼徹斯特碼型特點(diǎn),設(shè)計出一種符合MIL-STD-1553B協(xié)議的曼徹斯特編解碼器,并兼容1 Mb/s和10 Mb/s兩種傳輸速率的協(xié)議。該設(shè)計通過了GJB5186規(guī)定的測試點(diǎn)驗(yàn)證,實(shí)驗(yàn)結(jié)果證明所設(shè)計的曼徹斯特編解碼器具有高速、高可靠性的特點(diǎn)。
評論