• 《FPGA全程进阶---实战演练》第九章 计数器要注意


      本小节我们来做一个好玩的事情,就是计数器,还记得在做LED自加实验时我们就曾经提到过关于计数器的相关议题,那么这节我们就来讨论讨论。

      探讨一下如下的问题:请用verilog记八个数的写法,分析这个可以更好的理解触发器的工作原理。

    1.
        reg [3:0]cnt;
        always@(posedge clk or negedge rst_n) begin
            if(!rst_n)
                cnt <= 4'd0;
            else if (cnt < 4'd8)
                cnt <= cnt + 1'b1;
            else
                cnt <= 4'd0;
        end
    2.
        reg [3:0]cnt;
        always@(posedge clk or negedge rst_n) begin
            if(!rst_n)
                cnt <= 4'd0;
            else if (cnt < 4'd8 - 1)
                cnt <= cnt + 1'b1;
            else
                cnt <= 4'd0;
        end
    3.
            reg [3:0]cnt;
        always@(posedge clk or negedge rst_n) begin
            if(!rst_n)
                cnt <= 4'd1;
            else if (cnt < 4'd8 )
                cnt <= cnt + 1'b1;
            else
                cnt <= 4'd1;
        end
    
    4.
            reg [3:0]cnt;
        always@(posedge clk or negedge rst_n) begin
            if(!rst_n)
                cnt <= 4'd1;
            else if (cnt < 4'd7 )
                cnt <= cnt + 1'b1;
            else
                cnt <= 4'd1;
        end

      对应的仿真结果为:

    1.计数为9个。

    wps7D57.tmp

    2.计数为8个

    wps7D77.tmp

    3.计数为8个

    wps7D88.tmp

    4.计数为7个

    wps7D89.tmp

      在else if语句中的判断条件为 cnt < 4’d7或者cnt  <4’d8,以cnt < 4’d7为例,当cnt =4’d7显然是不满足条件的,所以利用跳出自加程序,执行else语句,但是cnt = 4’d7也会被打印输出,这是由于时序电路在时钟的节奏下一拍一拍的输出,当时钟上升沿来临时,这时cnt = 4’d7,然后等待下一个时钟沿到来把cnt = 4’d7打入到锁存器里面去,然后再在下一个时钟沿来临将cnt = 4’d0打入。以此类推。

      针对上述的四种情况,大家在写一些利用计数器进行分频的程序时,若是精确控时,请注意cnt小于的常数是多少,这一点务必搞清楚。

  • 相关阅读:
    微服务-1初识
    RESTful-5开发API
    RESTful-4使用教程
    RESTful-3架构详解
    RESTful-2一分钟理解什么是REST和RESTful
    RESTful-1概述
    Swagger-概述
    net core体系-web应用程序-4asp.net core2.0 项目实战(任务管理系统)-2项目搭建
    net core体系-web应用程序-4asp.net core2.0 项目实战(任务管理系统)-1项目说明
    (大数 startsWith substring) Exponentiation hdu1063
  • 原文地址:https://www.cnblogs.com/raymon-tec/p/5123710.html
Copyright © 2020-2023  润新知