??? 摘 要: 介紹了一種合成孔徑雷達(dá)系統(tǒng)綜合測(cè)控器的研制,以51單片機(jī)為核心,協(xié)同復(fù)雜邏輯門陣列(CPLD)、現(xiàn)場(chǎng)可編程門陣列(FPGA)及液晶顯示模塊" title="液晶顯示模塊">液晶顯示模塊(LCM)等外圍電路共同工作,集成了定時(shí)信號(hào)" title="定時(shí)信號(hào)">定時(shí)信號(hào)產(chǎn)生、基準(zhǔn)頻率" title="基準(zhǔn)頻率">基準(zhǔn)頻率信號(hào)產(chǎn)生、控制信號(hào)輸出、監(jiān)測(cè)信號(hào)輸入并顯示等功能。
??? 關(guān)鍵詞: 合成孔徑雷達(dá)? 控制? 測(cè)試? 單片機(jī)? 現(xiàn)場(chǎng)可編程門陣列
?
??? 合成孔徑雷達(dá)SAR(Synthetic Aperture Radar)是一種先進(jìn)的對(duì)地遙感工具,它可以獲得目標(biāo)的高分辨率圖像。與光學(xué)遙感相比,具有全天時(shí)、全天候工作、穿透障礙物成像等優(yōu)勢(shì)。
??? SAR系統(tǒng)是一個(gè)復(fù)雜的電子系統(tǒng),由定時(shí)、基準(zhǔn)頻率產(chǎn)生、信號(hào)發(fā)射/接收、數(shù)據(jù)存儲(chǔ)和傳送等許多部分組成。在SAR系統(tǒng)的研制過程中,需要對(duì)各個(gè)部分進(jìn)行細(xì)致的調(diào)試和測(cè)試,然后進(jìn)行集成測(cè)試。普通的測(cè)試設(shè)備只能針對(duì)SAR系統(tǒng)某一組成部分,功能單一缺乏通用性,特別是在集成測(cè)試時(shí)需要提供許多的檢測(cè)設(shè)備,各檢測(cè)設(shè)備間缺乏聯(lián)系,給測(cè)試工作帶來(lái)了不便。
??? 本文介紹了一種集成化的測(cè)控設(shè)備,它綜合了SAR系統(tǒng)各分機(jī)檢測(cè)設(shè)備的功能,具有監(jiān)測(cè)工作狀態(tài)、發(fā)送各種控制信號(hào)、提供基準(zhǔn)頻率和定時(shí)信號(hào)、發(fā)送數(shù)據(jù)和供電等通用功能,同時(shí)還針對(duì)單個(gè)測(cè)試對(duì)象的需要設(shè)計(jì)了相應(yīng)的特殊功能。體積小,功能多,使用方便。對(duì)整個(gè)SAR系統(tǒng)的調(diào)試測(cè)試只需要一臺(tái)設(shè)備,免去了使用多個(gè)檢測(cè)設(shè)備帶來(lái)的不便。本文從描述功能入手,簡(jiǎn)要敘述了綜合測(cè)控器的硬件組成,最后介紹了相關(guān)軟件的設(shè)計(jì)方法。
1 測(cè)控器主要功能
??? 合成孔徑雷達(dá)綜合測(cè)控器在測(cè)試中需要提供的信號(hào)通常有六種:(1) 控制信號(hào):用于設(shè)定被測(cè)對(duì)象的工作參數(shù),在不同的工作模式間切換;(2) 監(jiān)測(cè)信號(hào):接收被測(cè)對(duì)象輸出的工作狀態(tài)信號(hào)并將其顯示,以便操作人員能及時(shí)了解系統(tǒng)的運(yùn)行情況。(3) 定時(shí)基準(zhǔn)信號(hào):用于同步SAR系統(tǒng)各部分,使它們協(xié)同工作;(4) 基準(zhǔn)頻率信號(hào)" title="頻率信號(hào)">頻率信號(hào):以一個(gè)參考頻率信號(hào)為基準(zhǔn),綜合產(chǎn)生全相干、高穩(wěn)定度及低相位噪聲的多個(gè)工作頻率信號(hào),基準(zhǔn)頻率信號(hào)是SAR系統(tǒng)各組成部分工作的基準(zhǔn)時(shí)鐘信號(hào),一切工作的時(shí)序都基于此;(5)輔助數(shù)據(jù):測(cè)控器將被測(cè)對(duì)象所需的關(guān)于工作參數(shù)等相關(guān)信息的數(shù)據(jù)送入輔助數(shù)據(jù)接口" title="數(shù)據(jù)接口">數(shù)據(jù)接口緩存后再送至被測(cè)對(duì)象; (6)供電:為綜合測(cè)控器和被測(cè)對(duì)象提供各種直流電源。
2?硬件設(shè)計(jì)
??? 本設(shè)計(jì)采用單片機(jī)AT89C55作為控制核心,由CPLD輔助提供各芯片的控制邏輯;使用液晶顯示模塊和鍵盤提供友好的人機(jī)交互界面來(lái)設(shè)定工作模式和工作參數(shù),輸出相應(yīng)的控制信號(hào),并將各分機(jī)輸出的測(cè)試信號(hào)顯示于液晶屏幕上;由FPGA提供各被測(cè)分機(jī)正常工作所需要的定時(shí)同步信號(hào)、基準(zhǔn)頻率信號(hào);用一片先進(jìn)先出存儲(chǔ)器(FIFO)作為輔助數(shù)據(jù)接口,向被測(cè)對(duì)象發(fā)送輔助數(shù)據(jù);用交流轉(zhuǎn)直流的開關(guān)電源為自身和被測(cè)分機(jī)供電。整個(gè)硬件結(jié)構(gòu)如圖1所示。
????????????????
??? 下面從功能對(duì)應(yīng)硬件的角度詳細(xì)介紹硬件組成結(jié)構(gòu)。
2.1 控制核心
??? 綜合測(cè)控器的核心是單片機(jī),通過對(duì)單片機(jī)編程實(shí)現(xiàn)人機(jī)交互過程和對(duì)其他芯片的控制??紤]到待測(cè)項(xiàng)目較多、人機(jī)交互窗口的編程量較大,需要較多的程序存儲(chǔ)器,而且沒有復(fù)雜的數(shù)學(xué)計(jì)算,采用了ATMEL公司的AT89C55,它與通用的8051芯片的區(qū)別在于有更大(20KB)的程序存儲(chǔ)器、更大(256B)的數(shù)據(jù)存儲(chǔ)器和三個(gè)定時(shí)器。由外接的時(shí)鐘信號(hào)產(chǎn)生器給單片機(jī)提供時(shí)鐘。為了防止單片機(jī)運(yùn)行時(shí)程序進(jìn)入死循環(huán),使用一片MAX813L作看門狗。單片機(jī)通過地址總線、數(shù)據(jù)總線、讀寫控制線和經(jīng)過CPLD產(chǎn)生的片選等邏輯信號(hào)來(lái)控制其他芯片的工作。
2.2 人機(jī)交互
2.2.1 鍵盤
??? 采用專門定制的薄膜鍵盤配合8279芯片,它是INTEL公司的一款能控制矩陣鍵盤和數(shù)碼管顯示器的芯片。8279由單片機(jī)的ALE引腳提供時(shí)鐘信號(hào),工作在解碼掃描模式,操作人員由鍵盤設(shè)定被測(cè)對(duì)象的工作模式、輸入工作參數(shù),8279獲取矩陣鍵盤的按鍵信息并以中斷方式通知單片機(jī)響應(yīng)。單片機(jī)根據(jù)測(cè)控器當(dāng)前工作狀態(tài)和按鍵值決定采取何種操作。
2.2.2 液晶顯示模塊(LCM)
??? 用以顯示人機(jī)交互界面和被測(cè)對(duì)象輸出的監(jiān)測(cè)信號(hào)。
液晶顯示器顯示漢字的原理[1]是將一個(gè)漢字視為16×16的點(diǎn)陣圖像,某一點(diǎn)的控制邏輯為1則亮,為0則暗,這樣一個(gè)漢字需要16×16=256位=32字節(jié)的數(shù)據(jù)。傳統(tǒng)的圖形液晶顯示器需要提供每個(gè)漢字的點(diǎn)陣數(shù)據(jù),如果漢字?jǐn)?shù)量多,提取漢字點(diǎn)陣數(shù)據(jù)的工作將變得相當(dāng)繁瑣。本設(shè)計(jì)使用帶漢字庫(kù)的液晶顯示模塊(LCM),要顯示一個(gè)漢字,單片機(jī)只需向LCM寫入2字節(jié)的漢字內(nèi)碼,提取漢字點(diǎn)陣數(shù)據(jù)的工作由LCM完成。采用自帶字庫(kù)的LCM有兩個(gè)優(yōu)勢(shì):①每個(gè)漢字可節(jié)省32-2=30字節(jié)的存儲(chǔ)空間,對(duì)于資源有限的單片機(jī)來(lái)說非常實(shí)用;②從簡(jiǎn)化編程的角度考慮,寫入2字節(jié)的漢字內(nèi)碼比寫入32字節(jié)的點(diǎn)陣數(shù)據(jù)要方便得多,方便編程。
??? 根據(jù)以上分析,本設(shè)計(jì)采用北京青云創(chuàng)新公司的自帶中文字庫(kù)的單色液晶顯示模塊LCM24064ZK。
2.3 控制信號(hào)輸出
??? 單片機(jī)將操作員輸入的控制信息轉(zhuǎn)換為1~2字節(jié)的二進(jìn)制數(shù)輸出。由于單片機(jī)的并口資源有限,需要外接82C55作為并行輸出接口將控制信號(hào)傳送至被測(cè)對(duì)象。在實(shí)際應(yīng)用中,為了減小環(huán)境溫度和噪聲對(duì)信號(hào)傳輸質(zhì)量的影響,加入輸出輸出驅(qū)動(dòng)器,即將82C55輸出的TTL信號(hào)通過芯片DS26LS31C轉(zhuǎn)換成RS-422平衡差分信號(hào)輸出。平衡差分信號(hào)(Balanced Differential Signal)可以有效地抑制共模噪聲,增加信號(hào)傳輸距離和傳輸可靠性[2]。
2.4 監(jiān)測(cè)信號(hào)輸入和顯示
??? SAR系統(tǒng)的監(jiān)測(cè)信號(hào)有模擬和數(shù)字兩種。
數(shù)字監(jiān)測(cè)信號(hào)可以直接通過單片機(jī)并口輸入,如果某一位信號(hào)是‘0’則表示該信號(hào)對(duì)應(yīng)的硬件工作不正常,如為‘1’則表示工作正常。單片機(jī)根據(jù)需要在屏幕上顯示相關(guān)文字信息。
??? SAR系統(tǒng)的模擬監(jiān)測(cè)信號(hào)路數(shù)較多,故采用自帶16路選擇開關(guān)的模數(shù)轉(zhuǎn)換器ADC0816,它由單片機(jī)的地址線選擇對(duì)某一路模擬信號(hào)采樣,單片機(jī)發(fā)送一個(gè)脈沖啟動(dòng)A/D轉(zhuǎn)換器,讀入轉(zhuǎn)換后的8位數(shù)據(jù),進(jìn)行數(shù)學(xué)處理,再將結(jié)果顯示于屏幕上。
2.5 輔助數(shù)據(jù)輸出
??? 輔助數(shù)據(jù)接口由一片先進(jìn)先出存儲(chǔ)器(FIFO)IDT72200及輸出驅(qū)動(dòng)組成。FIFO有兩個(gè)I/O接口,它們可以工作在不同的時(shí)鐘頻率下,能在具有不同工作頻率的兩個(gè)系統(tǒng)之間傳送數(shù)據(jù)。
??? 將一個(gè)數(shù)據(jù)接口與單片機(jī)相連,由單片機(jī)的寫信號(hào)線(WR)作FIFO的寫時(shí)鐘,通過單片機(jī)的數(shù)據(jù)總線將操作員設(shè)置的輔助數(shù)據(jù)寫入FIFO暫存;另一個(gè)數(shù)據(jù)接口與被測(cè)對(duì)象相連,由被測(cè)對(duì)象提供FIFO的讀時(shí)鐘。當(dāng)單片機(jī)將數(shù)據(jù)都寫入輔助數(shù)據(jù)接口后發(fā)出一個(gè)握手信號(hào)通知被測(cè)對(duì)象讀取輔助數(shù)據(jù)。
2.6 基準(zhǔn)頻率和定時(shí)信號(hào)產(chǎn)生
??? 基準(zhǔn)頻率將作為被測(cè)對(duì)象的基準(zhǔn)工作時(shí)鐘;定時(shí)信號(hào)是一系列滿足特定時(shí)間關(guān)系的脈沖。定時(shí)信號(hào)的頻率和起始時(shí)刻都可調(diào)?;鶞?zhǔn)頻率和定時(shí)信號(hào)選用XILINX公司的SPARTANIII FPGA產(chǎn)生,型號(hào)是XC3S1500[3]。FPGA的結(jié)構(gòu)如圖2所示。
??????????????????
??? 單片機(jī)通過數(shù)據(jù)總線、地址總線、讀寫控制線和片選線連接FPGA。用一片時(shí)鐘信號(hào)產(chǎn)生器或經(jīng)過整形的外接時(shí)鐘源為FPGA提供時(shí)鐘信號(hào)。它經(jīng)過FPGA內(nèi)部的數(shù)字時(shí)鐘管理器(DCM)分頻或倍頻后產(chǎn)生所有頻率信號(hào)和定時(shí)信號(hào),這樣能保證產(chǎn)生的所有信號(hào)是高度相干的。操作員通過人機(jī)交互界面輸入定時(shí)信號(hào)的頻率、起始時(shí)刻等參數(shù),單片機(jī)將這些參數(shù)寫入FPGA的RAM中存儲(chǔ),作為延時(shí)計(jì)數(shù)器的初始值。FPGA中的延時(shí)計(jì)數(shù)器啟動(dòng)后,就會(huì)按照要求產(chǎn)生精確的頻率信號(hào)和定時(shí)信號(hào)。圖3顯示了單片機(jī)向FPGA的RAM寫數(shù)據(jù)的時(shí)序和FPGA產(chǎn)生的定時(shí)信號(hào)。
????????????????????????
2.7 電源
??? 綜合測(cè)控器使用220V交流電,用開關(guān)電源將交流電轉(zhuǎn)換成直流電,為被測(cè)對(duì)象供電;在測(cè)控器內(nèi)部,各個(gè)芯片根據(jù)需要使用相應(yīng)的DC/DC模塊進(jìn)行二次電源轉(zhuǎn)換。
3 軟件設(shè)計(jì)
3.1 單片機(jī)編程
??? 用匯編語(yǔ)言編寫的程序可讀性差且不易修改;C語(yǔ)言直觀易用,而且有許多函數(shù)庫(kù)可調(diào)用[4]。故采用C語(yǔ)言編寫單片機(jī)程序,編譯器是KEIL UV3。關(guān)于單片機(jī)對(duì)外圍電路控制的方法在許多教材中都有詳細(xì)的講解,本文不再詳述。
編程的重點(diǎn)在于人機(jī)交互的實(shí)現(xiàn)。由于是集成化的檢測(cè)設(shè)備,被測(cè)對(duì)象較多,人機(jī)交互界面多,編程任務(wù)量大。人機(jī)交互有兩個(gè)難點(diǎn),一是漢字的顯示,二是多級(jí)窗口的實(shí)現(xiàn)。
3.1.1 漢字的顯示
??? 由于采用了帶中文字庫(kù)的LCM,要顯示一個(gè)漢字只需寫入2字節(jié)的漢字內(nèi)碼[5]。具體做法是:用C語(yǔ)言編程,將要顯示的若干漢字(或者英文和數(shù)字)定義為一個(gè)字符串,按順序?qū)⒆址拿總€(gè)字符寫入LCM后即可顯示相應(yīng)漢字。以筆者使用的LCM24064ZK為例,部分程序如下:
??? #include
??? #define LcmData XBYTE[地址]????????//LCM的數(shù)據(jù)接口
??? sbit Busy = Px^x;?
????????????????????????? ???????????? //用單片機(jī)的Px.x口連接忙碌標(biāo)志位
??? unsigned char s[]=“你好!ABC”;?? //要顯示的內(nèi)容
????void show_a_sentence(*s)???????????//顯示一句話的函數(shù)
??? {
??? while (*s!=‘0’) {??????????????? //判斷字符串是否結(jié)束
??????while (Busy==1);?????????????? //如果LCM忙碌則一直等待
??????????? LcmData = *s;?????????? //輸出一字節(jié)漢字內(nèi)碼
????????????s++;?????????????????? //指針指向下一字節(jié)內(nèi)碼
??????????? }
??? }
??? 在這個(gè)例子中沒有列出LCM初始化的程序,在實(shí)際應(yīng)用中這是與具體的LCM型號(hào)有關(guān)的,請(qǐng)參考相應(yīng)的數(shù)據(jù)手冊(cè)。在主函數(shù)main中只要調(diào)用函數(shù)show_a_sentence(s),單片機(jī)便將漢字內(nèi)碼一個(gè)個(gè)地寫入LCM的數(shù)據(jù)存儲(chǔ)器,即可在液晶屏幕上顯示“你好!ABC”。
??? 用C語(yǔ)言編程省去了查詢漢字內(nèi)碼的步驟,大大提高了工作效率。
3.1.2 多級(jí)窗口的實(shí)現(xiàn)
??? 假設(shè)現(xiàn)在系統(tǒng)處于窗口A1的狀態(tài),A1有三個(gè)子選項(xiàng)B1、B2、B3,現(xiàn)在的任務(wù)是等待按鍵。如果按下的是數(shù)字鍵1、2或3則根據(jù)按鍵值判定進(jìn)入B1、B2或B3子選項(xiàng);如果按下的是返回鍵則返回上一級(jí)窗口。假設(shè)選擇了第一項(xiàng)B1,程序進(jìn)入B1窗口,然后等待按鍵。如圖4所示。
????????????????????????????
??? 編程時(shí),事先根據(jù)鍵盤控制芯片8279的硬件接線情況,用宏#define定義BACK、KEY1、KEY2、KEY3分別對(duì)應(yīng)于鍵盤上的“返回”、“1”、“2”、“3”各鍵的鍵值,將NO_EFFECT定義為一個(gè)不存在的鍵值,表示按鍵無(wú)效。函數(shù)show_A1()的功能是顯示窗口A1的內(nèi)容,函數(shù)getkey()獲取按鍵值。
void A1()?????????????????????????//調(diào)用此函數(shù)進(jìn)入A1窗口
{
??unsigned char key;????????????? //聲明存儲(chǔ)按鍵值的變量
???? ?show_A1();??????????????????? //顯示窗口A1
???? ?do {
???? ??key=getkey();?????????????? //獲取按鍵值
???? ??switch (key) {?????????????? //由鍵值判定采用何種操作
???? ???case BACK: return; break;?? //返回上級(jí)窗口
???? ???case KEY1: B1(); break;???? //進(jìn)入B1窗口
???? ???case KEY2: B2(); break;???? //進(jìn)入B2窗口
???? ???case KEY3: B3(); break;?????? //進(jìn)入B3窗口
???? ??default: key=NO_EFFECT;????? //按鍵無(wú)效
???? ??}
??}while (key==NO_EFFECT)//當(dāng)按鍵無(wú)效時(shí)重新選擇
}
3.2 FPGA的VHDL編程
??? 如前所述,雷達(dá)測(cè)控器需要用FPGA來(lái)提供各種基準(zhǔn)頻率和定時(shí)信號(hào),即需要FPGA對(duì)一個(gè)輸入時(shí)鐘進(jìn)行分頻、倍頻、延時(shí)等操作?,F(xiàn)在FPGA中集成了很多具有特定功能的模塊,使用這些模塊可以方便地獲得高質(zhì)量、高性能的信號(hào)。SPARTAN III系列FPGA通過數(shù)字時(shí)鐘管理器DCM(Digital Clock Manager)使用戶靈活、完全地控制時(shí)鐘頻率和相位偏移。即使工作環(huán)境的溫度和電壓在一定范圍內(nèi)有變動(dòng),DCM仍可以保持高精度的信號(hào)質(zhì)量。DCM的分頻功能可以達(dá)到原時(shí)鐘信號(hào)頻率的1/16,倍頻功能可以達(dá)到32倍,而且可消除由電路傳播延時(shí)導(dǎo)致的輸出信號(hào)與輸入信號(hào)之間的相位差。XILINX 推出的集成設(shè)計(jì)環(huán)境(ISE)中提供了DCM的VHDL模板,用模板定義好輸入輸出信號(hào)和頻率參數(shù)即可方便地運(yùn)用DCM。關(guān)于VHDL硬件描述語(yǔ)言的使用可以參考相關(guān)教材。
4 雷達(dá)綜合測(cè)控器的使用
??? 使用綜合測(cè)控器,能提供任何一個(gè)預(yù)定被測(cè)對(duì)象所需要的測(cè)試信號(hào)。測(cè)控器的接口是通用的,不同的分機(jī)通過各自的數(shù)據(jù)傳輸電纜與之連接。將各電纜線連接好后,啟動(dòng)電源,進(jìn)入主界面,根據(jù)提示選擇被測(cè)對(duì)象,進(jìn)入與之相關(guān)的監(jiān)控界面進(jìn)行測(cè)試與控制。在實(shí)際運(yùn)行中,整個(gè)系統(tǒng)工作正常,完成了預(yù)定的功能要求。
??? 用單片機(jī)作控制器對(duì)整個(gè)設(shè)備各芯片的工作進(jìn)行調(diào)度,簡(jiǎn)單方便;用FPGA產(chǎn)生頻率和定時(shí)信號(hào),精度高。以此為基礎(chǔ)的合成孔徑雷達(dá)綜合測(cè)控器實(shí)現(xiàn)了監(jiān)測(cè)、控制、信號(hào)產(chǎn)生、數(shù)據(jù)傳輸?shù)榷喾N功能,功能強(qiáng)、體積小、集成度高,在SAR系統(tǒng)調(diào)試和測(cè)試中有很大的應(yīng)用價(jià)值。本文介紹的硬件設(shè)計(jì)方案和液晶顯示模塊的使用方法在其他硬件系統(tǒng)的設(shè)計(jì)中也具有一定的參考價(jià)值。
參考文獻(xiàn)
[1] 李華. MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M]. 北京:北京航空航天大學(xué)出版社, 1996.
[2] ?National Semiconductor, Inc. TIA/EIA-422-B Overview?[EB/OL]. http://www.national.com.
[3] ?Xilinx, Inc. Spartan-3 FPGA Family:Complete Data Sheet?[EB/OL].[2006-04-26].http://www.xilinx.com.
[4] ?徐愛鈞,彭秀華. 單片機(jī)高級(jí)語(yǔ)言C51 Windows環(huán)境編程與應(yīng)用[M]. 北京:電子工業(yè)出版社, 2004.
[5] ?北京青云創(chuàng)新科技發(fā)展有限公司.圖形液晶顯示模塊LCM24064ZK使用說明書[EB/OL]. http://www.qingyunit.com.