張 楨,白 曦
(中國航空計(jì)算技術(shù)研究所第8研究室,陜西西安 710068)
HB6096總線是一種單向廣播式標(biāo)準(zhǔn)的高速差分信號(hào)通信總線,其抗干擾能力強(qiáng),具有技術(shù)成熟、簡單有效、性能可靠、成本低廉等特性。HB6096總線在民用和軍用航空領(lǐng)域被廣泛應(yīng)用,如波音公司、空客公司的許多先進(jìn)飛機(jī)的航電、供電系統(tǒng)中的機(jī)載計(jì)算機(jī)及導(dǎo)航設(shè)備之間信息交聯(lián)都大量采用了這種總線,在我國民用、軍用飛機(jī)上也被普遍采用。
傳統(tǒng)的HB6096總線系統(tǒng)設(shè)計(jì)大都采用專用芯片的解決方案,但隨著機(jī)電、航電技術(shù)的發(fā)展,系統(tǒng)對(duì)HB6096總線提出了越來越高的要求,尤其是采用傳統(tǒng)的設(shè)計(jì)集成度低,已經(jīng)不能滿足新型機(jī)電、航電系統(tǒng)的要求。
文中的設(shè)計(jì)利用FPGA內(nèi)部豐富的資源,通過VHDL語言編寫多路HB6096協(xié)議,并且對(duì)每一路收、發(fā)通道均配置了大容量FIFO,提高了數(shù)據(jù)處理能力;同時(shí),可以有效地縮小系統(tǒng)體積、降低成本;采用模塊化設(shè)計(jì)使系統(tǒng)的配置靈活度有較大提高。具體來說,采用FPGA技術(shù)設(shè)計(jì)的多通道HB6096通訊板,顯著特點(diǎn)和優(yōu)勢為:集成度高,在一片F(xiàn)PGA芯片上能夠集成十幾路甚至幾十路HB6096通信發(fā)送和接收內(nèi)核,能處理多路通信通道,大幅節(jié)省了硬件的資源和面積,降低了系統(tǒng)成本、可靠性高,直接給每個(gè)信道掛接大容量的緩存,從硬件能力上避免了總線各通道滿負(fù)荷數(shù)據(jù)傳輸時(shí)因CPU不能及時(shí)處理導(dǎo)致數(shù)據(jù)丟失的問題[1]。
HB6096是一種點(diǎn)對(duì)點(diǎn)的傳輸協(xié)議,總線由兩個(gè)差分信號(hào)線路組成。一條總線上最多可以掛接20個(gè)接收設(shè)備;一個(gè)標(biāo)準(zhǔn)的信號(hào)數(shù)據(jù)包括32 bit或25 bit的數(shù)據(jù)位和4 bit的間隔位。HB6096總線線路上的碼型為雙極性歸零碼,其編碼方式如圖1所示。
圖1 HB6096信號(hào)編碼示例
在HB6096總線中,兩條線路的差分信號(hào)的邏輯關(guān)系有3種:(1)A與B之間的差分電壓為7.25 11 V時(shí),表示邏輯為“1”或“HI”。(2)A與B之間的差分電壓為-0.50.5 V時(shí),表示“NULL”。(3)A、B之間的差分電壓為 -11-7.25 V時(shí),表示邏輯“0”或“LOW”。接收線路上的電壓取決于線路長度和掛接在總線上接收器的個(gè)數(shù)。HB6096規(guī)范是一種簡單的點(diǎn)對(duì)點(diǎn)協(xié)議,每個(gè)總線上只有一個(gè)發(fā)送器,總線上至少有一個(gè)接收器,但每條總線上的接收器數(shù)量不能超過20個(gè)。
總線速率主要有兩種:100 kbit·s-1和 12.5 kbit·s-1??偩€的線上信號(hào)為差分電平,而芯片管腳信號(hào)為交錯(cuò)的脈沖信號(hào),包含了串行數(shù)據(jù)的信息。
并行的數(shù)據(jù)和串行數(shù)據(jù)相互轉(zhuǎn)換,從低位開始順序到高位,每個(gè)數(shù)據(jù)位之間有一個(gè)空位間隔。完成32位數(shù)據(jù)轉(zhuǎn)換后再接一個(gè)4 bit位的結(jié)束標(biāo)志,這是兩個(gè)HB6096數(shù)據(jù)間的間隔。
HB6096協(xié)議對(duì)數(shù)據(jù)的傳輸順序做出了規(guī)定,即最重要的數(shù)據(jù)位優(yōu)先傳輸,因此寄存器數(shù)據(jù)格式和線上格式有所區(qū)別,傳輸前在芯片內(nèi)部需要對(duì)數(shù)據(jù)位格式進(jìn)行轉(zhuǎn)換。
HB6096接口設(shè)計(jì)方案的實(shí)現(xiàn)方式為FPGA+外圍接口芯片,即HB6096協(xié)議部分及控制、譯碼邏輯等通過FPGA編寫VHDL語言實(shí)現(xiàn),F(xiàn)PGA的型號(hào)采用Xilinx公司的xqv600,接收接口控制電路芯片和發(fā)送接口控制電路芯片分別采用HI8482和HWD3182,總線驅(qū)動(dòng)器采用JS164245[2]。硬件方案如圖2所示。
圖2 基于FPGA的HB6096接口硬件方案設(shè)計(jì)示意圖
如圖2所示,該硬件方案的核心部分為FPGA的設(shè)計(jì),F(xiàn)PGA通過VHDL語言實(shí)現(xiàn)兩大部分的功能:控制、譯碼邏輯與HB6096協(xié)議部分。
控制、譯碼邏輯部分的主要功能為根據(jù)從總線接收過來的控制信號(hào),按照時(shí)序訪問不同的HB6096收發(fā)地址單元,將要接收的數(shù)據(jù)從數(shù)據(jù)總線上通過164244傳送至HB6096的接收保持寄存器、要發(fā)送的數(shù)據(jù)從HB6096的發(fā)送保持寄存器通過164244傳送至數(shù)據(jù)總線上,以完成對(duì)12發(fā)12收HB6096通訊的發(fā)送與接收功能[3]。
HB6096協(xié)議部分共有12個(gè)單元,每個(gè)單元都包括獨(dú)立的1發(fā)1收HB6096功能,每個(gè)獨(dú)立的單元里又包括解碼、寄存器控制、濾波、接收/發(fā)送控制、中斷控制等幾部分組成,由此完成一個(gè)完整的HB6096收發(fā)協(xié)議,并且對(duì)每一路HB6096收、發(fā)單元,均配置了獨(dú)立的FIFO,從而保證數(shù)據(jù)收發(fā)的完整性[4]。
解碼、濾波、接收/發(fā)送控制等部分用戶不需要關(guān)注,而寄存器控制部分通過向是與用戶有交互的。
HB6096協(xié)議內(nèi)的寄存器包括控制寄存器、狀態(tài)寄存器、屏蔽寄存器、發(fā)送保持寄存器、接收保持寄存器。其中,發(fā)送保持寄存器和接收保持寄存器分別用于存儲(chǔ)發(fā)送和接收到的數(shù)據(jù)。
控制寄存器為可讀寫寄存器,主要用于配置HB6096控制器收發(fā)的相關(guān)信息。其格式如圖3所示。
圖3 控制寄存器字格式
其中,WLSEL:字長選擇。邏輯“0”設(shè)置接收和發(fā)送為32位字模式。邏輯“1”設(shè)置接收和發(fā)送為25位字模式。
RCVSEL:接收數(shù)據(jù)率選擇。邏輯“0”設(shè)置接收器為高速率(100 kbit·s-1)。邏輯“1”設(shè)置接收器為低速速率(12.5 kbit·s-1)。
TXSEL:發(fā)送數(shù)據(jù)率選擇。邏輯“0”設(shè)置發(fā)送器為高速率(100 kbit·s-1)。邏輯“1”設(shè)置接收器為發(fā)送速率(12.5 kbit·s-1)。
PARCK:校驗(yàn)檢查使能。邏輯“0”選擇奇校驗(yàn),邏輯“1”選擇偶校驗(yàn)。
PAREN:發(fā)送器校驗(yàn)使能。使能校驗(yàn)位插入到發(fā)送數(shù)據(jù)的第32位。PAREN為邏輯“0”插入數(shù)據(jù)到第32位,若為邏輯“1”則插入校驗(yàn)和到第32位。
SLFTEST:自測試使能。邏輯“1”表示自測試使能。在內(nèi)部連接發(fā)送器的輸出到接收器的輸入。在測試模式中發(fā)送器的輸出仍然有效,但接收器的輸入屏蔽。
ENTX:使能發(fā)送(高有效)。邏輯“1”使能發(fā)送器從發(fā)送緩沖發(fā)送數(shù)據(jù),邏輯“0”禁止發(fā)送器從發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)。
狀態(tài)寄存器和屏蔽寄存器的對(duì)應(yīng)位是一致的,所使用的存儲(chǔ)單元也是一致的。其格式如圖4所示。
圖4 狀態(tài)寄存器/屏蔽寄存器字格式
狀態(tài)寄存器是一個(gè)只讀寄存器,它的內(nèi)容用于指示潛在中斷條件的狀態(tài)。如果這個(gè)寄存器中的任何位切換為高,就表示相應(yīng)的中斷條件已經(jīng)或正在發(fā)生。一般情況下,狀態(tài)寄存器的內(nèi)容將為處理器顯示HB6096發(fā)出的中斷請(qǐng)求的來源或原因。因此,任何對(duì)HB6096的中斷服務(wù)程序應(yīng)該由讀這個(gè)寄存器屏蔽后的中斷狀態(tài)寄存器開始。
中斷屏蔽寄存器是一個(gè)只寫寄存器,CPU無法讀該寄存器,這個(gè)寄存器使用戶可以選擇哪些條件將向處理器發(fā)出中斷請(qǐng)求。即,用戶可以選擇屏蔽或阻止在某些情況下向處理器發(fā)出中斷請(qǐng)求。如果用戶希望某個(gè)特定的中斷,就應(yīng)當(dāng)寫邏輯“1”給中斷屏蔽寄存器中與該中斷條件相對(duì)應(yīng)的位。同樣,如果用戶希望屏蔽或者禁止某一條件引起的中斷,就應(yīng)當(dāng)寫邏輯“0”給中斷屏蔽寄存器中與該中斷條件相對(duì)應(yīng)的位。
HB6096接口軟件設(shè)計(jì)主要指處理器中和HB6096接口相關(guān)的驅(qū)動(dòng)軟件及中斷服務(wù)程序的設(shè)計(jì)。提供給用戶使用的接口驅(qū)動(dòng)軟件包括4個(gè):HB6096總線初始化程序、HB6096總線數(shù)據(jù)發(fā)送驅(qū)動(dòng)程序、HB6096總線數(shù)據(jù)接收驅(qū)動(dòng)程序、HB6096查詢接收驅(qū)動(dòng)程序。HB6096總線初始化程序用于對(duì)HB6096總線的工作方式進(jìn)行初始化,如傳輸速率選擇,字長模式選擇等;HB6096總線數(shù)據(jù)發(fā)送驅(qū)動(dòng)程序用于將用戶需要發(fā)送至HB6096總線的數(shù)據(jù)從應(yīng)用層發(fā)送至物理層,物理層的HB6096數(shù)據(jù)發(fā)送由中斷服務(wù)程序完成,用戶不必關(guān)心;HB6096總線數(shù)據(jù)接收驅(qū)動(dòng)程序用于用戶應(yīng)用層獲得應(yīng)用所需的HB6096接收數(shù)據(jù);HB6096查詢接收驅(qū)動(dòng)程序,設(shè)計(jì)中,HB6096數(shù)據(jù)采用查詢方式接收,故需要提供該驅(qū)動(dòng)程序,該驅(qū)動(dòng)的作用是通過FIFO是否為空的標(biāo)志位,來進(jìn)行將接收到的數(shù)據(jù)由FIFO寫入CPU板存儲(chǔ)區(qū)的功能。
通常HB6096通訊板的設(shè)計(jì),接收均采取中斷方式,一旦FIFO中有準(zhǔn)備好的數(shù)據(jù),就觸發(fā)CPU中斷,由中斷服務(wù)程序?qū)?shù)據(jù)從HB6096板上的FIFO讀入CPU板的存儲(chǔ)區(qū),由于設(shè)計(jì)中HB6096板設(shè)計(jì)為12發(fā)12收,發(fā)送/接收通道數(shù)量較大,若仍采取中斷方式接收,如果采取每接收一個(gè)數(shù)據(jù)就觸發(fā)一次中斷就很可能造成短時(shí)間內(nèi)大量HB6096總線數(shù)據(jù)到達(dá),CPU只能響應(yīng)中斷而無法進(jìn)行其他工作而導(dǎo)致其它任務(wù)超時(shí),如果采取每到固定個(gè)數(shù)數(shù)據(jù)觸發(fā)中斷,就有可能如果一段時(shí)間內(nèi)只有一個(gè)新數(shù)據(jù)或小于預(yù)設(shè)定的固定個(gè)數(shù)的數(shù)據(jù)到達(dá),由于沒有達(dá)到觸發(fā)中斷的條件,CPU板始終無法獲得最新數(shù)據(jù)從而導(dǎo)致應(yīng)用層認(rèn)為數(shù)據(jù)接收故障的不良結(jié)果。
為避免上述情況,設(shè)計(jì)采用查詢的數(shù)據(jù)接收方式,這就要求用戶在周期任務(wù)中,每隔固定周期調(diào)用一次HB6096查詢接收驅(qū)動(dòng)程序,通過調(diào)用該程序,查詢是否有接收到的數(shù)據(jù)并進(jìn)行處理,該驅(qū)動(dòng)程序的工作流程如圖5所示。
圖5 HB6096查詢接收驅(qū)動(dòng)程序工作流程示意圖
文中從工程應(yīng)用的角度,設(shè)計(jì)了一種基于FPGA實(shí)現(xiàn)多路HB6096總線通訊板解決方案,該通訊板在實(shí)際應(yīng)用中可以滿足供電控制子系統(tǒng)對(duì)數(shù)據(jù)傳輸?shù)囊螅瑢?shí)現(xiàn)了數(shù)據(jù)的100%可靠傳輸。其創(chuàng)新點(diǎn)主要有以下兩點(diǎn):(1)摒棄了傳統(tǒng)采取DEI1016或HS3282進(jìn)行HB6096總線通訊板設(shè)計(jì)的方法,而采用將HB6096協(xié)議用FPGA實(shí)現(xiàn),從而實(shí)現(xiàn)了在一塊板卡上實(shí)現(xiàn)12發(fā)12收 HB6096總線通訊。(2)采用查詢方式接收HB6096總線數(shù)據(jù)從而既保證了CPU板的可靠運(yùn)行又實(shí)現(xiàn)了多路HB6096數(shù)據(jù)的穩(wěn)定、實(shí)時(shí)接收。
[1]田耘,徐文波,胡彬.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南——邏輯設(shè)計(jì)篇[M].北京:人民郵電出版社,2008.
[2]丁猛,郭英.ARINC 429信號(hào)處理板的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008(13):31-32.
[3]姬昕禹,馬捷中,翟正軍,等.基于ARINC429總線接口板卡的驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007(14):3511-3514.
[4]趙顯紅,何谷惠.基于FPGA的ARINC429機(jī)載總線接口[J].現(xiàn)代電子技術(shù),2008,31(10):93 -95.