频率周期测量与数码管显示 Verilog Quartus
名称:频率周期测量与数码管显示 Verilog Quartus
软件:Quartus
语言:Verilog
开发板/平台:Cyclone IV FPGA开发板
功能介绍
本工程实现一个基于 Verilog 的数字频率计与周期测量仪,输入被测方波信号后,可在频率测量和周期测量两种模式之间切换,并将结果转换为 BCD 数据显示在多位数码管上。顶层模块提供 50MHz 系统时钟、被测信号输入、两个低有效模式按键,以及 1kHz 基准和 74HC595 数码管驱动接口。\n\n频率测量采用默认 1 秒门控时间,计数分辨率为 1Hz;周期测量以默认 1us 时间刻度计算输入信号周期。工程将时基生成、门控控制、边沿计数、数据锁存、周期测量、显示选择和数码管扫描拆分为独立模块,便于阅读、仿真和参数修改。通过调整顶层参数,可以适配不同系统时钟或改变测量时序。运行环境
开发环境为 Intel Quartus 工程,设计语言为 Verilog,顶层模块为 frequency,目标平台为 Cyclone IV FPGA 开发板。系统时钟默认 50MHz,数码管扫描时钟约 400Hz,1kHz 基准由分频参数生成。工程包含 frequency.qsf 管脚约束、Quartus 工程文件、ModelSim 仿真配置及可用于编译和下载的输出文件。设计思路
设计以 50MHz 系统时钟为基础,先由 test_sig 产生约 400Hz 的数码管扫描时钟和 1kHz 基准信号。测频链路由 Frq_Ctrl 产生门控、锁存和复位时序,在默认 1 秒门控窗口内由 counter 对 signal_in 的边沿进行计数,再由 data_store 锁存结果。参数化的总周期、门控周期及锁存复位时刻便于根据时钟频率和测量需求调整。\n\n周期测量链路使用 period_meas 生成 1us 时间基准,对被测方波周期进行计量并输出 BCD 结果。key_mode 根据两个低有效按键选择频率或周期显示,disp_mux 完成两路 BCD 数据的切换。最后由 LED_DISP 完成位选、段选扫描,hc595_ctrl 将显示数据串行送入移位寄存器,减少顶层外部连线并适配数码管显示。模块结构
顶层模块 frequency 负责连接各功能单元。test_sig 产生 400Hz 扫描时钟和 1kHz 基准;key_mode 处理测频与测周期按键模式;Frq_Ctrl 生成测频使能、锁存和复位时序;counter 对 signal_in 进行门控计数;data_store 锁存频率结果;period_meas 完成周期测量;disp_mux 选择当前显示的频率或周期 BCD 数据;LED_DISP 生成数码管位选和段选;hc595_ctrl 负责移位寄存器串行输出。工程同时包含 div_10 等辅助逻辑以及 testbench 仿真相关模块。开发板验证
项目已在 Cyclone IV FPGA 开发板上完成验证,工程提供了 frequency.qsf 管脚约束与分配文件,并配套开发板实物图片。下载配置后,可将被测方波接入 signal_in,通过 key_freq_n 选择频率测量、通过 key_period_n 选择周期测量,结果经数码管接口输出。
演示视频
配套演示视频展示该频率检测工程的实际使用流程,便于结合工程源码观察测频、测周期模式切换及数码管显示接口的工作效果。仿真图/仿真说明/设计文档图片
配套设计文档覆盖工程文件、程序编译、RTL 结构、管脚分配、仿真图、Testbench、顶层仿真图,以及分频/时基、按键模式切换、控制、计数、锁存、周期测量、显示选择和 74HC595 数码管驱动等模块说明,可用于对照源码理解信号连接和时序关系。




















部分代码
以下展示顶层模块 frequency 的部分代码,完整源码请下载压缩包查看。
module frequency #(
//test_sig 分频参数(默认 50MHz)
parameter integer CLK400_HALF_DIV = 62500, //50MHz/(2*62500)=400Hz
parameter integer TS1K_HALF_DIV = 25000, //50MHz/(2*25000)=1kHz
//测频门控参数(默认 1秒门控,分辨率 1Hz)
parameter integer FRQ_TOTAL_CYCLES = 53000000,
parameter integer FRQ_GATE_CYCLES = 50000000,
parameter integer FRQ_LAT_START = 50000100,
parameter integer FRQ_LAT_END = 50000200,
parameter integer FRQ_RST_START = 50000300,
parameter integer FRQ_RST_END = 50000400,
//周期测量 us_tick 分频参数(默认 1us)
parameter integer PERIOD_US_DIV_MAX = 49
)(
input clk, //系统时钟(默认 50MHz)
input signal_in, //被测方波信号
input key_freq_n, //按键1:测频,按下为低
input key_period_n,//按键2:测周期,按下为低
output ts_1K, //1kHz基准信号输出
output stcp , //数据存储器时钟
output shcp , //移位寄存器时钟
output ds , //串行数据输入
output oe //使能信号,低有效
);
wire en;
wire rst;
wire lat;
wire clk_400Hz;
wire [31:0] number;
wire [31:0] freq_bcd;
wire [31:0] period_bcd;
wire mode_period;
wire [31:0] disp_bcd;
wire [5:0] LED_BIT;//数码管位选
wire [7:0] LED_SEG;//数码管段选
//分频/时基模块:得到扫描时钟与 1kHz 基准信号
test_sig #(
.CLK400_HALF_DIV(CLK400_HALF_DIV),
.TS1K_HALF_DIV(TS1K_HALF_DIV)
) i_test_sig(
. clk(clk),
. clk_400Hz(clk_400Hz),
. ts_1K(ts_1K)
);
//按键模式切换
key_mode i_key_mode(
. clk(clk),
. key_freq_n(key_freq_n),
. key_period_n(key_period_n),
. mode_period(mode_period)
);
//控制模块
Frq_Ctrl #(
.TOTAL_CYCLES(FRQ_TOTAL_CYCLES),
.GATE_CYCLES(FRQ_GATE_CYCLES),
.LAT_START(FRQ_LAT_START),
.LAT_END(FRQ_LAT_END),
.RST_START(FRQ_RST_START),
.RST_END(FRQ_RST_END)
) i_Frq_Ctrl(
. clk(clk),
. en(en),
. rst(rst),
. lat(lat)
);
//计数器
counter i_counter (
. signal_in(signal_in),//被测信号
. en(en),//使能
. rst(rst),//清零
. number(number)//计数值
);
//锁存器
data_store i_data_store(
. lat(lat),//锁存
. number(number),//计数值
. store_number(freq_bcd)//锁存值
);
//周期测量
period_meas #(
.US_DIV_MAX(PERIOD_US_DIV_MAX)
) i_period_meas(
. clk(clk),
. signal_in(signal_in),
. period_bcd(period_bcd)
);
//频率和周期选择器
disp_mux i_disp_mux(
. mode_period(mode_period),
. freq_bcd(freq_bcd),
. period_bcd(period_bcd),
. disp_bcd(disp_bcd)
);
//数码管控制
LED_DISP i_LED_DISP(
. clk(clk_400Hz),//约 400Hz
. store_number(disp_bcd),//锁存值
. LED_BIT(LED_BIT),
. LED_SEG(LED_SEG)
);
//hc595驱动显示数码管
////////////////////////////////////////////////////////////////////////
hc595_ctrl i_hc595_ctrl
(
.sys_clk (clk), //系统时钟,频率50MHz
.sys_rst_n (1'b1), //复位信号,低有效
.sel (LED_BIT), //数码管位选信号
// ... 以下代码略,完整源码请下载压缩包查看
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 频率周期测量与数码管显示 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 频率周期测量与数码管显示 Verilog Quartus