王 巍
(江蘇自動化研究所,江蘇 連云港 222006)
1553B又稱MIL-STD-1553B,是上世紀70年代美國軍方專為飛機上設備制定推出的一種時分制命令/響應式多路復用數據總線。1533B總線采用曼徹斯特II編碼,半雙工工作方式,數據傳輸的速率為1 Mbps,能掛接31個遠置終端,支持3種終端類型,即總線控制器(BC)、遠程終端(RT)和總線監視器(BM),信息格式有BC到RT、RT到BC、RT到RT、廣播方式和系統控制方式[1]。1553B總線采用了多冗余度總線型拓撲結構,具有雙向輸出特性,并且實時性和可靠性高。該標準作為美國國防部武器系統集成和標準化管理的基礎之一,被廣泛的用于飛機綜合航電系統、外掛物管理與集成系統,并逐步擴展到飛行控制等系統及坦克、艦船、航天等領域。我國參照MIL-STD-1553B標準,于1987年頒布了相應的國家軍用標準。目前,1553B總線通信模塊在多家航空航天和兵器領域的科研院所和生產單位得到了廣泛的應用。傳統的采用非智能設計的1553B總線模塊,因為其較低的數據傳輸率,讀寫操作頻繁時,必然會對整個計算機系統的影響較大,因此本文提出了一種基于ARM處理器的1553B總線模塊,將原需要計算機系統主處理器完成的任務在本模塊內部完成,因而可以明顯提高系統的性能。
傳統的1553B總線模塊一般采用總線協議芯片+耦合變壓器的工作方式實現與1553B總線的連接[2]。而在系統總線一端,一般通過PCI-Local橋接芯片將PCI系統總線轉入模塊內部的局部總線(Local Bus),在局部總線和1553B總線之間,通過采用FPGA實現粘合邏輯(Glue Logic),從而實現總線之間的數據通信。1553B總線與計算機系統之間的通信流程,以1553B總線一端通過系統總線發起中斷開始,系統響應中斷并完成1553B總線一端的讀寫操作。采用非智能設計的傳統1553B通信模塊,每次向系統總線發起中斷擬傳輸的數據量往往較少,而中斷發起的頻率較高,因此,慢速的1553B總線必然將影響整個系統的運行速度。
智能1553B總線通信模塊采用基于處理器的設計技術[3]。本設計方法中即在模塊內部實現ARM 處理器,通過雙口RAM實現與系統總線之間的數據通信。關于ARM處理器的特點,本文不再贅述,重點介紹ARM處理器如何實現與計算機系統的通信。智能1553B模塊的總體框圖如圖1所示。
智能1553B總線通信模塊在1553B總線一端仍采用了美國DDC公司的1553B總線協議芯片BU61580,通過耦合變壓器B3227接入1553B總線。采用變壓器而不使用直接的耦合的設計方式,是因為由于直接耦合不利于終端故障隔離,可能會因為一個終端故障而造成整個總線網絡的完全癱瘓,所以1553B協議中明確指出不推薦使用直接耦合方式。1553B總線數據信號采用了曼徹斯特II碼進行編碼傳輸,這種編碼非常適合利用變壓器進行總線耦合。

圖1 智能1553B總線通信模塊總體框圖
在模塊內部的數據處理方式上,智能1553B總線模塊上的ARM處理器將1553B總線數據以一定的格式存入雙口RAM,PCI總線不直接訪問1553B協議芯片,而是通過訪問雙口RAM存取1553B總線數據,因此雙口RAM是PCI總線獲得1553B總線數據的唯一通道。本文采用了美國CYPRESS公司生產的雙口RAM集成電路 CY7C027。CY7C027是一種高速異步雙口RAM,帶有雙端BUSY信號,存儲容量為512Kb,具有32K×16bit的結構,采用3.3V單電源供電,最高存取速度為 15ns[4]。該存儲器具有兩個獨立的端口,各端口分別自有一套相應的地址總線、數據總線和控制總線。該雙口RAM在工作時,允許兩個端口獨立、異步地對存儲器中作任何存儲單元進行存取操作[5]。
PCI總線一側,采用了PLX公司生產的高性能的PCI-Local橋PCI9054,以完成在PCI 總線和Local 總線之間數據傳輸的功能。PCI9054配置靈活,既可以作為兩個總線的主控設備去控制總線,也可以作為兩個總線的目標設備去響應總線。PCI9054有6個零等待可編程FIFO 存儲器。它們分別完成PCI發起讀、寫操作,PCI目標讀、寫操作和DMA讀、寫操作。由于FIFO存儲器的存在,數據可以大量突發傳輸而不丟失。這樣不僅滿足實時性要求,同時可以根據用戶的需要采用與PCI 時鐘異步的本地頻率。
從PCI總線一側來看,本板的1553B總線應該是透明的,即對系統總線來說,需要存取數據的僅為一只雙口RAM。因此,對于智能1553B總線通信模塊來說,就是需要將1553B總線數據進行處理后存入雙口RAM,并從雙口RAM中讀出數據寫入1553B協議芯片。為了實現智能模塊上ARM處理器與PCI總線上系統CPU之間的通信,關鍵是對雙口RAM的處理。從軟件層面來看,智能模塊的結構如圖2所示。

圖2 智能1553B總線通信模塊軟件結構示意圖
如圖2所示,數據鏈路層的作用是保證系統CPU將數據和指令及時準確的傳輸到智能模塊中,而雙口RAM是數據指令傳輸的通道,需要保證數據和指令能正確通過雙口RAM。下面為了討論方便,將智能模塊上的ARM CPU稱為CPU-A,系統CPU稱為CPU-B。為了方便CPU-A和CPU-B進行數據通信,先將雙口RAM分為A、B兩個大區,如圖3所示。

圖3 雙口RAM存儲空間分配
A區地址范圍為0x0000-0x3FFF,用作智能模塊向系統總線傳輸數據使用。對于A區的存儲空間,CPU-A可讀寫,但CPU-B只讀。B區地址范圍為0x4000-0x7FFF,用作智能模塊向系統總線傳輸數據使用。對于A區的存儲空間,CPU-B可讀寫,但CPU-A只讀。對于每個大區,其空間又被分成兩個小部分(A0/B0和A1/B1),分別用于處理兩個優先級的數據傳輸。A0/B0區又稱為命令區,大小為256B,數據內容包括單板控制命令、高優先級命令、高優先級數據和A1/B1區的長度信息等。A1/B1又稱為數據區,大小分別為A/B區扣除A0/B0區后的大小,A1/B1包含普通優先級的數據。
在A0/B0區偏移地址為0的存儲單元,可以定義一個狀態字STATA/STATB,記錄數據區中的數據長度、A0/B0命令區數據是否被處理過的狀態以及A1/B1數據區數據是否被處理過的狀態等信息。CPU-A 或 CPU-B通過讀取各自區域的STATA/STATB狀態字,及時了解對方CPU對已方數據的處理情況。現以CPU-A處理CPU-B的數據為例,說明數據處理流程,如圖4所示。

圖4 CPU-A處理CPU-B數據流程圖
當CPU-A需要向A1區寫數據時,首先檢查A0區STATA與B0區的STATB是否相同,如果不相同,說明原先寫入的數據未被CPU-B處理過,CPU-A可選擇是否強制寫入新數據覆蓋老數據。如果CPU-A選擇強制寫入數據,那么首先設置STATA為無效值,然后將數據寫入A1區,再將STATA設為有效值。CPU-A從B1區接收CPU-B的數據時,CPU-A首先檢查STATA與STATB的值是否相同,如果相同,說明B1區的數據已過時,不做處理。如果不同,說明B1區的數據是新數據,CPU-A將B1區數據讀走后,再將STATA設置與STATB相同,通知CPU-B已將B1區的數據處理完畢。CPU-B讀取或向CPU-A寫入數據時,過程與之類似。
而對于CPU-A與CPU-B之間通信時的具體數據結構,可由智能模塊的底層軟件設計人員與操作系統驅動程序開發人員定制,處理方式相當靈活。
由于智能1553B總線與PCI總線通信模塊不再通過 PCI總線向計算機系統提請中斷,而是通過雙口RAM 以較高的效率實現智能模塊與計算機系統之間的數據通信,因此可以減少計算機系統資源消耗,提高計算機系統的性能。另外,由于智能模塊按預定的數據結構在本板內實現了數據重組,因此也可以減少操作系統下驅動程序開發的工作量。通過研制智能1553B總線通信模塊,可以掌握基于ARM處理器的智能模塊設計的方法。這種采用本模塊內部智能處理的設計方法,也可以推廣到其他智能低速總線通信模塊的設計中去,從而提高整個系統的性能。
[1]周福寬,馬彪.MIC總線與1553B總線綜合分析比較[J].測控技術,2006(2):32-33.
[2]翟雯艷,張遂南.基于CPCI的1553B總線通信模塊的設計與實現[J].無線電技術2008(10):90-92.
[3]李世良,許永輝.PCI總線智能GJB289A仿真卡設計[J].現代電子技術,2010(20):114-116.
[4]孫愛東,等.基于雙口 RAM 的數據采集系統的設計[J].電子測量技術,2006(2):90-91,94.
[5]錢瑞霞.基于雙口 RAM 的智能數據采集卡設計[J].中國儀器儀表,2001(3):24-26.