李鵬 鄭賓
摘要:在深入理解MIL-STD-1553B總線協(xié)議的基礎(chǔ)上,設(shè)計(jì)了一種基于FPGA技術(shù)的總線控制器BC模塊。采用自頂向下的方法使用VHDL語(yǔ)言書(shū)寫(xiě)總線控制器程序代碼,通過(guò)FPGA平臺(tái)對(duì)發(fā)送器進(jìn)行了測(cè)試;結(jié)果表明,接收器的邏輯功能達(dá)到了設(shè)計(jì)要求,時(shí)序指標(biāo)完全符合協(xié)議規(guī)范,實(shí)現(xiàn)了總線控制器的功能。
關(guān)鍵詞:MIL_1553B;FPGA;總線控制器
中圖分類(lèi)號(hào):TP336文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)01-0207-04
Design of BC Module for MIL-STD-1553B Based on FPGA
LI Peng,ZHENG Bin
(North University of China,Taiyuan 030051, China)
Abstract: This thesis proposed a design of the BC(bus controller ) module for MIL-STD-1553B on the base of deeply understand the mechanism of MIL-STD-1553B.The BC designed with the top-down method based on FPGA , It had been proved effective on the FP? GA. The result indicated that the design had met the timing requirements of the bus standard.
Key words: MIL_1553B; FPGA; bus controller
MIL-STD-1553B是美國(guó)軍方在20世紀(jì)80年代為軍用飛機(jī)、車(chē)輛等制定的一種軍用總線標(biāo)準(zhǔn),現(xiàn)已經(jīng)廣泛運(yùn)用與各種軍用、民用飛機(jī)以及船舶車(chē)輛等領(lǐng)域。
由于其高速、高可靠性、實(shí)時(shí)性等特點(diǎn),已經(jīng)被國(guó)際社會(huì)認(rèn)可,發(fā)展成為了國(guó)際公認(rèn)的數(shù)據(jù)總線標(biāo)準(zhǔn)[1]。總線處理器是1553B總線系統(tǒng)的最關(guān)鍵的組成部分,而總線控制器BC作為總線系統(tǒng)的核心,就成為設(shè)計(jì)1553B數(shù)據(jù)總線的重點(diǎn)。
1553B是一種時(shí)分制指令/響應(yīng)式多路傳輸數(shù)據(jù)總線,包括串行傳輸電纜、總線控制器BC、遠(yuǎn)程終端RT、總線監(jiān)控器MT??偩€上的所有消息傳輸都由總線控制器(BC)發(fā)起,遠(yuǎn)程終端(RT)對(duì)發(fā)出的指令應(yīng)給予回答(響應(yīng))并執(zhí)行相關(guān)操作。一個(gè)通信總線上最多可以掛32個(gè)遠(yuǎn)程終端,傳輸介質(zhì)采用屏蔽雙絞線,對(duì)噪聲等干擾有很好的抑制能力。1553B總線的數(shù)據(jù)傳輸率為1 Mb/s,在一次消息傳輸中最多可以傳送32個(gè)字,所有單次傳輸?shù)臅r(shí)間較短,具有很好的實(shí)時(shí)性[2]。
國(guó)內(nèi)應(yīng)用1553B總線協(xié)議的通信模塊的解決方案多采取基于進(jìn)口1553B總線協(xié)議芯片來(lái)開(kāi)展相關(guān)設(shè)計(jì),如UT公司的UTl553B協(xié)議芯片、DDC公司的高級(jí)協(xié)議處理芯片BU-61580等,雖然這些芯片能夠完成協(xié)議功能,但價(jià)格昂貴、靈活性差,這些弱點(diǎn)在一定程度上限制了設(shè)計(jì)能力。隨著1553B總線得在各個(gè)領(lǐng)域的廣泛應(yīng)用,為了滿(mǎn)足低成本,高靈活性的要求,提出一種新的基于FPGA技術(shù)來(lái)實(shí)現(xiàn)的1553B數(shù)據(jù)總線控制器的方法。
1系統(tǒng)的總體設(shè)計(jì)方案
本文采用ALTERA公司的cycloneII系列FPGA芯片作為協(xié)議處理核心器件。1553B總線接口的每一種類(lèi)型的終端的設(shè)計(jì)都包括模擬收發(fā)器、總線接口模塊、總控制模塊、處理機(jī)接口模塊四部分,都需要完成字處理和消息處理,而B(niǎo)C是線上唯一被安排為執(zhí)行建立和啟動(dòng)數(shù)據(jù)傳輸任務(wù)的終端,被指派啟動(dòng)數(shù)據(jù)總線信息傳輸任務(wù)的終端。針對(duì)BC功能,其FP? GA部分的邏輯結(jié)構(gòu)如圖1所示。BC功能模塊主要包括:數(shù)字收發(fā)器、命令字發(fā)送器、地址控制器、數(shù)據(jù)譯碼器、數(shù)據(jù)發(fā)送控制器、檢錯(cuò)控制器和存儲(chǔ)模塊組成。
1.1數(shù)字收發(fā)器
數(shù)字收發(fā)器主要由數(shù)字發(fā)送模塊、數(shù)字接收模塊和發(fā)送超時(shí)檢測(cè)模塊成。
數(shù)字發(fā)送器模塊在BC模式下的主要功能是從子系統(tǒng)接口單元接收16位的1553B數(shù)據(jù)(指令字和狀態(tài)字),并以1Mbps曼徹斯特II編碼串行數(shù)據(jù)發(fā)送到模擬發(fā)送器進(jìn)而傳輸?shù)?553B總線上。該部分即為曼徹斯特碼編碼,它是將單極性不歸零碼(NRZ)轉(zhuǎn)換為單極性的曼徹斯特碼,而且實(shí)現(xiàn)對(duì)同步頭的編碼,以及奇偶位的產(chǎn)生,并對(duì)數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換[3]。其工作狀態(tài)圖如圖2所示。當(dāng)系統(tǒng)接收到發(fā)送數(shù)據(jù)的指令時(shí),系統(tǒng)首先判斷要發(fā)送的數(shù)據(jù)類(lèi)型,并產(chǎn)生相應(yīng)的同步頭,同時(shí),將要發(fā)送的16位數(shù)據(jù)進(jìn)行并串轉(zhuǎn)換,并產(chǎn)生相應(yīng)的校驗(yàn)位數(shù)據(jù)。最后將同步字、數(shù)據(jù)字校驗(yàn)位按照1553B的標(biāo)準(zhǔn)格式進(jìn)行曼徹斯特碼編碼。
由曼徹斯特II編碼的特性可知,每位數(shù)據(jù)0或者1都編碼為2位,而1553B總線的傳輸速率為1Mbit/s,即每個(gè)位的寬度為1ms,所以脈沖寬度最小為500ns,所以發(fā)送單元所需要的最小時(shí)鐘頻率為2MHZ。針對(duì)不同的時(shí)鐘源可通過(guò)分頻電路實(shí)現(xiàn)2MHz。編碼器的輸入時(shí)鐘mclk為2MHZ,選取它的發(fā)送時(shí)鐘為2MHZ,同步字頭產(chǎn)生完成,則發(fā)出控制信號(hào)開(kāi)始移位,對(duì)16位數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換換,位時(shí)鐘是同步頭生成時(shí)用的時(shí)鐘兩分頻產(chǎn)生。由于發(fā)送單元采用的時(shí)鐘是周期為500ns,即每位為500ns。同步頭的長(zhǎng)度為3000 ns,所以同步頭要用6位來(lái)表示,每位數(shù)據(jù)采用兩位,奇偶校驗(yàn)位采用兩位,所以整個(gè)1553B總線數(shù)據(jù)要用40位表示。
20位待發(fā)送的數(shù)據(jù)(曼徹斯特Ⅱ型編碼),前3位為同步頭。由于同步頭是無(wú)效的曼徹斯特編碼,應(yīng)特殊處理。為了在檢測(cè)到編碼允許后,正確的產(chǎn)生同步頭,需要利用輸入信號(hào)Commd/Data。這個(gè)信號(hào)既充當(dāng)編碼允許信號(hào),又指示需要編碼同步頭的類(lèi)型。Commd/Data=1表示要產(chǎn)生的是命令字或狀態(tài)字的同步頭。根據(jù)1553B協(xié)議的說(shuō)明,也就是需要產(chǎn)生3位高電平緊跟3位低電平的6位無(wú)效碼。Commd/Data=0表示要產(chǎn)生的是數(shù)據(jù)字的同步頭。也就是需要產(chǎn)生3位低電平然后3位低電平的6位無(wú)效碼。
if (mclkevent and mclk=1) then
if(Commd/Data=1) then
sync_bits(5 downto 0)<="000111";--產(chǎn)生命令同步頭elsif(Commd/Data=0) then
sync_bits(5 downto 0)<="111000";--產(chǎn)生數(shù)據(jù)同步頭end if; end if;數(shù)據(jù)的第4位到第19位是數(shù)據(jù)位,根據(jù)曼徹斯特碼的編碼格式,對(duì)每1比特位,通過(guò)并置其自身的取反,剛好達(dá)到曼徹斯特II型碼對(duì)邏輯0和邏輯1的定義,從而實(shí)現(xiàn)編碼。
數(shù)據(jù)的第20位是奇偶校驗(yàn)位,1553B采用的是奇校驗(yàn)。因此對(duì)16位的數(shù)據(jù)按位異或剛好就是偶校驗(yàn),再取反就得到了奇校驗(yàn)位。
1.2數(shù)字接收器
數(shù)字接收器的主要功能就是對(duì)接收到的數(shù)據(jù)進(jìn)行曼徹斯特解碼,將單極性的曼徹斯特碼轉(zhuǎn)換為單極性的不歸零碼(NRZ),同時(shí)完成出同步時(shí)鐘的提取,同步頭檢出,數(shù)據(jù)檢出,曼徹斯特II碼錯(cuò)誤檢出,奇偶檢測(cè),位/字計(jì)數(shù)以及數(shù)據(jù)的串/并轉(zhuǎn)換功能。
接收單元的時(shí)間基準(zhǔn)是2MHZ的輸入,根據(jù)標(biāo)準(zhǔn),同步頭只可能有兩種01和10。按照標(biāo)準(zhǔn),誤差范圍為月150ns,同步頭的前半部分脈沖寬度是1500ns士15n0s。如圖3所示,用2MHZ的頻率來(lái)采樣計(jì)數(shù)的話,如果計(jì)數(shù)器的計(jì)數(shù)為3時(shí)就認(rèn)為是收到了同步頭的前半部分,否則,接收單元就繼續(xù)檢測(cè)同步頭。同步頭后半部分脈沖寬度為1500ns,如果計(jì)數(shù)器的計(jì)數(shù)為3時(shí)就認(rèn)為是收到了同步頭的后半部分。當(dāng)接收器檢測(cè)到有效同步頭以后,啟動(dòng)數(shù)字鎖相環(huán),提取出同步時(shí)鐘。同理,將曼徹斯特解碼后的16位NRZ數(shù)據(jù)檢出。
曼徹斯特II碼的特性是在每位數(shù)據(jù)脈沖的中間時(shí)刻都有一個(gè)電壓跳變,所以對(duì)數(shù)據(jù)的譯碼可以從跳變沿可分為前后兩部分,前后兩半部分可能的長(zhǎng)度都是500士15Ons和1000士15Ons,只要在該范圍內(nèi)就可認(rèn)為收到了一位數(shù)據(jù),在跳變沿的后半部分把位取反就是該位數(shù)據(jù)的值。
1.3命令發(fā)生器
BC是啟動(dòng)數(shù)據(jù)傳輸任務(wù)的終端。當(dāng)工作在BC方式時(shí),命令字/狀態(tài)字譯碼及發(fā)送命令字控制模塊只是完成對(duì)于BC自身需要發(fā)送的命令字和接收到RT返回的狀態(tài)字進(jìn)行譯碼以及RT返回的數(shù)據(jù)字接收,發(fā)出相應(yīng)的地址、RAM的讀寫(xiě)控制和讀寫(xiě)地址等控制信號(hào)。該模塊的邏輯結(jié)構(gòu)如圖4所示。
圖4邏輯結(jié)構(gòu)
1.4地址控制器
地址控制器根據(jù)不同BC模式,得出不同模式的RAM讀寫(xiě)地址信號(hào),地址控制模塊包括地址變換和地址選擇兩部分。其邏輯圖如圖5示。地址變換部分接收來(lái)自發(fā)送命令字模塊的地址加載信號(hào)、數(shù)據(jù)字計(jì)數(shù)值,以及來(lái)自數(shù)字收發(fā)器的rxrdy、txrdy信號(hào)進(jìn)行地址信號(hào)的變換。地址選擇部分根據(jù)來(lái)自發(fā)送命令字模塊的地址選擇信號(hào)確定當(dāng)前是BC輸入的RAM的有效地址是讀地址還是寫(xiě)地址。當(dāng)SEL為01時(shí),BC接收來(lái)自RT的數(shù)據(jù)字存入RAM中即表示寫(xiě)地址有效;10時(shí)BC從RAM中取出數(shù)據(jù)字向發(fā)送給RT,即表示讀地址有效。
圖5邏輯圖
1.5檢錯(cuò)控制器
在該總線接口設(shè)計(jì)過(guò)程中要保證電路可靠的工作,錯(cuò)誤檢測(cè)是一個(gè)至關(guān)重要的部分。在本次設(shè)計(jì)中主要從軟件上進(jìn)行可靠性設(shè)計(jì),采用奇偶校驗(yàn)的方法對(duì)接收的數(shù)據(jù)進(jìn)行編碼檢錯(cuò),同時(shí)包括系統(tǒng)的時(shí)間范圍要求如消息間隔和RT響應(yīng)時(shí)間等,以及對(duì)消息進(jìn)行字計(jì)數(shù)檢測(cè)等,這樣可以在增加少量硬件的基礎(chǔ)上迅速地完成檢錯(cuò)任務(wù)。
該模塊主要由字計(jì)數(shù)部分和RT響應(yīng)時(shí)間檢測(cè)部分組成。字計(jì)數(shù)部分負(fù)責(zé)對(duì)發(fā)送/接收的數(shù)據(jù)進(jìn)行字計(jì)數(shù),并與相應(yīng)的指令/狀態(tài)中的字?jǐn)?shù)比較,判斷出數(shù)據(jù)字?jǐn)?shù)是否正確。RT響應(yīng)時(shí)間檢測(cè)主要負(fù)責(zé)檢測(cè)從BC發(fā)送命令到RT反饋?lái)憫?yīng)之間的時(shí)間差,與正常的響應(yīng)時(shí)間范圍比較[4]。
1.6狀態(tài)字譯碼控制器
當(dāng)BC接收到RT發(fā)送的狀態(tài)數(shù)據(jù)的時(shí)候,需要從該數(shù)據(jù)中將遠(yuǎn)程終端地址字段、消息差錯(cuò)位、測(cè)試手段位、服務(wù)請(qǐng)求位、奇偶校驗(yàn)位等狀態(tài)信息檢出。
1.7雙口RAM
雙口RAM是整個(gè)總線控制模塊的存儲(chǔ)空間,他是總線模塊和上位機(jī)PC間通信的媒介。該存儲(chǔ)器由調(diào)用FPGA內(nèi)部的LPM功能塊LPMRAM函數(shù)來(lái)實(shí)現(xiàn)。
2設(shè)計(jì)總結(jié)
按照系統(tǒng)的總體設(shè)計(jì)方案,采用自頂向下的設(shè)計(jì)方法,設(shè)計(jì)了各個(gè)功能模塊,各模塊之間利用信號(hào)傳遞信息,邏輯關(guān)系清楚,便于調(diào)試和修改。同時(shí)各復(fù)用單元可以直接調(diào)用,節(jié)省了系統(tǒng)的開(kāi)發(fā)時(shí)間和系統(tǒng)資源。
3程序仿真
為了驗(yàn)證設(shè)計(jì)的正確性,利用Altera的開(kāi)發(fā)軟件Quartus9.0對(duì)程序進(jìn)行仿真。
如圖6所示,當(dāng)commd信號(hào)為低時(shí),BC端從RAM端口發(fā)送0X5A5A的數(shù)據(jù),經(jīng)過(guò)BC模塊轉(zhuǎn)換后的1553B數(shù)據(jù)如tx所示。當(dāng)數(shù)據(jù)發(fā)送完成以后,發(fā)送準(zhǔn)備信號(hào)txrdy置1,準(zhǔn)備發(fā)送下一個(gè)數(shù)據(jù)。
圖6 BC模塊發(fā)送數(shù)據(jù)仿真圖
圖7為BC模塊接收數(shù)據(jù)的仿真圖,當(dāng)讀數(shù)據(jù)信號(hào)read置高電平時(shí),接收器從rx口接收5A5A的串行信號(hào),并經(jīng)過(guò)串并轉(zhuǎn)換從dataout口的并行數(shù)據(jù)。當(dāng)一個(gè)完整的數(shù)據(jù)接收完成后,接收準(zhǔn)備信號(hào)rxrdy信號(hào)置1,準(zhǔn)備接收下一個(gè)數(shù)據(jù)。
圖7 BC模塊接收數(shù)據(jù)仿真圖
由此可見(jiàn)設(shè)計(jì)的各項(xiàng)功能工作正常,能滿(mǎn)足1553B的總線接口電路的設(shè)計(jì)要求。
4結(jié)論
MIL_STD_1553B總線的應(yīng)用領(lǐng)域非常廣泛,利用FPGA實(shí)現(xiàn)其功能在降低應(yīng)用成本的同時(shí),更方便了系統(tǒng)調(diào)試。同時(shí),由于1553B總線的復(fù)雜性,基于FPGA的總線控制模塊設(shè)計(jì)難免會(huì)存在一些漏洞,因此逐漸完善1553B總線的功能成為了FPGA技術(shù)的一個(gè)總要的研究方向。
參考文獻(xiàn):
[1]申志永. MIL-STD-1553B總線接收器IP核設(shè)計(jì)[J].電子測(cè)量技術(shù),2011(5).
[2]中國(guó)航空工業(yè)總公司.GJB 289A-97數(shù)字式時(shí)分制指令/響應(yīng)型多路傳輸數(shù)據(jù)總線[S].中華人民共和國(guó)國(guó)家軍用標(biāo)準(zhǔn),1993.
[3]周密.1553B總線協(xié)議IP核設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2007(1).
[4]郭澤仁.1553B總線系統(tǒng)優(yōu)化及可靠性設(shè)計(jì)[J].山東理工大學(xué)學(xué)報(bào),2008(1).