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

量程自动转换数字式频率计设计VHDL代码Quartus仿真

05/14 13:15
721
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-25051320003H12.doc

共1个文件

名称:量程自动转换数字式频率计设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

设备及软件:装有 Quartus‖软件完成设计数字系统的计算机

目的:

1.了解系统相关功能电路图与印剧电路图的设计、绘制,并完成相关流程的设计以及硬件描述语VHDL程序的编写,设计与综合和调试仿真工作。

2.学会 Quartus‖软件完成设计系统的设计与综合。

3.掌握该数字电路系统的仿真调试,分析系统功能实现的可行性等。

任务:

1.设计一个3位十进制数字式频率计,其测量范围为1MHZ。量程分10HZ,100kHZ和1MHz三档(最读数分别为99kHZ,999Z,999KHZ)。被测信号由信号发生器提供。

2.要求量程可以根据被测量的大小自动转换,规则如下:

1)当读数大于999时,频率计处于超量程状态。此时显示器发出溢出指示(最高位显示F,其余各位不显示数字),下一次测量时,量程自动增大一档。

2)读数小于000时,频率计处于欠量程状态。下次测量时,量程减小一档。

3.要求实现溢出报警功能。即当读数大于999KHZ时,频率计处于超量程状态,产生一个报警信号,点亮led报警灯

4.显示方式如下:

1)用记忆显示方式,即计数过程中不显示数据,待计数过程结束后,显示计数结果,并将此显示结果保持到下一次计数结束。显示时间应不小于1秒。

2)小数点位置随量程变更自动移位。

提示:

1、脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信号。

2、被測频率信号取自实验箱品体振荡器输出信号,加到主控门的输入端。

3、再取昆体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。

4、时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期输入信号才通过主控门。

5、f=NT,改变时基信号的周期T,即可得到不同的测频范围。

6、当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1、工程文件

2、程序文件

3、程序编译

4、RTL图(顶层框图)

5、Testbench

6、仿真图

整体仿真图

控制模块

频率计算模块

频率锁存模块

显示模块

部分代码展示:

LIBRARY ieee;
USE ieee.std_logic_1164.all; 
LIBRARY work;
--频率计顶层模块
ENTITY frequence_test IS 
PORT
(
reset :  IN  STD_LOGIC;--复位
clk :  IN  STD_LOGIC;--时钟
signal_in :  IN  STD_LOGIC;--输入频率
LED_over :  OUT  STD_LOGIC;--溢出报警
COM :  OUT  STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选
HEX :  OUT  STD_LOGIC_VECTOR(7 DOWNTO 0) --数码管段选
);
END frequence_test;
ARCHITECTURE bdf_type OF frequence_test IS 
--控制模块
COMPONENT control
PORT(clk : IN STD_LOGIC;
 door_1s : OUT STD_LOGIC;
 clear : OUT STD_LOGIC;
 latch_en : OUT STD_LOGIC
);
END COMPONENT;
--频率计算
COMPONENT freq_cnt
PORT(signal_in : IN STD_LOGIC;
 door_1s : IN STD_LOGIC;
 clear : IN STD_LOGIC;
 frequency_data : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
);
END COMPONENT;
--频率锁存
COMPONENT latch_freq
PORT(lat : IN STD_LOGIC;
 reset : IN STD_LOGIC;
 frequency_data : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
 frequency_latch : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
);
END COMPONENT;
--数码管显示
COMPONENT display
PORT(clk : IN STD_LOGIC;
 frequency_latch : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
 LED_over : OUT STD_LOGIC;
 COM : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
 HEX : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END COMPONENT;
SIGNALdoor_1s :  STD_LOGIC;
SIGNALclear :  STD_LOGIC;
SIGNALlatch_en :  STD_LOGIC;
SIGNALfrequency_data :  STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNALfrequency_latch :  STD_LOGIC_VECTOR(31 DOWNTO 0);
BEGIN 
--控制模块
b2v_inst : control
PORT MAP(clk => clk,
 door_1s => door_1s,
 clear => clear,
 latch_en => latch_en);
--频率计算
b2v_inst2 : freq_cnt
PORT MAP(signal_in => signal_in,
 door_1s => door_1s,
 clear => clear,
 frequency_data => frequency_data);

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1520

  • 2-25051320003H12.doc
    下载

相关推荐