龐 帥,范惠林,竹武林
(空軍航空大學(xué)航空軍械工程系,吉林長(zhǎng)春 130022)
隨著PXI總線在一些測(cè)試系統(tǒng)中的應(yīng)用,需要一種能夠完成GJB289A和ARINC429總線通訊的PXI接口卡.在對(duì)發(fā)射裝置測(cè)試的過(guò)程中,僅需要模擬GJB289A和ARINC429總線信號(hào)的發(fā)送與接收即可,不需要完成復(fù)雜的GJB289A和ARINC429總線通信協(xié)議,即依靠硬件電路產(chǎn)生相對(duì)等效的總線信號(hào),便可完成對(duì)發(fā)射裝置武器總線信號(hào)的測(cè)試[1].因此,本文提出利用FPGA實(shí)現(xiàn)模擬GJB289A和ARINC429總線信號(hào)接收發(fā)送的PXI接口卡,可將采集到的總線信號(hào)通過(guò)PXI總線送到主控機(jī)中分析和顯示.
GJB289A武器總線和ARINC429武器總線標(biāo)準(zhǔn)差異較大.GJB289A總線字由20 b構(gòu)成,電氣特性規(guī)定為雙向、變壓器耦合、雙絞屏蔽線傳輸,傳輸速率為1 Mb/s;ARINC429總線字由32 b構(gòu)成,電氣特性規(guī)定由單向、差分耦合、雙絞屏蔽線傳輸,每條線上的信號(hào)電壓范圍為 -5 V~+5 V之間,高速工作狀態(tài)的位速率為100 Kb/s,低速工作狀態(tài)的位速率在12.0 Kb/s~14.5 Kb/s范圍內(nèi).
GJB289A總線用的是雙相曼徹斯特II型碼(Manchester II).這種碼在每個(gè)碼位中點(diǎn)處存在一個(gè)跳變,信號(hào)“1”是由1到0的負(fù)跳,而“0”信號(hào)是由0到1的正跳.所謂雙相,是雙極性,本身包含定時(shí)的信息,它能與變壓器耦合協(xié)調(diào),形式如圖1所示.
圖1 曼徹斯特 Ⅱ型碼格式Fig.1 The format of ManchesterⅡ
圖2 ARINC429總線格式Fig.2 The format of ARINC429 bus
ARINC429總線信號(hào)的基本信息單元是一個(gè)32 b的數(shù)據(jù)字,有BNR數(shù)據(jù)、BCD數(shù)據(jù)、離散數(shù)據(jù)、維護(hù)數(shù)據(jù)和AIM數(shù)據(jù)5個(gè)應(yīng)用組.ARINC429總線規(guī)定了使用該總線的航空電子設(shè)備的信息流向和基本數(shù)據(jù)字的格式.它采用單向傳輸、雙極性歸零制的三態(tài)碼調(diào)制方式,即調(diào)制信號(hào)由“高”、“零”和“低”狀態(tài)組成的三電平狀態(tài)調(diào)制[2].例如,二進(jìn)制“1011001”總線傳輸格式如圖2所示.ARINC429總線接收端接收的是差動(dòng)電壓,A為A端相對(duì)地的電壓,B為B端相對(duì)地的電壓,A-B為A端相對(duì)于B端的電壓.
接口卡接收由主控機(jī)經(jīng)PXI總線傳輸過(guò)來(lái)的GJB289A格式的消息,通過(guò)GJB289A發(fā)送模塊將每16 b字轉(zhuǎn)換為串行數(shù)據(jù)并由標(biāo)準(zhǔn)接口按照曼徹斯特碼發(fā)送到發(fā)射裝置;ARINC-429接收模塊接收由發(fā)射裝置轉(zhuǎn)換后的滿足ARINC-429總線格式的10 V差動(dòng)電壓信號(hào),轉(zhuǎn)化為5 V內(nèi)部TTL邏輯電平,采樣后,把串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),經(jīng)PXI總線接口,送入主控機(jī)同先前傳輸?shù)腉JB289A格式的消息進(jìn)行對(duì)比,即可完成對(duì)發(fā)射裝置總線通訊模塊的測(cè)試.
圖3 接口卡硬件設(shè)計(jì)原理圖Fig.3 Design of interface board
測(cè)試卡主要由 FPGA主模塊、ARINC429總線接口電路、GJB289A總線接口電路及PXI接口電路組成.FPGA主模塊完成總線數(shù)據(jù)的讀寫與通訊,429總線接口電路和GJB289A總線接口電路完成ARINC-429總線和GJB289A總線電平轉(zhuǎn)換和總線標(biāo)準(zhǔn),PXI接口電路完成測(cè)試模塊與主控機(jī)之間的通信,雙口RAM完成總線數(shù)據(jù)通訊時(shí)的數(shù)據(jù)緩沖.接口卡硬件設(shè)計(jì)原理如圖 3所示.主要由PXI接口器件PCI9054、FPGA(Altera Cyclone系列的EPIC12Q240C8)、PCI接口配置芯片E2PROM(93CS56L),雙口RAM(IDT70V28L)和電平轉(zhuǎn)換器件HI1567/HI-8588組成.
因?yàn)镻XI總線與PCI總線兼容,可通過(guò)PCI9054完成PXI總線通訊.主控機(jī)經(jīng)過(guò)“Host-PCI”橋與PCI總線連接,這個(gè)橋提供了一個(gè)低延遲的訪問(wèn)通路,使主控機(jī)能夠訪問(wèn)PCI設(shè)備,PCI主設(shè)備也能訪問(wèn)內(nèi)存.該橋還提供了數(shù)據(jù)緩沖功能,使微處理器與PCI總線上的設(shè)備并行工作而不必等待[3].
PCI9054是PXI總線的目標(biāo),因此,選擇直接從模式作為PCI9054的數(shù)據(jù)傳輸模式.本地總線工作方式有M、C、J 3種,鑒于C模式的本地總線操作時(shí)序最為簡(jiǎn)單、邏輯控制相對(duì)容易、開(kāi)發(fā)難度相對(duì)較低、且能夠完全滿足設(shè)計(jì)的需要,所以工作方式選擇C模式,此時(shí),將PCI9054的模式選擇引腳mode0、model接地.PXI接口電路的設(shè)計(jì)主要包括3部分:PCI端(PCI Bus)、本地總線端(Local Bus)和E2 PROM端.如圖4所示.
圖4 PXI接口設(shè)計(jì)圖Fig.4 Design of PXI interface
PCI9054的PCI總線接口主要完成數(shù)據(jù)傳輸?shù)刂泛涂刂浦噶畹淖g碼,只要將芯片的PCI端信號(hào)線與PXI總線的相應(yīng)信號(hào)線相互連接即可,要嚴(yán)格按照PXI總線的規(guī)范連接.
本地總線接口用來(lái)實(shí)現(xiàn)本地總線的數(shù)據(jù)傳輸以及標(biāo)識(shí)本地端工作狀態(tài).本地總線接口端連接FPGA,FPGA負(fù)責(zé)整個(gè)系統(tǒng)的邏輯控制以及PCI主控設(shè)備的讀寫信號(hào)與局部總線設(shè)備的讀寫信號(hào)電平邏輯匹配.
鑒于輸出GJB289A總線與輸入ARINC429總線的傳輸速率相差較大,設(shè)計(jì)中使用了雙端口RAM IDT 70V 28L作為FPGA和PCI9054之間的共享存儲(chǔ)器,DT70V 28L是IDT公司的高速64 K*16b雙端口靜態(tài)RAM,最大存取時(shí)間為15 ns.它具有兩組數(shù)據(jù)總線、地址總線和控制總線,兩組總線可以同時(shí)訪問(wèn)不同的存儲(chǔ)單元,這樣,既能提高通信的實(shí)時(shí)效率,又能使通信具有很好的抗干擾性.使用雙口RAM時(shí),輸入輸出兩端同時(shí)訪問(wèn)同一存儲(chǔ)單元,就會(huì)發(fā)生沖突,造成寫錯(cuò)誤或者讀錯(cuò)誤,即爭(zhēng)用問(wèn)題,使用時(shí),根據(jù)設(shè)計(jì)需要,將雙端口RAM分成了讀、寫兩塊.其中,前32KB用來(lái)存儲(chǔ)待發(fā)送的GJB289A總線數(shù)據(jù),后32KB用來(lái)存儲(chǔ)接收的ARINC429總線數(shù)據(jù).
通過(guò)PCI總線訪問(wèn)存儲(chǔ)器,所有目標(biāo)設(shè)備都要檢查AD[1:0],或者提供所要求的突發(fā)傳輸周期,或者執(zhí)行一次目標(biāo)設(shè)備斷開(kāi)操作.對(duì)于所有支持突發(fā)傳輸?shù)脑O(shè)備都應(yīng)該能夠?qū)崿F(xiàn)線性突發(fā)傳輸周期,但不一定要求支持Cache行操作.在存儲(chǔ)器地址空間,要用AD[31:02]譯碼得到一個(gè)雙字邊界對(duì)齊的起始地址,在地址遞增方式下,每個(gè)數(shù)據(jù)周期過(guò)后地址加4(雙字節(jié)為4 B),直到傳輸過(guò)程結(jié)束.
以發(fā)送通道為例,其地址范圍0x00000-0x07FFF,在發(fā)送通道內(nèi),又分為64個(gè)小部分,地址空間0x00000-0x001FF,0x00200-0x003FF,……,0x07E00-0x07FFF.當(dāng)0x00000-0x001FF寫滿時(shí),PCI9054將產(chǎn)生 TXFULL信號(hào),由 FPGA讀取其中數(shù)據(jù),同時(shí),發(fā)送數(shù)據(jù)可以存入下個(gè)地址空間0x00200-0x003FF,從而達(dá)到數(shù)據(jù)的無(wú)間隙傳輸.接收通道的工作過(guò)程類似.
根據(jù)以上設(shè)計(jì)分析,將PCI9054地址線的第0~15位與IDT70V28L連接,其中,第11位~15位用于對(duì)具體某一通道所劃分的發(fā)送或接收空間塊進(jìn)行選擇,第0~10位用于塊內(nèi)空間的定位.PCI9054數(shù)據(jù)位的第0~15位與IDT70V28L的I/O端口連接,用來(lái)傳輸總線通訊數(shù)據(jù),高16位直接與FPGA連接,不用來(lái)傳輸具體數(shù)據(jù).根據(jù)需要,PCI9054在使用時(shí),用一個(gè)串行配置寄存器E2PROM 93CS56L在開(kāi)機(jī)時(shí)對(duì)其初始化,以使接口電路具有特定的功能.配置寄存器標(biāo)識(shí)地址映射關(guān)系以及PXI端和本地端工作.這部分的連接信號(hào)有EESK、EECS、EEDI/O等,連接時(shí),應(yīng)將EEDI/O接3.9k電阻上拉.
FPGA主要對(duì)雙口RAM和協(xié)議芯片的各個(gè)控制信號(hào)進(jìn)行I/O控制.FPGA的硬件程序采用狀態(tài)機(jī)的方式,通過(guò)對(duì)地址信號(hào)譯碼,轉(zhuǎn)移至對(duì)應(yīng)的狀態(tài),同時(shí)有效相關(guān)的控制信號(hào),使各個(gè)芯片處于有效的狀態(tài).FPGA程序內(nèi)部的計(jì)時(shí)器保證了各個(gè)芯片控制信號(hào)的時(shí)序條件,使數(shù)據(jù)能夠被可靠處理.
FPGA的I/O資源豐富,而且通過(guò)編程可以靈活配置輸入與輸出[4].FPGA的程序?yàn)椴l(fā)執(zhí)行的,利于實(shí)現(xiàn)較為復(fù)雜的狀態(tài)機(jī)和時(shí)序控制.FPGA依靠IP核完成通道控制邏輯,GJAB289A總線標(biāo)準(zhǔn)和ARINC429總線標(biāo)準(zhǔn)數(shù)據(jù)通信.它從雙口RAM中取出主控機(jī)給出的數(shù)字信號(hào),并按照GJAB289A總線標(biāo)準(zhǔn)輸出;接收經(jīng)過(guò)轉(zhuǎn)換成數(shù)字信號(hào)的ARINC429總線標(biāo)準(zhǔn)數(shù)據(jù),并將其通過(guò)雙口RAM送入PCI9054后經(jīng)PXI總線送入主控機(jī).
由上述分析可知,FPGA要完成以下工作:①實(shí)現(xiàn)雙通道數(shù)據(jù)傳輸;②提供訪問(wèn)雙端口RAM的控制信號(hào),地址信號(hào)和數(shù)據(jù)新號(hào);③提供與PCI9054連接的接口及同PCI9054通訊的控制信號(hào)等;④向PCI9054提供數(shù)據(jù)滿信號(hào)(RAMRX1FUILL)和字計(jì)數(shù)器(COUNT[7……0];⑤接收PCI9054傳來(lái)的數(shù)據(jù)滿信號(hào)(TXFULL)、字計(jì)數(shù)器(PE[7……0])和RAM地址塊選擇信號(hào)(PA[15:11]);⑥實(shí)現(xiàn)GJB289A格式數(shù)據(jù)的發(fā)送和ARINC429格式數(shù)據(jù)的接收[5].
圖6 GJB289A發(fā)送模塊結(jié)構(gòu)框圖Fig.6 The framework of GJB289A bus
1)ARINC429接收模塊
接收模塊的主要作用是通過(guò)串/并轉(zhuǎn)換將串行數(shù)據(jù)轉(zhuǎn)換為32 b并行數(shù)據(jù),并對(duì)收到的數(shù)據(jù)自動(dòng)實(shí)行差錯(cuò)控制[6-8].對(duì)于字間隔、位間隔出錯(cuò)等錯(cuò)誤能進(jìn)行自動(dòng)檢測(cè),如果沒(méi)有錯(cuò)誤,則將數(shù)據(jù)分兩次送至DSP的16 b數(shù)據(jù)總線上,以供讀取,ARINC429接收模塊結(jié)構(gòu)框圖如圖5所示.
2)GJB289A發(fā)送模塊
GJB289A發(fā)送模塊將處理器發(fā)出的并行二進(jìn)制數(shù)據(jù)數(shù)據(jù)進(jìn)行曼徹斯特碼編碼,在加上同步頭及奇偶位等,組成符合GJB289A標(biāo)準(zhǔn)的總線信息幀后發(fā)送至總線[9].選用16 MHz時(shí)鐘為其工作時(shí)鐘.發(fā)送器主要由控制狀態(tài)機(jī)、FIFO緩存、命令字同步頭產(chǎn)生器、數(shù)據(jù)字同步頭產(chǎn)生器、移位寄存器、奇偶校驗(yàn)器、曼徹斯特編碼器組成,見(jiàn)圖6.
根據(jù)ARINC429總線電平定義,接口器件選用HOLT公司的HI-8588為ARINC429總線接口芯片.接收通道選用HI-8588可將兩路雙極歸零制電平信號(hào)轉(zhuǎn)換成兩路TTL信號(hào).
GJB289A接口器件由電平轉(zhuǎn)換器和耦合變壓器組成,采用HOLT公司的HI-1567將互補(bǔ)的COMS/TTL電平轉(zhuǎn)為適合GJB289A總線傳輸?shù)碾p極性差分曼徹斯特碼,由于HI-1567的工作電壓是5V,在與IO電壓非5V的FPGA互聯(lián)時(shí)需要串接330 Ω的電阻.接口卡通過(guò)短截線與GJB289A主總線相連.在短截線和收發(fā)器間需要設(shè)置隔離變壓器以提供總線驅(qū)動(dòng)電壓,防止終端因短路引起損壞和接口卡產(chǎn)生的噪聲影響GJB289A主總線上的信號(hào).本文變壓器采用HOLT公司的PMDB2725EX,該變壓器提供兩種變壓比,即1∶2.5和l∶1.79,分別適應(yīng)直接耦合和變壓器耦合兩種方式.需要注意的是無(wú)論采用哪種方式,都必須在GJB289A總線和變壓器之問(wèn)串聯(lián)隔離電阻對(duì)總線進(jìn)行短路保護(hù).
FPGA的軟件開(kāi)發(fā)采用VHDL語(yǔ)言編寫[10].軟件主要由Nios II處理器、ARINC429總線處理模塊、GJB289A總線處理模塊組成.
NiosII處理器是Altera公司開(kāi)發(fā)的基于SOPC技術(shù)的32 b RISC處理器內(nèi)核,采用改進(jìn)的哈佛結(jié)構(gòu).處理器帶有分離的數(shù)據(jù)和程序存儲(chǔ)器控制,具備高速緩存、中斷處理功能.ARINC429總線接收模塊、GJB289A總線發(fā)送模塊組成負(fù)責(zé)GJB289A總線的發(fā)送和ARINC429總線的接收,可通過(guò)VHDL語(yǔ)言來(lái)開(kāi)發(fā).由于篇幅有限,以下僅介紹GJB289A總線發(fā)送的部分軟件設(shè)計(jì)方法.
GJB289A發(fā)送模塊中狀態(tài)機(jī)是其核心,它由4個(gè)狀態(tài)組成:S0:空閑狀態(tài),根據(jù)狀態(tài)轉(zhuǎn)換標(biāo)志信號(hào)可以轉(zhuǎn)到狀態(tài)S1或S2;S1:命令字同步頭產(chǎn)生狀態(tài),它可以轉(zhuǎn)換到S3;S2:數(shù)據(jù)字同步頭產(chǎn)生狀態(tài),它可以轉(zhuǎn)換到S3;S3:移位寄存狀態(tài),它可以轉(zhuǎn)換到S0.
編碼器需要完成生成奇校驗(yàn)碼、曼徹斯特編碼、添加同步頭、串行發(fā)送等功能.通常用FPGA實(shí)現(xiàn)編碼器的設(shè)計(jì)方法是:在編碼器內(nèi)部設(shè)置數(shù)據(jù)字計(jì)數(shù)器,由編碼器直接讀取內(nèi)存區(qū)待發(fā)送數(shù)據(jù),編碼器每次完成一條消息的編碼,這種方法存在命令字解析無(wú)法復(fù)用和內(nèi)存操作部分重復(fù)設(shè)計(jì)的問(wèn)題.
本文設(shè)計(jì)了通用性較好的曼徹斯特編碼器,把發(fā)送數(shù)據(jù)字計(jì)數(shù)和對(duì)內(nèi)存的尋址與讀寫功能放在位流控制模塊中,通過(guò)狀態(tài)機(jī)的轉(zhuǎn)移來(lái)實(shí)現(xiàn),編碼器每次只完成個(gè)碼字的編碼任務(wù).這樣就使編碼器可用于BC發(fā)送消息或RT回送消息.
編碼器時(shí)鐘頻率為2MHz,由時(shí)鐘管理模塊對(duì)FPGA時(shí)鐘分頻得到,位流處理模塊輸入信息字類型tx_csw =1或tx_ dw =1,和16 b信息數(shù)據(jù)tx_dword .編碼器先計(jì)算奇校驗(yàn)碼parity=^(tx_dword),合成新系列后序列生成反相字,完成曼徹斯特編碼;再根據(jù)信息字類型為序列添加同步頭,txcsw=1時(shí)為111000,tx_ dw =1時(shí)為000111;最后有編碼計(jì)數(shù)器en_ ent控制,在2 MHz時(shí)鐘下按位串行發(fā)送到總線上,保證了總線傳輸速率是1 Mb/s.
曼徹斯特碼生成本文采取的方法是將移位寄存器移出的串行數(shù)據(jù)與 1 M 的時(shí)鐘相異或,程序代碼如下:
本文設(shè)計(jì)的接口卡,基于FPGA可編程邏輯,利用VHDL語(yǔ)言實(shí)現(xiàn)GJB289A總線和ARINC429總線信號(hào)的處理;用IP核完成與PCI9054的本地總線連接,可接入PXI總線;使用雙端口RAM完成了兩種總線發(fā)送與接收的數(shù)據(jù)緩沖.解決了目前一些裝置總線檢測(cè)需求,具有配置靈活、易于擴(kuò)展等特點(diǎn).
[1]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社,2005:201-225,317-352.
[2]支超有.機(jī)載數(shù)據(jù)總線技術(shù)及其應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2009:152-315.
[3]孔德仁,何云峰,狄長(zhǎng)安.儀表總線技術(shù)及應(yīng)用[M].北京:國(guó)防工業(yè)出版社,2005:61-108,250-275.
[4]楊曉慧,楊旭.FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:人民郵電出版社,2010:92-105,168-200.
[5]劉銳,趙加鳳,付平.基于FPGA的PXI-1553B模塊設(shè)計(jì)[J].電子測(cè)量技術(shù),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]張超,許化龍.導(dǎo)彈控制系統(tǒng)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,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++實(shí)踐與提高[M].北京:中國(guó)鐵道出版社,2009:41-53,131-140.
[8]張海林,楊勇.自動(dòng)化系統(tǒng)中的串行通信協(xié)議的設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,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模塊設(shè)計(jì)[J].電子測(cè)量技術(shù),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]張洪潤(rùn),張亞凡.FPGA/CPLD應(yīng)用設(shè)計(jì)200例[M].北京:北京航空航天大學(xué)出版社,2009:61-108.
測(cè)試技術(shù)學(xué)報(bào)2012年1期