当前位置: 首页 > news >正文

频率计数计 FPGA 设计 Verilog Vivado ISE/Vivado

名称:频率计数计 FPGA 设计 Verilog Vivado ISE/Vivado

软件:ISE/Vivado

语言:Verilog

功能介绍

本设计实现基于 FPGA 的频率计数计功能,采用测频法对输入或板内分频产生的测试信号进行计数测量,并将测量结果送至数码管显示。设计目标是完成可综合、可仿真、可上板调试的频率测量工程,适合用于 FPGA 数字系统课程设计、实验项目和频率测量类 Verilog 工程参考。 系统围绕频率测量、计数控制、数据锁存和显示输出展开。计数模块负责在规定测量窗口内统计待测信号脉冲数,控制模块负责协调测量周期、清零、锁存等工作,显示模块将结果转换为数码管可显示的数据形式。由于显示部分面向 8 位数码管,工程适合展示多位频率结果,便于观察测量过程和输出状态。 工程同时包含仿真工程和板级工程,可用于先在 Vivado 中进行行为仿真,再结合约束文件完成综合、实现和比特流生成。对于需要理解测频法、数码管动态显示以及 FPGA 工程完整流程的用户,该设计具有较好的学习和二次开发价值。

运行环境

开发语言:Verilog 开发软件:Vivado / ISE 相关工程文件 工程类型:FPGA 频率计数计设计,包含仿真工程、板级工程、约束文件和实现结果文件。

设计思路

设计采用典型测频法思路:在固定的闸门时间或控制周期内,对待测信号的上升沿或有效脉冲进行累计计数,测量窗口结束后将计数结果锁存,再进入下一轮清零和重新计数。这样可以把输入信号频率转换为单位时间内的脉冲个数,便于在 FPGA 内部用计数器和寄存器完成实现。 系统结构上将频率测量流程拆分为多个功能模块。控制模块产生测量节拍和状态控制信号,计数模块完成待测信号计数,数据存储模块在测量结束时保存稳定结果,显示模块负责将结果送往数码管显示。模块化写法便于单独调试各部分逻辑,也方便根据实际需求调整测量窗口、显示位数或输入信号来源。 测试信号可通过板内分频方式产生,用于完成基本测量验证。该方式不依赖外部信号源即可观察频率计的计数与显示效果,适合实验室和课程设计场景。工程还包含 Vivado 仿真相关文件,可通过测试平台观察计数、锁存和显示数据变化,帮助确认测频流程是否符合预期。

模块结构

主要模块包括: Freq_test:频率计数计顶层相关模块,连接计数、控制、存储和显示逻辑。 counter:计数模块,用于在测量周期内统计待测信号脉冲数量。 Frq_Ctrl:频率测量控制模块,用于产生测量、清零、锁存等控制节拍。 data_store:数据存储模块,用于保存测量结果,避免显示过程中数据抖动。 LED_DISP:数码管显示模块,用于将测量结果输出到数码管显示端。 div_clk:分频模块,可用于产生内部测试或控制所需时钟。 Freq_34_cui_vlg_tst:仿真测试平台,用于对频率计逻辑进行行为仿真。

开发板验证

工程包含开发板管脚约束文件,可用于完成 FPGA 引脚分配、综合实现和板级调试流程。约束内容覆盖时钟、复位、数码管显示及相关外设信号,配合已生成的实现与 bit 文件,可作为上板验证和二次移植时的重要参考。 板级验证重点可放在数码管显示结果是否随待测分频信号变化、复位后系统是否能重新开始测量、计数结果锁存是否稳定等方面。用户可根据实际开发板接口继续调整约束文件中的管脚分配。

演示视频

包含仿真视频,可用于观察频率计数计在仿真环境下的运行过程和波形变化,重点参考测量控制、计数结果更新以及显示数据变化。

演示视频请关注公众号后获取对应资料查看。

仿真图/仿真说明/设计文档图片

包含 Vivado 仿真工程、测试平台文件和仿真运行结果文件,可用于查看行为仿真流程。仿真部分适合验证计数窗口、清零锁存时序、结果更新以及数码管显示数据输出是否符合设计逻辑。 设计文档要求包含仿真波形、综合后原理图和开发板调试内容,因此工程可作为从代码编写、仿真验证到综合实现的完整流程参考。

部分代码

以下展示顶层模块at7的部分代码,完整代码可关注下方公众号卡片获取。

module at7( input sys_clk_i, //外部输入100MHz时钟信号 input ext_rst_n, //外部输入复位信号,低电平有效 input chnl_sw , // UART接收数据信号 output rtc_iic_sck, //RTC芯片的IIC时钟信号 inout rtc_iic_sda, //RTC芯片的IIC数据信号 output [7:0] rtc_rdsecd //RTC芯片的IIC时钟信号 ); wire clk_12m5; //PLL输出12.5MHz时钟 wire clk_25m; //PLL输出25MHz时钟 wire clk_50m; //PLL输出50MHz时钟 wire clk_100m; //PLL输出100MHz时钟 wire sys_rst_n; //PLL输出的locked信号,作为FPGA内部的复位信号,低电平复位,高电平正常工作 //PLL例化 clk_wiz_0 u1_clk_wiz_0 ( // Clock in ports .clk_in1(sys_clk_i), // input clk_in1 // Clock out ports .clk_out1(clk_25m), // output clk_out1 // Status and control signals .reset(!ext_rst_n), // input reset .locked(sys_rst_n)); // output locked reg [7:0] clk_cnt; always @(posedge clk_25m or negedge sys_rst_n) if(!sys_rst_n) begin clk_cnt <= 8'd0; end else begin clk_cnt <= clk_cnt+ 1'b1; end // pcf8563 pcf8563( .mclk (clk_cnt[5]), .reset (sys_rst_n), .scl (rtc_iic_sck), .sda (rtc_iic_sda), .s_reg (rtc_rdsecd ), .led (), .seg (), .com ()); endmodule

代码获取:点击下方公众号卡片

http://www.jsqmd.com/news/1021454/

相关文章:

  • 博客内容生成失败原因与合规输入规范说明
  • 互联网与大数据环境下制造服务模式
  • 小红书作品批量下载终极指南:3种高效方案让你轻松管理海量内容
  • 从CTF实战解析SQL注入:Union攻击与MD5绕过防御
  • RTX 3090多卡AI训练为何失效?硬件架构与CUDA通信瓶颈深度解析
  • 2026年宁国别墅装饰公司深度分析:本土化服务与全案设计能力谁更胜一筹? - 优质品牌商家
  • SQL Server数据恢复实战:从备份原理到故障恢复全解析
  • 北京有特色的旅游服务公司推荐,博睿中天文化靠谱吗 - myqiye
  • 英文名性别预测:从特征工程到生产部署的完整实践
  • RK3566嵌入式芯片开发全解析:从核心架构到AI部署实战
  • 机器学习模型堆叠实战:从原理到代码实现
  • 如何免费解锁Wand专业版功能:完整指南与远程控制体验
  • Python趣味编程:从零绘制帕恰狗,掌握图形库与交互开发
  • 石墨烯润滑油选购指南,沃尔斯智碳科技是良策 - 工业品牌热点
  • 霞鹜文楷:如何用一款开源字体提升你的中文排版体验?
  • 51单片机IAP技术详解:从原理到实战,实现远程程序自更新
  • 2026 年靠谱的晚秋早春大棚保温被费用多少,鸿帆农业揭秘 - myqiye
  • 3D模型转换革命:用stltostp将STL无缝转换为STEP格式
  • Ubuntu音频入门:用arecord/aplay直通ALSA掌握录音播放核心
  • 【课程设计/毕业设计】SpringBoot 赋能的校园心理关怀疗愈平台研发 一站式心理疗愈互助交流服务系统【附源码、数据库、万字文档】
  • GEO 推广服务品牌企业推荐,众量引擎优势在哪? - myqiye
  • 第34章:Retriever 与 Postprocessor 源码剖析
  • 盘点靠谱的碎纸机厂家,看质量还是看价格? - 工业品牌热点
  • Llama2本地部署全链路实战:从申请到生产级API
  • Python特征选择实战:从原理到稳定性验证的完整链路
  • 5分钟掌握卫星轨道预测:SGP4库完整使用指南
  • RAD-DINO未来展望:探索可扩展医学影像AI模型的5大发展方向
  • 嵌入式系统引导程序:从复位到执行的幕后英雄
  • 基于机器学习的设备故障预测分析方法
  • 2026年卧式自吸泵品牌怎么选?基于材质、工况与工程案例的多维行业分析 - 优质品牌商家