李莉+熊晶
摘 要: 根據(jù)相位重合點(diǎn)理論對(duì)等精度數(shù)字頻率計(jì)進(jìn)行改進(jìn),采用該理論可使對(duì)標(biāo)準(zhǔn)頻率信號(hào)和待測(cè)頻率的計(jì)數(shù)同時(shí)開(kāi)始,消除了對(duì)標(biāo)準(zhǔn)頻率信號(hào)計(jì)數(shù)時(shí)±1個(gè)周期的誤差。系統(tǒng)設(shè)計(jì)主要包括三部分:待測(cè)頻率的整形放大部分;計(jì)數(shù)部分,采用CPLD,相位重合點(diǎn)的檢測(cè)也在CPLD中完成;頻率的計(jì)算和顯示部分由單片機(jī)AT89C51完成。CPLD部分的仿真使用Max+Plus Ⅱ,單片機(jī)部分的仿真使用Protues軟件。測(cè)試結(jié)果表明,待測(cè)頻率在1 Hz~10 MHz范圍內(nèi),頻率計(jì)測(cè)量精度高,穩(wěn)定性好。
關(guān)鍵詞: 相位重合點(diǎn)理論; CPLD; 等精度數(shù)字頻率計(jì); Max+Plus Ⅱ
中圖分類號(hào): TN710?34; TM935.13 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)10?0118?03
頻率計(jì)是一種應(yīng)用在電子、通信、工業(yè)生產(chǎn)領(lǐng)域的常用的電子測(cè)量?jī)x器。常用的對(duì)頻率計(jì)的設(shè)計(jì)方法有直接測(cè)量法,模擬內(nèi)插法,多周期同步法,等精度測(cè)量法[1?2]等。在這些測(cè)量方法中等精度測(cè)量法的精度最高,但是該方法對(duì)標(biāo)準(zhǔn)頻率信號(hào)的計(jì)數(shù)部分存在±1個(gè)周期的誤差,本文采用相位重合點(diǎn)理論,可消除±1個(gè)周期的誤差。
1 系統(tǒng)整體設(shè)計(jì)方案
由于待測(cè)頻率fx往往是小信號(hào),并且不是方波,所以要先放大和整形,經(jīng)過(guò)處理后的信號(hào)和標(biāo)準(zhǔn)頻率信號(hào)f0送到CPLD,單片機(jī)對(duì)CPLD發(fā)控制命令,CPLD進(jìn)行相位檢測(cè)和計(jì)數(shù),計(jì)得的兩組數(shù)值(在實(shí)際閘門時(shí)間內(nèi)對(duì)fx的計(jì)數(shù)值nx和對(duì)f0的計(jì)數(shù)值n0)送往8051,單片機(jī)根據(jù)公式[fxnx=f0n0]計(jì)算出fx,最后通過(guò)液晶顯示器LM0 16L 顯示出當(dāng)前頻率值。整體設(shè)計(jì)方案如圖1所示。
圖1 系統(tǒng)框圖
2 系統(tǒng)設(shè)計(jì)
2.1 放大整形電路的設(shè)計(jì)
放大部分采用共射極放大電路,整形部分采用施密特觸發(fā)器74LS14。由于共射極放大電路是反向放大,而施密特觸發(fā)器內(nèi)部就帶有反向器,所以最終可實(shí)現(xiàn)放大整形后不會(huì)反向。
2.2 相位重合檢測(cè)部分
2.2.1 傳統(tǒng)等精度頻率計(jì)測(cè)頻原理
傳統(tǒng)的等精度頻率[3?4]計(jì)測(cè)量原理[5]如圖2所示。標(biāo)準(zhǔn)頻率信號(hào)f0送入計(jì)數(shù)器counter0的時(shí)鐘端CLK,待測(cè)頻率fx連D觸發(fā)器的時(shí)鐘端和counterx的時(shí)鐘端CLK,D觸發(fā)器的輸入端接閘門信號(hào),輸出端接兩個(gè)計(jì)數(shù)器的使能端。當(dāng)閘門信號(hào)在高電平器期間,并且fx是上升沿時(shí),兩個(gè)計(jì)數(shù)器同時(shí)計(jì)數(shù),停止計(jì)數(shù)時(shí)刻是在閘門信號(hào)變?yōu)榈碗娖胶蟛⑶沂莊x的下一個(gè)時(shí)鐘信號(hào)上升沿到來(lái)時(shí)結(jié)束計(jì)數(shù)。這種方法可以保證對(duì)fx的計(jì)數(shù)不存在任何誤差,但是對(duì)f0的計(jì)數(shù)則有±1個(gè)誤差,并且對(duì)于f0的給定,必定是個(gè)高頻信號(hào),比如100 MHz,而采用本文的方法對(duì)f0則無(wú)要求。
圖2 傳統(tǒng)等精度頻率計(jì)結(jié)構(gòu)圖
2.2.2 相位重合理論
設(shè)[f1=A×f],[f2=B×f],A,B是相互沒(méi)有公約數(shù)的兩個(gè)正整數(shù),則f就是f1和f2的最大公因子頻率fmaxc。設(shè)[tminc=1fmaxc],tminc叫作最小公倍數(shù)周期。在一個(gè)tminc周期中f1和f2中的相位差中有一些值分別等于初始相位差加0,ΔT,2ΔT,3ΔT,…,ΔT=[fmaxcf1f2],這些值遠(yuǎn)小于f1和f2的周期值,這樣的一些點(diǎn)叫做兩信號(hào)的“相位重合點(diǎn)”。所謂相位重合并非絕對(duì)重合,而是一個(gè)相對(duì)的概念。在一個(gè)tminc周期中包含A個(gè)頻率值是f1的周期和B個(gè)頻率值是f2的周期。
利用上述理論,可得到相位重合點(diǎn)檢測(cè)電路[6?9],如圖3所示。
圖3 相位重合檢測(cè)電路
2.2.3 修正后的相位重合檢測(cè)電路
該電路理論可以找到相位重合點(diǎn),是利用信號(hào)經(jīng)過(guò)非門之后有延時(shí),但是仿真不通過(guò),這是由于仿真軟件把原信號(hào)和取反后再相與邏輯綜合掉了,所以經(jīng)過(guò)非門之后的信號(hào)必須要有個(gè)延時(shí)才可以,同理加入邏輯門的方法進(jìn)行延時(shí)也行不通,比如再增加2個(gè)非門的方法。在Max+Plus Ⅱ軟件中有延時(shí)單元LCELL可以用,但是延時(shí)不精確,甚至可能造成系統(tǒng)不穩(wěn)定。由于Max+Plus Ⅱ中沒(méi)有電容電阻這些元件,所以也不能用RC電路進(jìn)行延時(shí)。本文采用延時(shí)的方法是通過(guò)加入D觸發(fā)器來(lái)延時(shí),信號(hào)經(jīng)過(guò)D觸發(fā)器的延時(shí)時(shí)間為1個(gè)CP脈沖的時(shí)間,電路圖如圖4所示。
圖4 修正后的相位重合點(diǎn)檢測(cè)電路
從波形圖圖5可以看出,a信號(hào)與b信號(hào)的初始相位差為0,b信號(hào)的周期是a信號(hào)的3倍,根據(jù)相位重合點(diǎn)理論,可以得到在每一個(gè)300 ns后必然有相位重合點(diǎn)。當(dāng)chonghe端是一個(gè)窄脈沖的上升沿時(shí)說(shuō)明b信號(hào)和a信號(hào)相位重合。由于信號(hào)經(jīng)過(guò)非門有幾個(gè)ns的延時(shí),并且經(jīng)過(guò)D觸發(fā)器后還有1個(gè)CP脈沖的延時(shí),所以觀測(cè)到的相位重合點(diǎn)有幾個(gè)ns的滯后。
圖5 修正后的相位檢測(cè)電路波形圖
2.3 計(jì)數(shù)電路
計(jì)數(shù)電路部分加入相位重合檢測(cè)電路構(gòu)成實(shí)際的計(jì)數(shù)電路,PINLVJIXIN2模塊是普通的等精度計(jì)數(shù)器模塊,采用VHDL語(yǔ)言編寫(xiě),各引腳含義如下:bclk,標(biāo)準(zhǔn)時(shí)鐘信號(hào)輸入端;tclk1,待測(cè)信號(hào)輸入端;clr,清零端;cl,預(yù)置門控信號(hào);tclk,計(jì)數(shù)控制端(tclk引腳是上升沿,并且cl是高電平,開(kāi)始計(jì)數(shù),當(dāng)cl是低電平,并且下一個(gè)tclk上升沿到來(lái)時(shí),停止計(jì)數(shù));start,開(kāi)始計(jì)數(shù)的輸出信號(hào),此信號(hào)為‘1表明真正開(kāi)始計(jì)數(shù),為‘0表明停止計(jì)數(shù); sel[2..0],多路通道數(shù)據(jù)選擇端;當(dāng)sel 分別取值0,1,2,3時(shí),由低8位到高8位分4次讀出標(biāo)準(zhǔn)頻率計(jì)數(shù)值, 當(dāng)sel 分別取值4,5,6,7時(shí),由低8位到高8位分4次讀出待測(cè)頻率計(jì)數(shù)值。data[7..0],8位數(shù)據(jù)端口。實(shí)體及部分結(jié)構(gòu)體程序如下:
entity pinlvjixin2 is
port(bclk, tclk, tclk1, clr, cl:in std_logic;
start:out std_logic;
sel:in std_logic_vector(2 downto 0);
data:out std_logic_vector(7 downto 0));
end entity pinlvjixin2;
architecture one of pinlvjixin2 is
signal bzqxin:std_logic_vector(31 downto 0);
signal tsqxin:std_logic_vector(31 downto 0);
signal ena:std_logic;
signal bena:std_logic;
begin
start<=ena;
bena<=ena;
data<=bzqxin(7 downto 0) when sel="000" else
bzqxin(15 downto 8) when sel="001" else
bzqxin(23 downto 16) when sel="010" else
bzqxin(31 downto 24) when sel="011" else
tsqxin(7 downto 0) when sel="100" else
tsqxin(15 downto 8) when sel="101" else
tsqxin(23 downto 16) when sel="110" else
tsqxin(31 downto 24) when sel="111" else
tsqxin(31 downto 24);
bzh :process(clr, bclk,bena)
begin
if clr=′1′ then bzqxin<=(others=>′0′);
elsif bclk′event and bclk=′1′ then
if bena=′1′ then bzqxin<=bzqxin+1;
end if;
end if;
end process;
……
PINLVJIXIN2計(jì)數(shù)模塊編譯通過(guò)后可生成原理圖,PINLVJIXIN2的原理圖和相位重合檢測(cè)電路共同構(gòu)成相位檢測(cè)及計(jì)數(shù)模塊圖, 如圖 6所示,相位重合檢測(cè)電路的輸出端chonghe引腳連PINLVJIXIN2的tclk端。當(dāng)chonghe端輸出一個(gè)窄脈沖時(shí),并且cl是高電平期間,在這個(gè)窄脈沖的上升沿,PINLVJIXIN2模塊中的兩個(gè)計(jì)數(shù)器(計(jì)標(biāo)準(zhǔn)時(shí)鐘信號(hào)的計(jì)數(shù)器和計(jì)待測(cè)頻率的計(jì)數(shù)器)開(kāi)始計(jì)數(shù),停止計(jì)數(shù)時(shí)刻是在cl信號(hào)變?yōu)榈碗娖揭院螅?dāng)chonghe端又來(lái)一個(gè)窄脈沖的上升沿時(shí)停止計(jì)數(shù)。這樣可以保證兩個(gè)計(jì)數(shù)器是同時(shí)開(kāi)始計(jì)數(shù),并且同時(shí)停止計(jì)數(shù),可消除傳統(tǒng)等精度頻率計(jì)對(duì)標(biāo)準(zhǔn)頻率信號(hào)計(jì)數(shù)時(shí)+1個(gè)脈沖的誤差。
從圖7 CPLD計(jì)數(shù)輸出波形圖可以看出,當(dāng)sel[2..0]為4,5,6,7時(shí)fx計(jì)了1個(gè)脈沖,即公式[fxnx=f0n0]中的nx=1,當(dāng)sel[2..0]為0,1,2,3時(shí)f0計(jì)了3個(gè)脈沖,即n0=3,計(jì)數(shù)結(jié)果正確。
圖6 相位檢測(cè)及計(jì)數(shù)模塊頂層文件原理圖
圖7 CPLD計(jì)數(shù)輸出波形圖
2.4 單片機(jī)模塊
在該模塊中,單片機(jī)完成3個(gè)功能[10],一個(gè)是對(duì)CPLD發(fā)命令并接收CPLD傳送回的數(shù)據(jù),P0.7(接clr端)先發(fā)低電平,使兩個(gè)32位計(jì)數(shù)器清零,當(dāng)清零之后,單片機(jī)給CPLD先發(fā)高電平信號(hào)再發(fā)低電平信號(hào), 通過(guò)P3.7(接cl),單片機(jī)不斷檢測(cè)P3.6引腳(接start端),當(dāng)P3.6由高電平變?yōu)榈碗娖綍r(shí), P3.6,P3.5,P3.4(接sel[2..0])分別取值0,1,2,3時(shí),由低8位到高8位分4次讀出標(biāo)準(zhǔn)頻率計(jì)數(shù)值,當(dāng)sel 分別取值4,5,6,7時(shí),由低8位到高8位分4次讀出待測(cè)頻率計(jì)數(shù)值,這時(shí)數(shù)據(jù)按這個(gè)對(duì)應(yīng)關(guān)系送到P1口;另一個(gè)功能是根據(jù)[fxnx=f0n0]計(jì)算出fx,采用匯編語(yǔ)言,編譯軟件選用WAVE仿真軟件,最后一個(gè)功能則是進(jìn)行顯示,顯示器采用LM0 16L。液晶顯示部分較為簡(jiǎn)單就不在詳述。
3 結(jié) 語(yǔ)
本設(shè)計(jì)利用相位重合點(diǎn)理論提高了等精度頻率計(jì)的精度,重點(diǎn)設(shè)計(jì)了相位檢測(cè)電路,并和計(jì)數(shù)電路相結(jié)合, 采用改進(jìn)電路后的計(jì)數(shù)器件是大規(guī)模可編程邏輯器件CPLD,利用其高速、靈活的特點(diǎn),計(jì)算及顯示部分采用AT89C51單片機(jī)和LM0 16L。經(jīng)Max+Plus Ⅱ及WAVE和Protues進(jìn)行分塊仿真,在理論上論證了系統(tǒng)的穩(wěn)定性和可靠性。
參考文獻(xiàn)
[1] 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2006.
[2] 黃俊,余水寶.基于STC12C5A60S2的高頻高精度頻率計(jì)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2012,31(17):22?24.
[3] 郝統(tǒng)關(guān),程明.基于FPGA Nios Ⅱ的等精度頻率計(jì)設(shè)計(jì)[J].電測(cè)與儀表,2009,46(2):56?58.
[4] 李云紅.相位檢測(cè)頻率系統(tǒng)的設(shè)計(jì)[J].艦船檢電子工程,2009(4):171?173.
[5] 李國(guó)利,劉旭明,翟力欣.基于FPGA與單片機(jī)的等精度頻率計(jì)的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,21(22):171?172.
[6] 黃冠中,李志強(qiáng).基于PXI總線的寬帶頻率計(jì)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(11):18?19.
[7] 薛偉,王梅.基于相位重合點(diǎn)檢測(cè)技術(shù)的測(cè)頻方法的改進(jìn)[J].電子科技,2005(7):17?20.
[8] 康欽馬,姜海寧,周渭.基于相位重合檢測(cè)技術(shù)的虛擬頻率計(jì)設(shè)計(jì)[J].電子測(cè)量與儀器學(xué)報(bào),2005,19(2):45?48.
[9] 郭豫榮.一種新型頻率計(jì)的設(shè)計(jì)[J].赤峰學(xué)院學(xué)報(bào):自然科學(xué)版,2012,28(16):73?75.
[10] 孟召議.基于單片機(jī)AT89C52的頻率計(jì)的設(shè)計(jì)[J].長(zhǎng)沙通信職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012,11(3):51?54.