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

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

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

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

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

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

本文設計的接口卡,基于FPGA可編程邏輯,利用VHDL語言實現(xiàn)GJB289A總線和ARINC429總線信號的處理;用IP核完成與PCI9054的本地總線連接,可接入PXI總線;使用雙端口RAM完成了兩種總線發(fā)送與接收的數(shù)據(jù)緩沖.解決了目前一些裝置總線檢測需求,具有配置靈活、易于擴展等特點.
[1]潘松,黃繼業(yè).EDA技術與VHDL[M].北京:清華大學出版社,2005:201-225,317-352.
[2]支超有.機載數(shù)據(jù)總線技術及其應用[M].北京:國防工業(yè)出版社,2009:152-315.
[3]孔德仁,何云峰,狄長安.儀表總線技術及應用[M].北京:國防工業(yè)出版社,2005:61-108,250-275.
[4]楊曉慧,楊旭.FPGA系統(tǒng)設計與實踐[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]張超,許化龍.導彈控制系統(tǒng)數(shù)據(jù)采集系統(tǒng)設計[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]張海林,楊勇.自動化系統(tǒng)中的串行通信協(xié)議的設計[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.