找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3554|回復: 2
打印 上一主題 下一主題
收起左側(cè)

EDA數(shù)字頻率計設計資料(VHDL語言)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:958022 發(fā)表于 2021-8-1 01:12 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
一、指標需求
1)設計一個頻率測量范圍0~200MHz的頻率計。
2)要求要能夠完成高、低頻率的測量并自動換擋,設計換擋分界,分析誤差來源并設計測量分辨率及量程。

二、設計分工及原理分析
2.1設計分工及總體框架圖
本文以Max+plusII為設計環(huán)境,在具體的VHDL語言設計程序中,先將程序分為四個設計模塊:分頻模塊、鎖存器控制模塊、計數(shù)模塊、判決模塊,在此基礎上建立項層文件,再對項層文件進行編譯、仿真即可。
總體框圖設計思路:由系統(tǒng)時鐘分頻得到基準時鐘,在基準時鐘的高電平期間計被測頻率的脈沖個數(shù),高電平結(jié)束時計數(shù)結(jié)束,所記錄的脈沖個數(shù)是被測信號的頻率,為了在數(shù)碼管上顯示計數(shù)結(jié)果需要鎖存器的鎖存,因此,在基準時鐘下降沿來的時候鎖存器實現(xiàn)鎖存功能。為了下次計數(shù)必須將本次計數(shù)的結(jié)果清零,所以在基準時鐘低電平期間對計數(shù)器清零。被測頻率從計數(shù)器的是中端輸入實現(xiàn)頻率的測試,通過計數(shù)器將最終的計數(shù)結(jié)果輸入數(shù)據(jù)鎖存,鎖存器鎖存的數(shù)據(jù)輸入判決模塊決定并輸出最終的計數(shù)結(jié)果。
2.2數(shù)字頻率計的基本原理
常用的頻率測量方法有兩種:頻率測量法和周期測量法。
1)頻率測量法是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,在時間t內(nèi)對被測信號的脈沖數(shù)N進行計數(shù),然后求出單位時間內(nèi)的脈沖數(shù),即為被測信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),此時我們稱閘門時間為1秒。閘門時間也可以大于或小于一秒,閘門時間越長,得到的頻率值就越準確,但閘門時間越長則每測一次頻率的間隔就越長;閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。
2)周期測量法是先測量出被測信號的周期T,然后根據(jù)頻率f=1/T求出被測信號的頻率。但是上述兩種方法都會產(chǎn)生±1個被測脈沖的誤差,在實際應用中有一定的局限性。
根據(jù)測量原理,很容易發(fā)現(xiàn)頻率測量法適合于高頻信號測量,周期測量法適合于低頻信號測量,故本文高頻時采用頻率測量法,低頻時自動換擋使用周期測量法。

、設計結(jié)果展示
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;   --計數(shù)器時鐘使能
CLR1,CLR2:OUT STD_LOGIC;  --計數(shù)器清零
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 --產(chǎn)生計數(shù)器清零信號
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 --產(chǎn)生計數(shù)器清零信號
CLR2<='1';
ELSE CLR2<= '0' ;
END IF;
END PROCESS;
LOAD1<=NOT DIV2CLK;  EN1<=DIV2CLK;
LOAD2<=NOT DIV2FIN;  EN2<=DIV2FIN;
END ARCHITECTURE ART;
頻率計的關(guān)鍵是設計一個測頻率控制信號發(fā)生器,產(chǎn)生測量頻率的控制時序。控制時鐘信號CLK取為1Hz,2分頻后即可產(chǎn)生一個脈寬為1秒的時鐘信號,以此作為計數(shù)閘門信號。當計數(shù)閘門信號為高電平時,允許計數(shù);當計數(shù)閘門信號由高電平變?yōu)榈碗娖剑ㄏ陆笛氐絹恚⿻r,應產(chǎn)生一個鎖存信號,將計數(shù)值保存起來;鎖存數(shù)據(jù)后,還要在下次計數(shù)閘門信號上升沿到來之前產(chǎn)生清零信號CLR,將計數(shù)器清零,為下次計數(shù)作準備。
3.3計數(shù)器的功能模塊及仿真
(1)計數(shù)器的功能模塊:
(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;
該仿真的作用是實現(xiàn)十進制計數(shù)功能。從仿真圖中可以得出,當?shù)谝粋計數(shù)器計數(shù)輸出CQ=9時,下一秒時鐘上升沿到來時,將產(chǎn)生一個CO進位信號作為下一個計數(shù)器 的時鐘信號,同時CQ清零,依次遞推到8個計數(shù)器。
3.4數(shù)據(jù)鎖存器的功能模塊及仿真
(1)數(shù)據(jù)鎖存器的功能模塊:
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信號上升沿到來時將對輸入到內(nèi)部的計數(shù)信號進行鎖存,并將結(jié)果輸出給判決模塊。當輸入信號上升到時就會產(chǎn)生鎖存,否則,不進行鎖存,該仿真在上升沿的時候,將其鎖存起來,直到下個上升沿才會改變鎖存的數(shù)據(jù)。
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 ;
.....
  分別將頻率測量法和周期測量法的計數(shù)結(jié)果輸入判決模塊,當頻率高于我們換擋頻率(100Hz)時輸出頻率測量法的計數(shù)結(jié)果,并輸出M=0,N=0;當頻率高于我們換擋頻率(100Hz)時輸出周期測量法的計數(shù)結(jié)果,并輸出M=1,N=0;當頻率低于我們1Hz時輸出周期測量法的計數(shù)結(jié)果,并輸出M=1,N=1,此時頻率f=1/N;

3.6綜合設計結(jié)果展示
(1)當被測頻率為1000Hz時:
此時輸出結(jié)果DOUT=1000, M=0,N=0;“DOUT=1000”表示“被測頻率為1000Hz”,“M=0,N=0”表示“頻率測量法的計數(shù)結(jié)果”。
(2)當被測頻率為442Hz時:
此時輸出結(jié)果DOUT=442,  M=0,N=0;“DOUT=442”表示“被測頻率為442Hz”,“ M=0,N=0”表示“頻率測量法的計數(shù)結(jié)果”。
(3)當被測頻率為100Hz時:
此時輸出結(jié)果DOUT=100, M=1,N=0;“DOUT=100”表示“被測頻率為100Hz”,“M=1,N=0”表示“周期測量法的計數(shù)結(jié)果”。
4)當被測頻率為15Hz時:
此時輸出結(jié)果DOUT=15, M=1,N=0;“DOUT=15”表示“被測頻率為15Hz”,“M=1,N=0”表示“周期測量法的計數(shù)結(jié)果”。
5)當被測頻率為1Hz時:
此時輸出結(jié)果DOUT=1, M=1,N=0;“DOUT=1”表示“被測頻率為1Hz”,“M=1,N=0”表示“周期測量法的計數(shù)結(jié)果”。
6)當被測頻率為0.2Hz時:
此時輸出結(jié)果DOUT=5, M=1,N=1;“DOUT=5”表示“被測頻率為1/5=0.2Hz”,“M=1,N=1”表示“周期測量法的計數(shù)結(jié)果且頻率低于1Hz”。

四、設計結(jié)果展示調(diào)試參數(shù)分析計算
(1)頻率測量法:頻率f=N
(2)周期測量法:頻率f=1/T
頻率計的精度與誤差要求:從上述的仿真結(jié)果可以看出,我們的設計方案的結(jié)果與被測頻率符合很好,誤差很;實際上,測量的脈沖個數(shù)的誤差會在士1 之間。假設所測得的脈沖個數(shù)為N,則所測頻率的最大誤差為δ=1/(N-1) X100%。顯然,減少誤差的方法就是增大N,當待測頻率為換擋頻率100Hz時,誤差理論值為1/100約為1%,則測頻誤差應為1%,隨著被測頻率越高,則誤差越低;當?shù)陀趽Q擋頻率,尤其是當頻率無限接近0Hz時,頻率越接近被測頻率,誤差越小。

以上文檔下載:
word文檔.docx (495.64 KB, 下載次數(shù): 8)

圖片1.png (38.03 KB, 下載次數(shù): 140)

電路邏輯圖

電路邏輯圖

圖片0.png (618.21 KB, 下載次數(shù): 156)

框架圖

框架圖

1HZ.png (1.59 MB, 下載次數(shù): 155)

1HZ測試圖

1HZ測試圖

15HZ.png (28.83 KB, 下載次數(shù): 132)

15HZ測試圖

15HZ測試圖

100HZ0.png (28.67 KB, 下載次數(shù): 134)

100HZ測試圖

100HZ測試圖

442HZ.png (28.74 KB, 下載次數(shù): 154)

442HZ測試圖

442HZ測試圖

100HZ.png (27.98 KB, 下載次數(shù): 149)

1000HZ測試圖

1000HZ測試圖

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

板凳
ID:988813 發(fā)表于 2022-2-24 18:30 | 只看該作者
你好EDA的生成最后的文件可以發(fā)一下嗎?我做的有問題或者可以請教一下嗎?
回復

使用道具 舉報

沙發(fā)
ID:958022 發(fā)表于 2021-8-1 01:47 | 只看該作者
分享學習資料,大家可以一起交流學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表