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

模10模99计数器与分频器 Verilog Quartus

名称:模10模99计数器与分频器 Verilog Quartus

软件:Quartus

语言:Verilog

功能介绍

本设计包含 Verilog 编写的数字计数与分频基础工程,主要包括同步模10计数器、两位 8421 BCD 模99计数器以及偶数分频器。工程可在 Quartus 环境中打开、编译和仿真,适合数字逻辑、FPGA 入门实验以及计数器级联设计学习使用。 模10计数器提供 clk、rst_n、en、count 和 tc 接口。rst_n 为低有效异步复位,en 为计数使能,count 输出 4 位当前计数值,tc 在 9 回 0 时输出一个周期的进位脉冲。该结构清晰,既可以单独作为 0 到 9 循环计数模块使用,也可以作为多级十进制计数系统中的基础单元。 模99 BCD 计数器输出十位 tens 和个位 ones,实现 00 到 99 再回到 00 的循环计数。分频器模块提供 2 分频、4 分频和 8 分频输出,复位后各级输出清零,释放复位后按级联关系翻转,可用于生成较低频率的控制节拍。

运行环境

开发语言:Verilog 开发软件:Quartus 工程类型:Quartus FPGA 工程,包含 Verilog 源码、工程配置文件以及仿真波形相关文件。

设计思路

模10计数器采用同步计数结构,核心逻辑由时钟上升沿驱动,低有效异步复位负责初始化计数值和终端进位信号。使能信号 en 为高时,count 按 0、1、2 直到 9 的顺序递增;当 count 达到 9 后,下一个有效计数周期回到 0,同时 tc 输出一个时钟周期的高脉冲,用于表示一次模10循环结束。 这种设计方式适合级联扩展。tc 可作为下一级计数器的进位触发条件,从而扩展成多位十进制计数系统。低有效复位使电路能够快速回到确定初值,使能门控则让计数器在暂停状态下保持当前计数值,便于在数字钟、计数显示、频率控制和状态计数类实验中复用。 两位 8421 BCD 计数器部分采用个位与十位联动的思路:个位从 0 到 9 循环,个位回零时推动十位加 1;十位同样按 0 到 9 循环。当十位和个位均达到 9 后,下一拍共同回到 00,实现完整的 00 到 99 循环。分频器部分通过 D 触发器翻转实现 2 分频,并以上一级输出级联生成 4 分频、8 分频信号,适合用于时钟降频和节拍产生。

模块结构

主要模块包括: 1. mod10_counter:同步模10计数器,包含低有效异步复位、计数使能、4位计数输出和终端进位输出。 2. mod99_bcd_counter:两位 8421 BCD 计数器,个位满 9 回零并推动十位递增,实现 00 到 99 循环。 3. freq_divider:级联偶数分频器,生成 2 分频、4 分频和 8 分频时钟输出。 4. adder8、fa1:8位加法器及一位全加器模块,可作为组合逻辑基础模块参考。

演示视频

配套演示视频展示了工程功能运行效果,便于对照计数、复位、使能和分频输出等关键现象进行理解。视频可作为学习工程结构和验证波形含义的辅助参考。

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

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

配套设计文档包含工程文件说明、程序编译结果、RTL 图、仿真图和仿真分析内容。仿真覆盖了复位、使能、计数递增、终端回零、BCD 十位进位以及 2/4/8 分频输出等关键行为。 模10计数器仿真中,rst_n 初始拉低后释放,en 为高时 count 从 0 递增到 9,随后回到 0,回零当拍 tc 输出高脉冲;en 拉低时 count 保持不变,tc 保持为 0。模99 BCD 计数器仿真中,ones 每拍递增,ones 为 9 后回 0 并使 tens 加 1,tens 和 ones 到达 99 后回到 00。分频器仿真中,clk_div2、clk_div4、clk_div8 的周期分别为输入时钟的 2、4、8 倍,占空比为 50%。

部分代码

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

module mod10_counter ( input clk, input rst_n, input en, output reg [3:0] count, output reg tc ); // 计数逻辑:en=1 时递增;到 9 回 0,并拉高 tc 一个周期 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin count <= 4'd0; tc <= 1'b0; end else if (en) begin if (count == 4'd9) begin count <= 4'd0; tc <= 1'b1; end else begin count <= count + 4'd1; tc <= 1'b0; end end else begin tc <= 1'b0; end end endmodule

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

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

相关文章:

  • Sora 2名画动态化全链路拆解(从梵高笔触建模到物理光流对齐)
  • 别再傻等Github Action定时任务了!我用腾讯云函数SCF+workflow_dispatch,实现了毫秒级精准触发
  • 从学生到工程师:聊聊我为什么从AD换到了PADS(附软件选择避坑指南)
  • Zabbix Server日志里惊现MySQL连接错误?一个关于‘localhost’和Socket的深度误解与修复指南
  • Inspur服务器SSD硬盘灯不亮变红灯?可能是你的RAID阵列没把它‘算进去’
  • 大模型SFT监督微调完全解析:原理、数据集、训练流程、实战调优、避坑指南
  • FPGA秒表精度实测:用Vivado和Verilog做的计时器,误差到底有多大?
  • go 服务器下发wsam到客户端执行并返回结果的调试过程
  • 2026长春市洋酒回收评测:沈阳名酒回收/沈阳白酒大类回收/沈阳茅台酒回收/靠谱商家核心维度对比 - 优质品牌商家
  • 小程序毕业设计-基于微信小程序的旅游攻略分享互动平台基于springboot+微信小程序的丽江市旅游分享平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 别再死记硬背公式了!用Python的NumPy和Matplotlib亲手‘画’出傅里叶级数(附完整代码)
  • 告别单调气泡图!用R语言ggplot2手把手绘制桑吉气泡图(附clusterProfiler数据处理代码)
  • 从《三体》智子到手机基站:用Python简单模拟电磁波传播的几种基本姿势
  • GIS数据处理实战:手把手教你用gdal2tiles为Leaflet地图准备TMS瓦片底图
  • 2026年靠谱的上海建筑沙盘模型/沙盘模型/建筑沙盘模型实力工厂推荐 - 行业平台推荐
  • ROS开发者的福音:手把手教你汉化RViz界面,告别英文菜单困扰
  • RuoYi框架集成Swagger UI:手把手教你自定义接口文档皮肤(附swagger-bootstrap-ui配置)
  • 我的OpenMV 4 Plus内存爆了?手把手教你优化TensorFlow Lite模型,告别‘MemoryError’
  • OpenClaw Windows全流程实操安装指南
  • 2026Q2合肥中古风全屋定制技术要点与落地参考:合肥兔宝宝全屋定制工厂、合肥全屋定制哪家好、合肥全屋定制哪家靠谱选择指南 - 优质品牌商家
  • 循环结构.
  • 从Qt5到Qt6:MainWindow状态栏API的细微变化与迁移避坑指南
  • ADC0809老矣?深入对比STM32的ADC多通道采集,聊聊精度、速度与易用性的那些事儿
  • 如何用LRCGET批量下载工具,为你的离线音乐库一键添加精准同步歌词
  • 模板驱动文档自动化:从填空题到流水线的工程实践
  • 2026年新都男士假发权威排行:新都区女士假发/新都区时尚假发/新都区男士假发/新都区真人假发/新都区真发假发/选择指南 - 优质品牌商家
  • 小程序毕业设计-基于微信小程序的博物馆文创系统的设计与实现基于springboot+微信小程序的博物馆文创系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 信号处理入门必看:傅里叶级数的三种形式(三角、余弦、指数)到底该怎么选?
  • 国内淤泥脱水处理设备厂家实力排行及选型推荐 - 优质品牌商家
  • Inspur服务器SSD硬盘灯变红,机械硬盘却正常?可能是你的RAID配置没带上它