news 2026/6/10 0:24:40

26.计数器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
26.计数器

FPGA 设计与处理器程序设计核心差异在于:处理器是指令顺序执行,而 FPGA 以晶振产生的周期性时钟为核心驱动,通过匹配不同时钟周期完成计数,再依据计数值执行各类动作,最终实现特定功能;计数器是 FPGA 时序设计中最基础、最核心的模块,其设计核心围绕时钟周期计算、条件优先级划分、标准时序逻辑编写展开,具体使用方法总结如下:

一、先做时钟周期精准计算,确定计数阈值

  1. 由晶振频率算出单个时钟周期(周期 = 1 / 频率),如 100MHz 时钟的单周期为 10ns;
  2. 根据实际需求(如定时 1 秒、分频到 1Hz),计算所需总时钟周期数,总周期数 = 目标时间 / 单时钟周期;
  3. 确定计数阈值:因计数器从 0 开始累加,最终计数阈值为总周期数 - 1,如 100MHz 时钟定时 1 秒需 100,000,000 个周期,计数阈值则为 99,999,999。

二、拆解计数器三大核心条件,明确优先级排序

计数器设计需拆解为 3 类核心条件,且按 “高优先级到低优先级” 依次处理,优先级排序为:复位条件(最高)→ 清零条件(次之)→ 累加条件(最低)

  1. 复位条件:上电初始化或异常恢复时触发,用于将计数值置初始值(通常为 0),保证计数器上电状态可知,分为异步复位(无需时钟沿,复位信号有效立即执行)、同步复位(需时钟沿触发才执行),工程中异步复位为常用方案;
  2. 清零条件:计数值达到预设阈值后触发,将计数器置 0 以实现循环计数,若不优先处理清零,计数值会溢出超出预设范围,导致清零条件失效;
  3. 累加条件:计数器的正常工作条件,由时钟沿驱动,在无复位、无清零的情况下,每个时钟沿计数值加 1,是计数器实现周期计数的基础。

三、编写标准时序逻辑代码,遵循 FPGA 编码规范

以最常用的异步复位计数器为例,采用单一时序 always 块实现(一个时钟域 + 一组关联时序动作,符合 FPGA 最佳编码实践),核心逻辑严格遵循 “优先级从高到低”,代码框架与规范如下:

  1. 触发列表:异步复位需包含时钟上升沿 + 复位下降沿posedge 时钟名 or negedge 复位名),同步复位仅需时钟上升沿;
  2. 赋值规则:时序逻辑必须使用非阻塞赋值<=,模拟硬件寄存器的并行更新特性;
  3. 代码结构:按 “复位→清零→累加” 的优先级依次编写,无冗余分支,保证综合器可生成高效、正确的硬件电路。

标准代码模板(以 100MHz 时钟、1 秒定时为例):

verilog

// 定义计数器寄存器(根据计数阈值确定位宽,32位可满足绝大多数低频定时需求) reg [31:0] cnt; // 1秒定时计数器 // 异步复位计数器核心时序逻辑 always @(posedge SYS_CLK or negedge RST_N) begin // SYS_CLK:系统时钟,RST_N:低有效异步复位 if(!RST_N) begin // 1. 最高优先级:复位条件,计数值置0 cnt <= 32'd0; end else if(cnt == 32'd99_999_999) begin // 2. 次之:清零条件,计满1秒置0 cnt <= 32'd0; end else begin // 3. 最低优先级:累加条件,每个时钟沿计数值+1 cnt <= cnt + 1'd1; end end

四、核心设计要点

  1. 区分软硬件设计思维:无需像处理器程序那样考虑执行顺序,只需明确硬件条件的优先级,先处理特殊情况(复位、清零),再处理正常工作情况(累加),这是 FPGA 计数器设计的核心思路;
  2. 禁止优先级写反:若将 “累加” 写在 “清零” 前,计数器计满后会先累加再清零,导致计数值溢出,清零条件永久失效,计数器无法循环工作;
  3. 寄存器必做复位:所有计数器寄存器必须设置复位值,避免 FPGA 上电后计数器状态未知,导致整个时序逻辑功能异常;
  4. 单 always 块设计:同一时钟域、同一复位方式的计数器,需在单个 always 块内完成所有逻辑编写,无需按信号拆分,既简化代码,又利于综合器优化硬件电路。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 19:01:06

【小程序毕设全套源码+文档】基于微信小程序的养老驿站服务平台的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/5 15:13:37

企业营销新招数!Infoseek媒体发布让30元也能做品牌推广

最近热搜上关于企业降本增效的话题又火了&#xff0c;作为从业十年的营销人&#xff0c;今天给大家扒一个真正省钱的利器——Infoseek的媒体发布功能。说实话&#xff0c;第一次见到能把媒体发布做到这么便宜又高效的平台&#xff0c;确实让我眼前一亮。 传统媒体发布的那些痛…

作者头像 李华
网站建设 2026/6/5 10:27:08

HoRain云--掌握TailwindCSS:响应式设计全攻略

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…

作者头像 李华
网站建设 2026/6/5 15:40:59

光驱微米齿轮:比头发丝还小的芯片微马达

科学家制造出比人类头发还小的微型马达 微小的光驱齿轮可以通过为人类细胞大小的机器提供动力&#xff0c;从而彻底改变医疗领域。 突破尺寸限制 研究人员成功制造了微米尺度的光驱齿轮。这为制造有史以来最小的芯片集成马达铺平了道路&#xff0c;其尺寸甚至可以容纳在一根头发…

作者头像 李华
网站建设 2026/6/5 16:05:10

现代智能汽车系统——总线技术3

智能汽车板级接口与存储系统解析本文系统梳理了智能汽车域控制器内部的板级通信接口和存储架构。板级接口分为四大类&#xff1a;计算扩展类(PCIe)、网络接入类(xMII)、多媒体类(MIPI)和低速控制类(I2C/SPI/UART)。存储系统则包含LPDDR内存、UFS/eMMC大容量存储、NOR Flash启动…

作者头像 李华