《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 1553B總線中曼徹斯特編解碼器的設(shè)計(jì)
1553B總線中曼徹斯特編解碼器的設(shè)計(jì)
武 鵬,畢君懿
摘要: 針對曼徹斯特碼特點(diǎn),可采用位同步方法提取時(shí)鐘,常采用濾波法和數(shù)字鎖相環(huán)法。濾波法采用的窄帶濾波器不適合數(shù)字電路使用。數(shù)字鎖相環(huán)法通過比較接收碼元和本地碼元為定時(shí)時(shí)鐘的相位來添加扣除時(shí)鐘脈沖,以達(dá)到調(diào)整相位的目的,但電路實(shí)現(xiàn)過于復(fù)雜。本文提出的時(shí)鐘分離電路比數(shù)字鎖相環(huán)簡單,而且提取出來的時(shí)鐘可以準(zhǔn)確地采樣到曼徹斯特碼信號。
Abstract:
Key words :

0 引言
    曼徹斯特" title="曼徹斯特">曼徹斯特碼是一種總線數(shù)據(jù)傳輸雙極性碼。在數(shù)字信號基帶傳輸中,通過這種信道編碼技術(shù)可使傳送數(shù)據(jù)同時(shí)攜帶時(shí)鐘信息,故也稱其為自同步曼徹斯特碼。在信道傳輸中曼徹斯特碼有很好的抗干擾能力。接收端可以將分離出的時(shí)鐘用于解碼,從而簡化了解碼過程。
    針對曼徹斯特碼特點(diǎn),可采用位同步方法提取時(shí)鐘,常采用濾波法和數(shù)字鎖相環(huán)法。濾波法采用的窄帶濾波器不適合數(shù)字電路使用。數(shù)字鎖相環(huán)法通過比較接收碼元和本地碼元為定時(shí)時(shí)鐘的相位來添加扣除時(shí)鐘脈沖,以達(dá)到調(diào)整相位的目的,但電路實(shí)現(xiàn)過于復(fù)雜。本文提出的時(shí)鐘分離電路比數(shù)字鎖相環(huán)簡單,而且提取出來的時(shí)鐘可以準(zhǔn)確地采樣到曼徹斯特碼信號。

1 曼徹斯特碼
   
曼徹斯特碼是一種廣泛用于以太網(wǎng)、短距離無線通信、航空電子綜合系統(tǒng)中總線數(shù)據(jù)傳輸?shù)碾p極性碼。它的每個(gè)碼元中點(diǎn)都存在一個(gè)電平跳變,1信號為一個(gè)從1到0的負(fù)跳變;0信號為一個(gè)從0到1的正跳變。由于曼徹斯特碼在頻譜中存在很強(qiáng)的定式分量,解碼時(shí)可將分離出的時(shí)鐘用來解碼。另一方面,1553B" title="1553B">1553B傳輸電纜呈容性負(fù)載特性,所以在信號傳輸中,直流和低頻分量將受到很大的衰減。曼徹斯特碼頻譜中不存在直流分量,而且低頻分量也大大減小,很適合在1553B電纜中傳輸。
    MIL-STD-1553B協(xié)議中采用的曼徹斯特碼數(shù)據(jù)格式如圖1所示。


    同步頭:占三位碼元長度。命令字或狀態(tài)字同步頭的前1.5倍碼元長度為高電平;后1.5倍碼元長度為低電平,數(shù)據(jù)字同步頭剛好相反。同步頭用于區(qū)分字的類型以及標(biāo)識字傳輸開始。
    數(shù)據(jù):16位數(shù)據(jù)位。圖中bit3為數(shù)據(jù)最高位,依次遞減,bit18為數(shù)據(jù)最低位。
    奇偶校驗(yàn)位:這里采用奇校驗(yàn)。將16位數(shù)據(jù)按位同或的結(jié)果作為奇校驗(yàn)位。

2 曼徹斯特編碼器的設(shè)計(jì)" title="設(shè)計(jì)">設(shè)計(jì)
   
由于曼徹斯特碼的每個(gè)碼元在其中心存在電平跳變,所以編碼器的發(fā)送時(shí)鐘頻率至少應(yīng)選擇信息傳輸速率的2倍頻。
    通常編碼器的實(shí)現(xiàn)方式有2種,基于移位寄存器,或者數(shù)據(jù)選擇器。移位寄存器型編碼器需要在編碼開始后將同步頭位、數(shù)據(jù)位、奇偶校驗(yàn)位通過字符格式編排器編排成一個(gè)并行數(shù)據(jù),然后在發(fā)送時(shí)鐘的控制下串行移位輸出;數(shù)據(jù)選擇器型編碼器需要在編碼開始后啟動(dòng)一個(gè)計(jì)數(shù)器,在計(jì)數(shù)器的控制下分別送出同步頭、數(shù)據(jù)位、奇偶效驗(yàn)位。本文的編碼器采用后者,其結(jié)構(gòu)框圖如圖2所示。


2.1 編碼過程
   
編碼過程如下:
    (1)檢測編碼周期是否開始,編碼周期開始后將同步頭類型、16位并行數(shù)據(jù)存儲(chǔ)到內(nèi)部寄存器中,與此同時(shí)計(jì)數(shù)器cnt開始計(jì)數(shù)。
    (2)在計(jì)數(shù)器cnt的控制下通過碼型生成器發(fā)出同步頭、數(shù)據(jù)位、奇偶校驗(yàn)位。
    (3)在當(dāng)前字的曼徹斯特碼發(fā)送完成后回到過程(1)等待發(fā)送下一個(gè)字
2.2 端口說明
    rst_n為異步復(fù)位信號;clk為系統(tǒng)時(shí)鐘,頻率為信息傳輸速率的12倍;enc_trigger(輸入,高有效)的編碼開始的觸發(fā)信號;enc_csw(輸
入,高有效)表示要發(fā)送的字為命令字或狀態(tài)字;enc_dw(輸入,高有效)表示要發(fā)送的字為數(shù)據(jù)字;enc_data(輸入)表示16位要發(fā)送的并行數(shù)據(jù);tx_data_p(輸出)表示發(fā)出的曼徹斯特原碼;tx_data_n(輸出)表示發(fā)出的曼徹斯特反碼。
2.3 子模塊說明
   
(1)6分頻電路
    將系統(tǒng)時(shí)鐘6分頻輸出占空比為1/6的編碼時(shí)鐘使能信號enc_clk_en,該信號的頻率為信息傳輸速率的2倍,其他3個(gè)模塊只有在采樣到該信號高電平后才會(huì)觸發(fā)。在復(fù)雜時(shí)序電路設(shè)計(jì)中通過引入時(shí)鐘使能信號可減少設(shè)計(jì)中的時(shí)鐘信號,提高電路的可靠性。
    (2)保持寄存器
    在enc_clk_en有效且采樣到enc_trigger為1時(shí),將enc_csw,enc_dw,enc_data存入內(nèi)部寄存器csw_reg,dw_reg,data_reg中。
    (3)計(jì)數(shù)器
    在enc_clk_en有效時(shí)采樣到enc_trigger為1時(shí),將計(jì)數(shù)使能信號置為1,并在其控制下開始計(jì)數(shù),計(jì)數(shù)范圍為0~39。
    (4)碼型生成器
    碼型生成器通過對16位并行數(shù)據(jù)data_reg做同或運(yùn)算產(chǎn)生奇偶校驗(yàn)結(jié)果。在計(jì)數(shù)器cnt的控制下發(fā)送出曼徹斯特碼。發(fā)送過程如下(以tx_data_p說明):
    cnt(0~5):根據(jù)同步頭類型,依次發(fā)送111000(csw_reg有效)或000111(dw_reg有效)。
    cnt(6~37):發(fā)送數(shù)據(jù)位,在碼元前半個(gè)周期發(fā)送原碼,后半個(gè)周期發(fā)出反碼。
    cnt(38~39):發(fā)送奇偶校驗(yàn)位,計(jì)數(shù)到38時(shí),發(fā)送奇偶校驗(yàn)位原碼,39時(shí)發(fā)送其反碼。

3 曼徹斯特解碼器" title="解碼器">解碼器的設(shè)計(jì)
   
解碼器需要將收到的曼徹斯特碼解碼,得出16位并行數(shù)據(jù),并給出各種校驗(yàn)結(jié)果。本文設(shè)計(jì)的解碼器邏輯結(jié)構(gòu)如圖3所示。


3.1 解碼過程
   
(1)同步頭檢測,當(dāng)檢測到同步頭后觸發(fā)整個(gè)解碼過程開始,并給出同步頭類型。
    (2)檢測到同步頭后,計(jì)數(shù)器cnt開始計(jì)數(shù),在cnt的控制下進(jìn)行解碼。包括碼型轉(zhuǎn)換與移位操作,同步頭類型輸出、曼徹斯特碼型校驗(yàn)、奇偶校驗(yàn)、字連續(xù)性校驗(yàn)等。
    (3)當(dāng)碼的串并轉(zhuǎn)換以及各種校驗(yàn)都完成后,給出并行數(shù)據(jù)和校驗(yàn)結(jié)果信號,在cnt的控制下最終給出數(shù)據(jù)有效信號data_ready。協(xié)議模塊可在該信號有效(高電平)時(shí)檢測其他校驗(yàn)信號,并決定是否取走并行數(shù)據(jù)。
3.2 端口說明
    rst_n為異步復(fù)位信號;clk為系統(tǒng)時(shí)鐘,頻率是信息傳輸速率的12倍;rx_data(輸入)為收到的曼徹斯特原碼;data_ready(輸出,高有效)為數(shù)據(jù)有效信號,該信號有效期間可檢測其他校驗(yàn)輸出信號,若數(shù)據(jù)有效可取走16位并行數(shù)據(jù);csw(輸出,高有效)為收到字類型為命令字或狀態(tài)字;dw(輸出,高有效)表示收到字類型為數(shù)據(jù)字;data(輸出)表示解碼輸出的16位并行數(shù)據(jù);parity_right(輸出,高有效)為奇偶校驗(yàn)結(jié)果;manchester_right(輸出,高有效)為曼徹斯特碼型校驗(yàn)結(jié)果;word_continue(輸出,高有效)為字連續(xù)性校驗(yàn)結(jié)果,有效時(shí)表示當(dāng)前收到的字與上一次收到字之間是連續(xù)的。
3.3 子模塊說明
   
(1)時(shí)鐘分離模塊
    時(shí)鐘分離模塊如圖4所示。


    該模塊將曼徹斯特碼自帶的時(shí)鐘信號分離,得到clk2_en,并在該信號有效(高電平)時(shí)采樣,經(jīng)過三級寄存器保持輸出的曼徹斯特碼信號rx_data_reg_2。采樣時(shí)刻總出現(xiàn)在每個(gè)碼元正負(fù)電平的中點(diǎn)處,而這也是曼徹斯特碼采樣的最佳時(shí)刻,如圖5所示。


    時(shí)鐘分離電路結(jié)構(gòu)如圖4所示,收到的曼徹斯特碼rx_data為異步信號,通過DFF1,DFF2,DFF3三級采樣保持電路可消除亞穩(wěn)態(tài)。edge_ check在每個(gè)曼碼電平跳變后產(chǎn)生一個(gè)脈沖,該信號將對cnt_clk2和clk2_en同步清零,以達(dá)到調(diào)整相位的目的。cnt_clk2是一個(gè)6進(jìn)制計(jì)數(shù)器,當(dāng)計(jì)數(shù)到1時(shí)通過比較器給出同步置位脈沖set,它將對clk2_en同步置1。
    (2)同步頭識別模塊
    該模塊始終檢測同步頭,并給出同步頭類型。檢測方法如下,在采樣到時(shí)鐘使能信號clk2_en有效時(shí),將rx_data_reg_2存入移位寄存器sync_reg[9:0]中,當(dāng)檢測到sync_reg[5:0]為“111000”或“000111”時(shí),給出同步頭有效信號sync_1,用于觸發(fā)計(jì)數(shù)器和碼型轉(zhuǎn)換移位模塊工作。
    (3)計(jì)數(shù)模塊
    計(jì)數(shù)器cnt是一個(gè)40進(jìn)制計(jì)數(shù)器,在cnt的控制下完成整個(gè)解碼過程。當(dāng)收到同步頭有效信號sync_1時(shí),將計(jì)數(shù)器使能信號cnt_enb置為有效(高電平),并在其控制下開始計(jì)數(shù)。
    (4)碼型轉(zhuǎn)換與移位電路
    該模塊在移位使能信號data_sample有效,且采樣到采樣使能信號clk2_en時(shí),將rx_data_reg_2移入一個(gè)17位寄存器data_reg[16:O]中,移位完成后,將得到一個(gè)16位并行數(shù)據(jù)data_reg[16:1]和一個(gè)奇偶校驗(yàn)位data_reg[0]。
    (5)校驗(yàn)?zāi)K
    該電路將檢測并輸出同步頭類型、奇偶校驗(yàn)結(jié)果、曼徹斯特碼檢測結(jié)果、字連續(xù)性檢測結(jié)果。
    同步頭類型檢測:當(dāng)cnt計(jì)數(shù)到3時(shí),將同步頭檢測結(jié)果sync_csw和syn_dw分別寄存輸出給csw和dw。
    奇偶校驗(yàn):將17位并行數(shù)據(jù)data_reg[16:O]按位同或后在cnt計(jì)數(shù)到33時(shí)將效驗(yàn)結(jié)果輸出給parity_right。
    曼徹斯特碼型的有效性校驗(yàn):對16位曼徹斯特碼和1位奇偶校驗(yàn)碼的碼型進(jìn)行檢測。當(dāng)收到同步頭有效信號sync_1時(shí)將mangchester_rig-ht信號置為1,之后將每個(gè)碼元曼徹斯特檢測結(jié)果與mangchester_right做與運(yùn)算,再寄存輸出到mangchester_right。當(dāng)中間某個(gè)碼元曼徹斯特碼出錯(cuò)時(shí),mangchester_right將變?yōu)?,并在之后的檢測中一直保持為0,直到收到下一個(gè)字的sync_1信號。
    字連續(xù)性檢測:若前一個(gè)字與當(dāng)前字連續(xù),則在前一個(gè)字cnt計(jì)數(shù)到39時(shí),當(dāng)前字的同步頭有效信號sync_1應(yīng)為高電平,若不連續(xù),sync _1為低電平。所以在cnt=39時(shí)將sync_1寄存輸出給word_continue可表征字的連續(xù)性。
    (6)數(shù)據(jù)有效輸出模塊
    當(dāng)所有校驗(yàn)和移位都完成時(shí),在cnt為34~38之間輸出數(shù)據(jù)有效信號data_ready。

4 仿真及FPGA實(shí)現(xiàn)
   
在TESTBENCH中將編碼器曼徹斯特碼的輸出直接連到解碼器曼徹斯特碼的輸入端。圖6為正確曼徹斯特碼的時(shí)序仿真波形圖,傳輸速率為10 Mb/s,系統(tǒng)時(shí)鐘為120 MHz。圖6的上半部分為編碼器信號波形,下半部分為解碼器信號波形。發(fā)送消息為連續(xù)的4個(gè)字:第1個(gè)為命令字,后3個(gè)為數(shù)據(jù)字。


    為了全面驗(yàn)證設(shè)計(jì)功能,需要注入不同類型的錯(cuò)誤來檢測解碼器的查錯(cuò)能力。其中,包括同步頭類型錯(cuò),曼徹斯特碼型錯(cuò),奇偶校驗(yàn)錯(cuò),字不連續(xù)錯(cuò)等。測試過程完全按照GJB5186相關(guān)要求進(jìn)行。
    該設(shè)計(jì)在XlLINX公司Spartan3E系列的XC3S500E型號FPGA上進(jìn)行了實(shí)現(xiàn)。當(dāng)編解碼器時(shí)鐘約束為7 ns時(shí),編碼器最高跑到143 MHz,解碼器最高到157 MHz。

5 結(jié)語
   
根據(jù)曼徹斯特碼型特點(diǎn),設(shè)計(jì)出一種符合MIL-STD-1553B協(xié)議的曼徹斯特編解碼器,并兼容1 Mb/s和10 Mb/s兩種傳輸速率的協(xié)議。該設(shè)計(jì)通過了GJB5186規(guī)定的測試點(diǎn)驗(yàn)證,實(shí)驗(yàn)結(jié)果證明所設(shè)計(jì)的曼徹斯特編解碼器具有高速、高可靠性的特點(diǎn)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。