理论学习

计数器实现的是计数,计数是一种最简单基本的运算。计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数、控制的功能,同时兼有分频功能。

计数器是FPGA设计中最常用的一种时序逻辑,根据计数器的计数值我们可以精确计算出FPGA内部各种信号之间的时间关系,每个信号何时拉高、何时拉低、拉低需要多久、拉高需要多久,都可以比较精准的控制具体需要计数的时间。计数器一般是从0开始计数,计数到我们需要的值或者计数满溢出后清零,并可以进行不断的循环,3位数的十进制计数器可最大计数到999,4位数的最大可以计数到9999;3位数的二进制计数器最大可以计数到111(7),4位数的最大可以计数到1111(15)。

实验目标

本例让计数器1s时间间隔,来实现led灯每隔1s闪烁一次的效果。

设计

这里设计一个不带标志信号(cnt_flag)的计数器。
=============================================================

对于计数器的设计要控制好两个问题:

什么时候开始计数

这个系统除了时钟和复位没有外界的其他输入了,所以只要复位一撤销,时钟沿来到就可以立即进行计数,所以对于计数开始的条件,也可以默认为没有条件。

什么时候清零

计算1s需要计数器计数多少个数。此处计数的时钟就用系统时钟50MHz,换算成时间是0.000_000_02s,计数1s的时间需要50_000_000个。所以计数器要在50MHz的时钟下计50_000_000个数才可以。因为是从0开始计数,所以在50MHz频率下计数1s的最终计数值是49_999_999。
我们实现的是在1s内led灯的闪烁,所以在1s的时间内,亮0.5s,熄0.5s这样的观赏效果最佳。计数到49_999_999需要26位宽的寄存器。为了节省资源,led的电平为高为低交替进行,每隔0.5s取反即可,计数器的值变为0~24_999_999。需要25位寄存器。

counter.v

//counter.v
module counter
#(
parameter CNT_MAX = 25'd24_999_999
)
(
input wire sys_clk,
input wire sys_rst_n,
output reg led_out
);
//parameter CNT_MAX = 25'd24_999_999;
reg[24:0] cnt;//计数器变量 位宽25
//计数器的赋值
always@(posedge sys_clk or negedge sys_rst_n) beginif(sys_rst_n == 1'b0)begincnt <= 25'd0;end else if(cnt == CNT_MAX) begincnt <= 25'd0;end else begincnt <= cnt +25'd1;end
end
//输出信号的赋值
always@(posedge sys_clk or negedge sys_rst_n)beginif(sys_rst_n == 1'b0)beginled_out <= 1'b0;end else if(cnt == CNT_MAX)beginled_out <= ~led_out;end else begin //如果复位信号无效 且计数器未达到最大值led_out <= led_out;end
end
endmodule

counter_tb.v

//counter_tb.v
`timescale 1ns/1ns
module counter_tb();
reg sys_clk;
reg sys_rst_n;
wire led_out;
//赋初值
initial
beginsys_clk = 1'b1;sys_rst_n <= 1'b0;#20sys_rst_n <= 1'b1;
end
//产生时钟信号
always #10 sys_clk = ~sys_clk;
counter //counter_inst
#(
.CNT_MAX(25'd24)
)
counter_inst
(
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),
.led_out(led_out)
);
endmodule

仿真结果



【verilog】计数器相关推荐

  1. verilog 计数器_HDLBits: 在线学习 Verilog ()

    本系列文章将向大家推荐一个学习 Verilog 的好去处:HDLBits. HDLBits 在提供 Verilog 基础语法教程的同时,还能够在线仿真你的 Verilog 模块,将你的输出与正确的时序 ...

  2. verilog计数器

    1. 实验目的 (1)深入了解计数器原理 (2)学习使用Verilog实现同步计数器(模八) 2.实验内容 (1)原理描述 计数器的功能是记忆脉冲个数,它是数字系统中应用最为广泛的时序逻辑构件. 下图 ...

  3. verilog计数器分频

    直接上源码: //计数器分频 module clk_gen(input clk,//50MHZinput rst_n,//清零output reg clk_1khz);reg [31:0] cnt;a ...

  4. Verilog计数器0~9999

    题目: Build a 4-digit BCD (binary-coded decimal) counter. Each decimal digit is encoded using 4 bits: ...

  5. HDLBits答案(11)_Verilog计数器

    Verilog计数器 HDLBits链接 前言 今天更新一个小节内容:计数器.计数器可以说是我们接触数字电路以后用的最频繁的模块之一了,无论是项目.应聘还是将来的工作,计数器都无处不在. 题库 题目描 ...

  6. VCS建立仿真生成DVE波形

    一.环境与文件 Linux平台 csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.compiler 首先在testbench中加入如下 ...

  7. [文档].艾米电子 - 二进制计数器及其变体,Verilog

    对读者的假设 已经掌握: 可编程逻辑基础 Verilog HDL基础 使用Verilog设计的Quartus II入门指南 使用Verilog设计的ModelSIm入门指南 内容 1 free-run ...

  8. 【Verilog HDL 训练】第 08 天(二进制、Johnson、环形计数器)

    5月6日 计数器 1. 用verilog实现一个4bit二进制计数器. a) 异步复位 b) 同步复位 input clk, rst_n; output [3:0] o_cnt; Verilog实现代 ...

  9. 模24的8421BCD码计数器(Verilog HDL语言描述)(仿真与综合)

    目录 前言 原理 Verilog HDL程序设计 测试代码 仿真波形图 ISE综合后 RTL Schematic Technology Schematic 前言 本博文用Verilog HDL语言描述 ...

  10. 级联模60计数器(Verilog HDL语言描述)(仿真与综合)

    目录 前言 模60计数器 Verilog HDL语言描述 测试文件 仿真波形 RTL Schematic Technology Schematic 前言 看这篇文章前,推荐先看看模10计数器和模6计数 ...

最新文章

  1. 自研芯片架构 ,这家中国公司发布DPU芯片计划
  2. 向函数传递一维数组和已知大小的二维数组
  3. python求n项多项式的和_Python:创建n次多项式
  4. BugkuCTF-MISC题神奇宝贝
  5. 基于Carbide.C++ 的Symbian开发环境搭建
  6. linux命令行快捷命令及vim常用快捷命令
  7. HOWTO: Create and submit your first Linux kernel patch using GIT
  8. 特斯拉将国产Model 3和Model Y后轮驱动版价格上调4752元
  9. 2018-2019-2 20175215 实验五《网络编程与安全》实验报告
  10. css元素居中的几种方式
  11. 一文带你详细了解机房搬迁工作步骤及方案,强烈建议收藏备用!
  12. 视频内容理解相关方法
  13. PCB生成BOM表、网络表添加logo并且输出为Gerber文件
  14. opencv区域提取
  15. RTF转换为HTML格式(java)
  16. 排序法学习之插入排序(python3实现)
  17. 海康威视启用码流加密_如何在Windows 10上启用全盘加密
  18. 第十四章第四节:Java集合框架之二叉树
  19. 皮尔森(Pearson correlation coefficient)相关系数—统计学三大相关系数之一
  20. 2013年中国500强排行榜(zz)

热门文章

  1. 23《肖1000题》思修Day2
  2. 电竞天才Uzi宣布退役!用数据带你回顾他的职业生涯
  3. java串口通讯,可实现javaWeb页面同时控制多个串口,有demo
  4. Android 数据库Realm入门
  5. TalkingData携手中青旅联科建立旅游消费者大数据实验室
  6. 〖Python零基础入门篇㊽〗- Python中的时间包
  7. 自适应阈值分割—大津法(OTSU算法)C++实现
  8. Prodipe Pro 5v3超值模拟音色监听音箱评测
  9. 互联网春天仍在?中高端人才平均年薪为23.42万
  10. 自定义navigationBar