摘 要:CPLD器件的出現給現代電子設計帶來了極大的方便和靈活性,使復雜的數字電子系統設計變為芯片級設計,同時還可以很方便地對設計進行在線修改。首先介紹了頻率計的測頻原理,然后利用CPLD芯片進行測頻計數,從而實現了簡易數字頻率計的設計。此頻率計的設計采用基于VHDL的“Top-Down”(自上而下)的設計方法,從系統總體要求出發,自上而下地逐步將設計內容細化,最后完成系統硬件的整體設計。所設計的電路在GW48系列SoPC/EDA實驗箱上通過硬件仿真,下載到目標器件上運行,能夠滿足實際測量頻率的要求。
關鍵詞:CPLD; VHDL; 頻率計; 設計
中圖分類號:
TN409-34
文獻標識碼:A
文章編號:1004-373X(2011)19
-0183
-04
Design of Simple Digital Frequency Meter Based on CPLD
ZHANG Yang
(Chongqing Three Gorges Normal University, Chongqing 404000, China)
Abstract: The component of CPLD provided enormous convenience and flexibility for the modern electronic design, which changed the complicated digital electronic system design into chip design and performed the online modification for the design conveniently. The frequency measurement principle of the frequency meter is introduced, the method of using CPLD to count the frequency of the signal for completing the design of the simple digital frequency meter is proposed. The frequency meter used the VHDL-based \"Top-Down\" design method, set out the total requirement of system, refined the design content by \"Top-Down\" method and achieved the design of hardware finally. The designed circuit was simulated, programmed on the aim device and ran on series SoPC /EDA experiment chest. The design can meet the requirement of the practical frequency measurement.
Keywords: CPLD; VHDL; frequency meter; design
收稿日期:2011-04-11
0 引 言
目前已經有不少文獻分別從不同的角度對此問題進行了討論和研究。有基于FPGA實現的,FPGA的保密性差,它的分段式布線結構決定了其延遲的不可預測性,它的編程信息需存放在外部存儲器上,使用方法復雜;也有用標準邏輯器件實現的,用標準邏輯器件使系統布線復雜、體積功耗大、可靠性差、設計周期長,交流和修改不方便。該頻率計采用先進的EDA技術及自上而下的設計,使用CPLD芯片,CPLD具有連續連接結構,易于預測延時,使電路仿真更加準確,且編程方便、速度快、集成度高、價格低,從而使系統研制周期大大縮短,產品的性能價格比提高。本頻率計采用流行的VHDL語言編程,并在設計平臺實現了全部編程設計。該數字頻率計的設計及實現具有良好的應用價值和推廣前景。下面對該頻率計的軟硬件設計進行詳細論述。
1 測頻原理
1.1 頻率的定義
頻率定義為在單位時間內,記錄被測信號的變化周期數(或脈沖個數)。若記錄被測信號的的變化周期數(或脈沖個數)為Nx,則被測頻率Fx的數值為Nx,單位為:Hz。
1.2 基本性能指標
測頻范圍為:1 Hz~1 MHz;
測頻精度:相對誤差為1 Hz。
1.3 頻率計的功能分析
由于數字頻率計是一個需對數字信號進行測量和顯示的系統,由一片CPLD完成各種測試功能(對被測信號進行計數等),最后將測量結果送數碼管顯示輸出,因此測頻需要設置控制電路、計數電路、鎖存電路、譯碼電路,將這些電路設計好的各部分連接起來成為一個整體的電路寫入CPLD芯片中[1],外圍電路由顯示電路、產生1 Hz的方波電路組成。
控制電路是對計數電路、鎖存電路和譯碼電路進行時序的控制。其控制要求為:先使計數電路在1 s內進行計數,接著在下一個1 s內鎖存計數的結果,最后將鎖存的數據進行譯碼和顯示。在第一個測量顯示周期結束后,控制電路將再次發出控制信號,先對功能電路清零,然后使系統開始第二個測量周期的工作。
計數電路是對被測信號的頻率進行計數的主功能電路。根據頻率的定義和測頻的基本原理,必須由一個脈寬為1 s的對被測信號脈沖計數的允許信號,其測量結果為被測信號在1 s內的脈沖個數,即被測信號的頻率。由于被測信號的頻率測頻范圍為1 Hz~1 MHz,因此用計數電路測量時,使用6個輸出為4位的二進制數計數器。此計數器從個位開始到高位分別進行計數,使低位計數器的進位與高位計數器的被測信號輸入端相連[2],從計數器電路的結構可知,該電路輸出信號是由從低位到高位的多組4位二進制表示的十進制數組成的,用來分別表示被測信號的個、十、百、千等位的數值。
鎖存電路的主要功能是對計數器計數輸出的數據進行鎖定保存。即使在前級計數電路的計數器清零以后,鎖存器依然有保存的數據存在,不會造成數據的丟失。鎖存電路中的鎖存器是對單個十進制計數器數據進行保存[2],因此鎖存器的個數與前一級計數電路的十進制計數器的個數相同。
譯碼電路的功能是將鎖存器保存并將輸出的4位二進制代碼表示的十進制數進行譯碼轉換,將其轉換為能直接驅動數碼管顯示的十進制數字字符的輸出信號。
顯示電路由共陰數碼管電路構成。由于被測信號的頻率測頻范圍為1 Hz~1 MHz,因此需要6個數碼管對其進行顯示。
2 頻率計各模塊設計
2.1 頻率計原理框圖
此頻率計的流程為:被測信號fin輸入到CPLD芯片,在控制信號為1 Hz時,在CPLD芯片里完成對被測信號的測頻、計數 、鎖存、譯碼,輸出信號接數碼管顯示,如圖1所示。
圖1 頻率計原理框圖
2.2 CPLD模塊原理框圖
由于是一種集成度很高并且可進行用戶定制的數字芯片,因此測試功能都用一塊CPLD芯片來實現。在硬件電路設計時,可先將CPLD的內部電路分為控制、計數、鎖存及譯碼四個電路模塊分別進行設計,然后再將這四個電路模塊有機地結合成一個能完成測頻功能的整體系統。其CPLD模塊原理框圖如圖2所示。
圖2 CPLD模塊原理框圖
2.2.1 控制電路模塊
為實現控制功能,控制電路模塊需輸出三個信號:一是允許對被測信號計數的計數信號CNT-EN;二是將前1 s計數器的計數值存入鎖存器的鎖存信號LOAD;三是為下一個周期計數做準備的計數器清零信號RST-CNT。上述三個信號產生的順序是:先提供計數信號,這種信號使計數器在1 s內計數,即周期為2 s的信號;接著是提供鎖存信號,這種信號對計數值進行鎖存,與計數信號反向;最后是發出清零信號,這種信號可對計數器清零。計數器清零結束后又可重新計數,計數進入第二個周期[2]。控制電路模塊實際上是一個控制器,它需要一個周期為1 s的信號作為產生并控制控制器輸出的時基信號CLKK。控制電路模塊中各信號符號及端口功能如圖3所示。
圖3 控制電路模塊結構框圖
2.2.2 計數電路模塊
計數電路模塊將對被測信號進行十進制計數。它雖然由6個十進制計數器組成,但采用CPLD后,設計時只要先制作單個十進制計數器,然后再將多個結構相同的單個十進制計數器在CPLD內部進行連接就可組合成一個完整的計數電路模塊。為實現其功能,十進制計數器需要設置三個輸入端:即被測信號輸入端CLK、計數器狀態清零端RST和計數器工作使能端ENA。
需要設置四個輸出端,即OUTY[0],OUTY[1],OUTY[2]和OUTY[3],由這四個輸出端輸出4位二進制代碼來表示十進制數。同時,還需要設置進位輸出端COUNT。需要設置四個輸出端,即OUTY[0],OUTY[1],OUTY[2]和OUTY[3],由這四個輸出端輸出4位二進制代碼來表示十進制數。同時,還需要設置進位輸出端COUNT。設置進位輸出端COUNT是因為單個十進制計數器只能表示被測信號頻率在個、十、百、千等位中的一個數位的數據。被測信號的頻率是從個位計數器開始計數的,被測信號變化一次,個位計數器輸出加1,當被測信號變化10次時,個位計數器輸出為0,而十位計數器輸出加1,當十位計數器計滿10次時,十位計數器輸出為0,而百位計數器輸出加1,依次類推,直至千位、萬位或更高位[3]。上述十進制計數器都是滿10進1,且進位時計數器清零并重新計數。計數電路模塊中的單個計數器符號及端口功能如圖4所示。
圖4 計數電路模塊結構框圖
2.2.3 鎖存電路模塊
鎖存電路模塊可使顯示電路的工作穩定而可靠,避免計數電路模塊清零時引起顯示閃爍的現象。鎖存電路模塊是由多個鎖存器組成。每個鎖存器都是用來鎖存與其單獨相連的計數器的輸出數據。由于每個鎖存器鎖存的都是4位二進制代碼表示的十進制數,其功能完全相同,因此只需要設計制作一個鎖存器就可連接組合成一個鎖存電路模塊。為實現其功能,鎖存器需設置一個使鎖存器工作的使能端LOAD,四個數據輸入端即DIN[0],DIN[1],DIN[2]和DIN[3],并由它們輸入計數器的計數值,還需設置四個鎖存數據的輸出端:即DOUT[0],DOUT[1],DOUT[2]和DOUT[3][3]。鎖存電路模塊中單個鎖存器的符號及端口功能如圖5所示。
圖5 鎖存電路模塊結構框圖
2.2.4 譯碼電路模塊
譯碼電路模塊可對表示十進制數的4位二進制代碼進行編碼,此模塊可直接連接數碼管驅動器,從而驅動數碼管顯示出相應的阿拉伯數字等字符。與鎖存器電路模塊設計一樣,它也只需要先設計一個單個的譯碼器,然后通過連接組合就可構成譯碼電路模塊,從而實現譯碼功能。為實現其功能,單個譯碼器需要設置4個數據輸入端:即d[0],d[1],d[2]和d[3],并由這些端口輸入鎖存電路模塊輸出的4位二進制數據,需要設置7個輸出端:即q[0],q[1],q[2],q[3],q[4],q[5]和q[6],它們分別連接7段數碼管的7個顯示輸入端[4]。譯碼電路模塊中單個譯碼器符號及端口功能如圖6所示。
圖6 譯碼電路模塊結構框圖
3 軟件設計
根據前面的分析,采用VHDL語言設計一個簡易的數字頻率計,運用自頂向下的設計思想,將系統按功能逐層分割的層次化設計方法進行設計。在頂層對內部各功能塊的連接關系和對外的接口關系進行了描述,而功能塊的邏輯功能和具體實現形式則由下一層模塊來描述。即控制、計數、鎖存、譯碼四個實現數字頻率計的核心模塊,然后根據圖2可以將上述四個模塊VHDL源程序作為底層元件,使用Quartus Ⅱ開發工具,用該工具軟件所支持的語言——硬件描述語言VHDL,以文本的方式進行編程輸入。在編程時分別對控制、計數、鎖存、譯碼等電路模塊進行VHDL文本描述,使每個電路模塊以及器件都以文本的形式出現,然后通過編譯、波形分析、仿真、調試來完善每個器件的功能。單個器件制作完成后,然后將它們生成庫文件,并產生相應的符號,最后用語言將各個已生成庫文件的器件的各個端口連接在一起,從而形成了頻率計主電路的軟件結構。在連接器件時,采用圖形輸入方式,即在圖形輸入界面中調出先制作好的庫文件器件符號,再將每個器件符號的各端口直接連線,從而構成頻率計主電路圖。頻率計主電路圖如圖7所示。仿真波形如圖8所示。
圖7 頻率計主電路圖
在GW48系列SoPC/EDA實驗箱上下載、調試后,被測信號為fin為十進制,實驗箱上的顯示值為Dsp(H)。Dsp(H)為十六進制,Dsp(D)為十進制,Clk=1 Hz,通過從實驗箱上給出的頻率值來驗證,從表1可以看到顯示結果。
圖8 仿真波形
表1 Clk=1 Hz時的顯示結果Hz
測量次數1234567
fin12481 0244 09632 768
Dsp(H)12484001 0008 000
Dsp(D)12481 0244 09632 768
從表1可以看出所顯示的結果與被測信號的頻率一致。從信號發生器中輸入測頻范圍內的任意頻率也可驗證。
還可以改變控制信號即Clk的大小從而改變測量范圍,當Clk=64 Hz時,理論值為:
從表2可以看出所顯示的結果轉換后與被測信號的頻率一致。
4 結 語
采用此種方法設計的簡易數字頻率計簡單、直觀,測頻范圍隨時可根據用戶需要進行調整,占用的CPLD芯片資源較少,不失為一個很好的數字頻率計設計解決方案。由此可見,采用這種技術設計的數字電子系統,大大減少了電路板的尺寸,同時增加了系統可靠性和設計靈活性。
參 考 文 獻
[1]張永安.基于CPLD的多功能等精度數字頻率計的設計[D].呼和浩特:內蒙古大學,2004.
[2]聶輝.CPLD數字頻率計系統的研究與設計[J].重慶科技學院學報:自然科學版,2005,7(1):77-79.
[3]廖裕評,陸瑞強.CPLD數字電路設計[M].北京:清華大學出版社,2001.
[4]侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,2004.
[5]宋萬杰,羅豐,吳順均.CPLD技術及其應用[M].西安:西安電子科技大學出版社,1999.
[6]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2002.
[7]臧春華,蔣璇.數字系統設計與PLD應用技術[M].北京:電子工業出版社,2001.
[8]李廣軍,孟憲元.可編程ASIC設計及應用\\.成都:電子科技大學出版社,2000.
[9]劉麗華.專用集成電路設計方法\\.北京:北京郵電大學出版社,2000.
[10]徐志軍,徐光輝,章小麗,等.CPLD系統設計入門技術與應用\\.北京:電子工業出版社,2002.
[11]林敏,方穎立.VHDL數字系統設計與高層次綜合\\.北京:電子工業出版社,2002.
[12]劉南平.現代電子設計與制作技術[M].北京:電子工業出版社,2003.
[13]高鵬,張恩平.基于CPLD的可編程數字頻率計的設計[J].山東電子,2002(4): 27-30.