摘 要: 針對(duì)現(xiàn)有俄式ГОСТ18977總線的實(shí)現(xiàn)方式中傳輸速率不兼容的問題,設(shè)計(jì)并實(shí)現(xiàn)了一種基于CPLD的ГОСТ18977總線收發(fā)系統(tǒng)。該系統(tǒng)利用CPLD進(jìn)行分頻,可兼容不同的總線傳輸速率;并通過CPLD實(shí)現(xiàn)系統(tǒng)的邏輯設(shè)計(jì)與收發(fā)控制,能夠?qū)崟r(shí)完成總線數(shù)據(jù)的發(fā)送、接收、顯示和存儲(chǔ)功能。
關(guān)鍵詞: 航空總線; ГОСТ18977協(xié)議; ARINC429協(xié)議; CPLD
在現(xiàn)代俄制飛機(jī)上,普遍采用符合俄羅斯ГОСТ18977總線的傳送方式進(jìn)行數(shù)字信息的傳送和交換。該數(shù)據(jù)總線標(biāo)準(zhǔn)類似于美國航空無線電公司(ARINC)制定的ARINC429傳輸標(biāo)準(zhǔn)。二者數(shù)據(jù)格式及電氣特性一致,其不同之處在于俄式ГОСТ18977標(biāo)準(zhǔn)總線傳輸速率有12 kb/s、48 kb/s、100 kb/s和250 kb/s 4種,而ARINC429標(biāo)準(zhǔn)總線傳輸速率只有12.5 kb/s和100 kb/s兩種[1]。目前,由于國內(nèi)尚無專用的ГОСТ18977總線芯片,大多ГОСТ18977總線收發(fā)設(shè)備通常采用ARINC429專用芯片來實(shí)現(xiàn)[2]。而ARINC429芯片無法完全兼容ГОСТ18977的4種總線傳輸速率,參考文獻(xiàn)[3-4]通過設(shè)置芯片控制字的方法,對(duì)外部時(shí)鐘進(jìn)行分頻以達(dá)到速率匹配的目的。這種硬件分頻的方法只能兼容某一固定傳輸速率,無法滿足不同傳輸速率設(shè)備之間的通信要求。本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于CPLD的ГОСТ18977總線收發(fā)系統(tǒng)。該收發(fā)系統(tǒng)利用CPLD進(jìn)行軟件分頻,可兼容不同的總線傳輸速率;并通過CPLD實(shí)現(xiàn)系統(tǒng)的邏輯設(shè)計(jì)與收發(fā)控制, 能夠?qū)崟r(shí)完成總線數(shù)據(jù)的發(fā)送、接收、顯示和存儲(chǔ)功能。
1 系統(tǒng)總體設(shè)計(jì)
在系統(tǒng)設(shè)計(jì)上,采用模塊化結(jié)構(gòu)對(duì)系統(tǒng)的功能進(jìn)行劃分。主要功能包括對(duì)從其他機(jī)載設(shè)備到收發(fā)系統(tǒng)的信息的輸入、顯示、存儲(chǔ),以及從收發(fā)系統(tǒng)到其他機(jī)載設(shè)備的信息的輸出等。根據(jù)其功能可將系統(tǒng)分為中央控制模塊、信息輸入/輸出模塊、帶鍵盤和數(shù)碼管的顯控模塊以及電源模塊等,系統(tǒng)整體結(jié)構(gòu)如圖1所示。
系統(tǒng)采用對(duì)STC89C58RD+芯片進(jìn)行指令編程的辦法,并將編寫的指令信息存儲(chǔ)到STC89C58RD+芯片的指令存儲(chǔ)器中。輸入數(shù)據(jù)時(shí),通過寫入、存儲(chǔ)指令直接存儲(chǔ)到STC89C58RD+芯片的數(shù)據(jù)存儲(chǔ)器中;輸出數(shù)據(jù)時(shí),直接通過讀出等相關(guān)指令從存儲(chǔ)器中提取相關(guān)數(shù)據(jù)并傳送至CPLD,通過CPLD完成信息時(shí)序控制、并串轉(zhuǎn)換,再輸出至輸入/輸出模塊進(jìn)行信號(hào)的差分編碼和信息波形變換;讀取其他機(jī)載設(shè)備的數(shù)據(jù)時(shí),通過輸入/輸出模塊完成信號(hào)調(diào)理、差分編碼的逆變換,同時(shí)由CPLD完成時(shí)序控制和串/并轉(zhuǎn)換,再送至單片機(jī),最后由單片機(jī)發(fā)出顯示指令,通過顯控模塊完成信息的顯示。RAM存儲(chǔ)器用于保存自相鄰模塊獲得的信息,并根據(jù)中央控制模塊的指令將信息傳輸?shù)较噜從K。ROM存儲(chǔ)器用于長期保存自RAM存儲(chǔ)器獲得的信息,并根據(jù)中央控制模塊的指令將信息傳輸?shù)较噜從K。
2 硬件設(shè)計(jì)
2.1中央控制模塊
中央控制模塊是該收發(fā)系統(tǒng)的信息控制和處理中心,它直接參與和控制各部分電路的正常工作以及各種信息的處理、傳輸和顯示,起著整個(gè)系統(tǒng)信息處理與控制中心的作用。它包括中央處理器STC89C58RD+和可編程邏輯器件CPLD。
CPLD采用EPM7128SQI100-10可編程邏輯器件[5]。中央處理器通過其外部總線,與可編程邏輯陣列構(gòu)成的接口電路相聯(lián)系,經(jīng)過CPLD對(duì)地址、數(shù)據(jù)、總線等信息地址鎖存與緩沖等處理后,完成各種信息的鍵盤輸入、數(shù)碼管顯示和存儲(chǔ)控制等功能。
RAM存儲(chǔ)器、ROM存儲(chǔ)器矩陣用于存儲(chǔ)256個(gè)24 bit字,采用STC89C58RD+內(nèi)部集成的EEPROM。利用ISP/IAP技術(shù),將內(nèi)部DATA Flash當(dāng)EEPROM使用。在進(jìn)行256個(gè)24 bit存儲(chǔ)中,采用4個(gè)EEPROM扇區(qū),每個(gè)扇區(qū)512 B。該方案簡化了系統(tǒng)的電路設(shè)計(jì),方便使用[6]。
另外,系統(tǒng)采用12 MHz、24 MHz振蕩器分別作為單片機(jī)和CPLD的時(shí)鐘,CPLD將24 MHz時(shí)鐘經(jīng)分頻后產(chǎn)生96 kHz的時(shí)鐘作為32 bit串行碼發(fā)送和接收的工作時(shí)鐘。CPLD的分頻時(shí)鐘是通過編程的方式實(shí)現(xiàn)的,可根據(jù)傳輸速率的不同,靈活調(diào)整CPLD的工作時(shí)鐘。
2.2 輸入/輸出模塊
輸入/輸出模塊主要用于與其他機(jī)載設(shè)備的信息交換,完成信息的32 bit串行碼的差分編碼、差分譯碼、波形變換等功能。
在發(fā)送32 bit串行碼時(shí),由STC89C58RD+準(zhǔn)備數(shù)據(jù),并通過總線通信的方式將數(shù)據(jù)傳遞給CPLD;由CPLD控制輸入模塊將其轉(zhuǎn)換為串行碼,并控制發(fā)送的時(shí)序,碼元寬度為20 μs,占空比為50%[7]。輸入模塊的核心是雙極性碼形成模塊,該模塊主要由MAX313模擬開關(guān)及由CPLD組合邏輯電路組成的譯碼電路兩部分構(gòu)成,其主要作用是產(chǎn)生所需的32 bit串行雙極性碼。電路圖如圖2所示。
在接收32 bit串行碼時(shí),首先使信號(hào)J-INA、J-INB分別通過一個(gè)二極管和一個(gè)三極管,此過程中信號(hào)被削去負(fù)電平且被反向;再經(jīng)過一個(gè)CPLD內(nèi)部的“與門”,得到的信號(hào)就是從串行碼信息中提取的時(shí)鐘信號(hào)。由于每個(gè)上升沿正好在時(shí)鐘周期的中間,所以此信號(hào)不僅可以送往單片機(jī)進(jìn)行計(jì)數(shù),而且可以作為CPLD的數(shù)據(jù)的移位脈沖。另外,信號(hào)還經(jīng)過一個(gè)CPLD內(nèi)部觸發(fā)器,形成需要的單極性歸零碼信號(hào),完成信號(hào)的接收。當(dāng)完成32 bit串行碼接收后,由CPLD送至單片機(jī),經(jīng)單片機(jī)控制顯示控制模塊進(jìn)行信息的顯示。編碼接收電路如圖3所示。
2.3 顯示控制模塊
顯示控制模塊由8 bit數(shù)碼管、28個(gè)按鍵和4個(gè)指示燈構(gòu)成。其中,8 bit數(shù)碼管、28個(gè)按鍵的驅(qū)動(dòng)和控制主要由芯片CH451完成。8 bit數(shù)碼管用于信息的顯示,高6位為數(shù)據(jù)信息,低2位為地址信息;28個(gè)按鍵主要用于16進(jìn)制信息的輸入、設(shè)備狀態(tài)的設(shè)定、輸入按鍵、讀取按鍵功能;4個(gè)指示燈分別對(duì)應(yīng)清除、輸入結(jié)束、寫入、存儲(chǔ)信息指示。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件部分由主程序、發(fā)送子程序和接收子程序構(gòu)成。主程序負(fù)責(zé)對(duì)數(shù)據(jù)接收、發(fā)送、存儲(chǔ)和顯示的控制,同時(shí)通過奇偶校驗(yàn)對(duì)接收到的數(shù)據(jù)實(shí)現(xiàn)檢錯(cuò)功能。發(fā)送子程序和接收子程序以對(duì)中斷響應(yīng)的處理為核心,通過主程序?qū)χ袛嗟恼{(diào)度來實(shí)現(xiàn)數(shù)據(jù)接收和發(fā)送的功能。
3.1 數(shù)據(jù)接收
在接收狀態(tài)下,主程序不間斷地檢測接收數(shù)據(jù)線的狀態(tài),當(dāng)出現(xiàn)連續(xù)(4個(gè)碼元周期)的高電平時(shí),開始檢測同步碼;確認(rèn)收到同步碼后,準(zhǔn)備在4個(gè)碼元周期后接收32 bit的數(shù)據(jù)碼,否則繼續(xù)檢測接收數(shù)據(jù)線的狀態(tài);間隔4個(gè)碼元周期后,主程序產(chǎn)生接收中斷信號(hào),開始執(zhí)行接收子程序,接收子程序?qū)?2 bit的數(shù)據(jù)存入緩沖區(qū)并完成串/并轉(zhuǎn)換,以便主程序的顯控模塊調(diào)用;間隔一個(gè)字周期后,退出接收子程序中斷,再次循環(huán)以上過程。其流程圖如圖4所示。
3.2 數(shù)據(jù)發(fā)送
在發(fā)送狀態(tài)下,主程序不間斷地掃描鍵盤的狀態(tài)。當(dāng)有按鍵按下時(shí),數(shù)碼管會(huì)顯示相應(yīng)的標(biāo)示;當(dāng)檢測有發(fā)送的請(qǐng)求信號(hào)時(shí),主程序產(chǎn)生發(fā)送中斷信號(hào),開始執(zhí)行發(fā)送子程序;發(fā)送子程序?qū)㈡I盤按下的數(shù)據(jù)信息存入緩沖區(qū),在完成并/串轉(zhuǎn)換后,將32 bit的數(shù)據(jù)碼送入發(fā)送數(shù)據(jù)線上;在一個(gè)字周期后,退出發(fā)送子程序中斷;間隔4個(gè)碼元周期后,重新開啟發(fā)送子程序,將32 bit的同步碼送入發(fā)送數(shù)據(jù)線上,完成對(duì)同步碼的發(fā)送過程;在一個(gè)字周期后,退出發(fā)送子程序中斷,再次循環(huán)以上過程。其流程圖如圖5所示。
3.3 數(shù)據(jù)同步與糾錯(cuò)
由接收數(shù)據(jù)和發(fā)送數(shù)據(jù)的過程可知,精確地定位數(shù)據(jù)碼和同步碼間隔的4個(gè)碼元周期的高電平,而不產(chǎn)生錯(cuò)位對(duì)于同步接收數(shù)據(jù)非常重要。CPLD的時(shí)鐘頻率為24 MHz,將其分頻后的100 kHz作為串行碼的工作時(shí)鐘,分頻后的200 kHz作為同步檢測時(shí)鐘。在同步檢測時(shí)鐘下,檢測出16個(gè)高電平的數(shù)據(jù)信號(hào),即為數(shù)據(jù)信號(hào)的同步頭。同時(shí),為避免直流電平對(duì)同步頭檢測的影響,還應(yīng)排除大于4個(gè)碼元周期的偽同步頭。
為了提高數(shù)據(jù)接收的可靠性,本系統(tǒng)在進(jìn)行數(shù)據(jù)通信中,通過奇偶檢驗(yàn)來實(shí)現(xiàn)檢錯(cuò)功能,將數(shù)據(jù)通信的誤碼率降到最小。數(shù)據(jù)碼的第32位為奇偶檢驗(yàn)位,在發(fā)送時(shí),若前31位中1的個(gè)數(shù)為偶數(shù),則檢驗(yàn)位為0,否則為1;在接收時(shí),按照同樣的規(guī)則進(jìn)行判定,若校驗(yàn)一致,則表明正確接收,否則通知發(fā)送端重新發(fā)送。其流程圖如圖6所示。
4 測試結(jié)果
系統(tǒng)的測試包括硬件測試和軟件測試。硬件測試主要是在完成PCB板的焊接后,對(duì)板上的元器件進(jìn)行逐一測試,保證與原理圖一致;并對(duì)焊接情況進(jìn)行檢查,防止出現(xiàn)虛焊、漏焊的情況,進(jìn)而確保系統(tǒng)接口與其他機(jī)載設(shè)備電氣特性的一致性。
軟件測試采用各模塊聯(lián)調(diào)的方式進(jìn)行。首先用示波器測試了發(fā)送數(shù)據(jù)的波形接收后的解碼波形, 分別如圖7和圖8所示。另外,還測試了以下功能:(1)接收自其他機(jī)載設(shè)備的數(shù)據(jù),并完成顯示功能;(2)將鍵盤輸入的數(shù)據(jù)發(fā)送至其他機(jī)載設(shè)備; (3)將發(fā)送或接收的數(shù)據(jù)存儲(chǔ)到RAM存儲(chǔ)器或ROM存儲(chǔ)器,并完成顯示功能;(4)將數(shù)據(jù)從存儲(chǔ)器中讀出,并完成顯示功能。上述各功能在實(shí)驗(yàn)室及室外環(huán)境下均做了100次以上的測試。測試結(jié)果表明,系統(tǒng)均能正確地完成相應(yīng)操作。
該收發(fā)系統(tǒng)充分利用CPLD硬件可編程性、高度集成性等特點(diǎn),通過CPLD實(shí)現(xiàn)系統(tǒng)的邏輯設(shè)計(jì)與收發(fā)控制,能夠?qū)崟r(shí)完成總線數(shù)據(jù)的發(fā)送、接收、顯示和存儲(chǔ)功能。與采用專用芯片的實(shí)現(xiàn)方式相比,該系統(tǒng)可兼容不同的總線傳輸速率,且器件的成本較低,具有較強(qiáng)的推廣價(jià)值。
參考文獻(xiàn)
[1] 田城,王勇,何雅靜,等.ГОСТ18977-79航空總線仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(01):300-303.
[2] 劉迎歡,羅志強(qiáng).ARINC429協(xié)議和與之對(duì)應(yīng)的俄羅斯標(biāo)準(zhǔn)的比較[J].航空電子技術(shù),2002,33(1):11-15.
[3] 邸亞洲, 李富榮, 于建立,等.基于HS3282芯片實(shí)現(xiàn)ГОСТ18977總線數(shù)據(jù)傳輸方法[J].計(jì)算機(jī)測量與控制,2007,26(1):47-49.
[4] 黃潤龍.基于ARINC429協(xié)議芯片實(shí)現(xiàn)俄式ГОСТ1897779協(xié)議通信設(shè)計(jì)[J].電訊技術(shù),2005,02(02):62-68.
[5] 張立,劉昆.基于FPGA的采樣與控制系統(tǒng)設(shè)計(jì)[J].電子測量與儀器學(xué)報(bào),2008,22(z2):520-523.
[6] 吳繼華,王誠.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2011.
[7] 楊軍鋒,謝聶.多通道串行雙極性數(shù)字發(fā)送電路設(shè)計(jì)[J].測控技術(shù),2003,22(1):67-69.