一、指標需求 (1)設計一個頻率測量范圍0~200MHz的頻率計。 (2)要求要能夠完成高、低頻率的測量并自動換擋,設計換擋分界,分析誤差來源并設計測量分辨率及量程。
二、設計分工及原理分析2.1設計分工及總體框架圖 本文以Max+plusII為設計環境,在具體的VHDL語言設計程序中,先將程序分為四個設計模塊:分頻模塊、鎖存器控制模塊、計數模塊、判決模塊,在此基礎上建立項層文件,再對項層文件進行編譯、仿真即可。 總體框圖設計思路:由系統時鐘分頻得到基準時鐘,在基準時鐘的高電平期間計被測頻率的脈沖個數,高電平結束時計數結束,所記錄的脈沖個數是被測信號的頻率,為了在數碼管上顯示計數結果需要鎖存器的鎖存,因此,在基準時鐘下降沿來的時候鎖存器實現鎖存功能。為了下次計數必須將本次計數的結果清零,所以在基準時鐘低電平期間對計數器清零。被測頻率從計數器的是中端輸入實現頻率的測試,通過計數器將最終的計數結果輸入數據鎖存器,鎖存器鎖存的數據輸入判決模塊決定并輸出最終的計數結果。
2.2數字頻率計的基本原理 常用的頻率測量方法有兩種:頻率測量法和周期測量法。 (1)頻率測量法是用一個頻率穩定度高的頻率源作為基準時鐘,在時間t內對被測信號的脈沖數N進行計數,然后求出單位時間內的脈沖數,即為被測信號的頻率。通常情況下計算每秒內待測信號的脈沖個數,此時我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒,閘門時間越長,得到的頻率值就越準確,但閘門時間越長則每測一次頻率的間隔就越長;閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。 (2)周期測量法是先測量出被測信號的周期T,然后根據頻率f=1/T求出被測信號的頻率。但是上述兩種方法都會產生±1個被測脈沖的誤差,在實際應用中有一定的局限性。 根據測量原理,很容易發現頻率測量法適合于高頻信號測量,周期測量法適合于低頻信號測量,故本文高頻時采用頻率測量法,低頻時自動換擋使用周期測量法。
三、設計結果展示 3.2分頻器的功能模塊及仿真 (1)分頻器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FENP IS PORT(CLK:IN STD_LOGIC; --1 Hz測頻控制時鐘 FIN:IN STD_LOGIC; EN1,EN2:OUT STD_LOGIC; --計數器時鐘使能 CLR1,CLR2:OUT STD_LOGIC; --計數器清零 LOAD1,LOAD2:OUT STD_LOGIC); --輸出鎖存信號 END ENTITY FENP; ARCHITECTURE ART OF FENP IS SIGNAL DIV2CLK :STD_LOGIC; SIGNAL DIV2FIN :STD_LOGIC; BEGIN PROCESS ( CLK ) IS BEGIN IF CLK'EVENT AND CLK='1' THEN --1HZ時鐘二分頻 DIV2CLK<=NOT DIV2CLK; END IF ; END PROCESS; PROCESS ( CLK,DIV2CLK ) IS BEGIN IF CLK= '0' AND DIV2CLK = '0' THEN --產生計數器清零信號 CLR1<='1'; ELSE CLR1<= '0' ; END IF; END PROCESS; PROCESS ( FIN ) IS BEGIN IF FIN'EVENT AND FIN='1' THEN --二分頻 DIV2FIN<=NOT DIV2FIN; END IF ; END PROCESS; PROCESS (FIN,DIV2FIN ) IS BEGIN IF FIN= '0' AND DIV2FIN = '0' THEN --產生計數器清零信號 CLR2<='1'; ELSE CLR2<= '0' ; END IF; END PROCESS; LOAD1<=NOT DIV2CLK; EN1<=DIV2CLK; LOAD2<=NOT DIV2FIN; EN2<=DIV2FIN; END ARCHITECTURE ART; 頻率計的關鍵是設計一個測頻率控制信號發生器,產生測量頻率的控制時序。控制時鐘信號CLK取為1Hz,2分頻后即可產生一個脈寬為1秒的時鐘信號,以此作為計數閘門信號。當計數閘門信號為高電平時,允許計數;當計數閘門信號由高電平變為低電平(下降沿到來)時,應產生一個鎖存信號,將計數值保存起來;鎖存數據后,還要在下次計數閘門信號上升沿到來之前產生清零信號CLR,將計數器清零,為下次計數作準備。 3.3計數器的功能模塊及仿真 (1)計數器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY JISHU IS PORT (CLK:IN STD_LOGIC; ENA:IN STD_LOGIC; CLR:IN STD_LOGIC; CQ:OUT INTEGER RANGE 0 TO 15; CO:OUT STD_LOGIC); END ENTITY JISHU; ARCHITECTURE ART OF JISHU IS SIGNAL CQI :INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK,ENA,CLR) IS BEGIN IF CLR= '1' THEN CQI<= 0; ELSIF CLK'EVENT AND CLK='1' THEN IF ENA='1' THEN IF CQI<9 THEN CQI<=CQI+1; ELSE CQI<=0; END IF; END IF; END IF; END PROCESS; PROCESS (CQI) IS BEGIN IF CQI=9 THEN CO<='1'; ELSE CO<= '0'; END IF; END PROCESS; CQ<=CQI; END ARCHITECTURE ART; 該仿真的作用是實現十進制計數功能。從仿真圖中可以得出,當第一個計數器計數輸出CQ=9時,下一秒時鐘上升沿到來時,將產生一個CO進位信號作為下一個計數器 的時鐘信號,同時CQ清零,依次遞推到8個計數器。 3.4數據鎖存器的功能模塊及仿真 (1)數據鎖存器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY JICUNQI IS PORT(LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END ENTITY JICUNQI; ARCHITECTURE ART OF JICUNQI IS BEGIN PROCESS(LOAD,DIN) IS BEGIN IF LOAD'EVENT AND LOAD='1'THEN DOUT<=DIN; END IF; END PROCESS; END ARCHITECTURE ART; 仿真圖的LOAD信號上升沿到來時將對輸入到內部的計數信號進行鎖存,并將結果輸出給判決模塊。當輸入信號上升到時就會產生鎖存,否則,不進行鎖存,該仿真在上升沿的時候,將其鎖存起來,直到下個上升沿才會改變鎖存的數據。 3.5判決器的功能模塊及仿真 (1)判決器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY PANJUE IS PORT(JCLK:IN STD_LOGIC_VECTOR(31 DOWNTO 0); JFIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0); M:OUT STD_LOGIC; N:OUT STD_LOGIC); END PANJUE ; ..... 分別將頻率測量法和周期測量法的計數結果輸入判決模塊,當頻率高于我們換擋頻率(100Hz)時輸出頻率測量法的計數結果,并輸出M=0,N=0;當頻率高于我們換擋頻率(100Hz)時輸出周期測量法的計數結果,并輸出M=1,N=0;當頻率低于我們1Hz時輸出周期測量法的計數結果,并輸出M=1,N=1,此時頻率f=1/N;
3.6綜合設計結果展示 (1)當被測頻率為1000Hz時:
此時輸出結果DOUT=1000, M=0,N=0;“DOUT=1000”表示“被測頻率為1000Hz”,“M=0,N=0”表示“頻率測量法的計數結果”。 (2)當被測頻率為442Hz時:
此時輸出結果DOUT=442, M=0,N=0;“DOUT=442”表示“被測頻率為442Hz”,“ M=0,N=0”表示“頻率測量法的計數結果”。 (3)當被測頻率為100Hz時:
此時輸出結果DOUT=100, M=1,N=0;“DOUT=100”表示“被測頻率為100Hz”,“M=1,N=0”表示“周期測量法的計數結果”。 (4)當被測頻率為15Hz時:
此時輸出結果DOUT=15, M=1,N=0;“DOUT=15”表示“被測頻率為15Hz”,“M=1,N=0”表示“周期測量法的計數結果”。 (5)當被測頻率為1Hz時:
此時輸出結果DOUT=1, M=1,N=0;“DOUT=1”表示“被測頻率為1Hz”,“M=1,N=0”表示“周期測量法的計數結果”。 (6)當被測頻率為0.2Hz時:
此時輸出結果DOUT=5, M=1,N=1;“DOUT=5”表示“被測頻率為1/5=0.2Hz”,“M=1,N=1”表示“周期測量法的計數結果且頻率低于1Hz”。
四、設計結果展示調試參數分析計算(1)頻率測量法:頻率f=N (2)周期測量法:頻率f=1/T 頻率計的精度與誤差要求:從上述的仿真結果可以看出,我們的設計方案的結果與被測頻率符合很好,誤差很小;實際上,測量的脈沖個數的誤差會在士1 之間。假設所測得的脈沖個數為N,則所測頻率的最大誤差為δ=1/(N-1) X100%。顯然,減少誤差的方法就是增大N,當待測頻率為換擋頻率100Hz時,誤差理論值為1/100約為1%,則測頻誤差應為1%,隨著被測頻率越高,則誤差越低;當低于換擋頻率,尤其是當頻率無限接近0Hz時,頻率越接近被測頻率,誤差越小。
以上文檔下載:
word文檔.docx
(495.64 KB, 下載次數: 8)
2021-8-1 03:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|