國家新聞出版廣電總局無線電臺(tái)管理局七三一臺(tái) 林大橋
基于ARM與FPGA設(shè)計(jì)短波發(fā)射機(jī)自動(dòng)調(diào)諧控制系統(tǒng)
國家新聞出版廣電總局無線電臺(tái)管理局七三一臺(tái) 林大橋
本文介紹了采用FPGA和ARM11嵌入式設(shè)計(jì)短波發(fā)射機(jī)自動(dòng)調(diào)諧控制系統(tǒng)的方案,重點(diǎn)介紹了該系統(tǒng)硬件電路設(shè)計(jì),討論了ARM11和FPGA之間的通信實(shí)現(xiàn)。在Qt環(huán)境下設(shè)計(jì)了短波發(fā)射機(jī)自動(dòng)調(diào)諧系統(tǒng)的應(yīng)用軟件并在linux操作系統(tǒng)上移植,實(shí)現(xiàn)友好的人機(jī)界面。利用FPGA實(shí)現(xiàn)自動(dòng)調(diào)諧系統(tǒng)中步進(jìn)電機(jī)的控制。
FPGA;嵌入式Linux;自動(dòng)調(diào)諧系統(tǒng)
短波(3.9MHZ-26.1MHZ)發(fā)射機(jī)更換頻率時(shí)為了保證發(fā)射機(jī)能工作在所需的頻率值,必須對(duì)高頻回路進(jìn)行精確的調(diào)諧。大功率短波發(fā)射機(jī)調(diào)諧器件均為電感線圈和真空可變電容等大型器件,通過步進(jìn)電機(jī)轉(zhuǎn)動(dòng)改變其機(jī)械轉(zhuǎn)動(dòng)圈數(shù)才可改變調(diào)諧器件的電參數(shù),實(shí)現(xiàn)調(diào)諧回路諧振在所需頻率上。為了能夠準(zhǔn)確的計(jì)量出被調(diào)器件的機(jī)械轉(zhuǎn)動(dòng)的實(shí)際位置(即該位置間接地代表了被調(diào)器件的電氣參量),每一個(gè)傳動(dòng)裝置上都裝有一個(gè)與被調(diào)器件機(jī)械聯(lián)動(dòng)的光電數(shù)字增量碼盤。碼盤轉(zhuǎn)動(dòng)時(shí)輸出的脈沖個(gè)數(shù)累計(jì)值即代表了被調(diào)器件的機(jī)械位置,也即代表被調(diào)器件的位置信息(即該位置所對(duì)應(yīng)的被調(diào)器件的電氣參量)。
于是,自動(dòng)調(diào)諧的過程可被理解為通過(執(zhí)行電機(jī))傳動(dòng)裝置帶動(dòng)被調(diào)器件轉(zhuǎn)動(dòng),將與被調(diào)器件機(jī)械聯(lián)動(dòng)的增量光電碼盤轉(zhuǎn)動(dòng)過程中輸出的脈沖累計(jì)值(即被調(diào)器件的實(shí)際位置)與調(diào)諧回路諧振時(shí)要求的被調(diào)諧器件的預(yù)置位置值相等即可。
近年來隨著短波發(fā)射機(jī)自動(dòng)化、網(wǎng)絡(luò)化、信息化、智能化的要求,原來采用單片機(jī)設(shè)計(jì)的調(diào)諧控制系統(tǒng)因?yàn)閱纹瑱C(jī)固有的性能瓶頸制約了調(diào)諧系統(tǒng)的性能指標(biāo)和功能擴(kuò)展,存在存儲(chǔ)容量太小、實(shí)時(shí)性低、無法實(shí)現(xiàn)網(wǎng)絡(luò)化等缺點(diǎn),當(dāng)前,伴隨ARM處理器功能的日益強(qiáng)大、性能穩(wěn)定,采用ARM基于Linux嵌入式與FPGA設(shè)計(jì),成為保障和提高自動(dòng)調(diào)諧系統(tǒng)整體功能和性能的最佳方案。
嵌入式自動(dòng)調(diào)諧控制系統(tǒng)主要有Tiny6410嵌入式主板和FPGA數(shù)據(jù)采集邏輯控制板組成,整個(gè)系統(tǒng)硬件結(jié)構(gòu)如圖1所示。其中Tiny6410為核心的嵌入式主板是整個(gè)系統(tǒng)的控制中心:實(shí)現(xiàn)嵌入式的VGA顯示器、觸摸屏和觸摸板實(shí)現(xiàn)人機(jī)對(duì)話;實(shí)現(xiàn)調(diào)諧器件頻率數(shù)據(jù)庫的存儲(chǔ)與調(diào)取管理;實(shí)現(xiàn)與FPGA數(shù)據(jù)采集邏輯控制板的數(shù)據(jù)通信;控制FPGA數(shù)據(jù)采集邏輯控制板數(shù)據(jù)采集工作。FPGA數(shù)據(jù)采集邏輯控制板充當(dāng)系統(tǒng)的“下位機(jī)”作用:接受嵌入式主板發(fā)來的控制命令,完成步進(jìn)電機(jī)實(shí)際位置數(shù)據(jù)和其他模擬量等相關(guān)數(shù)據(jù)的采集;接收嵌入式主板中存儲(chǔ)調(diào)諧器件預(yù)置位置數(shù)據(jù);控制調(diào)諧器件的步進(jìn)電機(jī)實(shí)際位置自動(dòng)跟蹤預(yù)置位置;產(chǎn)生精確控制步進(jìn)電機(jī)的CP脈沖信號(hào)及Dir方向信號(hào)。
圖1 基于ARM11和FPGA的短波自動(dòng)調(diào)諧控制系統(tǒng)硬件構(gòu)架框圖
2.1 Tiny6410嵌入式主板硬件資源特性
Tiny6410嵌入式主板ARM芯片選用了三星公司的S3C6410,其功能強(qiáng)大,性價(jià)比高,在目前的嵌入式產(chǎn)品中得到了廣泛的應(yīng)用,其主板硬件資源如下:
(1)CPU處理器:Samsung S3C6410A,ARM1176JZF-S核,主頻533MHz,最高667Mhz;
(2)DDR RAM內(nèi)存:在板標(biāo)配256M DDR RAM(可選128M);
(3)Flash存儲(chǔ):在板256M/1GB Nand Flash,掉電非易失。
(4)VGA顯示:可直接連接4線電阻式觸摸屏和VGA顯示器;
(5)外擴(kuò)接口資源:4個(gè)串行接口、10Pin間距JTAG接口、20Pin雙LCD接口、20Pin間距SDIO接口、30Pin GPIO接口、40Pin 間距系統(tǒng)總線接口;
(6)操作系統(tǒng)支持:Linux2.6.28.6+Qtopia-2.2.0+QtE;WindowsCE.NET6.0。
該嵌入式主板的特點(diǎn)是采用了核心板+底板的形式:其核心板采用了6層板的設(shè)計(jì),它集成了256M DDR RAM, MLC NAND Flash(2GB)存儲(chǔ)器;底板主要是外設(shè)接口,在自動(dòng)調(diào)諧控制系統(tǒng)開發(fā)中,根據(jù)開發(fā)的需要增加或刪除外設(shè)接口,定做的底板只增加了40芯的系統(tǒng)總線接口,這樣減少成本,縮短系統(tǒng)開發(fā)周期。
圖2 步進(jìn)電機(jī)控制信號(hào)的產(chǎn)生
2.2 Tiny6410嵌入式主板與FPGA數(shù)據(jù)采集邏輯控制板的系統(tǒng)總線
FPGA數(shù)據(jù)采集邏輯控制板硬件電路主要包括模擬量數(shù)據(jù)采集電路、小鍵盤輸入電路、測(cè)頻寬帶放大器、激勵(lì)器控制電路和FPGA芯片組成。嵌入式主板和FPGA數(shù)據(jù)采集邏輯控制板之間的通信通過40芯系統(tǒng)總線,其中16根數(shù)據(jù)線、8根地址線和控制線。系統(tǒng)總線的16根數(shù)據(jù)線經(jīng)過74LS245雙向驅(qū)動(dòng)后與FPGA數(shù)據(jù)采集邏輯控制板上的所有接口電路連接,接口電路包括大規(guī)模可編程FPGA芯片XC3S400、各種IO芯片、AD芯片和DA芯片,從而使得硬件電路大大簡(jiǎn)化。再通過地址線的譯碼電路的選擇和讀/寫信號(hào)的控制,對(duì)相關(guān)接口電路進(jìn)行數(shù)據(jù)讀寫操作,實(shí)現(xiàn)數(shù)據(jù)交換。
邏輯控制程序的編寫基于VHDL語言和原理圖結(jié)合的方法,采用ISE10.1作為軟件設(shè)計(jì)平臺(tái)。FPGA的邏輯控制步進(jìn)電機(jī)旋轉(zhuǎn)方向和CP脈沖,將光電碼盤采集到的調(diào)諧器件實(shí)際位置計(jì)數(shù)器的數(shù)值與嵌入式發(fā)送過來的步進(jìn)電機(jī)預(yù)置位置的數(shù)值進(jìn)行比較,根據(jù)比較的結(jié)果來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向Dir;比較結(jié)果數(shù)值的絕對(duì)差值大,則送出的加速曲線陡最高的CP脈沖頻率高;反之,送出送出的加速曲線緩,最高的CP脈沖頻率低,使步進(jìn)電機(jī)按照加速和減速曲線進(jìn)行控制,實(shí)現(xiàn)調(diào)諧器件精確定位的目的。
Linux是開源的操作系統(tǒng),它以高效性和靈活性著稱,具有多任務(wù)的 能力。發(fā)射機(jī)自動(dòng)調(diào)諧系統(tǒng)是基于linux操作系統(tǒng)下的軟件開發(fā),開發(fā)完成后把應(yīng)用程序移植到在Tiny6410板上運(yùn)行。自動(dòng)調(diào)諧系統(tǒng)軟件設(shè)計(jì)包括驅(qū)動(dòng)程序和應(yīng)用軟件。
4.1 ARM系統(tǒng)總線驅(qū)動(dòng)程序
Linux內(nèi)核提供了對(duì)常規(guī)設(shè)備的支持:鍵盤、鼠標(biāo)、SD卡等等,但并不包含對(duì)FPGA數(shù)據(jù)采集邏輯控制板的硬件資源的支持,ARM通過驅(qū)動(dòng)程序才能夠訪問FPGA數(shù)據(jù)采集邏輯控制板的接口電路。接口電路包括大規(guī)模可編程FPGA芯片XC3S400、各種IO芯片、AD芯片和DA芯片。這些芯片組需要傳輸?shù)臄?shù)據(jù)都有獨(dú)立的鎖存器,ARM給這些鎖存器都分配了固定的外部地址,對(duì)相關(guān)接口電路進(jìn)行數(shù)據(jù)讀寫操作,通過系統(tǒng)總線地址線的譯碼電路的選擇和讀/寫信號(hào)的控制,對(duì)這些地址的讀寫也就是實(shí)現(xiàn)了對(duì)以上這些數(shù)據(jù)的傳遞。其流程如圖3所示。
圖3 系統(tǒng)總線驅(qū)動(dòng)程序流程圖
4.2 應(yīng)用軟件的編寫
自動(dòng)調(diào)諧控制系統(tǒng)的應(yīng)用軟件在Linux平臺(tái)采用Qt來編寫,應(yīng)用軟件主要實(shí)現(xiàn)以下三個(gè)功能:良好的人機(jī)交互界面;初始化驅(qū)動(dòng)步進(jìn)電機(jī),實(shí)時(shí)顯示當(dāng)前每路驅(qū)動(dòng)電機(jī)的實(shí)際位置,同時(shí)顯示各種模擬表值;提供自動(dòng)調(diào)諧頻率庫和頻道庫的增、刪、改、查操作。
Qt是一個(gè)跨平臺(tái)的C ++ 圖形用戶界面的程序框架,同時(shí)是開源的,具有非常強(qiáng)的可移植性,并且Qt提供多達(dá)250個(gè)以上的C ++ 類,可重用性非常好,給用戶的開發(fā)帶來了極大的方便。并且Linux和Qt都可以在一定的許可權(quán)限下免費(fèi)獲得,這極大地降低了系統(tǒng)成本以及提高系統(tǒng)的開放性。我們使用Qt可以在linux操作系統(tǒng)下快速、高效的進(jìn)行程序開發(fā)。同時(shí)Qt是一個(gè)跨平臺(tái)的開發(fā)工具,我們可以在windows環(huán)境下進(jìn)行開發(fā),然后通過編譯后可以直接在linux環(huán)境下運(yùn)行應(yīng)用程序,自動(dòng)調(diào)諧應(yīng)用軟件流程圖4所示。