模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、fa18位加法器及一位全加器模块可作为组合逻辑基础模块参考。演示视频配套演示视频展示了工程功能运行效果便于对照计数、复位、使能和分频输出等关键现象进行理解。视频可作为学习工程结构和验证波形含义的辅助参考。演示视频请关注公众号后获取对应资料查看。仿真图/仿真说明/设计文档图片配套设计文档包含工程文件说明、程序编译结果、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 加 1tens 和 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 ); // 计数逻辑en1 时递增到 9 回 0并拉高 tc 一个周期 always (posedge clk or negedge rst_n) begin if (!rst_n) begin count 4d0; tc 1b0; end else if (en) begin if (count 4d9) begin count 4d0; tc 1b1; end else begin count count 4d1; tc 1b0; end end else begin tc 1b0; end end endmodule代码获取点击下方公众号卡片