基于MCU的鎖相環(huán)鎖定時(shí)間測(cè)量系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為測(cè)量鎖相環(huán)鎖定時(shí)間,通過比較各鎖相環(huán)芯片的接口特點(diǎn),設(shè)計(jì)通用的測(cè)量系統(tǒng)。該系統(tǒng)包括上位機(jī)、下位機(jī)軟件以及基于AT89C 51的控制電路,上位機(jī)和下位機(jī)使用串口通信。通用性和實(shí)時(shí)性是系統(tǒng)最大特點(diǎn),在軟件和硬件的設(shè)計(jì)上保證系統(tǒng)能兼容大多數(shù)常用鎖相環(huán)芯片;并能根據(jù)用戶輸入的控制參數(shù)實(shí)時(shí)控制鎖相環(huán)且測(cè)量其鎖定時(shí)間。通過實(shí)際應(yīng)用證明,該系統(tǒng)能準(zhǔn)確測(cè)量鎖定時(shí)間,有效減少鎖相環(huán)設(shè)計(jì)與調(diào)試過程中的工作量與復(fù)雜度。
關(guān)鍵詞:AT89C51;鎖相環(huán);鎖定時(shí)間;串口
鎖相環(huán)技術(shù)是一種頻率合成技術(shù),在各類通信和控制系統(tǒng)有著重要應(yīng)用。其中鎖定時(shí)間是環(huán)路的重要參數(shù)。商業(yè)的鎖相環(huán)設(shè)計(jì)軟件僅能在仿真層面上計(jì)算出鎖定時(shí)間的理論值,而本文所設(shè)計(jì)的鎖定時(shí)間測(cè)量系統(tǒng)包括軟件和硬件,可動(dòng)態(tài)控制鎖相環(huán)并實(shí)時(shí)測(cè)量其鎖定時(shí)間。典型的鎖相環(huán)系統(tǒng)包括分頻器、鑒相器、濾波器、壓控振蕩器。其中鑒相器和分頻器往往都集成在一個(gè)鎖相環(huán)芯片中,可使用單片機(jī)對(duì)其進(jìn)行編程控制。鎖相環(huán)芯片控制數(shù)據(jù)的傳輸大都采用串行方式,僅在一些細(xì)節(jié)上有所不同,這給設(shè)計(jì)通用的鎖相環(huán)鎖定時(shí)間測(cè)量系統(tǒng)帶來可能。
1 系統(tǒng)原理
測(cè)量系統(tǒng)結(jié)構(gòu)如圖1所示。上位機(jī)通過串口和單片機(jī)通信。上位機(jī)負(fù)責(zé)讀取用戶輸入的控制參數(shù)并傳遞給單片機(jī),單片機(jī)負(fù)責(zé)將控制參數(shù)寫入鎖相環(huán)并測(cè)量鎖定時(shí)間,之后交由上位機(jī)顯示。
通常鎖相環(huán)芯片與單片機(jī)的編程接口電路如圖2(a)所示,CLOCK為芯片和單片機(jī)提供同步時(shí)鐘;DATA是芯片控制數(shù)據(jù)的串行輸入引腳;LE是芯片數(shù)據(jù)寄存器控制引腳,可通過LE的上升沿觸發(fā)將存儲(chǔ)在芯片移位寄存器中的DATA串行數(shù)據(jù)送入芯片內(nèi)各部件;CE為使能引腳。以上幾個(gè)控制信號(hào)的時(shí)序如圖2(b)所示,將以上幾個(gè)引腳分別接入單片機(jī)的I/O口,并按照控制信號(hào)的時(shí)序向鎖相環(huán)芯片寫控制數(shù)據(jù),便可控制鎖相環(huán)芯片。
MUXOUT是芯片的復(fù)用引腳,可配置成鎖定檢測(cè)輸出,即當(dāng)環(huán)路鎖定時(shí)該引腳便輸出高電平或低電平。所以環(huán)路鎖定時(shí)間測(cè)量原理為:將MUXOUT引腳連接到單片機(jī)的外部中斷引腳,當(dāng)單片機(jī)發(fā)送完數(shù)據(jù)后打開其內(nèi)部定時(shí)器,環(huán)路鎖定后MUXOUT引腳便會(huì)觸發(fā)單片機(jī)的外部中斷,在單片機(jī)的中斷程序中記錄下定時(shí)器的值便可準(zhǔn)確測(cè)量到環(huán)路的鎖定時(shí)間。
通過比較發(fā)現(xiàn),各類型鎖相環(huán)芯片的編程接口除了上述共同點(diǎn)以外還存在如下幾點(diǎn)差異:輸入接口所要求的電平不同;MUXOUT的鎖定指示輸出不同,即不同芯片的MUXOUT有可能輸出高電平表示鎖定,也有可能輸出低電平表示鎖定;DATA輸入的順序不同,例如當(dāng)控制數(shù)據(jù)為1011時(shí),某些芯片要求數(shù)據(jù)逆序輸入,即輸入順序?yàn)?101;DATA位數(shù)不同,不同芯片的控制數(shù)據(jù)不盡一致,因此數(shù)據(jù)位數(shù)也不一致。本文中前2點(diǎn)差異通過硬件電路解決,后2點(diǎn)通過上位機(jī)和下位機(jī)軟件解決。
2 硬件設(shè)計(jì)
本系統(tǒng)中的單片機(jī)選擇AT89C51,主要基于2點(diǎn)考慮:AT89C51內(nèi)置RS 232串口控制器,系統(tǒng)僅需外接串口驅(qū)動(dòng)器即可完成與上位機(jī)的硬件連接;鎖相環(huán)的鎖定時(shí)間范圍一般位于1μs~1 ms之間,AT89C51內(nèi)有兩路定時(shí)器可選擇,若外接12 MHz的晶振,則可實(shí)現(xiàn)精度為1μs范圍為65.536 ms的定時(shí)器,滿足測(cè)量要求。
系統(tǒng)使用單片機(jī)的外部中端INIT0來檢測(cè)環(huán)路是否鎖定,INIT0中斷可配置為下降沿觸發(fā)。串口驅(qū)動(dòng)器采用MAX232,該芯片主要負(fù)責(zé)將單片機(jī)的輸出電平轉(zhuǎn)化為差分電平以便與PC機(jī)通信。該芯片中有兩路獨(dú)立的通道,這里使用其中的T2/R2。
3 軟件設(shè)計(jì)
3.1 上位機(jī)設(shè)計(jì)
系統(tǒng)的整個(gè)軟件部分包括PC中的上位機(jī)和單片機(jī)中的下位機(jī)。上位機(jī)設(shè)計(jì)基于VC6.0中的MFC應(yīng)用軟件框架。上位機(jī)流程圖如圖3所示。
上位機(jī)流程主要基于一個(gè)前后臺(tái)系統(tǒng),用一個(gè)死循環(huán)來不停的監(jiān)聽用戶輸入和串口中斷。如前文所述,鎖相環(huán)芯片的控制數(shù)據(jù)都是以串行方式送入DATA引腳的,不同廠商的鎖相環(huán)芯片控制數(shù)據(jù)的接收順序會(huì)不同。因此在上位機(jī)軟件中需添加一個(gè)接口來讓用戶來告知下位機(jī)控制數(shù)據(jù)的發(fā)送順序。同時(shí)控制數(shù)據(jù)的長(zhǎng)度也需預(yù)先確定,以防止下位機(jī)在控制數(shù)據(jù)傳輸完畢前便將控制數(shù)據(jù)送與鎖相環(huán)。因?yàn)榇谑且宰止?jié)為單位傳輸,所以數(shù)據(jù)長(zhǎng)度以字節(jié)為單位。上位機(jī)界面如圖4所示。
3.2 下位機(jī)設(shè)計(jì)
單片機(jī)中的下位機(jī)負(fù)責(zé)控制鎖相環(huán)并測(cè)量鎖定時(shí)間。流程圖如圖5所示。
下位機(jī)也是基于一個(gè)前后臺(tái)系統(tǒng),在一個(gè)死循環(huán)內(nèi)等待各中斷響應(yīng)。在單片機(jī)向鎖相環(huán)發(fā)送完控制數(shù)據(jù)后開啟外部中斷,若有外部中斷響應(yīng)則在中斷服務(wù)程序中讀取定時(shí)器的值,即為鎖定時(shí)間,中斷結(jié)束后將定時(shí)器清零,以便再次測(cè)量;若當(dāng)定時(shí)器溢出時(shí)仍未收到外部中斷,表明鎖相環(huán)未能鎖定,則發(fā)送未鎖定信息給上位機(jī)。這里設(shè)置了3個(gè)中斷向量分別為外部中斷、定時(shí)器T0中斷、串口中斷。在默認(rèn)情況下它們的中斷優(yōu)先級(jí)依次從高到低,為防止不必要的中斷嵌套,在響應(yīng)其中一個(gè)中斷服務(wù)時(shí)應(yīng)將另兩個(gè)中斷關(guān)掉,中斷服務(wù)結(jié)束后再開啟。
AT89C51有兩路定時(shí)/計(jì)數(shù)器T0,T1。本系統(tǒng)中T1用來設(shè)置串口的波特率,串口有4種工作方式,本文使用方式1,即8位異步通信接口,一幀數(shù)據(jù)有10位,1位起始位,一位停止位。T0用來測(cè)量鎖定時(shí)間,T0定時(shí)器使用系統(tǒng)時(shí)鐘的12分頻作為時(shí)鐘源,將T0配置為16位定時(shí)器模式,所以環(huán)路鎖定時(shí)間可由下式確定,單位為μs。
T=(TH0×256+TL0)×Tosc×12 (1)
式中:TH0,TL0分別是在外部中斷服務(wù)程序中讀到的定時(shí)器T0的數(shù)據(jù)寄存器高8和低8位;Tosc是單片機(jī)外接晶振的振蕩周期,本文外接晶振為12 MHz,即為1/12μs,因此本系統(tǒng)可實(shí)現(xiàn)精度為1μs的時(shí)間測(cè)量。根據(jù)圖2所示的時(shí)序圖,單片機(jī)向鎖相環(huán)發(fā)送控制數(shù)據(jù)的子程序如下:
4 結(jié)語
本文采用MFC、串口、AT89C51所設(shè)計(jì)的測(cè)量系統(tǒng)能準(zhǔn)確測(cè)量鎖相環(huán)的鎖定時(shí)間,精度達(dá)到1μs;并且有很強(qiáng)的通用性,能兼容常見的各類鎖相環(huán)芯片。系統(tǒng)上位機(jī)的人機(jī)操作界友好,硬件電路結(jié)構(gòu)簡(jiǎn)單。