天天看點

數字頻率計的設計

在電子技術中,頻率是最基本的參數之一,并且與許多電參量的測量方案、測量結果都有十分密切的關系,是以頻率的測量就顯得更為重要。在傳統的控制系統中,通常将單片機作為控制核心并輔以相應的元器件構成一個整體。但這種方法硬體連線複雜、可靠性差,且在實際應用中往往需要外加擴充晶片,這無疑會增大控制系統的體積,還會增加引入幹擾的可能性。對一些體積小的控制系統,要求以盡可能小的器件體積實作盡可能複雜的控制功能,直接應用單片機及其擴充晶片就難以達到所期望的效果。

随着數字電子技術的發展,頻率測量成為一項越來越普遍的工作,是以測頻計常受到人們的青睐。目前許多高精度的數字頻率計都采用單片機加上外部的高速計數器來實作,然而單片機的時鐘頻率不高導緻測頻速度比較慢,并且在這種設計中,由于PCB版的內建度不高,導緻PCB闆走線長,是以難以提高計數器的工作頻率。為了克服這種缺點,大大提高測量精度和速度,我們可以設計一種可程式設計邏輯器件來實作數字頻率計。EDA技術是以大規模可程式設計邏輯器件為設計載體,以硬體語言為系統邏輯描述的主要方式,以計算機、大規模可程式設計邏輯器件的開發軟體及實驗開發系統為設計工具,通過有關的開發軟體,自動完成用軟體設計的電子系統到硬體系統的設計,最終形成內建電子系統或專用內建晶片的一門新技術。其設計的靈活性使得EDA技術得以快速發展和廣泛應用。

以Max+PlusⅡ軟體為設計平台,采用VHDL語言實作數字頻率計的整體設計。伴随着內建電路(IC)技術的發展,電子設計自動化(EDA)逐漸成為重要的設計手段,已經廣泛應用于模拟與數字電路系統等許多領域。電子設計自動化是一種實作電子系統或電子産品自動化設計的技術,它與電子技術,微電子技術的發展密切相關,它吸收了計算機科學領域的大多數最新研究成果,以高性能的計算機作為工作平台,促進了工程發展。EDA的一個重要特征就是使用硬體描述語言(HDL)來完成的設計檔案,VHDL語言是經IEEE确認的标準硬體語言,在電子設計領域受到了廣泛的接受。

·測頻法

測頻法的基本思想是讓計數器在閘門信号的控制下計數1秒時間,計數結果是1秒内被測信号的周期數,即被測信号的頻率。若被測信号不是矩形脈沖,則應先變換成同頻率的矩形脈沖。測頻法的原理框圖如圖3-1所示。

圖中,秒脈沖作為閘門信号,當其為高電平時,計數器計數;低電平時,計數器停止計數。顯然,在同樣的閘門信号作用下,被測信号的頻率越高,測量誤差越小。當被測頻率一定時,閘門信号高電平的時間越長,測量誤差越小。但是閘門信号周期越長,測量的響應時間也越長。例如,閘門信号高電平時間為1秒,被測信号頻率的真值為2Hz,如圖3-2所示。

數字頻率計的設計

在閘門信号相同時,測頻法的相對誤差與被測信号的頻率成反比。是以測頻法适合于測量頻率較高的信号。

·測周法

當被測信号頻率較低時,為保證測量精度,常采用測周法。即先測出被測信号的周期,再換算成頻率。測周法的實質是把被測信号作為閘門信号,在它的高電平的時間内,用一個标準頻率的信号源作為計數器的時鐘脈沖。若計數結果為N,标準信号頻率為f1,則被測信号的周期為

               T = T1·N

被測信号的頻率為

                  f = 1/T1·N = f1/N

利用測周法所産生的最大絕對誤差,顯然也等于±1個标準信号周期。如果被測信号周期的真值為T真= T1·N,則T測= T1·(N±1)

               σmax= (f測-f真)/ f真= T真/T測 – 1=±1/(N±1)

由上式可知,對于一定的被測信号,标準信号的頻率越高,則N的值越大,因而相對誤差越小。

·控制信号子產品

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TESTCTL  IS

PORT(CLKK: IN STD_LOGIC;

     CNT_EN,RST_CNT,LOAD:OUT STD_LOGIC);

END TESTCTL;

ARCHITECTURE BEHAVIOR OF TESTCTL IS

SIGNAL div2clk:STD_LOGIC;

BEGIN

  PROCESS(CLKK)

   BEGIN

    IF CLKK'EVENT AND CLKK='1' THEN

       div2clk<=NOT div2clk;

    END IF;

  END PROCESS;

PROCESS(CLKK,div2clk)

  BEGIN

IF (CLKK='0' AND div2clk='0') THEN

        RST_CNT<='1';

     ELSE RST_CNT<='0';

    END IF;

END PROCESS;

LOAD<=NOT div2clk;CNT_EN<=div2clk;

END BEHAVIOR;

其仿真波形如下所示:

數字頻率計的設計

圖5-3 控制子產品信号仿真

·計數器子產品

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT10 IS

   PORT(CLK,RST,ENA:IN STD_LOGIC;

             OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

             COUT:OUT STD_LOGIC);

END CNT10;

ARCHITECTURE JISHU OF CNT10 IS

    SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);

  BEGIN

    PROCESS(CLK,RST,ENA)

       BEGIN

         IF(RST='1') THEN

            CQI<=(OTHERS=>'0');

         ELSIF(CLK'EVENT AND CLK='1') THEN

              IF(ENA='1') THEN

                IF(CQI="1001") THEN

                    CQI<="0000";

                    COUT<='1';

                ELSE

                    CQI<=CQI+1;

                    COUT<='0';

                END IF;

              END IF;

          END IF;

    END PROCESS;

        OUTY<=CQI;

END JISHU;

其仿真如下所示:

數字頻率計的設計

圖5-4 計數器仿真子產品

·鎖存器子產品設計

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REG4B IS

  PORT(LOAD:IN STD_LOGIC;

       DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

       DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END REG4B;

ARCHITECTURE XIANSHI OF REG4B IS

  BEGIN

    PROCESS(LOAD,DIN)

      BEGIN

        IF(LOAD'EVENT AND LOAD='1') THEN

            DOUT<=DIN;

        END IF;

     END PROCESS;

END XIANSHI;

其仿真波形如下所示:

數字頻率計的設計

圖5-5 鎖存器仿真

    本系統,我們将利用原理圖的方式完成系統頂層設計。我們對每個子產品生産原理圖,如下所示:

數字頻率計的設計
數字頻率計的設計
數字頻率計的設計

圖5-6 系統原理圖

下面我們對幾個子產品進行搭建。可以得到如下的結果。

數字頻率計的設計

圖5-7 系統總體原理框圖

5.3 系統仿真

數字頻率計的設計

圖5-8 1hz信号

數字頻率計的設計

圖5-9 10hz信号

數字頻率計的設計

圖5-9 1Khz信号

繼續閱讀