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结构图

技术原理图

总结:

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

相关推荐
tiantianuser4 小时前
RDMA简介5之RoCE v2队列
fpga开发·verilog·fpga·rdma·高速传输·rocev2
碎碎思5 小时前
打破延迟极限的 FPGA 机械键盘
fpga开发·计算机外设
hahaha60161 天前
Flash烧录速度和加载配置速度(纯FPGA & ZYNQ)
fpga开发
hahaha60161 天前
ARINC818编解码设计FPGA实现
fpga开发
XMAIPC_Robot1 天前
基于RK3568的多网多串电力能源1U机箱解决方案,支持B码,4G等
linux·fpga开发·能源·边缘计算
广药门徒1 天前
在使用一些不用驱动大电流的设备就可以用stm32的自己的上下拉但是本身上下拉不就是给iicspi这些他通信给信号的吗中怎么还跟驱动能力扯上了有什么场景嘛
stm32·单片机·fpga开发
hahaha60161 天前
XDMA pcie环路测试
fpga开发
XMAIPC_Robot2 天前
基于FPGA + JESD204B协议+高速ADC数据采集系统设计
fpga开发
XMAIPC_Robot2 天前
基于RK3576+FPGA+AI工业控制器的工地防护检测装备解决方案
人工智能·fpga开发
XMAIPC_Robot3 天前
基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代
linux·数码相机·fpga开发·架构·边缘计算