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

门控法频率计设计VHDL Quartus仿真

12/23 10:38
245
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-25112R21943491.docx

共1个文件

门控法频率计设计VHDL Quartus仿真

软件

Quartus

语言

VHDL

代码功能

该设计实现了核心逻辑控制与数据处理,包含时钟与复位管理、输入输出接口以及状态机控制。主要模块包括:Frq_Ctrl、LED_DISP、counter、data_store、div_400Hz。设计聚焦关键功能的实现与时序约束,强调可综合性与可移植性,适合在VHDL环境下进行快速迭代与验证。

 

 

设计文档:

 

相关图片

代码实现思路

总体思路采用自顶向下的层次化设计,先明确接口与约束,再细化功能模块。时序方面以同步时钟为主,统一复位策略,关键路径通过流水线或并行分解降低延迟。控制部分使用有限状态机组织流程,数据路径依据接口协议进行缓冲与握手。验证阶段采用仿真与综合联合检查,覆盖边界条件与异常输入,确保在FPGA平台上稳定运行。核心模块:Frq_Ctrl、LED_DISP、counter、data_store、div_400Hz,分别承担接口、控制与运算等职责。

代码结构

整体结构采用分层与模块化设计:顶层负责接口与时序组织,中间层拆分为控制与数据通道,底层为具体算法与外设驱动。通过统一的时钟与复位策略维持同步,关键路径引入流水线降低延迟。模块间通过明确的端口协议进行耦合与解耦,便于复用与扩展。主要子模块包括:Frq_Ctrl、LED_DISP、counter、data_store、div_400Hz、frequency_check、frequency_check_vlg_tst、test_sig 等,各自承担接口适配、状态机控制、缓存与计算等职责,形成清晰可维护的架构。

 

 

 

 

部分代码

//频率计门控法

module frequency_check(

input clk,//50MHz

input signal_in,//被测信号

output ts_50M,

output ts_10M,

output ts_1M,

output ts_100K,

output ts_10K,

output ts_1K,

output [7:0] LED_BIT,

output [7:0] LED_SEG

);

 

wire En;

wire Rst;

wire Lat;

wire clk_400Hz;

//分频模块

test_sig U_test_sig(

. clk(clk),//50MHz

. ts_50M(ts_50M),

. ts_10M(ts_10M),

. ts_1M(ts_1M),

. ts_100K(ts_100K),

. ts_10K(ts_10K),

. ts_1K(ts_1K)

);

 

//分频到400Hz

div_400Hz U_div_400Hz(

. clk_50MHz(clk),//50MHz

. clk_400Hz(clk_400Hz)

);

 

//控制模块

Frq_Ctrl U_Frq_Ctrl(

. clk(clk),//50MHz

. En(En),//使能

. Rst(Rst),//清零

. Lat(Lat)//锁存

);

 

wire [31:0] Freq_cnt;

wire [3:0] Freq_cnt_0;//锁存值

wire [3:0] Freq_cnt_1;//锁存值

wire [3:0] Freq_cnt_2;//锁存值

wire [3:0] Freq_cnt_3;//锁存值

wire [3:0] Freq_cnt_4;//锁存值

wire [3:0] Freq_cnt_5;//锁存值

wire [3:0] Freq_cnt_6;//锁存值

wire [3:0] Freq_cnt_7;//锁存值

//计数器模块

counter U_counter (

. signal_in(signal_in),//测试信号

. En(En),//使能

. Rst(Rst),//复位

. Freq_cnt(Freq_cnt)

);

 

//锁存器,锁存后将数据转换为BCD码

data_store U_data_store(

. Lat(Lat),//锁存信号

. Freq_cnt(Freq_cnt),//输入

. Freq_cnt_0(Freq_cnt_0),//锁存值

. Freq_cnt_1(Freq_cnt_1),//锁存值

. Freq_cnt_2(Freq_cnt_2),//锁存值

. Freq_cnt_3(Freq_cnt_3),//锁存值

. Freq_cnt_4(Freq_cnt_4),//锁存值

. Freq_cnt_5(Freq_cnt_5),//锁存值

. Freq_cnt_6(Freq_cnt_6),//锁存值

. Freq_cnt_7(Freq_cnt_7)//锁存值

);

 

//LED显示

LED_DISP U_LED_DISP(

. clk_400Hz(clk_400Hz),//400KHz时钟

. Freq_cnt_0(Freq_cnt_0),//锁存值

. Freq_cnt_1(Freq_cnt_1),//锁存值

. Freq_cnt_2(Freq_cnt_2),//锁存值

. Freq_cnt_3(Freq_cnt_3),//锁存值

. Freq_cnt_4(Freq_cnt_4),//锁存值

. Freq_cnt_5(Freq_cnt_5),//锁存值

. Freq_cnt_6(Freq_cnt_6),//锁存值

. Freq_cnt_7(Freq_cnt_7),//锁存值

. LED_BIT(LED_BIT),//数码管位选

. LED_SEG(LED_SEG)//数码管段选

);

 

 

endmodule

 

 

 

 

 

 

 

 

  • 2-25112R21943491.docx
    下载

相关推荐