news 2026/6/20 11:54:06

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 11:51:13

紧急预警:2024Q3起多地将强制执行《智能社区AI接口合规性新规》——你漏掉的这5个认证项正在导致项目搁浅

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI工具与智能社区整合 AI工具正从单点应用演进为社区级基础设施&#xff0c;其核心价值在于将算法能力、实时数据流与居民参与机制深度耦合。智能社区不再仅依赖预设规则的IoT中控系统&#xff0c;而是通过可…

作者头像 李华
网站建设 2026/6/20 11:43:41

AI开发AI:在快马平台通过智能对话创建集成understand-anything的演示应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 你是一个AI编程助手。我的需求是&#xff1a;在快马平台上创建一个展示understand-anything模型多模态理解能力的交互式演示应用。请生成完整的项目代码。应用需要包含两个主要模式…

作者头像 李华
网站建设 2026/6/6 3:27:47

浏览器市场分析——数据大屏动态数据接入

1. 实验目的 本实验基于上一实验《浏览器市场分析-数据大屏静态布局制作》完成的大屏布局&#xff0c;使用助睿Max的蓝图编辑器&#xff0c;将之前实验加工好的数据表接入到大屏的各个图表组件中&#xff0c;使图表能够动态展示真实数据。 通过本实验&#xff0c;学生应掌握以下…

作者头像 李华