verilog基础语法-计数器

概述:

计数器是FPGA开发中最常用的电路,列如通讯中记录时钟个数,跑马灯中时间记录,存储器中地址的控制等等。本节给出向上计数器,上下计数器以及双向计数器案例。

内容

  1. 向上计数器

2.向下计数器

3.向上向下计数器

1. 向上计数器

代码

复制代码
module regtest(
	input clk , // system clock 50Mhz on board
	input rst_n, // system rst, low active 
	input en_clk,
	input load_enable,
	input [3:0] load_data,
	output [3:0] y1  // output signal

    );
reg [3:0] up_cnt;
assign y1 = up_cnt;
always @(posedge clk or negedge rst_n)
  if (rst_n==0)
	 up_cnt <= 0;
  else if (en_clk)
	 if (load_enable)
		up_cnt <= load_data;
	 else
		up_cnt <= up_cnt + 1;

endmodule

RTL结构图

技术原理图,基本的计数器结构是由触发器与组合逻辑来设计的,在FPGA中触发器有fdc来实现,组合逻辑使用lut查找表来实现,

2.向下计数器

代码

复制代码
module regtest(
	input clk , // system clock 50Mhz on board
	input rst_n, // system rst, low active 
	input en_clk,
	input load_enable,
	input [3:0] load_data,
	output [3:0] y1  // output signal

    );
reg [3:0] down_cnt;
assign y1 = down_cnt;
always @(posedge clk or negedge rst_n)
  if (rst_n==0)
	 down_cnt <= 0;
  else if (en_clk)
	 if (load_enable)
		down_cnt <= load_data;
	 else
		down_cnt <=down_cnt- 1;

endmodule

RTL结构图

技术原理图

3.向上向下计数器

代码

复制代码
module regtest(
	input clk , // system clock 50Mhz on board
	input rst_n, // system rst, low active 
	input en_clk,
	input load_enable,
	input [3:0] load_data,
	input up,
	output [3:0] y1  // output signal

    );
reg [3:0] up_down_cnt;
assign y1 = up_down_cnt;
always @(posedge clk or negedge rst_n)
  if (rst_n==0)
	 up_down_cnt <= 0;
  else if (en_clk)
	 if (load_enable)
		up_down_cnt <= load_data;
	 else if (up)
		up_down_cnt <=up_down_cnt+ 1;
	 else
		up_down_cnt <=up_down_cnt- 1;

endmodule

RTL结构图

技术原理图

总结:

计数器是基础,要理解它的设计电路图。

相关推荐
nature_forest2 小时前
vivado2018.2固化程序方法之.bin文件固化法
windows·fpga开发
m0_46644103詹湛2 小时前
FPGA时序优化与高速接口实战手册
笔记·学习·fpga开发·硬件架构·verilog
upper20202 小时前
从零开始做Verilog实验--01--4位计数器
fpga开发
upper20202 小时前
从零开始动手做Verilog实验--02--模为60的BCD加法器
fpga开发
nbwenren3 小时前
基于AD9250数据接收的FPGA纯Verilog实现JESD204B协议及三套工程源码支持
fpga开发
upper20203 小时前
从零开始动手做Verilog实验--03--自动售卖机
fpga开发
salipopl21 小时前
FPGA中AXI-FIFO主机接口的自定义实现与versal读写工程分析
网络·fpga开发
觉感21 小时前
25、Verilog RTL 级低功耗设计(下)
fpga开发·verilog教程
可编程芯片开发1 天前
基于均匀线阵混频信号和FFT变换的相移波束形成算法FPGA实现
fpga开发·fft变换·均匀线阵·混频信号·相移波束形成
汽车仪器仪表相关领域1 天前
Kvaser USBcan Pro 2xHS v2:双通道高速 CAN/FD 专业级 USB 接口,汽车与工业总线深度开发与诊断的核心工具
网络·人工智能·功能测试·fpga开发·汽车·可用性测试