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

技术原理图

总结:

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

相关推荐
博览鸿蒙18 小时前
FPGA 工程中常见的基础硬件问题
fpga开发
GateWorld1 天前
FPGA 实现无毛刺时钟切换
fpga开发·实战·无毛刺时钟
Seraphina_Lily1 天前
从接口选型到体系结构认知——谈 CPU–FPGA–DSP 异构处理系统与同构冗余设计
fpga开发
Seraphina_Lily1 天前
CPU–FPGA–DSP 异构系统中的总线接口选型——为什么 CPU 用 eLBC,而 DSP 用 XINTF?
fpga开发
GateWorld1 天前
FPGA开发十年心路
fpga开发
ALINX技术博客2 天前
【ALINX 教程】FPGA Multiboot 功能实现——基于 ALINX Artix US+ AXAU25 开发板
fpga开发·fpga
Genevieve_xiao2 天前
【verilog】如何一小时成为verilog高手(并非
fpga开发
从此不归路2 天前
FPGA 结构与 CAD 设计(第3章)上
ide·fpga开发
Aaron15882 天前
基于VU13P在人工智能高速接口传输上的应用浅析
人工智能·算法·fpga开发·硬件架构·信息与通信·信号处理·基带工程
碎碎思2 天前
在 FPGA 上实现并行脉冲神经网络(Spiking Neural Net)
人工智能·深度学习·神经网络·机器学习·fpga开发