魏祎 許永輝
摘 要: ARINC429在航空航天等領(lǐng)域應(yīng)用廣泛,RS 232是常用的計(jì)算機(jī)與外部設(shè)備接口。作為某軍事領(lǐng)域電子系統(tǒng)測(cè)試平臺(tái)的一部分,設(shè)計(jì)了基于PXI總線的ARINC429和RS 232的專用通訊模塊。以DSP和FPGA聯(lián)合作為控制器,實(shí)現(xiàn)通訊模塊的PXI接口,基于專用的協(xié)議芯片DEI1016實(shí)現(xiàn)ARINC429通訊,由FPGA為協(xié)議芯片提供時(shí)序和數(shù)據(jù)的緩存FIFO,并在FPGA中集成了RS 232協(xié)議編解碼。測(cè)試表明,該通訊模塊能實(shí)時(shí)可靠靈活地收發(fā)數(shù)據(jù),實(shí)現(xiàn)對(duì)被測(cè)電子系統(tǒng)多路ARINC429和RS 232總線的測(cè)試。
關(guān)鍵詞: PXI; ARINC429; RS 232; 通訊模塊
中圖分類號(hào): TN919?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)17?0086?04
Abstract: Bus ARINC429 is widely used in the fields of aviation and aerospace. RS 232 is a commonly?used interface between a computer and external devices. A specific communication module for ARINC429 and RS 232 based on PXI bus was designed as a part of a military?purpose electric equipment automatic test system. The DSP and FPGA are combined as the controller to realize PXI bus interface of communication module. ARINC429 bus communication is realized on the basis of specific protocol chip DEI1016. The time sequence and data buffer FIFO is provided for the protocol chip by FPGA. The RS 232 protocol CODEC is integrated into FPGA. The test results indicate that the communication module can receive and transmit data reliably and flexibly. The testing of multi?channel ARINC429 and RS 232 buses of the electronic system under test was achieved.
Keywords: PXI; ARINC429; RS 232; communication module
0 引 言
ARINC429總線協(xié)議由美國(guó)航空電子工程委員會(huì)(Airline Engineering Committee)于1977年提出,目前是民用及軍用飛行設(shè)備上的常用總線[1]。ARINC429總線為串行差分總線,單向傳輸,兩個(gè)設(shè)備間需要雙向傳輸時(shí)則需要兩個(gè)通道獨(dú)立傳輸,有高速和低速兩種傳輸方式,高速信號(hào)為100 Kb/s,低速信號(hào)為12~14.5 Kb/s,具有可靠性高、結(jié)構(gòu)簡(jiǎn)單、抗干擾性強(qiáng)等特點(diǎn)。
對(duì)于實(shí)現(xiàn)微處理器對(duì)外的ARINC429接口,主要有兩種方式,一種方法采用FPGA芯片內(nèi)部實(shí)現(xiàn)協(xié)議編解碼,實(shí)現(xiàn)串/并轉(zhuǎn)換[1],開(kāi)發(fā)成本低,但難度較高,開(kāi)發(fā)周期長(zhǎng),且可靠性相對(duì)較低,可能出現(xiàn)未知問(wèn)題;另一種方法采用專用的ARINC429協(xié)議芯片DEI1016,可以在串行的差分信號(hào)和16位的并行信號(hào)之間進(jìn)行轉(zhuǎn)換,并自動(dòng)進(jìn)行奇偶校驗(yàn),技術(shù)成熟,只需設(shè)計(jì)者提供合適的邏輯和時(shí)序進(jìn)行控制,能實(shí)現(xiàn)協(xié)議的可靠傳輸。
某個(gè)與軍事領(lǐng)域合作的電子信號(hào)測(cè)試平臺(tái)基于PXI總線,現(xiàn)要求提供其中一個(gè)專用模塊,包含多路ARINC429收發(fā)通道,兩路RS 232收發(fā)通道進(jìn)行測(cè)試。本文將對(duì)這一模塊的主要技術(shù)進(jìn)行闡述。國(guó)外已陸續(xù)由PXI產(chǎn)品推出,研制此基于PXI總線的ARINC429通訊模塊具有重要的實(shí)際應(yīng)用意義[2]。
模塊采用TI公司的TMS320DM642作為主處理器,ARINC429總線通訊基于協(xié)議芯片DEI1016,由Altera公司的Cyclone Ⅲ系列FPGA芯片為其提供時(shí)序和數(shù)據(jù)緩存FIFO。軟件方面,基于LabWindows/CVI編寫上位機(jī)應(yīng)用程序,可通過(guò)上位機(jī)接收到的數(shù)據(jù)分析被測(cè)設(shè)備是否能正常工作。
1 總體方案設(shè)計(jì)
采用TMS320DM642 DSP作為控制芯片,通過(guò)PXI接口,實(shí)現(xiàn)與上位機(jī)的通信,64 MB RAM可以緩存數(shù)據(jù),外接Cyclone Ⅲ FPGA和4路ARINC429接收通道,2路發(fā)送通道,采用兩個(gè)DEI1016實(shí)現(xiàn),由FPGA給出DEI1016需要的邏輯和時(shí)序,并對(duì)每一路接收通道給出256×16 b的緩存FIFO??傮w方案框圖如圖1所示。
FPGA的輸出信號(hào)為3.3 V TTL電平,DEI1016除了兩路接收通道允許±10 V的差分電平,其余數(shù)據(jù)總線和控制信號(hào)也為TTL電平,可以與FPGA直接互聯(lián)。
DEI1016的輸入輸出包括以下幾類信號(hào):時(shí)鐘信號(hào)CLK,需要由外部提供1 MHz時(shí)鐘信號(hào),兩路ARINC429差分信號(hào)接收通道,一路發(fā)送通道,16位的并行數(shù)據(jù)總線,復(fù)位信號(hào)MR,輸入控制字信號(hào)LDCW,發(fā)送數(shù)據(jù)控制信號(hào)TXR,ENTX,LD1,LD2,接收數(shù)據(jù)控制信號(hào)DR,OE,SEL等,DEI1016與FPGA的連接如圖3所示。
需要發(fā)送的并行格式數(shù)據(jù)由DEI1016轉(zhuǎn)化為符合ARINC429協(xié)議要求的串行信號(hào)后由發(fā)送通道輸出,為TTL電平,不能滿足429協(xié)議電平要求的+10 V差分信號(hào)要求,需要經(jīng)過(guò)電平轉(zhuǎn)換才能發(fā)送到總線上。BD429是專用的ARINC429總線驅(qū)動(dòng)芯片,也可用于ARINC571,ARINC575,RS 422等總線[4],支持TTL和CMOS輸入,可通過(guò)編程設(shè)置輸出差分信號(hào)電壓范圍,支持高速和低速ARINC429通信,常與DEI1016配合用于ARINC429接口。
FPGA中的ARINC429固件程序包括片選、時(shí)鐘、寫控制字、發(fā)送、接收等部分。
DEI1016在FPGA的時(shí)序控制下進(jìn)行傳輸,與FPGA在同一時(shí)鐘域內(nèi),因此1 MHz時(shí)鐘信號(hào)通過(guò)FPGA內(nèi)部PLL分頻50 MHz時(shí)鐘產(chǎn)生并提供。
DEI1016的正常工作之前需要先低電平復(fù)位,然后向控制寄存器內(nèi)輸入控制字,控制字一共16位,包括設(shè)置ARINC429字長(zhǎng)為25位或32位、奇偶校驗(yàn)位、是否啟動(dòng)自檢模式、傳輸速率(高速、低速)等??刂谱职l(fā)送到數(shù)據(jù)總線上,在由FPGA給出的LDCW信號(hào)上升沿時(shí)鎖存到DEI1016中。例如,設(shè)置DEI1016以高速傳輸(不使用自檢模式),32位字長(zhǎng),則控制字為0x0020。
將符合協(xié)議編碼要求的串行數(shù)據(jù)通過(guò)發(fā)送通道發(fā)送出去,需要FPGA提供如下的時(shí)序:當(dāng)DEI1016空閑,可以發(fā)送數(shù)據(jù)時(shí),則輸出TXR為高電平,讀取該信號(hào)若不為高證明可以傳輸,使能發(fā)送模塊開(kāi)始工作,在計(jì)數(shù)器計(jì)數(shù)控制下在特定時(shí)間輸出LD1為低電平,數(shù)據(jù)總線上發(fā)送高位16位數(shù)據(jù),輸出LD2為低電平,發(fā)送低位16位數(shù)據(jù),并始終輸出ENTX為低電平。
ARINC429發(fā)送一個(gè)數(shù)據(jù)有32位,分為高位16位和低位16位。其中1~8位為地址標(biāo)號(hào)位,主要用于確定字中的數(shù)據(jù)類型;9~10位為信息源/目標(biāo)識(shí)別位(SDI),表明物理量從何而來(lái);11~28位為數(shù)據(jù)位;29位為符號(hào)位,用于表示方位;30~31位為SSM位,定義硬件設(shè)備條件、操作方式、數(shù)據(jù)內(nèi)容的有效性;第32位為校驗(yàn)位[5]。對(duì)于控制芯片發(fā)送給DEI1016的并行數(shù)據(jù),協(xié)議芯片會(huì)進(jìn)行如下轉(zhuǎn)換,如圖4所示[4]。
接收模塊包括接收控制邏輯和FIFO。當(dāng)總線上收到串行數(shù)據(jù)時(shí),DEI1016輸出DR信號(hào)為低電平,通知控制器可以進(jìn)行接收數(shù)據(jù)。接收控制邏輯的設(shè)計(jì)與發(fā)送邏輯類似,在計(jì)數(shù)器計(jì)數(shù)控制下依次輸出波形OE和SEL。FIFO由Quartus的MegaWizard工具自動(dòng)生成。
2.2 RS 232硬件設(shè)計(jì)和編解碼邏輯
本方案選擇在FPGA內(nèi)部實(shí)現(xiàn)RS 232通信數(shù)據(jù)的串/并轉(zhuǎn)換。RS 232是一種異步串行總線,單端通訊,適合于傳輸速率在0~20 000 b/s范圍內(nèi)的通信[6],常用于計(jì)算機(jī)接口與近端外部終端設(shè)備的連接。一般使用DB?25或DB?9連接器連接總線和終端設(shè)備,本方案中使用DB9連接器。協(xié)議電氣特性規(guī)定-3~-15 V表示邏輯1, +3~+15 V表示邏輯0。采用MAX232完成TTL電平到標(biāo)準(zhǔn)電平之間的轉(zhuǎn)換,用光耦HCL2631和HCL263L隔離不同電源和參考地的FPGA和MAX232[7]。
FPGA內(nèi)部的RS 232固件程序包括波特率設(shè)置、發(fā)送、接收部分。
程序的頂層包含控制寄存器等,對(duì)DSP發(fā)送的命令和數(shù)據(jù)進(jìn)行鎖存,并根據(jù)選擇通道啟動(dòng)底層模塊。發(fā)送或接收之前先進(jìn)行復(fù)位,清空所有FIFO,寄存器內(nèi)為初始值;然后對(duì)波特率、控制字等進(jìn)行設(shè)置,波特率可設(shè)置為2 400 b/s,4 800 b/s,9 600 b/s等,默認(rèn)為9 600 b/s。根據(jù)波特率分頻11.059 2 MHz時(shí)鐘生成發(fā)送時(shí)鐘。
發(fā)送編碼部分包括緩存FIFO和串/并轉(zhuǎn)換邏輯,將DSP發(fā)送的并行數(shù)據(jù)自動(dòng)存入FIFO,當(dāng)FIFO不為空且總線空閑時(shí),讀出其中的數(shù)據(jù),根據(jù)設(shè)置的波特率生成發(fā)送時(shí)鐘s_clk,在s_clk的觸發(fā)下將8位的并行數(shù)據(jù)每一位依次發(fā)送到單端的總線上,轉(zhuǎn)為串行數(shù)據(jù),并根據(jù)需要在最后一位加上奇偶校驗(yàn)。
接收功能模塊與發(fā)送編碼部分的原理類似,總線上收到串行數(shù)據(jù)時(shí),由狀態(tài)機(jī)將串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),自動(dòng)存入FIFO,當(dāng)DSP空閑時(shí)將FIFO中的數(shù)據(jù)讀出。4 測(cè)試結(jié)果
利用上位機(jī)應(yīng)用程序驗(yàn)證發(fā)送數(shù)據(jù)與接收數(shù)據(jù)是否一致。對(duì)4個(gè)ARINC429通道、多種波特率下的2個(gè)RS 232通道進(jìn)行單幀數(shù)據(jù)收發(fā)測(cè)試,發(fā)送與接收的數(shù)據(jù)一致;對(duì)所有通道進(jìn)行大量數(shù)據(jù)的連續(xù)收發(fā)測(cè)試,所有結(jié)果均正確返回,長(zhǎng)時(shí)間工作沒(méi)有出現(xiàn)誤碼,證明該模塊硬件電路設(shè)計(jì)沒(méi)有問(wèn)題,F(xiàn)PGA內(nèi)編寫的邏輯正確,以及所編寫的DSP程序、儀器驅(qū)動(dòng)函數(shù)、上位機(jī)應(yīng)用程序均能穩(wěn)定可靠地工作。
5 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于PXI總線,以DSP和FPGA為控制核心,基于DEI1016的ARINC429通訊模塊,并包含RS 232通訊。設(shè)計(jì)了硬件電路,并根據(jù)DEI1016的時(shí)序要求編寫了控制邏輯,根據(jù)RS 232的協(xié)議要求在FPGA內(nèi)集成了編解碼邏輯,編寫了DSP程序和基于LabWindows/CVI的上位機(jī)應(yīng)用程序,完成整個(gè)通訊模塊的研制。經(jīng)過(guò)測(cè)試表明,該設(shè)計(jì)方案正確可行,發(fā)送和接收數(shù)據(jù)穩(wěn)定可靠,在實(shí)際應(yīng)用中,能保證長(zhǎng)時(shí)間無(wú)差錯(cuò)運(yùn)行,具有實(shí)際的工程應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 黃敬禮,錢進(jìn).基于DM642的實(shí)時(shí)多協(xié)議轉(zhuǎn)換器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(22):1?3.
[2] 宋慧娟.PXI Express外置控制器研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[3] 張華強(qiáng),趙剡,陳雨.基于FPGA 的ARINC429 通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2010,43(12):4?5.
[4] 廖治宇.通用ARINC429總線分析測(cè)試儀的軟件設(shè)計(jì)[D].成都:電子科技大學(xué),2013.
[5] Devices Engineering Inc. DEI1016/ DEI1016A/ DEI1016B ARINC429 transceiver [R]. [S.l.]: Devices Engineering Inc, 2004.
[6] 王景忠,王俊芳,于立佳.一種實(shí)現(xiàn)RS 232接口一對(duì)多通信的方法[J].無(wú)線電工程,2012,42(12):2?4.
[7] 龔榮華.RS 232接口芯片的IC設(shè)計(jì)[D].大連:大連理工大學(xué),2008.
[8] 許永輝,楊京禮,林連雷.TMS320DM642 DSP原理與應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,2012.
[9] 劉森,許永輝,孫闖.基于LAN的高集成度數(shù)據(jù)采集設(shè)備研制[J].現(xiàn)代電子技術(shù),2013,36(16):115?116.
[10] 李世良,許永輝.PCI總線智能GJB289A仿真卡設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(20):114?115.
需要發(fā)送的并行格式數(shù)據(jù)由DEI1016轉(zhuǎn)化為符合ARINC429協(xié)議要求的串行信號(hào)后由發(fā)送通道輸出,為TTL電平,不能滿足429協(xié)議電平要求的+10 V差分信號(hào)要求,需要經(jīng)過(guò)電平轉(zhuǎn)換才能發(fā)送到總線上。BD429是專用的ARINC429總線驅(qū)動(dòng)芯片,也可用于ARINC571,ARINC575,RS 422等總線[4],支持TTL和CMOS輸入,可通過(guò)編程設(shè)置輸出差分信號(hào)電壓范圍,支持高速和低速ARINC429通信,常與DEI1016配合用于ARINC429接口。
FPGA中的ARINC429固件程序包括片選、時(shí)鐘、寫控制字、發(fā)送、接收等部分。
DEI1016在FPGA的時(shí)序控制下進(jìn)行傳輸,與FPGA在同一時(shí)鐘域內(nèi),因此1 MHz時(shí)鐘信號(hào)通過(guò)FPGA內(nèi)部PLL分頻50 MHz時(shí)鐘產(chǎn)生并提供。
DEI1016的正常工作之前需要先低電平復(fù)位,然后向控制寄存器內(nèi)輸入控制字,控制字一共16位,包括設(shè)置ARINC429字長(zhǎng)為25位或32位、奇偶校驗(yàn)位、是否啟動(dòng)自檢模式、傳輸速率(高速、低速)等??刂谱职l(fā)送到數(shù)據(jù)總線上,在由FPGA給出的LDCW信號(hào)上升沿時(shí)鎖存到DEI1016中。例如,設(shè)置DEI1016以高速傳輸(不使用自檢模式),32位字長(zhǎng),則控制字為0x0020。
將符合協(xié)議編碼要求的串行數(shù)據(jù)通過(guò)發(fā)送通道發(fā)送出去,需要FPGA提供如下的時(shí)序:當(dāng)DEI1016空閑,可以發(fā)送數(shù)據(jù)時(shí),則輸出TXR為高電平,讀取該信號(hào)若不為高證明可以傳輸,使能發(fā)送模塊開(kāi)始工作,在計(jì)數(shù)器計(jì)數(shù)控制下在特定時(shí)間輸出LD1為低電平,數(shù)據(jù)總線上發(fā)送高位16位數(shù)據(jù),輸出LD2為低電平,發(fā)送低位16位數(shù)據(jù),并始終輸出ENTX為低電平。
ARINC429發(fā)送一個(gè)數(shù)據(jù)有32位,分為高位16位和低位16位。其中1~8位為地址標(biāo)號(hào)位,主要用于確定字中的數(shù)據(jù)類型;9~10位為信息源/目標(biāo)識(shí)別位(SDI),表明物理量從何而來(lái);11~28位為數(shù)據(jù)位;29位為符號(hào)位,用于表示方位;30~31位為SSM位,定義硬件設(shè)備條件、操作方式、數(shù)據(jù)內(nèi)容的有效性;第32位為校驗(yàn)位[5]。對(duì)于控制芯片發(fā)送給DEI1016的并行數(shù)據(jù),協(xié)議芯片會(huì)進(jìn)行如下轉(zhuǎn)換,如圖4所示[4]。
接收模塊包括接收控制邏輯和FIFO。當(dāng)總線上收到串行數(shù)據(jù)時(shí),DEI1016輸出DR信號(hào)為低電平,通知控制器可以進(jìn)行接收數(shù)據(jù)。接收控制邏輯的設(shè)計(jì)與發(fā)送邏輯類似,在計(jì)數(shù)器計(jì)數(shù)控制下依次輸出波形OE和SEL。FIFO由Quartus的MegaWizard工具自動(dòng)生成。
2.2 RS 232硬件設(shè)計(jì)和編解碼邏輯
本方案選擇在FPGA內(nèi)部實(shí)現(xiàn)RS 232通信數(shù)據(jù)的串/并轉(zhuǎn)換。RS 232是一種異步串行總線,單端通訊,適合于傳輸速率在0~20 000 b/s范圍內(nèi)的通信[6],常用于計(jì)算機(jī)接口與近端外部終端設(shè)備的連接。一般使用DB?25或DB?9連接器連接總線和終端設(shè)備,本方案中使用DB9連接器。協(xié)議電氣特性規(guī)定-3~-15 V表示邏輯1, +3~+15 V表示邏輯0。采用MAX232完成TTL電平到標(biāo)準(zhǔn)電平之間的轉(zhuǎn)換,用光耦HCL2631和HCL263L隔離不同電源和參考地的FPGA和MAX232[7]。
FPGA內(nèi)部的RS 232固件程序包括波特率設(shè)置、發(fā)送、接收部分。
程序的頂層包含控制寄存器等,對(duì)DSP發(fā)送的命令和數(shù)據(jù)進(jìn)行鎖存,并根據(jù)選擇通道啟動(dòng)底層模塊。發(fā)送或接收之前先進(jìn)行復(fù)位,清空所有FIFO,寄存器內(nèi)為初始值;然后對(duì)波特率、控制字等進(jìn)行設(shè)置,波特率可設(shè)置為2 400 b/s,4 800 b/s,9 600 b/s等,默認(rèn)為9 600 b/s。根據(jù)波特率分頻11.059 2 MHz時(shí)鐘生成發(fā)送時(shí)鐘。
發(fā)送編碼部分包括緩存FIFO和串/并轉(zhuǎn)換邏輯,將DSP發(fā)送的并行數(shù)據(jù)自動(dòng)存入FIFO,當(dāng)FIFO不為空且總線空閑時(shí),讀出其中的數(shù)據(jù),根據(jù)設(shè)置的波特率生成發(fā)送時(shí)鐘s_clk,在s_clk的觸發(fā)下將8位的并行數(shù)據(jù)每一位依次發(fā)送到單端的總線上,轉(zhuǎn)為串行數(shù)據(jù),并根據(jù)需要在最后一位加上奇偶校驗(yàn)。
接收功能模塊與發(fā)送編碼部分的原理類似,總線上收到串行數(shù)據(jù)時(shí),由狀態(tài)機(jī)將串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),自動(dòng)存入FIFO,當(dāng)DSP空閑時(shí)將FIFO中的數(shù)據(jù)讀出。4 測(cè)試結(jié)果
利用上位機(jī)應(yīng)用程序驗(yàn)證發(fā)送數(shù)據(jù)與接收數(shù)據(jù)是否一致。對(duì)4個(gè)ARINC429通道、多種波特率下的2個(gè)RS 232通道進(jìn)行單幀數(shù)據(jù)收發(fā)測(cè)試,發(fā)送與接收的數(shù)據(jù)一致;對(duì)所有通道進(jìn)行大量數(shù)據(jù)的連續(xù)收發(fā)測(cè)試,所有結(jié)果均正確返回,長(zhǎng)時(shí)間工作沒(méi)有出現(xiàn)誤碼,證明該模塊硬件電路設(shè)計(jì)沒(méi)有問(wèn)題,F(xiàn)PGA內(nèi)編寫的邏輯正確,以及所編寫的DSP程序、儀器驅(qū)動(dòng)函數(shù)、上位機(jī)應(yīng)用程序均能穩(wěn)定可靠地工作。
5 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于PXI總線,以DSP和FPGA為控制核心,基于DEI1016的ARINC429通訊模塊,并包含RS 232通訊。設(shè)計(jì)了硬件電路,并根據(jù)DEI1016的時(shí)序要求編寫了控制邏輯,根據(jù)RS 232的協(xié)議要求在FPGA內(nèi)集成了編解碼邏輯,編寫了DSP程序和基于LabWindows/CVI的上位機(jī)應(yīng)用程序,完成整個(gè)通訊模塊的研制。經(jīng)過(guò)測(cè)試表明,該設(shè)計(jì)方案正確可行,發(fā)送和接收數(shù)據(jù)穩(wěn)定可靠,在實(shí)際應(yīng)用中,能保證長(zhǎng)時(shí)間無(wú)差錯(cuò)運(yùn)行,具有實(shí)際的工程應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 黃敬禮,錢進(jìn).基于DM642的實(shí)時(shí)多協(xié)議轉(zhuǎn)換器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(22):1?3.
[2] 宋慧娟.PXI Express外置控制器研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[3] 張華強(qiáng),趙剡,陳雨.基于FPGA 的ARINC429 通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2010,43(12):4?5.
[4] 廖治宇.通用ARINC429總線分析測(cè)試儀的軟件設(shè)計(jì)[D].成都:電子科技大學(xué),2013.
[5] Devices Engineering Inc. DEI1016/ DEI1016A/ DEI1016B ARINC429 transceiver [R]. [S.l.]: Devices Engineering Inc, 2004.
[6] 王景忠,王俊芳,于立佳.一種實(shí)現(xiàn)RS 232接口一對(duì)多通信的方法[J].無(wú)線電工程,2012,42(12):2?4.
[7] 龔榮華.RS 232接口芯片的IC設(shè)計(jì)[D].大連:大連理工大學(xué),2008.
[8] 許永輝,楊京禮,林連雷.TMS320DM642 DSP原理與應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,2012.
[9] 劉森,許永輝,孫闖.基于LAN的高集成度數(shù)據(jù)采集設(shè)備研制[J].現(xiàn)代電子技術(shù),2013,36(16):115?116.
[10] 李世良,許永輝.PCI總線智能GJB289A仿真卡設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(20):114?115.
需要發(fā)送的并行格式數(shù)據(jù)由DEI1016轉(zhuǎn)化為符合ARINC429協(xié)議要求的串行信號(hào)后由發(fā)送通道輸出,為TTL電平,不能滿足429協(xié)議電平要求的+10 V差分信號(hào)要求,需要經(jīng)過(guò)電平轉(zhuǎn)換才能發(fā)送到總線上。BD429是專用的ARINC429總線驅(qū)動(dòng)芯片,也可用于ARINC571,ARINC575,RS 422等總線[4],支持TTL和CMOS輸入,可通過(guò)編程設(shè)置輸出差分信號(hào)電壓范圍,支持高速和低速ARINC429通信,常與DEI1016配合用于ARINC429接口。
FPGA中的ARINC429固件程序包括片選、時(shí)鐘、寫控制字、發(fā)送、接收等部分。
DEI1016在FPGA的時(shí)序控制下進(jìn)行傳輸,與FPGA在同一時(shí)鐘域內(nèi),因此1 MHz時(shí)鐘信號(hào)通過(guò)FPGA內(nèi)部PLL分頻50 MHz時(shí)鐘產(chǎn)生并提供。
DEI1016的正常工作之前需要先低電平復(fù)位,然后向控制寄存器內(nèi)輸入控制字,控制字一共16位,包括設(shè)置ARINC429字長(zhǎng)為25位或32位、奇偶校驗(yàn)位、是否啟動(dòng)自檢模式、傳輸速率(高速、低速)等??刂谱职l(fā)送到數(shù)據(jù)總線上,在由FPGA給出的LDCW信號(hào)上升沿時(shí)鎖存到DEI1016中。例如,設(shè)置DEI1016以高速傳輸(不使用自檢模式),32位字長(zhǎng),則控制字為0x0020。
將符合協(xié)議編碼要求的串行數(shù)據(jù)通過(guò)發(fā)送通道發(fā)送出去,需要FPGA提供如下的時(shí)序:當(dāng)DEI1016空閑,可以發(fā)送數(shù)據(jù)時(shí),則輸出TXR為高電平,讀取該信號(hào)若不為高證明可以傳輸,使能發(fā)送模塊開(kāi)始工作,在計(jì)數(shù)器計(jì)數(shù)控制下在特定時(shí)間輸出LD1為低電平,數(shù)據(jù)總線上發(fā)送高位16位數(shù)據(jù),輸出LD2為低電平,發(fā)送低位16位數(shù)據(jù),并始終輸出ENTX為低電平。
ARINC429發(fā)送一個(gè)數(shù)據(jù)有32位,分為高位16位和低位16位。其中1~8位為地址標(biāo)號(hào)位,主要用于確定字中的數(shù)據(jù)類型;9~10位為信息源/目標(biāo)識(shí)別位(SDI),表明物理量從何而來(lái);11~28位為數(shù)據(jù)位;29位為符號(hào)位,用于表示方位;30~31位為SSM位,定義硬件設(shè)備條件、操作方式、數(shù)據(jù)內(nèi)容的有效性;第32位為校驗(yàn)位[5]。對(duì)于控制芯片發(fā)送給DEI1016的并行數(shù)據(jù),協(xié)議芯片會(huì)進(jìn)行如下轉(zhuǎn)換,如圖4所示[4]。
接收模塊包括接收控制邏輯和FIFO。當(dāng)總線上收到串行數(shù)據(jù)時(shí),DEI1016輸出DR信號(hào)為低電平,通知控制器可以進(jìn)行接收數(shù)據(jù)。接收控制邏輯的設(shè)計(jì)與發(fā)送邏輯類似,在計(jì)數(shù)器計(jì)數(shù)控制下依次輸出波形OE和SEL。FIFO由Quartus的MegaWizard工具自動(dòng)生成。
2.2 RS 232硬件設(shè)計(jì)和編解碼邏輯
本方案選擇在FPGA內(nèi)部實(shí)現(xiàn)RS 232通信數(shù)據(jù)的串/并轉(zhuǎn)換。RS 232是一種異步串行總線,單端通訊,適合于傳輸速率在0~20 000 b/s范圍內(nèi)的通信[6],常用于計(jì)算機(jī)接口與近端外部終端設(shè)備的連接。一般使用DB?25或DB?9連接器連接總線和終端設(shè)備,本方案中使用DB9連接器。協(xié)議電氣特性規(guī)定-3~-15 V表示邏輯1, +3~+15 V表示邏輯0。采用MAX232完成TTL電平到標(biāo)準(zhǔn)電平之間的轉(zhuǎn)換,用光耦HCL2631和HCL263L隔離不同電源和參考地的FPGA和MAX232[7]。
FPGA內(nèi)部的RS 232固件程序包括波特率設(shè)置、發(fā)送、接收部分。
程序的頂層包含控制寄存器等,對(duì)DSP發(fā)送的命令和數(shù)據(jù)進(jìn)行鎖存,并根據(jù)選擇通道啟動(dòng)底層模塊。發(fā)送或接收之前先進(jìn)行復(fù)位,清空所有FIFO,寄存器內(nèi)為初始值;然后對(duì)波特率、控制字等進(jìn)行設(shè)置,波特率可設(shè)置為2 400 b/s,4 800 b/s,9 600 b/s等,默認(rèn)為9 600 b/s。根據(jù)波特率分頻11.059 2 MHz時(shí)鐘生成發(fā)送時(shí)鐘。
發(fā)送編碼部分包括緩存FIFO和串/并轉(zhuǎn)換邏輯,將DSP發(fā)送的并行數(shù)據(jù)自動(dòng)存入FIFO,當(dāng)FIFO不為空且總線空閑時(shí),讀出其中的數(shù)據(jù),根據(jù)設(shè)置的波特率生成發(fā)送時(shí)鐘s_clk,在s_clk的觸發(fā)下將8位的并行數(shù)據(jù)每一位依次發(fā)送到單端的總線上,轉(zhuǎn)為串行數(shù)據(jù),并根據(jù)需要在最后一位加上奇偶校驗(yàn)。
接收功能模塊與發(fā)送編碼部分的原理類似,總線上收到串行數(shù)據(jù)時(shí),由狀態(tài)機(jī)將串行數(shù)據(jù)轉(zhuǎn)為并行數(shù)據(jù),自動(dòng)存入FIFO,當(dāng)DSP空閑時(shí)將FIFO中的數(shù)據(jù)讀出。4 測(cè)試結(jié)果
利用上位機(jī)應(yīng)用程序驗(yàn)證發(fā)送數(shù)據(jù)與接收數(shù)據(jù)是否一致。對(duì)4個(gè)ARINC429通道、多種波特率下的2個(gè)RS 232通道進(jìn)行單幀數(shù)據(jù)收發(fā)測(cè)試,發(fā)送與接收的數(shù)據(jù)一致;對(duì)所有通道進(jìn)行大量數(shù)據(jù)的連續(xù)收發(fā)測(cè)試,所有結(jié)果均正確返回,長(zhǎng)時(shí)間工作沒(méi)有出現(xiàn)誤碼,證明該模塊硬件電路設(shè)計(jì)沒(méi)有問(wèn)題,F(xiàn)PGA內(nèi)編寫的邏輯正確,以及所編寫的DSP程序、儀器驅(qū)動(dòng)函數(shù)、上位機(jī)應(yīng)用程序均能穩(wěn)定可靠地工作。
5 結(jié) 語(yǔ)
本文設(shè)計(jì)了一種基于PXI總線,以DSP和FPGA為控制核心,基于DEI1016的ARINC429通訊模塊,并包含RS 232通訊。設(shè)計(jì)了硬件電路,并根據(jù)DEI1016的時(shí)序要求編寫了控制邏輯,根據(jù)RS 232的協(xié)議要求在FPGA內(nèi)集成了編解碼邏輯,編寫了DSP程序和基于LabWindows/CVI的上位機(jī)應(yīng)用程序,完成整個(gè)通訊模塊的研制。經(jīng)過(guò)測(cè)試表明,該設(shè)計(jì)方案正確可行,發(fā)送和接收數(shù)據(jù)穩(wěn)定可靠,在實(shí)際應(yīng)用中,能保證長(zhǎng)時(shí)間無(wú)差錯(cuò)運(yùn)行,具有實(shí)際的工程應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 黃敬禮,錢進(jìn).基于DM642的實(shí)時(shí)多協(xié)議轉(zhuǎn)換器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(22):1?3.
[2] 宋慧娟.PXI Express外置控制器研制[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
[3] 張華強(qiáng),趙剡,陳雨.基于FPGA 的ARINC429 通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2010,43(12):4?5.
[4] 廖治宇.通用ARINC429總線分析測(cè)試儀的軟件設(shè)計(jì)[D].成都:電子科技大學(xué),2013.
[5] Devices Engineering Inc. DEI1016/ DEI1016A/ DEI1016B ARINC429 transceiver [R]. [S.l.]: Devices Engineering Inc, 2004.
[6] 王景忠,王俊芳,于立佳.一種實(shí)現(xiàn)RS 232接口一對(duì)多通信的方法[J].無(wú)線電工程,2012,42(12):2?4.
[7] 龔榮華.RS 232接口芯片的IC設(shè)計(jì)[D].大連:大連理工大學(xué),2008.
[8] 許永輝,楊京禮,林連雷.TMS320DM642 DSP原理與應(yīng)用實(shí)踐[M].北京:電子工業(yè)出版社,2012.
[9] 劉森,許永輝,孫闖.基于LAN的高集成度數(shù)據(jù)采集設(shè)備研制[J].現(xiàn)代電子技術(shù),2013,36(16):115?116.
[10] 李世良,許永輝.PCI總線智能GJB289A仿真卡設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(20):114?115.