从零开始的FPGA学习6-加法/减法计数器

从零开始的FPGA学习6-计数器

  • 加法计数器
    • 原理
    • 代码
    • 仿真
    • 波形
    • RTL
  • 减法计数器
    • 原理
    • 代码
    • 仿真
    • 波形
    • RTL
  • 结束语

加法计数器

原理

每次时钟脉冲信号 clk 为上升沿时, 计数器会将计数值加 1。下图为模4计数器。
从零开始的FPGA学习6-加法/减法计数器_第1张图片

代码

module lab(
    input clk,
    output reg [3:0]Q=0   //模16计数器
    );
    always @(posedge clk)
        begin
            Q<=Q+1;
        end
    
endmodule

仿真

module Test();
    //input
    reg clk;
    //output
    wire [3:0]Q;  //不要漏掉[3:0],否则仿真有误
    initial
        begin
             clk=0;  
        end
    always #50 clk=~clk;
    
    lab test(
    .clk(clk),
    .Q(Q)
    );

endmodule

波形

从零开始的FPGA学习6-加法/减法计数器_第2张图片

RTL

从零开始的FPGA学习6-加法/减法计数器_第3张图片

减法计数器

原理

减法计数器的计数方式改成 15,14…0,其他与加法计数器一样

代码

module lab(
    input clk,
    output reg [3:0]Q=4'b1111   //模16计数器
    );
    always @(posedge clk)
        begin
            Q<=Q-1;
        end
    
endmodule

仿真

和加法计数器一样

波形

从零开始的FPGA学习6-加法/减法计数器_第4张图片

RTL

从零开始的FPGA学习6-加法/减法计数器_第5张图片

结束语

这次的实验很简单,下一个实验是 "进阶版"分频器,继续学习去了~

你可能感兴趣的:(笔记)