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