摘要:為降低成本,提高設(shè)計(jì)靈活性,提出一種基于FPGA的1553B總線接口方案;采用自頂向下的設(shè)計(jì)方法,在分析1553B總線接口工作原理和響應(yīng)流程的基礎(chǔ)上,完成了接口方案各FPGA功能模塊設(shè)計(jì);對(duì)關(guān)鍵模塊編寫(xiě)VHDL代碼,并采用Active?HDL軟件進(jìn)行了仿真;以Virtex?5 FPGA 開(kāi)發(fā)板和PC機(jī)為驗(yàn)證平臺(tái),在FPGA中分別模擬BC與RT,在PC機(jī)指令下進(jìn)行了BC與RT功能模塊間的收發(fā)測(cè)試,結(jié)果表明系統(tǒng)能在協(xié)議規(guī)定的1 MHz數(shù)據(jù)率下穩(wěn)定運(yùn)行;同時(shí),為提升接口性能,采用光纖代替?zhèn)鹘y(tǒng)電纜傳輸介質(zhì),利用FPGA內(nèi)嵌RocketIO內(nèi)核進(jìn)行了傳統(tǒng)1553協(xié)議數(shù)據(jù)的光纖傳輸,速率可達(dá)3 Gb/s以上。
0 引言
MIL?STD?1553B(數(shù)字式時(shí)分制命令/響應(yīng)型多路傳輸數(shù)據(jù)總線)由美國(guó)國(guó)防部于20世紀(jì)70年代末提出,它采用曼徹斯特編碼方式和冗余的總線型拓?fù)浣Y(jié)構(gòu),具有非常好的時(shí)鐘同步能力及容錯(cuò)機(jī)制,極大地簡(jiǎn)化了電子設(shè)備之間的互聯(lián),因而被廣泛應(yīng)用于對(duì)可靠性要求較高的軍事、航空、航天等領(lǐng)域。
隨著1553B總線優(yōu)越性能不斷體現(xiàn),我國(guó)相關(guān)領(lǐng)域的應(yīng)用需求不斷增多,其關(guān)鍵地位也日益突出。但由于1553B協(xié)議本身較為復(fù)雜、國(guó)內(nèi)技術(shù)相對(duì)落后,在1553B總線的設(shè)計(jì)中大多采用國(guó)外的協(xié)議接口芯片,典型如DDC公司的BU?61580等。一方面,這類(lèi)芯片不僅價(jià)格昂貴,而且容易受?chē)?guó)外限制;另一方面,在實(shí)際應(yīng)用中,芯片許多功能略顯多余,不能進(jìn)行靈活設(shè)計(jì)。
現(xiàn)場(chǎng)可編程門(mén)陣列FPGA 可將大量邏輯集成在單片IC中,其內(nèi)部資源豐富,相應(yīng)EDA開(kāi)發(fā)工具功能強(qiáng)大,是理想的片上系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)平臺(tái)。FPGA 具有開(kāi)發(fā)周期短、成本低、靈活性高等諸多優(yōu)點(diǎn),基于對(duì)協(xié)議規(guī)范的分析,通過(guò)FPGA來(lái)實(shí)現(xiàn)MIL?STD?1553B總線接口是可行的。本文提出了一種基于FPGA的1553B總線接口設(shè)計(jì)方案,并編寫(xiě)VHDL代碼進(jìn)行仿真,最后在FPGA上完成了設(shè)計(jì)驗(yàn)證,實(shí)現(xiàn)了傳統(tǒng)1553B協(xié)議數(shù)據(jù)的1 Mb/s電纜傳輸和3 Gb/s以上光纖傳輸。
1 MIL?STD?1553B總線介紹
MIL?STD?1553B 是一種命令/響應(yīng)型多路傳輸總線,它采用冗余的總線結(jié)構(gòu),在當(dāng)前傳輸線發(fā)生故障時(shí)可立刻切換到冗余傳輸線上,防止通信中斷。同時(shí),1553B協(xié)議嚴(yán)格規(guī)定了消息格式,限定了每條消息的最大傳輸數(shù)據(jù)量及總線單元的最大響應(yīng)時(shí)間,并規(guī)范了總線耦合方式、電纜電氣特性等,從各個(gè)方面確保總線傳輸?shù)母呖煽啃浴?/p>
1553B總線包含三種總線單元:總線控制器BC、遠(yuǎn)程終端RT 和總線監(jiān)視器MT,各單元在總線控制器BC的調(diào)度下有序地進(jìn)行通信??偩€上數(shù)據(jù)以字為基本單位進(jìn)行傳輸,分為命令字、狀態(tài)字和數(shù)據(jù)字,每個(gè)字包含20 位。總線單元間每一次數(shù)據(jù)的交換稱(chēng)為一條消息,1553B協(xié)議規(guī)定了10種消息格式,除此之外其他格式的消息均為非法消息??偩€采用曼徹斯特編碼方式,方便接收端提取同步時(shí)鐘,簡(jiǎn)化了總線結(jié)構(gòu)。
2 1553B總線接口整體設(shè)計(jì)方案
總線接口是外部系統(tǒng)與總線之間的數(shù)據(jù)交換媒介,其主要功能是完成總線協(xié)議的處理。根據(jù)1553B 協(xié)議的特點(diǎn),總線接口整體設(shè)計(jì)方案如圖1所示。
?
?
圖1 總線接口整體設(shè)計(jì)方案
由圖1 可知,總線接口包括模擬收發(fā)器、曼徹斯特編解碼器和協(xié)議處理邏輯三大模塊。其中,模擬收發(fā)器完成FPGA輸出信號(hào)與總線信號(hào)之間的電平轉(zhuǎn)換,可由專(zhuān)用轉(zhuǎn)換芯片完成,而曼徹斯特編解碼器和1553B協(xié)議處理邏輯是接口的主要組成部分,完成數(shù)據(jù)編解碼和協(xié)議處理,通過(guò)FPGA 實(shí)現(xiàn)??偩€接口通過(guò)一定的地址、數(shù)據(jù)和握手信號(hào)與外部系統(tǒng)相連。
3 曼徹斯特編解碼器模塊設(shè)計(jì)
3.1 1553B總線數(shù)據(jù)格式信號(hào)編解碼的設(shè)計(jì)方案由總線傳輸層特性決定,1553B消息字格式和曼徹斯特碼型如圖2所示。
?
?
圖2 1553B消息字格式和曼徹斯特碼型
1553B總線以字為單位進(jìn)行數(shù)據(jù)傳輸,每個(gè)字包含20位,其中前3位為同步頭,后17位為數(shù)據(jù)位和奇偶校驗(yàn)位,如圖2(a)所示??偩€數(shù)據(jù)傳輸速率為1 Mb/s,采用曼徹斯特Ⅱ雙相碼編碼方式,每位數(shù)據(jù)中間均有一個(gè)跳變沿,由正到負(fù)的跳變表示邏輯‘1’,由負(fù)到正的跳變表示邏輯‘0’,其碼型對(duì)應(yīng)關(guān)系如圖2(b)所示。
3.2 編碼器設(shè)計(jì)
編碼器的設(shè)計(jì)相對(duì)簡(jiǎn)單,主要完成對(duì)待發(fā)送消息字的曼徹斯特編碼,并將其并串轉(zhuǎn)換后輸出。由于曼徹斯特碼每位數(shù)據(jù)中間均有跳變,故發(fā)送時(shí)需將每一位分割成兩位,分別發(fā)送。其工作過(guò)程為:
(1) 同步頭編碼,若為數(shù)據(jù)字同步頭,則編碼為“111000”(由高位到低位,下同),若為狀態(tài)字或命令字
同步頭,則編碼為“000111”;
(2)數(shù)據(jù)和奇偶校驗(yàn)位編碼,若為‘0’,則編碼為“10”,若為‘1’,則編碼為“01”;
(3)按由低到高的順序?qū)⒕幋a后的40位數(shù)據(jù)串行輸出。
FPGA采用16 MHz主時(shí)鐘,由于編碼后每位數(shù)據(jù)對(duì)應(yīng)0.5 μs,故將主時(shí)鐘分頻后產(chǎn)生2 MHz時(shí)鐘來(lái)控制編碼器發(fā)送40 位數(shù)據(jù),每個(gè)時(shí)鐘沿發(fā)送一位,正好滿(mǎn)足1553B總線1 Mb/s的速率要求[5]。
3.3 解碼器設(shè)計(jì)
解碼器主要完成消息字的解碼,并將其串并轉(zhuǎn)換后輸出,其工作過(guò)程為:
(1)檢測(cè)到總線上有效電平,解碼器開(kāi)始工作;
(2)同步頭解碼,檢測(cè)到指令字和狀態(tài)字同步頭用“011”表示,檢測(cè)到數(shù)據(jù)字同步頭用“100”表示;
(3)16位數(shù)據(jù)位和1位奇偶校驗(yàn)位解碼;
(4)將解碼后的消息字(20位)并行輸出。
同步頭和數(shù)據(jù)位檢測(cè)示意如圖3所示。
?
圖3 同步頭和數(shù)據(jù)位檢測(cè)
由1553B協(xié)議可知,同步頭包含三個(gè)位時(shí),在1.5個(gè)位時(shí)處有跳變。如圖3(a)所示,同步頭到來(lái)后,解碼器連續(xù)采集48 個(gè)數(shù),理論上,采用16 MHz 時(shí)鐘,如果檢測(cè)到24個(gè)‘0’和24個(gè)‘1’,則表示收到有效同步頭,但考慮到信號(hào)上升時(shí)間及下降時(shí)間等因素,實(shí)際若檢測(cè)到22個(gè)或者23個(gè)‘0’和‘1’,就可以判定同步頭有效,進(jìn)行下一步數(shù)據(jù)的接收。
數(shù)據(jù)位包含一個(gè)位時(shí),在0.5個(gè)位時(shí)處有跳變。如圖3(b)所示,在每個(gè)數(shù)據(jù)中間部位,若前一時(shí)鐘采樣到‘0’,后一時(shí)鐘采樣到‘1’,則表示當(dāng)前數(shù)據(jù)位為‘0’,反之則是‘1’。另外,如果采到的數(shù)沒(méi)有跳變,為全‘0’或者全‘1’,則產(chǎn)生錯(cuò)誤標(biāo)志,通知協(xié)議處理邏輯或子系統(tǒng)進(jìn)行相應(yīng)的錯(cuò)誤處理。
4 協(xié)議處理模塊設(shè)計(jì)
4.1 協(xié)議處理模塊響應(yīng)流程
協(xié)議處理模塊實(shí)現(xiàn)BC,RT,MT三種總線終端的協(xié)議處理,在FPGA模塊設(shè)計(jì)之前,根據(jù)1553B協(xié)議對(duì)協(xié)議處理模塊三種工作模式下的響應(yīng)流程分別進(jìn)行分析設(shè)計(jì)。
4.1.1 BC模式
BC(總線控制器)是1553B 總線的核心,總線上任何類(lèi)型的數(shù)據(jù)交換都由它發(fā)起。BC模式下接口響應(yīng)流程設(shè)計(jì)如圖4所示。
?
?
圖4 BC模式下接口響應(yīng)流程
MIL?STD?1553B 協(xié)議規(guī)定的總線指令可分發(fā)送指令、接收指令和方式指令三種,共能實(shí)現(xiàn)四種類(lèi)型的功能:RT 到BC 的數(shù)據(jù)傳輸、BC 到RT 的數(shù)據(jù)傳輸、RT 到RT 的數(shù)據(jù)傳輸和總線管理。根據(jù)圖4,BC 模式下接口主要工作過(guò)程為:
(1)根據(jù)外部系統(tǒng)需求發(fā)送相應(yīng)命令字,發(fā)起總線傳輸;
(2)根據(jù)指令類(lèi)型的不同,進(jìn)入不同響應(yīng)流程,主要包括數(shù)據(jù)字發(fā)送、數(shù)據(jù)字接收和狀態(tài)字接收等;
(3)消息完成后進(jìn)行消息結(jié)束處理,主要包括消息結(jié)束標(biāo)志的產(chǎn)生,差錯(cuò)處理,以及根據(jù)收到的RT狀態(tài)字判斷總線終端狀態(tài)等。
需要注意的是,BC 如果在規(guī)定的時(shí)間內(nèi)沒(méi)有收到RT狀態(tài)回復(fù),則需重新發(fā)送命令字進(jìn)行重試(Retry)。
4.1.2 RT模式
RT(遠(yuǎn)程終端)是1553B 總線上的指令/響應(yīng)型終端,它響應(yīng)BC發(fā)送的指令,按要求接收或發(fā)送數(shù)據(jù),在規(guī)定時(shí)間內(nèi)回送狀態(tài)字,并服從BC的總線管理。RT模式下接口響應(yīng)流程設(shè)計(jì)如圖5所示。
?
?
圖5 RT模式下接口響應(yīng)流程
根據(jù)圖5,RT模式下接口主要工作過(guò)程為:
(1)收到命令字后進(jìn)行指令分析,根據(jù)指令類(lèi)型進(jìn)入相應(yīng)的響應(yīng)流程;
(2)按照流程進(jìn)行數(shù)據(jù)字接收、發(fā)送,并回復(fù)狀態(tài)字;
(3)消息完成后進(jìn)行消息結(jié)束處理,主要包括消息結(jié)束標(biāo)志的產(chǎn)生,差錯(cuò)處理,以及特殊方式指令下方式標(biāo)志的產(chǎn)生等。
4.1.3 MT模式
MT(總線監(jiān)控器)是總線上的監(jiān)聽(tīng)單元,它監(jiān)控總線上的信息傳輸,完成對(duì)總線的上原始數(shù)據(jù)的記錄,但它本身不參與總線的通信。
MT模式接口的功能較為簡(jiǎn)單,主要進(jìn)行指令字、狀態(tài)字和數(shù)據(jù)字的接收并將其寫(xiě)入相應(yīng)緩存中,方便以后提取分析,可通過(guò)BC模式或RT模式下接口相應(yīng)的子模塊實(shí)現(xiàn)。
4.2 協(xié)議處理模塊FPGA總體設(shè)計(jì)
根據(jù)以上三種模式下接口響應(yīng)流程的分析,對(duì)協(xié)議處理模塊各FPGA 子功能模塊進(jìn)行了劃分,總體設(shè)計(jì)框圖如圖6所示。
協(xié)議處理模塊主要由數(shù)據(jù)接收部分、數(shù)據(jù)發(fā)送部分和數(shù)據(jù)緩存部分組成,此外還包括超時(shí)檢測(cè)、地址譯碼及讀寫(xiě)控制、中斷管理等輔助部分。由于三種模式下某些功能重復(fù),為了提高FPGA 資源利用率,設(shè)計(jì)時(shí)充分考慮了相應(yīng)模塊的模式復(fù)用,整個(gè)協(xié)議處理邏輯可在外部模式選擇信號(hào)的控制下工作在BC,RT和MT模式。
?
圖6 協(xié)議處理模塊總體設(shè)計(jì)框圖
16 MHz的全局時(shí)鐘通過(guò)時(shí)鐘管理模塊為各FPGA功能模塊提供工作時(shí)鐘,各模塊間通過(guò)一定的握手信號(hào)互聯(lián),保證協(xié)議處理邏輯有序工作。整個(gè)協(xié)議處理模塊的基本工作原理如下:按照1553B 協(xié)議規(guī)范,通過(guò)接收器接收總線上的數(shù)據(jù)并存入緩存,通過(guò)發(fā)送器取出緩存中的數(shù)據(jù)并發(fā)送到總線上,同時(shí)不斷以中斷和握手信號(hào)與外部系統(tǒng)進(jìn)行通信,通知外部系統(tǒng)向緩存中寫(xiě)入待發(fā)送數(shù)據(jù)或從緩存中讀取已接收數(shù)據(jù),并共同完成差錯(cuò)處理和協(xié)議邏輯的管理。
5 設(shè)計(jì)仿真與驗(yàn)證
根據(jù)設(shè)計(jì)方案,編寫(xiě)了重要模塊的FPGA 代碼,模擬實(shí)現(xiàn)BC功能和RT功能,采用Active?HDL軟件仿真,其中BC向RT的數(shù)據(jù)傳輸仿真結(jié)果如圖7所示。
仿真通過(guò)后,在Virtex?5 FPGA平臺(tái)上對(duì)設(shè)計(jì)進(jìn)行了驗(yàn)證,如圖8所示。將BC功能模塊和RT功能模塊的代碼經(jīng)ISE綜合、布局布線后分別下載到兩塊開(kāi)發(fā)板中實(shí)現(xiàn),開(kāi)發(fā)板通過(guò)串口與PC機(jī)通信。PC機(jī)將指令和數(shù)據(jù)寫(xiě)入FPGA相應(yīng)寄存器中,BC和RT在PC機(jī)指令的控制下進(jìn)行1553B 協(xié)議通信。驗(yàn)證過(guò)程中通過(guò)示波器查看模擬總線的波形,并通過(guò)ChipScope觀察和比對(duì)協(xié)議收發(fā)數(shù)據(jù)。
?
圖7 BC向RT傳輸仿真結(jié)果
?
圖8 1553B總線接口FPGA驗(yàn)證平臺(tái)
同時(shí),為提高接口性能,用光纖代替?zhèn)鹘y(tǒng)電纜傳輸介質(zhì),采用8B/10B編解碼代替曼徹斯特編解碼,并利用FP?GA內(nèi)嵌RocketIO內(nèi)核,進(jìn)行了傳統(tǒng)1553協(xié)議數(shù)據(jù)的光纖傳輸,傳輸過(guò)程數(shù)據(jù)比對(duì)ChipScope采樣如圖10所示。
圖9 數(shù)據(jù)比對(duì)的ChipScope采樣
驗(yàn)證結(jié)果表明,BC 和RT 功能模塊能夠正常按照1553B協(xié)議進(jìn)行數(shù)據(jù)的發(fā)送和接收,完成基本1553B協(xié)議的處理,實(shí)現(xiàn)1553B 協(xié)議數(shù)據(jù)的1 Mb/s 電纜傳輸和3 Gb/s以上光纖傳輸,數(shù)據(jù)比對(duì)無(wú)誤,說(shuō)明該接口設(shè)計(jì)方案實(shí)際可行,具備開(kāi)發(fā)應(yīng)用價(jià)值,同時(shí)也為光纖1553接口的設(shè)計(jì)提供了一定參考價(jià)值。
6 結(jié)語(yǔ)
本文提出一種基于FPGA 的1553B總線接口方案,該接口采用模塊化和通用性設(shè)計(jì),能夠工作在BC,RT和MT三種模式,實(shí)現(xiàn)曼徹斯特編解碼,并完成1553B協(xié)議的處理。編寫(xiě)VHDL 代碼對(duì)設(shè)計(jì)方案進(jìn)行了仿真和驗(yàn)證,證明了其可行性,同時(shí)對(duì)光纖1553接口的設(shè)計(jì)進(jìn)行了探索性研究。目前,1553B 接口芯片主要依賴(lài)進(jìn)口,若能積極開(kāi)展該方面的研究,開(kāi)發(fā)出具有自主知識(shí)產(chǎn)權(quán)的通用IP 核,對(duì)于擺脫國(guó)外限制,降低成本,提升我國(guó)在該領(lǐng)域的自主競(jìng)爭(zhēng)力具有重要意義,其應(yīng)用前景非常廣泛。
本文創(chuàng)新點(diǎn):將FPGA技術(shù)應(yīng)用于1553B總線接口,縮短了設(shè)計(jì)周期,降低了設(shè)計(jì)成本,同時(shí),系統(tǒng)的集成度提高,擴(kuò)展性增強(qiáng),設(shè)計(jì)靈活性也大大提高。
評(píng)論