李 亮,于圣武
(1.中國(guó)電子科技集團(tuán)公司第四十七研究所,沈陽(yáng) 110000;2.南京微盟電子有限公司,南京 210002)12
1553B總線標(biāo)準(zhǔn)是在上世紀(jì)70年代美國(guó)軍方提出的一種航空串行總線協(xié)議,具有線性局域網(wǎng)絡(luò)結(jié)構(gòu),兼有高可靠性、雙冗余容錯(cuò)能力、良好實(shí)時(shí)性等特點(diǎn),現(xiàn)已廣泛用于諸如飛機(jī)綜合航電系統(tǒng)、裝甲車輛綜合電子系統(tǒng)、艦船綜合電子系統(tǒng)等航空、航天、船舶、兵器、電子等領(lǐng)域[1]。
目前,國(guó)內(nèi)自主研發(fā)的1553B總線通信板卡主要有兩種開發(fā)方式。第一種是基于1553B協(xié)議芯片,如國(guó)外DDC公司的BU-61580S3-110K、國(guó)內(nèi)中電58所的JBU61580S3-1H、航天時(shí)代電子772所的B61580S3等[2]。第二種是基于FPGA的1553B IP核,如FlightCORE-1553、用戶自定義IP核等,主要包括編解碼器和協(xié)議處理器兩部分。綜合對(duì)比來(lái)看,前一種方式成本較高,但可靠性好,功能更豐富,性能更穩(wěn)定;后一種方式則有設(shè)計(jì)靈活的優(yōu)點(diǎn),具備可移植性,降低因?yàn)锳SIC芯片停產(chǎn)或斷供帶來(lái)的風(fēng)險(xiǎn),缺點(diǎn)是不能適應(yīng)高強(qiáng)度的應(yīng)用環(huán)境。無(wú)論哪種方式,都需要大量的硬件描述語(yǔ)言來(lái)實(shí)現(xiàn)1553B總線的信號(hào)采集及外圍接口電路的數(shù)據(jù)通信,因此工作量巨大,開發(fā)周期長(zhǎng)。為克服這一問(wèn)題,在此研究一款基于Nios II的1553B總線板卡,可自定義控制接口,提供靈活的控制和開發(fā)平臺(tái)。
系統(tǒng)以BU-61580S3協(xié)議芯片為核心[3],控制器選用FPGA,內(nèi)嵌Nios II 32 bit CPU。通過(guò)變壓器隔離,提供雙通道單功能的總線接口。通過(guò)與通用IO口復(fù)用,分出一路UART接口,實(shí)現(xiàn)與主機(jī)的信息交互。FPGA采用SOPC技術(shù),CPU通過(guò)Avalon總線連接SRAM、SDRAM、Flash、UART等外設(shè),形成一個(gè)完整的硬件系統(tǒng),再通過(guò)Nios II軟件開發(fā)平臺(tái)編寫應(yīng)用程序,完成系統(tǒng)總體設(shè)計(jì)。系統(tǒng)設(shè)計(jì)流程圖如圖1所示。
圖1 系統(tǒng)整體設(shè)計(jì)流程圖
1553B總線通信板卡采用Quartus II 9.0開發(fā)環(huán)境作為硬件設(shè)計(jì)平臺(tái),運(yùn)用SOPC片上可編程系統(tǒng)將處理器、存儲(chǔ)器、片內(nèi)RAM、通用IO、調(diào)試配置模塊等功能模塊集成在一塊FPGA器件上[4]。硬件設(shè)計(jì)總體框圖如圖2所示。
圖2 硬件設(shè)計(jì)系統(tǒng)框圖
BU61580電路與1553B總線系統(tǒng)有兩種連接方式,分別為直接耦合方式和變壓器耦合方式[5]。無(wú)論哪種連接方式,BU61580必須通過(guò)隔離變壓器與1553B總線相連,可以在系統(tǒng)和終端之間起到短路保護(hù)、直流隔離和阻抗匹配的作用。為了便于調(diào)試,設(shè)計(jì)中同時(shí)保留了兩種耦合方式。
控制器采用Altera Cyclone I代FPGA,型號(hào)為EP1C12F324C8??刂破髋c主機(jī)的接口方式為16位緩沖模式,通過(guò)A11~A0地址線訪問(wèn)BU61580寄存器和內(nèi)部4KRAM,通過(guò)A4~A0地址線實(shí)現(xiàn)寄存器的選擇。FPGA與BU61580接口設(shè)計(jì)圖如圖3。
圖3 FPGA與BU61580接口圖
由于FPGA端口電平為3.3 V的CMOS電平,而BU61580的電路電平為5 V,是TTL電平,為了滿足兩者之間的接口要求,采用型號(hào)為74LVC16T245的芯片進(jìn)行電平轉(zhuǎn)換。BU61580與FPGA之間接口有四種信號(hào),分別是地址信號(hào)、數(shù)據(jù)信號(hào)、控制信號(hào)、反饋信號(hào)。對(duì)于地址信號(hào)和反饋信號(hào),F(xiàn)PGA是輸出端,BU61580是輸入端。FPGA輸出的是CMOS電平,BU61580接收的是3.3 V CMOS電平,滿足TTL電平要求,因此不用進(jìn)行電平轉(zhuǎn)換。對(duì)于雙向數(shù)據(jù)總線、反饋信號(hào)INT#和READYD#,BU61580的TTL電平不滿足CMOS的電平要求,有燒壞FPGA的風(fēng)險(xiǎn),必須進(jìn)行電平轉(zhuǎn)換。
使用Quartus II中的SOPC builder組件將復(fù)雜的系統(tǒng)組件集成在FPGA上。由于SOPC在管理BU61580接口芯片時(shí)要運(yùn)行應(yīng)用程序,為了提高系統(tǒng)的處理速度,采用SDRAM,由此,程序在上電時(shí),位于EPCS串行Flash中的Bootloader就會(huì)自動(dòng)加載Flash中的應(yīng)用程序到SDRAM中運(yùn)行。
設(shè)計(jì)的SOPC硬件系統(tǒng)[6]如圖4所示。包括標(biāo)準(zhǔn)Nios II軟核處理器cpu_0;EPCS串行閃存控制器epcs_controller;1553B總線ext_1553B_bus;Avalon三態(tài)橋ext_bus;外部Flash存儲(chǔ)器接口ext_cfi_flash;外部SDRAM存儲(chǔ)器接口ext_sdram;UART接口ext_uart;IO接口pio1_int_n、pio2_set、pio_user;JTAG調(diào)試接口sys_jtag_uart;定時(shí)器sys_timer;系統(tǒng)識(shí)別模塊sysid;1553B用戶自定義模塊user_logic_1553B_NATIVE_15_0。
圖4 SOPC硬件系統(tǒng)
PCB采用六層電路板設(shè)計(jì)[7],頂層到底層依次為信號(hào)層、地層、信號(hào)層、信號(hào)層、電源層、信號(hào)層,電源和地之間使用去耦電容和旁路電容,PCB布局示意圖如圖5。
圖5 1553B通訊板卡PCB布局示意圖
模擬端口輸出采用差分信號(hào),信號(hào)線四圍不能覆銅、不能走普通信號(hào)線,以防止引入干擾信號(hào)。差分信號(hào)線盡量保持等長(zhǎng),并適度加粗信號(hào)線。模擬端到隔離變壓器及接入總線端口之間的距離盡量縮短,有助于確保來(lái)自電路板的噪聲不被拾取到差分線路上,并且不會(huì)從電路板的互聯(lián)電纜泄露而造成對(duì)電路板EMI的干擾。
隔離變壓器放置在離收發(fā)引腳盡可能近的位置,且與接插件DB62的距離越短越好,由此不僅能夠限制發(fā)送時(shí)模擬信號(hào)通道上的電壓降,還能最小化電路板上其他信號(hào)的干擾。此外隔離變壓器下方不要走線,避免形成渦流。
BU61580電路與FPGA的軟件接口包括17個(gè)內(nèi)部常規(guī)寄存器和8個(gè)額外的測(cè)試寄存器[8],以及4k×16位的內(nèi)部存儲(chǔ)器空間。軟件設(shè)計(jì)的重點(diǎn)是對(duì)寄存器的配置和內(nèi)部存儲(chǔ)空間的初始化。
本板卡可實(shí)現(xiàn)BC和RT兩種模式的功能,其中BC模式包括BC to RT,RT to RT和帶數(shù)據(jù)的模式碼功能,RT模式包括帶中斷的發(fā)送和單消息的發(fā)送、接收和廣播功能。
設(shè)計(jì)采用了Nios II 9.0 IDE的開發(fā)環(huán)境,分別建立起應(yīng)用程序和系統(tǒng)庫(kù),與PC機(jī)的信息交互采用串口的形式。系統(tǒng)上電后,通過(guò)串口打印相關(guān)信息,選擇系統(tǒng)運(yùn)行模式。寄存器和RAM中的數(shù)據(jù)信息均可顯示在PC端界面窗口中。系統(tǒng)軟件設(shè)計(jì)流程圖如圖6。
圖6 系統(tǒng)軟件設(shè)計(jì)流程圖
以下為寄存器和RAM初始化的部分程序:
寄存器初始化:
IOWR(REGISTER_BASE,0x3,0x0001);//軟件復(fù)位
IOWR(REGISTER_BASE,0x7,0x8000);//使能增強(qiáng)模式
IOWR(REGISTER_BASE,0x0,0x0018);//使能BC控制字中斷和幀結(jié)束中斷
IOWR(REGISTER_BASE,0x1,0x0130);//設(shè)置幀自動(dòng)重發(fā)、使能消息間隔時(shí)間定時(shí)器和重試
IOWR(REGISTER_BASE,0x2,0x0400);//禁止256字邊界,設(shè)置脈沖中斷請(qǐng)求
IOWR(REGISTER_BASE,0x8,0x1068);//使能擴(kuò)展的BC控制字,若消息出錯(cuò)且無(wú)數(shù)據(jù)響應(yīng)也有效,忙且無(wú)數(shù)據(jù)響應(yīng)也有效
IOWR(REGISTER_BASE,0x9,0x0E00);//使能擴(kuò)展的過(guò)零點(diǎn),設(shè)置BC響應(yīng)超時(shí)
IOWR(REGISTER_BASE,0x5,0x0000);//初始化時(shí)標(biāo)寄存器為0
IOWR(REGISTER_BASE,0x3,0x0002);//初始化消息幀
RAM初始化:
IOWR(MEMORY_BASE,0x0100,0x0000);//初始化區(qū)域A棧指針
IOWR(MEMORY_BASE,0x0101,0xFFFC);//初始化區(qū)域A消息計(jì)數(shù)
IOWR(MEMORY_BASE,0x0000,0x0000);//初始化消息1的塊狀態(tài)字
IOWR(MEMORY_BASE,0x0001,0x0000);//初始化消息1的時(shí)標(biāo)字
IOWR(MEMORY_BASE,0x0002,0x0320);//初始化消息1的消息時(shí)間間隔字為800μs
IOWR(MEMORY_BASE,0x0003,0x0108);//初始化消息1的消息塊地址
為了驗(yàn)證板卡設(shè)計(jì)的合理性,以BC模式為例進(jìn)行試驗(yàn)。將通信板卡設(shè)置為BC模式,仿真測(cè)試終端設(shè)置為RT模式,使用A通道,通過(guò)轉(zhuǎn)換線纜分別連接在耦合器上,耦合器兩端匹配終端電阻。實(shí)驗(yàn)平臺(tái)搭建圖如圖7所示。
圖7 實(shí)驗(yàn)平臺(tái)實(shí)物圖
通訊板卡通過(guò)串口與PC機(jī)相連,在PC機(jī)端運(yùn)行串口調(diào)試助手,仿真測(cè)試終端通過(guò)PCI接口與主機(jī)相連,由主機(jī)運(yùn)行應(yīng)用程序。串口設(shè)置為9600波特率,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)。串口調(diào)試界面如圖8所示。
圖8 串口調(diào)試界面
通訊板卡發(fā)送一條格式為BC->RT的消息,該消息發(fā)送給終端1,子地址1,由1111、2222、3333、4444四個(gè)數(shù)據(jù)字構(gòu)成。打開串口,系統(tǒng)上電,串口打印模式選擇信息,通過(guò)發(fā)送“a”選擇通信板為BC模式。應(yīng)用程序數(shù)據(jù)采集界面如圖9。通過(guò)主機(jī)應(yīng)用程序觀察RT端接收的消息,識(shí)別出指令字和接收終端地址,且接收到的數(shù)據(jù)與發(fā)送數(shù)據(jù)一致,表明測(cè)試結(jié)果準(zhǔn)確無(wú)誤。
圖9 應(yīng)用程序數(shù)據(jù)采集界面
本1553B通訊板卡采用基于Nios II的嵌入式軟核CPU,運(yùn)用Altra提供的IP核,通過(guò)SOPC技術(shù)快速搭建系統(tǒng),完成總線的信息交互,減小了開發(fā)難度,縮短了開發(fā)周期,且設(shè)計(jì)中所有模塊都是以軟核的形式在FPGA中實(shí)現(xiàn)的,具有較強(qiáng)的可移植性。本系統(tǒng)作為靈活的開發(fā)平臺(tái),可在其基礎(chǔ)上擴(kuò)展PCI、CPCI/PXI、PCIE、以太網(wǎng)等PC接口,具有很強(qiáng)的工程應(yīng)用價(jià)值。