• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

Quartus数字频率计VHDL代码

06/11 09:21
597
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-23122G00521205.doc

共1个文件

名称:Quartus数字频率计VHDL代码

软件:Quartus

语言:VHDL

代码功能:

课题内容及要求:

本课题采用Intl公司(原 Altera) CycloneⅢ系列的EP3C8O或EP3C40型FPGA芯片,利用 LTE-SOPO-02FD型EDA/SOPC实验开发平台的资源,根据等精度测频原理,设计一个数字频率计,对脉冲进行频率测量,测得结果在数码管上显示,并设计相应的功能按键,能够在所测量的整个频段内部,均可实现相同精度的测量,即测量精度与频率无关。

按键功能包括(1)闸门按键(01S,1S和105)、(2)手动测量、(3)自动测量,在数码管上显示闸门档位扩展内容: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;--基准时钟计数器
???SIGNAL?CNT2????????????:?INTEGER?:=?10;--待测频率计数器
???SIGNAL?CNT1_buf????????:?INTEGER?:=?10;--基准时钟计数器寄存器
???SIGNAL?CNT2_buf????????:?INTEGER?:=?10;--待测频率计数器寄存器
???SIGNAL?CNT1_bufc???????:?INTEGER?:=?10;--基准时钟计数器寄存器
???SIGNAL?CNT2_bufc???????:?INTEGER?:=?10;--待测频率计数器寄存器
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;--基准时钟计数器
?????????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;--待测频率计数器
?????????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;--基准频率计数
?????????CNT2_buf?<=?CNT2;--待测频率计数
??????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;--基准频率计数
????????????CNT2_bufc?<=?CNT2_buf;--待测频率计数
?????????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
    下载

相关推荐