孫 驁,秦旭軍
(中國電子科技集團公司第四十七研究所,遼寧 沈陽 110000)
目前,有大量的機載設(shè)備在使用ARINC429 總線進行數(shù)據(jù)交互,為提高具有ARINC429 接口設(shè)備的測試效率,降低開發(fā)成本,本文基于FPGA 強大的并行處理能力、豐富的I/O 接口資源以及半定制化的設(shè)計理念,利用NIOS II 軟核處理器,結(jié)合FPGA 的可編程邏輯端,設(shè)計了一款多通道ARINC429 總線測試系統(tǒng)。系統(tǒng)通過PCI接口與計算機通信,完成被測設(shè)備與計算機的數(shù)據(jù)交互,實現(xiàn)ARINC429 總線接口的自動化測試。
由于PCI 總線以及ARINC429 總線協(xié)議相對復雜,本設(shè)計采用了成熟的總線接口芯片[1?2],降低了系統(tǒng)的開發(fā)難度,其中PCI 接口選用了PCI9054 芯片,ARINC429 接口選用了HI-3584、HI-3182 芯片。即使PCI 總線的設(shè)計采用了接口芯片,但PCI9054 芯片的功能還是非常繁多,對此本文介紹了設(shè)計中PCI9054 芯片選用的模式、數(shù)據(jù)位寬等基本參數(shù)信息,此外重點對EEPROM 的使用方法、讀/寫操作的時序分析以及調(diào)試過程中的注意事項進行了詳細闡述,希望能夠達到抽絲剝繭的目的。
本設(shè)計中系統(tǒng)有4 路ARINC429 發(fā)送通道以及8 路接收通道,計算機可對板卡的各個數(shù)據(jù)通道進行參數(shù)配置、狀態(tài)讀取、使能收/發(fā)數(shù)據(jù)等操作。采用可編程邏輯端(以下簡稱邏輯端)與NIOS Ⅱ處理器相結(jié)合的開發(fā)方式[3],邏輯端主要負責PCI、ARINC429 等外設(shè)芯片的驅(qū)動層邏輯,NIOS Ⅱ軟核處理器主要負責完成系統(tǒng)業(yè)務層功能,硬件功能框圖如圖1 所示。
圖1 硬件功能框圖
上位機收發(fā)ARINC429 數(shù)據(jù)時,SRAM 作為上位機和板卡之間的數(shù)據(jù)緩沖區(qū),通過PCI 總線實現(xiàn)上、下位機的數(shù)據(jù)交換[4],F(xiàn)PGA 將數(shù)據(jù)存儲在SDRAM 中,F(xiàn)PGA中的軟核處理器按照上位機的指令完成ARINC429 數(shù)據(jù)收發(fā)、狀態(tài)維護、參數(shù)配置等功能[5]。
板卡硬件資源主要由FPGA、PCI 接口芯片、電源、SRAM、SDRAM、ARINC429 控制器及其驅(qū)動器組成[6?7]。為適應不同的應用場景,本設(shè)計采用SDRAM 作為板卡的ARINC429 數(shù)據(jù)存儲區(qū)并分成12 塊,分別對應4 路發(fā)送及8 路接收通道。
由于系統(tǒng)功能復雜并且互連所需的I/O 數(shù)量多,因此選用的FPGA 型號是Altera 公司的EP4CE30F23C7N,其內(nèi)部有28 848 個邏輯單元,可用的GPIO 最多可達328個,滿足設(shè)計要求。
設(shè)計時在Quartus Ⅱ軟件中創(chuàng)建工程,并用硬件描述語言實現(xiàn)外設(shè)芯片的邏輯功能,使其滿足芯片的時序要求。然后使用集成工具Qsys 搭建基于NIOS Ⅱ處理器以及相關(guān)功能IP 核的SOPC 系統(tǒng),本設(shè)計所用的IP 核有PIO、中斷、定時器、SRAM 及SDRAM 控制器等。在Quar‐tus Ⅱ軟件中創(chuàng)建頂層文件,將邏輯端的模塊與NIOS Ⅱ處理器的端口在頂層文件進行例化實現(xiàn)互連[8]。FPGA 內(nèi)部邏輯主要由PCI9054 邏輯塊、SRAM 邏輯塊、HI-3584 邏輯塊以及NIOS Ⅱ處理器組成,框圖如圖2 所示。
圖2 FPGA 邏輯框圖
PCI 接口的傳輸速度較快,并且本設(shè)計采用32 位數(shù)據(jù)位寬,而板卡上的SDRAM 讀寫速度較慢,數(shù)據(jù)位寬是16 位,兩者傳輸速度相差很大,系統(tǒng)無法實時地將PCI總線上的數(shù)據(jù)寫入SDRAM 中,因此選用一片SRAM 解決讀寫速度相差過大的問題[9]。SRAM 讀寫速度快,當上位機向板卡寫入數(shù)據(jù)時,F(xiàn)PGA 先將PCI 總線上的數(shù)據(jù)暫存在SRAM 中,在上位機發(fā)送數(shù)據(jù)完成后,F(xiàn)PGA 再將數(shù)據(jù)存入SDRAM,讀取數(shù)據(jù)反之亦然。
考慮到上位機收發(fā)數(shù)據(jù)與ARINC429 收發(fā)數(shù)據(jù)都需要使用SDRAM,涉及的仲裁、決策、狀態(tài)判斷比較復雜,用硬件描述語言來實現(xiàn)相對困難,因此設(shè)計中使用NIOS Ⅱ處理器來完成SDRAM 相關(guān)業(yè)務。此外,考慮到PCI 總線讀寫速度較快,設(shè)計中采用邏輯端控制PCI接口芯片與SRAM 的數(shù)據(jù)交互。NIOS Ⅱ處理器與ARINC429 的各個收發(fā)通道之間用邏輯端分別設(shè)計了FIFO,它將自動控制接口芯片收/發(fā)數(shù)據(jù)。對NIOS Ⅱ處理器而言收/發(fā)ARINC429 數(shù)據(jù)只需要訪問相應FIFO 即可,減小了處理器的使用率。
PCI 接口開發(fā)常見的有兩種:一種是采用CPLD 或FPGA 來實現(xiàn),采用這種方法時需要購買相應的IP 核,用戶可采用比較簡單的邏輯實現(xiàn)PCI 總線的通信,但成本較高。另一種是采用PCI 接口芯片,例如PLX 公司的PCI9054、PCI9052[10],這種方法可大幅度降低設(shè)計難度,開發(fā)者無需投入大量時間研究總線協(xié)議的詳細內(nèi)容,接口芯片在系統(tǒng)中充當“橋”芯片的作用,可縮短系統(tǒng)的開發(fā)周期,同時成本相對也低很多。
本設(shè)計采用了第二種方法,采用了PLX 公司的PCI9054 作為PCI 接口芯片[11],該芯片具有成熟度高、成本低的特點。PCI9054 芯片按功能可分為3 類接口:PCI總線接口、本地總線接口以及EEPROM 接口。PCI 總線接口用于完成PCI 協(xié)議相關(guān)的功能,與計算機的PCI 總線互連,當PCI9054 配置好后PCI 總線上的操作由該芯片來完成。本地總線接口負責PCI9054 與FPGA 之間的數(shù)據(jù)交互。EEPROM 接口負責讀取外部EEPROM 的配置信息,這些配置信息是PCI9054 的寄存器參數(shù),系統(tǒng)上電后PCI9054 通過EEPROM 進行參數(shù)配置,設(shè)計中選用的型號是93LC56B。
當EEPROM 為空時需要特別注意,否則可能會出現(xiàn)操作系統(tǒng)無法啟動或者啟動后無法找到板卡的問題。EEPROM 的燒錄有多種方式,本設(shè)計使用PLX 公司提供PLXMon 軟件進行燒錄。首次燒寫時,需要將93LC56B的DI、DO 引腳下拉,同時PCI9054 的TEST 引腳也下拉,這樣操作系統(tǒng)上電后會按照PCI9054 內(nèi)部的默認參數(shù)進行配置。操作系統(tǒng)正常啟動后DI、DO 引腳上拉,然后通過PLXMon 軟件進行燒錄即可。EEPROM 正確燒錄后,DI、DO 引腳保持上拉即可。
本設(shè)計中PCI9054 采用C 模式,本地總線采用32 位數(shù)據(jù)總線,單次讀/寫、DMA 或突發(fā)傳輸模式。在PCI 總線側(cè),PCI9054 會根據(jù)寄存器的配置自動響應總線信號,而本地總線的控制需要在FPGA 上實現(xiàn)。本地總線主要涉及的信號有:LHOLD、LHOLDA、ADS#、BLAST#、LW/R#、LA[31:2]、LD[31:0]、READY#,其中對于FPGA 來說關(guān)鍵的輸出信號是LHOLDA 以及READY#。
單次寫操作時序圖如圖3 所示,首先由PCI9054 使能LHOLD 信號來申請使用本地總線,F(xiàn)PGA 拉高LHOLDA 信號來做應答。然后PCI9054 驅(qū)動LW/R#信號,指示本次操作是讀還是寫。在ADS#信號出現(xiàn)下降沿時,表示地址總線LA[31:2]已經(jīng)有效可用。在ADS#信號出現(xiàn)上升沿時,由PCI9054 驅(qū)動的數(shù)據(jù)總線LD[31:0]上出現(xiàn)有效數(shù)據(jù),此時READY#需要開始輸出低電平脈沖作為響應信號。在數(shù)據(jù)總線輸出最后一個數(shù)據(jù)時,PCI9054 驅(qū)動BLAST#輸出低電平脈沖。FPGA 檢測到BLAST#有上升沿時,驅(qū)動READY#由低電平變成高電平,以此表示本次的寫操作完成。
圖3 單次寫操作時序圖
單次讀操作時序圖如圖4 所示,與寫操作類似,但需要注意的是LW/R#信號是低電平,并且數(shù)據(jù)總線需要由FPGA 來驅(qū)動。
圖4 單次讀操作時序圖
不論寫操作還是讀操作,地址總線都是由PCI9054驅(qū)動,這是因為本設(shè)計中PCI 總線通信的發(fā)起者是計算機,在讀、寫數(shù)據(jù)時計算機作為主機給出地址。
此外,突發(fā)模式以及DMA 模式的時序與此類似,重點是LHOLDA、READY#信號以及對數(shù)據(jù)總線的控制。經(jīng)過多次調(diào)試發(fā)現(xiàn)如果LHOLDA、READY#信號響應不及時會導致計算機死機。
ARINC429 總線協(xié)議是由美國航空電子工程委員會制定的一種機載總線規(guī)范,該總線具有性能穩(wěn)定、架構(gòu)簡單以及可靠性高等優(yōu)點,已廣泛應用于民用、軍用飛機的航電系統(tǒng)中。
本設(shè)計中ARINC429 接口的控制器采用HOLT 公司的HI-3584 芯片,驅(qū)動器采用HI-3182 芯片。HI-3584 具有兩路接收和一路發(fā)送通道,發(fā)送端需要驅(qū)動器才能連接在ARINC429 總線上,每個通道各自有獨立的FIFO。FPGA 與HI-3584 的數(shù)據(jù)總線是16 位的,通過2 次數(shù)據(jù)交互將16 位 數(shù)據(jù)變?yōu)?2 位ARINC429 數(shù)據(jù)[12]。在FPGA 側(cè)來看,收/發(fā)ARINC429 數(shù)據(jù)相當于操作常規(guī)FIFO,使用起來非常方便。
HI-3182 芯片的供電需要+5 V、±15 V,它將HI-3584發(fā)送端的邏輯電平轉(zhuǎn)換為ARINC 429 電平。在使用時注意它的調(diào)速電容,總線工作在100 KB/s 時,推薦選用75 pF;工作在12.5~14 KB/s 時,推薦選用500 pF。
發(fā)送數(shù)據(jù)時,F(xiàn)PGA 驅(qū)動PL1n 輸出低電平脈沖,HI-3584 接收第一個16 位數(shù)據(jù),再驅(qū)動PL2n 輸出低電平脈沖,HI-3584 接收到第二個16 位數(shù)據(jù)后TX/R 會變?yōu)榈碗娖剑硎綟IFO 已經(jīng)不為空。FPGA 檢測到TX/R 為低電平后拉高ENTX,HI-3584 會將FIFO 中的數(shù)據(jù)逐個發(fā)出。FPGA 拉低ENTX 后發(fā)送數(shù)據(jù)結(jié)束,寫入FIFO 以及發(fā)送數(shù)據(jù)的時序圖分別如圖5 及圖6 所示。
圖5 寫入FIFO 時序圖
圖6 發(fā)送數(shù)據(jù)時序圖
接收數(shù)據(jù)時,F(xiàn)PGA 檢測到D/Rn 為低電平,先拉低SEL 驅(qū)動ENn 輸出低電平脈沖,接收第一個16 位數(shù)據(jù)。然后拉高SEL 再次驅(qū)動ENn 輸出低電平脈沖,接收第二個16 位數(shù)據(jù),時序圖如圖7 所示。
圖7 接收數(shù)據(jù)時序圖
在SignalTapⅡ邏輯分析儀下觀測到的PCI9054 以及HI-3584 的時序分別如圖8~圖11 所示,可見設(shè)計的時序與芯片手冊相符。
圖8 PCI9054 寫操作實測時序圖
圖9 PCI9054 讀操作實測時序圖
圖10 HI-3584 寫入FIFO 實測時序圖
圖11 HI-3584 接收數(shù)據(jù)實測時序圖
ARINC429 總線在12.5 KB/s、100 KB/s 下的實測波形如圖12、圖13 所示。由圖中可見信號的上升沿、下降沿具備單調(diào)性,無明顯過沖、振鈴等嚴重失真現(xiàn)象,信號的保持時間較長,滿足信號完整性方面的要求。
圖12 12.5 KB/s 下的實測波形圖
圖13 100 KB/s 下的實測波形圖
為驗證系統(tǒng)的功能及實用性,本設(shè)計對系統(tǒng)進行了整體測試,上位機界面如圖14 所示。測試前需要在界面中加載配置文件以及數(shù)據(jù)文件。配置文件包括系統(tǒng)的主要參數(shù)配置,包括中斷方式、緩沖區(qū)大小、發(fā)送/接收時間間隔、總線速率等。數(shù)據(jù)文件包含了ARINC429總線的測試數(shù)據(jù)。
測試時,板卡的ARINC429 總線接口與被測設(shè)備的發(fā)送、接收接口互聯(lián)。上位機通過PCI 總線將測試數(shù)據(jù)傳送給板卡,板卡再將數(shù)據(jù)傳送給被測設(shè)備。被測設(shè)備接收數(shù)據(jù)后,將數(shù)據(jù)通過板卡傳回上位機,以此實現(xiàn)回環(huán)測試。上位機將發(fā)送數(shù)據(jù)與接收數(shù)據(jù)進行對比,全部相同則判定相應的通道為合格。
本設(shè)計對ARINC429 總線的4 路發(fā)送、8 路接收通道分別在12.5 KB/s、100 KB/s 下做了1 000 次的通信測試,均合格。
本設(shè)計研究了PCI 總線以及ARINC429 總線的軟硬件設(shè)計,通過FPGA 作為主控芯片,PCI9054、HI-3584 作為接口芯片,從工程應用角度出發(fā),實現(xiàn)了計算機和ARINC429 總線設(shè)備的高效、多通道通信,并可配置成多種模式,適用于大多數(shù)ARINC429 接口設(shè)備的測試。本設(shè)計對PCI 總線及ARINC429 總線的互聯(lián)、測試具有指導性意義,提高了ARINC429 接口設(shè)備的測試效率,降低了系統(tǒng)開發(fā)難度。
經(jīng)驗證測試,系統(tǒng)在不同的ARINC429 總線速率下都可以穩(wěn)定、可靠工作,并具有成本低、高可靠性、開發(fā)周期短等特點,具備實際應用意義。