李 亮,于圣武
(1.中國電子科技集團公司第四十七研究所,沈陽 110000;2.南京微盟電子有限公司,南京 210002)12
1553B總線標準是在上世紀70年代美國軍方提出的一種航空串行總線協議,具有線性局域網絡結構,兼有高可靠性、雙冗余容錯能力、良好實時性等特點,現已廣泛用于諸如飛機綜合航電系統、裝甲車輛綜合電子系統、艦船綜合電子系統等航空、航天、船舶、兵器、電子等領域[1]。
目前,國內自主研發的1553B總線通信板卡主要有兩種開發方式。第一種是基于1553B協議芯片,如國外DDC公司的BU-61580S3-110K、國內中電58所的JBU61580S3-1H、航天時代電子772所的B61580S3等[2]。第二種是基于FPGA的1553B IP核,如FlightCORE-1553、用戶自定義IP核等,主要包括編解碼器和協議處理器兩部分。綜合對比來看,前一種方式成本較高,但可靠性好,功能更豐富,性能更穩定;后一種方式則有設計靈活的優點,具備可移植性,降低因為ASIC芯片停產或斷供帶來的風險,缺點是不能適應高強度的應用環境。無論哪種方式,都需要大量的硬件描述語言來實現1553B總線的信號采集及外圍接口電路的數據通信,因此工作量巨大,開發周期長。為克服這一問題,在此研究一款基于Nios II的1553B總線板卡,可自定義控制接口,提供靈活的控制和開發平臺。
系統以BU-61580S3協議芯片為核心[3],控制器選用FPGA,內嵌Nios II 32 bit CPU。通過變壓器隔離,提供雙通道單功能的總線接口。通過與通用IO口復用,分出一路UART接口,實現與主機的信息交互。FPGA采用SOPC技術,CPU通過Avalon總線連接SRAM、SDRAM、Flash、UART等外設,形成一個完整的硬件系統,再通過Nios II軟件開發平臺編寫應用程序,完成系統總體設計。系統設計流程圖如圖1所示。

圖1 系統整體設計流程圖
1553B總線通信板卡采用Quartus II 9.0開發環境作為硬件設計平臺,運用SOPC片上可編程系統將處理器、存儲器、片內RAM、通用IO、調試配置模塊等功能模塊集成在一塊FPGA器件上[4]。硬件設計總體框圖如圖2所示。

圖2 硬件設計系統框圖
BU61580電路與1553B總線系統有兩種連接方式,分別為直接耦合方式和變壓器耦合方式[5]。無論哪種連接方式,BU61580必須通過隔離變壓器與1553B總線相連,可以在系統和終端之間起到短路保護、直流隔離和阻抗匹配的作用。為了便于調試,設計中同時保留了兩種耦合方式。
控制器采用Altera Cyclone I代FPGA,型號為EP1C12F324C8。控制器與主機的接口方式為16位緩沖模式,通過A11~A0地址線訪問BU61580寄存器和內部4KRAM,通過A4~A0地址線實現寄存器的選擇。FPGA與BU61580接口設計圖如圖3。

圖3 FPGA與BU61580接口圖
由于FPGA端口電平為3.3 V的CMOS電平,而BU61580的電路電平為5 V,是TTL電平,為了滿足兩者之間的接口要求,采用型號為74LVC16T245的芯片進行電平轉換。BU61580與FPGA之間接口有四種信號,分別是地址信號、數據信號、控制信號、反饋信號。對于地址信號和反饋信號,FPGA是輸出端,BU61580是輸入端。FPGA輸出的是CMOS電平,BU61580接收的是3.3 V CMOS電平,滿足TTL電平要求,因此不用進行電平轉換。對于雙向數據總線、反饋信號INT#和READYD#,BU61580的TTL電平不滿足CMOS的電平要求,有燒壞FPGA的風險,必須進行電平轉換。
使用Quartus II中的SOPC builder組件將復雜的系統組件集成在FPGA上。由于SOPC在管理BU61580接口芯片時要運行應用程序,為了提高系統的處理速度,采用SDRAM,由此,程序在上電時,位于EPCS串行Flash中的Bootloader就會自動加載Flash中的應用程序到SDRAM中運行。
設計的SOPC硬件系統[6]如圖4所示。包括標準Nios II軟核處理器cpu_0;EPCS串行閃存控制器epcs_controller;1553B總線ext_1553B_bus;Avalon三態橋ext_bus;外部Flash存儲器接口ext_cfi_flash;外部SDRAM存儲器接口ext_sdram;UART接口ext_uart;IO接口pio1_int_n、pio2_set、pio_user;JTAG調試接口sys_jtag_uart;定時器sys_timer;系統識別模塊sysid;1553B用戶自定義模塊user_logic_1553B_NATIVE_15_0。

圖4 SOPC硬件系統
PCB采用六層電路板設計[7],頂層到底層依次為信號層、地層、信號層、信號層、電源層、信號層,電源和地之間使用去耦電容和旁路電容,PCB布局示意圖如圖5。

圖5 1553B通訊板卡PCB布局示意圖
模擬端口輸出采用差分信號,信號線四圍不能覆銅、不能走普通信號線,以防止引入干擾信號。差分信號線盡量保持等長,并適度加粗信號線。模擬端到隔離變壓器及接入總線端口之間的距離盡量縮短,有助于確保來自電路板的噪聲不被拾取到差分線路上,并且不會從電路板的互聯電纜泄露而造成對電路板EMI的干擾。
隔離變壓器放置在離收發引腳盡可能近的位置,且與接插件DB62的距離越短越好,由此不僅能夠限制發送時模擬信號通道上的電壓降,還能最小化電路板上其他信號的干擾。此外隔離變壓器下方不要走線,避免形成渦流。
BU61580電路與FPGA的軟件接口包括17個內部常規寄存器和8個額外的測試寄存器[8],以及4k×16位的內部存儲器空間。軟件設計的重點是對寄存器的配置和內部存儲空間的初始化。
本板卡可實現BC和RT兩種模式的功能,其中BC模式包括BC to RT,RT to RT和帶數據的模式碼功能,RT模式包括帶中斷的發送和單消息的發送、接收和廣播功能。
設計采用了Nios II 9.0 IDE的開發環境,分別建立起應用程序和系統庫,與PC機的信息交互采用串口的形式。系統上電后,通過串口打印相關信息,選擇系統運行模式。寄存器和RAM中的數據信息均可顯示在PC端界面窗口中。系統軟件設計流程圖如圖6。

圖6 系統軟件設計流程圖
以下為寄存器和RAM初始化的部分程序:
寄存器初始化:
IOWR(REGISTER_BASE,0x3,0x0001);//軟件復位
IOWR(REGISTER_BASE,0x7,0x8000);//使能增強模式
IOWR(REGISTER_BASE,0x0,0x0018);//使能BC控制字中斷和幀結束中斷
IOWR(REGISTER_BASE,0x1,0x0130);//設置幀自動重發、使能消息間隔時間定時器和重試
IOWR(REGISTER_BASE,0x2,0x0400);//禁止256字邊界,設置脈沖中斷請求
IOWR(REGISTER_BASE,0x8,0x1068);//使能擴展的BC控制字,若消息出錯且無數據響應也有效,忙且無數據響應也有效
IOWR(REGISTER_BASE,0x9,0x0E00);//使能擴展的過零點,設置BC響應超時
IOWR(REGISTER_BASE,0x5,0x0000);//初始化時標寄存器為0
IOWR(REGISTER_BASE,0x3,0x0002);//初始化消息幀
RAM初始化:
IOWR(MEMORY_BASE,0x0100,0x0000);//初始化區域A棧指針
IOWR(MEMORY_BASE,0x0101,0xFFFC);//初始化區域A消息計數
IOWR(MEMORY_BASE,0x0000,0x0000);//初始化消息1的塊狀態字
IOWR(MEMORY_BASE,0x0001,0x0000);//初始化消息1的時標字
IOWR(MEMORY_BASE,0x0002,0x0320);//初始化消息1的消息時間間隔字為800μs
IOWR(MEMORY_BASE,0x0003,0x0108);//初始化消息1的消息塊地址
為了驗證板卡設計的合理性,以BC模式為例進行試驗。將通信板卡設置為BC模式,仿真測試終端設置為RT模式,使用A通道,通過轉換線纜分別連接在耦合器上,耦合器兩端匹配終端電阻。實驗平臺搭建圖如圖7所示。

圖7 實驗平臺實物圖
通訊板卡通過串口與PC機相連,在PC機端運行串口調試助手,仿真測試終端通過PCI接口與主機相連,由主機運行應用程序。串口設置為9600波特率,8位數據位,1位停止位,無奇偶校驗。串口調試界面如圖8所示。

圖8 串口調試界面
通訊板卡發送一條格式為BC->RT的消息,該消息發送給終端1,子地址1,由1111、2222、3333、4444四個數據字構成。打開串口,系統上電,串口打印模式選擇信息,通過發送“a”選擇通信板為BC模式。應用程序數據采集界面如圖9。通過主機應用程序觀察RT端接收的消息,識別出指令字和接收終端地址,且接收到的數據與發送數據一致,表明測試結果準確無誤。

圖9 應用程序數據采集界面
本1553B通訊板卡采用基于Nios II的嵌入式軟核CPU,運用Altra提供的IP核,通過SOPC技術快速搭建系統,完成總線的信息交互,減小了開發難度,縮短了開發周期,且設計中所有模塊都是以軟核的形式在FPGA中實現的,具有較強的可移植性。本系統作為靈活的開發平臺,可在其基礎上擴展PCI、CPCI/PXI、PCIE、以太網等PC接口,具有很強的工程應用價值。