龐 帥,范惠林,竹武林
(空軍航空大學航空軍械工程系,吉林長春 130022)
隨著PXI總線在一些測試系統中的應用,需要一種能夠完成GJB289A和ARINC429總線通訊的PXI接口卡.在對發射裝置測試的過程中,僅需要模擬GJB289A和ARINC429總線信號的發送與接收即可,不需要完成復雜的GJB289A和ARINC429總線通信協議,即依靠硬件電路產生相對等效的總線信號,便可完成對發射裝置武器總線信號的測試[1].因此,本文提出利用FPGA實現模擬GJB289A和ARINC429總線信號接收發送的PXI接口卡,可將采集到的總線信號通過PXI總線送到主控機中分析和顯示.
GJB289A武器總線和ARINC429武器總線標準差異較大.GJB289A總線字由20 b構成,電氣特性規定為雙向、變壓器耦合、雙絞屏蔽線傳輸,傳輸速率為1 Mb/s;ARINC429總線字由32 b構成,電氣特性規定由單向、差分耦合、雙絞屏蔽線傳輸,每條線上的信號電壓范圍為 -5 V~+5 V之間,高速工作狀態的位速率為100 Kb/s,低速工作狀態的位速率在12.0 Kb/s~14.5 Kb/s范圍內.
GJB289A總線用的是雙相曼徹斯特II型碼(Manchester II).這種碼在每個碼位中點處存在一個跳變,信號“1”是由1到0的負跳,而“0”信號是由0到1的正跳.所謂雙相,是雙極性,本身包含定時的信息,它能與變壓器耦合協調,形式如圖1所示.

圖1 曼徹斯特 Ⅱ型碼格式Fig.1 The format of ManchesterⅡ

圖2 ARINC429總線格式Fig.2 The format of ARINC429 bus
ARINC429總線信號的基本信息單元是一個32 b的數據字,有BNR數據、BCD數據、離散數據、維護數據和AIM數據5個應用組.ARINC429總線規定了使用該總線的航空電子設備的信息流向和基本數據字的格式.它采用單向傳輸、雙極性歸零制的三態碼調制方式,即調制信號由“高”、“零”和“低”狀態組成的三電平狀態調制[2].例如,二進制“1011001”總線傳輸格式如圖2所示.ARINC429總線接收端接收的是差動電壓,A為A端相對地的電壓,B為B端相對地的電壓,A-B為A端相對于B端的電壓.
接口卡接收由主控機經PXI總線傳輸過來的GJB289A格式的消息,通過GJB289A發送模塊將每16 b字轉換為串行數據并由標準接口按照曼徹斯特碼發送到發射裝置;ARINC-429接收模塊接收由發射裝置轉換后的滿足ARINC-429總線格式的10 V差動電壓信號,轉化為5 V內部TTL邏輯電平,采樣后,把串行數據轉換為并行數據,經PXI總線接口,送入主控機同先前傳輸的GJB289A格式的消息進行對比,即可完成對發射裝置總線通訊模塊的測試.

圖3 接口卡硬件設計原理圖Fig.3 Design of interface board
測試卡主要由 FPGA主模塊、ARINC429總線接口電路、GJB289A總線接口電路及PXI接口電路組成.FPGA主模塊完成總線數據的讀寫與通訊,429總線接口電路和GJB289A總線接口電路完成ARINC-429總線和GJB289A總線電平轉換和總線標準,PXI接口電路完成測試模塊與主控機之間的通信,雙口RAM完成總線數據通訊時的數據緩沖.接口卡硬件設計原理如圖 3所示.主要由PXI接口器件PCI9054、FPGA(Altera Cyclone系列的EPIC12Q240C8)、PCI接口配置芯片E2PROM(93CS56L),雙口RAM(IDT70V28L)和電平轉換器件HI1567/HI-8588組成.
因為PXI總線與PCI總線兼容,可通過PCI9054完成PXI總線通訊.主控機經過“Host-PCI”橋與PCI總線連接,這個橋提供了一個低延遲的訪問通路,使主控機能夠訪問PCI設備,PCI主設備也能訪問內存.該橋還提供了數據緩沖功能,使微處理器與PCI總線上的設備并行工作而不必等待[3].
PCI9054是PXI總線的目標,因此,選擇直接從模式作為PCI9054的數據傳輸模式.本地總線工作方式有M、C、J 3種,鑒于C模式的本地總線操作時序最為簡單、邏輯控制相對容易、開發難度相對較低、且能夠完全滿足設計的需要,所以工作方式選擇C模式,此時,將PCI9054的模式選擇引腳mode0、model接地.PXI接口電路的設計主要包括3部分:PCI端(PCI Bus)、本地總線端(Local Bus)和E2 PROM端.如圖4所示.

圖4 PXI接口設計圖Fig.4 Design of PXI interface
PCI9054的PCI總線接口主要完成數據傳輸地址和控制指令的譯碼,只要將芯片的PCI端信號線與PXI總線的相應信號線相互連接即可,要嚴格按照PXI總線的規范連接.
本地總線接口用來實現本地總線的數據傳輸以及標識本地端工作狀態.本地總線接口端連接FPGA,FPGA負責整個系統的邏輯控制以及PCI主控設備的讀寫信號與局部總線設備的讀寫信號電平邏輯匹配.
鑒于輸出GJB289A總線與輸入ARINC429總線的傳輸速率相差較大,設計中使用了雙端口RAM IDT 70V 28L作為FPGA和PCI9054之間的共享存儲器,DT70V 28L是IDT公司的高速64 K*16b雙端口靜態RAM,最大存取時間為15 ns.它具有兩組數據總線、地址總線和控制總線,兩組總線可以同時訪問不同的存儲單元,這樣,既能提高通信的實時效率,又能使通信具有很好的抗干擾性.使用雙口RAM時,輸入輸出兩端同時訪問同一存儲單元,就會發生沖突,造成寫錯誤或者讀錯誤,即爭用問題,使用時,根據設計需要,將雙端口RAM分成了讀、寫兩塊.其中,前32KB用來存儲待發送的GJB289A總線數據,后32KB用來存儲接收的ARINC429總線數據.
通過PCI總線訪問存儲器,所有目標設備都要檢查AD[1:0],或者提供所要求的突發傳輸周期,或者執行一次目標設備斷開操作.對于所有支持突發傳輸的設備都應該能夠實現線性突發傳輸周期,但不一定要求支持Cache行操作.在存儲器地址空間,要用AD[31:02]譯碼得到一個雙字邊界對齊的起始地址,在地址遞增方式下,每個數據周期過后地址加4(雙字節為4 B),直到傳輸過程結束.
以發送通道為例,其地址范圍0x00000-0x07FFF,在發送通道內,又分為64個小部分,地址空間0x00000-0x001FF,0x00200-0x003FF,……,0x07E00-0x07FFF.當0x00000-0x001FF寫滿時,PCI9054將產生 TXFULL信號,由 FPGA讀取其中數據,同時,發送數據可以存入下個地址空間0x00200-0x003FF,從而達到數據的無間隙傳輸.接收通道的工作過程類似.
根據以上設計分析,將PCI9054地址線的第0~15位與IDT70V28L連接,其中,第11位~15位用于對具體某一通道所劃分的發送或接收空間塊進行選擇,第0~10位用于塊內空間的定位.PCI9054數據位的第0~15位與IDT70V28L的I/O端口連接,用來傳輸總線通訊數據,高16位直接與FPGA連接,不用來傳輸具體數據.根據需要,PCI9054在使用時,用一個串行配置寄存器E2PROM 93CS56L在開機時對其初始化,以使接口電路具有特定的功能.配置寄存器標識地址映射關系以及PXI端和本地端工作.這部分的連接信號有EESK、EECS、EEDI/O等,連接時,應將EEDI/O接3.9k電阻上拉.
FPGA主要對雙口RAM和協議芯片的各個控制信號進行I/O控制.FPGA的硬件程序采用狀態機的方式,通過對地址信號譯碼,轉移至對應的狀態,同時有效相關的控制信號,使各個芯片處于有效的狀態.FPGA程序內部的計時器保證了各個芯片控制信號的時序條件,使數據能夠被可靠處理.
FPGA的I/O資源豐富,而且通過編程可以靈活配置輸入與輸出[4].FPGA的程序為并發執行的,利于實現較為復雜的狀態機和時序控制.FPGA依靠IP核完成通道控制邏輯,GJAB289A總線標準和ARINC429總線標準數據通信.它從雙口RAM中取出主控機給出的數字信號,并按照GJAB289A總線標準輸出;接收經過轉換成數字信號的ARINC429總線標準數據,并將其通過雙口RAM送入PCI9054后經PXI總線送入主控機.
由上述分析可知,FPGA要完成以下工作:①實現雙通道數據傳輸;②提供訪問雙端口RAM的控制信號,地址信號和數據新號;③提供與PCI9054連接的接口及同PCI9054通訊的控制信號等;④向PCI9054提供數據滿信號(RAMRX1FUILL)和字計數器(COUNT[7……0];⑤接收PCI9054傳來的數據滿信號(TXFULL)、字計數器(PE[7……0])和RAM地址塊選擇信號(PA[15:11]);⑥實現GJB289A格式數據的發送和ARINC429格式數據的接收[5].

圖6 GJB289A發送模塊結構框圖Fig.6 The framework of GJB289A bus
1)ARINC429接收模塊
接收模塊的主要作用是通過串/并轉換將串行數據轉換為32 b并行數據,并對收到的數據自動實行差錯控制[6-8].對于字間隔、位間隔出錯等錯誤能進行自動檢測,如果沒有錯誤,則將數據分兩次送至DSP的16 b數據總線上,以供讀取,ARINC429接收模塊結構框圖如圖5所示.
2)GJB289A發送模塊
GJB289A發送模塊將處理器發出的并行二進制數據數據進行曼徹斯特碼編碼,在加上同步頭及奇偶位等,組成符合GJB289A標準的總線信息幀后發送至總線[9].選用16 MHz時鐘為其工作時鐘.發送器主要由控制狀態機、FIFO緩存、命令字同步頭產生器、數據字同步頭產生器、移位寄存器、奇偶校驗器、曼徹斯特編碼器組成,見圖6.
根據ARINC429總線電平定義,接口器件選用HOLT公司的HI-8588為ARINC429總線接口芯片.接收通道選用HI-8588可將兩路雙極歸零制電平信號轉換成兩路TTL信號.
GJB289A接口器件由電平轉換器和耦合變壓器組成,采用HOLT公司的HI-1567將互補的COMS/TTL電平轉為適合GJB289A總線傳輸的雙極性差分曼徹斯特碼,由于HI-1567的工作電壓是5V,在與IO電壓非5V的FPGA互聯時需要串接330 Ω的電阻.接口卡通過短截線與GJB289A主總線相連.在短截線和收發器間需要設置隔離變壓器以提供總線驅動電壓,防止終端因短路引起損壞和接口卡產生的噪聲影響GJB289A主總線上的信號.本文變壓器采用HOLT公司的PMDB2725EX,該變壓器提供兩種變壓比,即1∶2.5和l∶1.79,分別適應直接耦合和變壓器耦合兩種方式.需要注意的是無論采用哪種方式,都必須在GJB289A總線和變壓器之問串聯隔離電阻對總線進行短路保護.
FPGA的軟件開發采用VHDL語言編寫[10].軟件主要由Nios II處理器、ARINC429總線處理模塊、GJB289A總線處理模塊組成.
NiosII處理器是Altera公司開發的基于SOPC技術的32 b RISC處理器內核,采用改進的哈佛結構.處理器帶有分離的數據和程序存儲器控制,具備高速緩存、中斷處理功能.ARINC429總線接收模塊、GJB289A總線發送模塊組成負責GJB289A總線的發送和ARINC429總線的接收,可通過VHDL語言來開發.由于篇幅有限,以下僅介紹GJB289A總線發送的部分軟件設計方法.
GJB289A發送模塊中狀態機是其核心,它由4個狀態組成:S0:空閑狀態,根據狀態轉換標志信號可以轉到狀態S1或S2;S1:命令字同步頭產生狀態,它可以轉換到S3;S2:數據字同步頭產生狀態,它可以轉換到S3;S3:移位寄存狀態,它可以轉換到S0.
編碼器需要完成生成奇校驗碼、曼徹斯特編碼、添加同步頭、串行發送等功能.通常用FPGA實現編碼器的設計方法是:在編碼器內部設置數據字計數器,由編碼器直接讀取內存區待發送數據,編碼器每次完成一條消息的編碼,這種方法存在命令字解析無法復用和內存操作部分重復設計的問題.
本文設計了通用性較好的曼徹斯特編碼器,把發送數據字計數和對內存的尋址與讀寫功能放在位流控制模塊中,通過狀態機的轉移來實現,編碼器每次只完成個碼字的編碼任務.這樣就使編碼器可用于BC發送消息或RT回送消息.
編碼器時鐘頻率為2MHz,由時鐘管理模塊對FPGA時鐘分頻得到,位流處理模塊輸入信息字類型tx_csw =1或tx_ dw =1,和16 b信息數據tx_dword .編碼器先計算奇校驗碼parity=^(tx_dword),合成新系列后序列生成反相字,完成曼徹斯特編碼;再根據信息字類型為序列添加同步頭,txcsw=1時為111000,tx_ dw =1時為000111;最后有編碼計數器en_ ent控制,在2 MHz時鐘下按位串行發送到總線上,保證了總線傳輸速率是1 Mb/s.
曼徹斯特碼生成本文采取的方法是將移位寄存器移出的串行數據與 1 M 的時鐘相異或,程序代碼如下:

本文設計的接口卡,基于FPGA可編程邏輯,利用VHDL語言實現GJB289A總線和ARINC429總線信號的處理;用IP核完成與PCI9054的本地總線連接,可接入PXI總線;使用雙端口RAM完成了兩種總線發送與接收的數據緩沖.解決了目前一些裝置總線檢測需求,具有配置靈活、易于擴展等特點.
[1]潘松,黃繼業.EDA技術與VHDL[M].北京:清華大學出版社,2005:201-225,317-352.
[2]支超有.機載數據總線技術及其應用[M].北京:國防工業出版社,2009:152-315.
[3]孔德仁,何云峰,狄長安.儀表總線技術及應用[M].北京:國防工業出版社,2005:61-108,250-275.
[4]楊曉慧,楊旭.FPGA系統設計與實踐[M].北京:人民郵電出版社,2010:92-105,168-200.
[5]劉銳,趙加鳳,付平.基于FPGA的PXI-1553B模塊設計[J].電子測量技術,2009,32(11):99-101.
Liu Rui,Zhao Jiafeng,Fu Pin.Design of PXI-1553B module based on FPGA[J].Electronic Measurement Technology,2009,32(11):99-101.(in Chinese)
[6]張超,許化龍.導彈控制系統數據采集系統設計[J].計算機測量與控制,2009,17(10):2015-2017.
Zhang Chao,Xu Hualong.Design of data acquisition system based on PC/104Bus for missile control system[J].Computer Measurement&Control,2009,17(10):2015-2017.(in Chinese)
[7]劉書智,李琳娜.Visual C++實踐與提高[M].北京:中國鐵道出版社,2009:41-53,131-140.
[8]張海林,楊勇.自動化系統中的串行通信協議的設計[J].計算機工程與應用,2003,31:159-160,218.
Zhang Hailin,Yang Yong.The design of serial communication protocol in automatic control system[J].Computer Engineering and Applications,2003,31:159-160,218.(in Chinese)
[9]劉銳,趙加鳳,付平.基于FPGA的PXI-1553B模塊設計[J].電子測量技術,2009,32(11):99-101.
Liu Rui,Zhao Jiafeng,Fu Pin.Design of PXI-1553B module based on FPGA[J].Electronic Measurement Technology,2009,32(11):99-101.(in Chinese)
[10]張洪潤,張亞凡.FPGA/CPLD應用設計200例[M].北京:北京航空航天大學出版社,2009:61-108.