基于單片機和CPLD的數字頻率計的設計與應用
引言
在傳統的控制系統中,通常將單片機作為控制核心并輔以相應的元器件構成一個整體。但這種方法硬件連線復雜、可靠性差,且在實際應用中往往需要外加擴展芯片,這無疑會增大控制系統的體積,還會增加引入干擾的可能性。對一些體積小的控制系統,要求以盡可能小的器件體積實現盡可能復雜的控制功能,直接應用單片機及其擴展芯片就難以達到所期望的效果。
復雜可編程邏輯器件(CPLD)具有集成度高、運算速度快、開發(fā)周期短等特點,它的出現,改變了數字電路的設計方法、增強了設計的靈活性?;诖耍疚奶岢隽艘环N采用Altera公司的CPLD(ATF1508AS)和Atmel公司的單片機(AT89S52)相結合的數字頻率計的設計方法。該數字頻率計電路簡潔,軟件潛力得到充分挖掘,低頻段測量精度高,有效防止了干擾的侵入。獨到之處體現在用軟件取代了硬件。
CPLD開發(fā)環(huán)境簡介
1 VHDL語言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成電路硬件描述語言)是由美國國防部開發(fā)的一種快速設計電路的工具,目前已經成為IEEE的一種工業(yè)標準硬件描述語言。相比傳統的電路系統設計方法,VHDL具有多層次描述系統硬件功能的能力,支持自頂向下和基于庫的設計的特點,因此設計者可以不必了解硬件結構。從系統設計入手,在頂層進行系統方框圖的劃分和結構設計,在方框圖一級用VHDL對電路的行為進行描述,并進行仿真和糾錯,然后在系統一級進行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網表,下載到具體的CPLD器件中去,從而實現可編程的專用集成電路(ASIC)的設計。
2 Max+PlusⅡ開發(fā)工具
Max+PlusⅡ開發(fā)工具是美國Altera公司自行設計的一種CAE軟件工具。它具有全面的邏輯設計能力,設計者可以自由組合文本、圖形和波形輸入法,建立起層次化的單器件或多器件設計。利用該工具配備的編輯、編譯、仿真、綜合、芯片編程等功能,將設計的電路圖或電路描述程序變成基本的邏輯單元寫入到可編程芯片中(如CPLD、FPGA),做成ASIC芯片。
它支持FLEX、MAX及Classic等系列CPLD器件,設計者無須精通器件內部的復雜結構 ,只需用自己熟悉的設計輸入工具,如高級行為語言、原理圖或波形圖進行設計輸入,它便將這些設計轉換成目標結構所要求的格式,從而簡化了設計過程。而且Max+PlusⅡ提供了豐富的邏輯功能庫供設計者使用。設計者利用以上這些庫及自己添加的宏功能模塊,可大大減輕設計的工作量。使用Max+PlusⅡ設計CPLD器件的流程如圖1所示。
圖1 Max+PlusⅡ設計CPLD器件的流程圖
等精度測頻原理
本系統采用等精度測頻的原理來測量頻率,其原理如圖2所示。
圖2 等精度測頻原理圖
圖2中的門控信號是可預置的寬度為Tpr的一個脈沖。CNT1和CNT2是兩個可控計數器。標準頻率信號從CNT1的時鐘輸入端FS輸入,其頻率為Fs;被測信號經整形后從CNT2的時鐘輸入端FIN輸入,設其實際頻率為Fxe,測量頻率為Fx。
當門控信號為高電平時,被測信號的上沿通過D觸發(fā)器的Q端同時啟動計數器CNT1和CNT2。對被測信號Fx和標準頻率信號Fs同時計數。當門控信號為低電平時,隨后而至的被測信號的上沿將使這兩個計數器同時關閉。設在一次門控時間Tpr中對被測信號計數值為Nx,對標準頻率信號的計數值為Ns,則:
Fx/Nx=Fs/Ns(標準頻率和被測頻率的門寬時間Tpr完全相同)就可以得到被測信號的頻率值為:
Fx=(Fs/Ns)×Nx
系統硬件電路設計
1 系統總體設計
本系統的硬件電路包括鍵盤控制模塊、顯示模塊、輸入信號整形模塊以及單片機主控和CPLD模塊。鍵盤控制模塊設置5個功能鍵和3個時間選擇鍵,鍵值的讀入采用一片74LS165來完成,顯示模塊用8只74LS164完成LED的串行顯示。
系統由一片CPLD完成各種測試功能,對標準頻率和被測信號進行計數。單片機對整個測試系統進行控制,包括對鍵盤信號的讀入與處理;對CPLD測量過程的控制、測量結果數據的處理;最后將測量結果送LED顯示輸出。被測信號整形電路主要對被測信號進行限幅、放大、再經施密特觸發(fā)器整形后送入CPLD。用50MHz的有源晶振作為CPLD的測試標準頻率。單片機由外接12MHz標準晶振提供時鐘電路。系統組成原理如圖3所示。
圖3 系統原理框圖
2 CPLD邏輯模塊設計
根據等精度測頻原理,利用VHDL實現的測頻頂層電路模塊邏輯結構如圖4所示。
圖4 系統頂層模塊圖
該模塊由4個子模塊構成。其中CONTROL1為測頻或測周期控制模塊;CONTROL2為測脈寬和占空比控制模塊;CHOICE為自校與測量選擇模塊;COUNT為基準頻率和被測頻率計數器模塊。
被測信號脈沖經CHOICE選擇后,從控制模塊CONTROL1的FX1端輸入,基準頻率信號從FS端輸入,CLR是初始化信號。在進行頻率或周期測量時,完成如下步驟:
(1)在CLR端加正脈沖信號完成測試電路狀態(tài)的初始化。
(2)由預置門控信號將STROBE置高電平,預置門開始定時,此時由被測信號的上沿打開計數器COUNT,同時對基準頻率信號和被測信號進行計數。
(3)頂置門定時結束信號把STROBE置為低電平(由單片機來完成),在被測信號的下一個脈沖的上沿到來時,COUNT停止計數。
(4)計數結束后,ED1端輸出低電平來指示測量計數結束,單片機得到此信號后,即可利用SS0,SS1進行選擇,四次分別讀回COUNT中基準頻率信號和被測信號計數值,并根據上述測量公式進行運算,計算出被測信號的頻率或周期值。
系統軟件設計
本系統的單片機主控及其外圍電路模塊用Keil C語言編寫,軟件模塊對應于硬件電路的每一個部分,還包括部分數據計算和轉換模塊。CPLD模塊用VHDL語言編寫,并在Max+PlusⅡ平臺上,完成CPLD的軟件設計、編譯、調試、仿真和下載。系統初始化后,主程序不斷掃描鍵盤子程序,當其鍵按下時,程序跳轉到相應的子程序執(zhí)行其功能,然后返回繼續(xù)執(zhí)行鍵盤掃描主程序。其主程序流程圖如圖5所示。
圖5 系統主程序流程
試驗測試的結果如表1所示。
結論
本文將智能控制靈活、邏輯運算能力強的單片機和集成度高、運算速度快的CPLD相結合,突破了傳統電子系統設計的瓶頸,使設計的系統具有結構緊湊、體積小,可靠性高,測頻范圍寬、精度高等優(yōu)點。它可作為獨立的儀表使用,也可用做其他儀器儀表的組成部分。
評論