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

技术原理图

总结:

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

相关推荐

  1. FPGA | Verilog基础语法

    2023-12-17 01:30:02       45 阅读
  2. Verilog基本语法概述

    2023-12-17 01:30:02       39 阅读
  3. 2.1 Verilog 基础语法

    2023-12-17 01:30:02       31 阅读
  4. verilog基础语法之数据类型

    2023-12-17 01:30:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 01:30:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 01:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 01:30:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 01:30:02       20 阅读

热门阅读

  1. shell编程-sort命令详解(超详细)

    2023-12-17 01:30:02       38 阅读
  2. AI视频-stable-video-diffusio介绍

    2023-12-17 01:30:02       38 阅读
  3. 使用Python安装Selenium

    2023-12-17 01:30:02       43 阅读
  4. 网络安全应急响应之事件分类

    2023-12-17 01:30:02       39 阅读
  5. Redission从入门到入门

    2023-12-17 01:30:02       38 阅读
  6. Makefile:6: *** recipe commences before first target. Stop.

    2023-12-17 01:30:02       40 阅读
  7. wxWidgets:使用wxSplitterWindow类进行窗口分割编程

    2023-12-17 01:30:02       30 阅读
  8. LeetCode //C - 345. Reverse Vowels of a String

    2023-12-17 01:30:02       40 阅读
  9. 回调函数详解

    2023-12-17 01:30:02       40 阅读
  10. 聊聊AsyncHttpClient的SignatureCalculator

    2023-12-17 01:30:02       34 阅读