• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

Quartus數(shù)字頻率計VHDL代碼

06/11 09:21
522
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

2-23122G00521205.doc

共1個文件

名稱:Quartus數(shù)字頻率計VHDL代碼

軟件:Quartus

語言:VHDL

代碼功能:

課題內(nèi)容及要求:

本課題采用Intl公司(原 Altera) CycloneⅢ系列的EP3C8O或EP3C40型FPGA芯片,利用 LTE-SOPO-02FD型EDA/SOPC實驗開發(fā)平臺的資源,根據(jù)等精度測頻原理,設計一個數(shù)字頻率計,對脈沖進行頻率測量,測得結(jié)果在數(shù)碼管上顯示,并設計相應的功能按鍵,能夠在所測量的整個頻段內(nèi)部,均可實現(xiàn)相同精度的測量,即測量精度與頻率無關(guān)。

按鍵功能包括(1)閘門按鍵(01S,1S和105)、(2)手動測量、(3)自動測量,在數(shù)碼管上顯示閘門檔位擴展內(nèi)容:16*16點陣顯示學號和姓名。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 管腳分配

5. RTL圖

6. Testbench

7. 仿真圖

整體仿真圖

閘門模塊仿真

頻率計算模塊

顯示模塊

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--頻率計算模塊
ENTITY?frequency_calculate?IS
???PORT?(
??????clk_in???????????:?IN?STD_LOGIC;--輸入50M基準時鐘
??????reset_p??????????:?IN?STD_LOGIC;--復位信號
??????signal_in????????:?IN?STD_LOGIC;--待測頻率輸入
??????doors_open???????:?IN?STD_LOGIC;--閘門
??????total_frequency??:?OUT?INTEGER--輸出頻率
???);
END?frequency_calculate;
ARCHITECTURE?behave?OF?frequency_calculate?IS
???SIGNAL?door_1s?????????:?STD_LOGIC;
???SIGNAL?CNT1????????????:?INTEGER?:=?10;--基準時鐘計數(shù)器
???SIGNAL?CNT2????????????:?INTEGER?:=?10;--待測頻率計數(shù)器
???SIGNAL?CNT1_buf????????:?INTEGER?:=?10;--基準時鐘計數(shù)器寄存器
???SIGNAL?CNT2_buf????????:?INTEGER?:=?10;--待測頻率計數(shù)器寄存器
???SIGNAL?CNT1_bufc???????:?INTEGER?:=?10;--基準時鐘計數(shù)器寄存器
???SIGNAL?CNT2_bufc???????:?INTEGER?:=?10;--待測頻率計數(shù)器寄存器
SIGNAL?total_frequency_int???????:?INTEGER?:=?10;
???SIGNAL?door_1s_buf?????:?STD_LOGIC?:=?'0';
???SIGNAL?door_1s_negedge?:?STD_LOGIC;
BEGIN
????
???PROCESS?(signal_in)
???BEGIN
??????IF?(signal_in'EVENT?AND?signal_in?=?'1')?THEN
?????????door_1s<=?doors_open;--閘門信號同步到signal_in信號下
??????END?IF;
???END?PROCESS;
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(door_1s?=?'1')?THEN
????????????CNT1?<=?CNT1?+?1;--基準時鐘計數(shù)器
?????????ELSE
????????????CNT1?<=?0;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(signal_in)
???BEGIN
??????IF?(signal_in'EVENT?AND?signal_in?=?'1')?THEN
?????????IF?(door_1s?=?'1')?THEN
????????????CNT2?<=?CNT2?+?1;--待測頻率計數(shù)器
?????????ELSE
????????????CNT2?<=?0;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????door_1s_buf?<=?door_1s;
??????END?IF;
???END?PROCESS;
???
???door_1s_negedge?<=?NOT(door_1s)?AND?door_1s_buf;--閘門信號下降沿
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????CNT1_buf?<=?CNT1;--基準頻率計數(shù)
?????????CNT2_buf?<=?CNT2;--待測頻率計數(shù)
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(door_1s_negedge?=?'1')?THEN
????????????CNT1_bufc?<=?CNT1_buf;--基準頻率計數(shù)
????????????CNT2_bufc?<=?CNT2_buf;--待測頻率計數(shù)
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--待測頻率計算=CNT2_buf*5*10^7/CNT1_buf
???total_frequency?<=?(50000000?/?CNT1_bufc)?*?CNT2_bufc;--單位Hz
???
END?behave;

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=422

  • 2-23122G00521205.doc
    下載

相關(guān)推薦