基于Verilog(8)计数器的经典数字电路设计

日期: 2023-05-03 01:02:45|浏览: 344|编号: 13421

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

基于Verilog(8)计数器的经典数字电路设计

介绍

最后说说柜台,耶! 在数字系统中手机跑步计数器,最常用的时序电路几乎就是计数器。 计数器不仅可以用于时钟脉冲的计数,还可以用于分频、定时、拍脉冲的产生、脉冲序列的产生、数字运算等。

其实数数也是最简单最基本的操作,就像我们心里数数一样。 但是不同的是,计数器是有一定的频率计数的,有一定的时间间隔的,而我们心中计数的时间间隔是不一样的(也就是不够准确),而计数器就是这个逻辑实现这种操作的电路,主要是通过计算时钟(上升)脉冲的个数。

计数器在我们身边也很常见,比如手机里运行定时器,电脑关机等; 所以,熟悉计数器不仅对学习很有帮助,还能锻炼我们的逻辑能力,让理解更深入。 通过了解数字电路的工作原理,对技术更感兴趣!

1.计数器的代码实现和RTL电路实现

下面是计数器的代码实现:

module Counters(
    input Clk,
    input Up, // 可增可减(可逆)计数器
    output reg [7:0] Cout = 8'b0000_0000 // 8 位计数器
    );
   always @(posedge Clk)
      if (Up)
         Cout <= Cout + 1'b1;
      else
         Cout <= Cout - 1'b1;
endmodule

下面是计数器的RTL电路实现:

时钟信号:Clk​​(时钟信号,是电路的“心脏”手机跑步计数器,缺一不可);

复位信号:rst_n(复位信号也是一个合格电路不应该缺少的输入信号,当复位信号为低电平时,输出全部置零,也就是所谓的低电平有效)。 当复位信号为高电平时,开始计数,当时钟信号的上升沿到来时计数一次,每256个时钟周期计数为一个输出周期,将输出置零,然后再次计数; 当然,为了更好的理解代码,这里没有添加复位信号啊哈哈哈哈。

计数值信号:Cout(显示计数值,根据自己设计的需要,可以设置位数,比如最大计数值为6,那​​么位数可以设置为3bits)

其实这不仅是一个计数器,还是一个分频器,还可以作为定时器使用(也可以作为闹钟功能)。 这三者其实是密切相关的,不过博主并没有使用分频器和定时器,其实只需要加一两个信号就可以了。 各位大侠能不能想办法加进去,让这个程序既有计数器的功能,又有分频器和定时器的功能呢? (稍后公布)

提醒:请联系我时一定说明是从高奢网上看到的!