verilog设计十进制计数器(含进位位)
Posted 飞翔的梦的窝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog设计十进制计数器(含进位位)相关的知识,希望对你有一定的参考价值。
十进制计数器:
设计要求:
1、每当计数器值为4’b001时,自动回到4’b0000
2、每个时钟沿计数器值加1
3、进位输出carry应该与4\'b1001同周期输出
4、异步复位
module cnt10 ( clk, rst_n, carry, cnt ); input clk, rst_n; output carry; output [3:0] cnt; reg carry; reg [3:0] cnt; always @( posedge clk or negedge rst_n ) begin if ( ~rst_n ) begin cnt <= 4\'b0000; end else if ( cnt == 4\'b1001 ) begin cnt <= 4\'b0000; end else begin cnt <= cnt + 4\'b0001; end end always @(posedge clk or negedge rst_n) begin if(!rst_n) begin carry <= 1\'b0; end else if(cnt == 4\'b1000) begin carry <= 1\'b1; end else carry<= 1\'b0; end endmodule
测试程序:
`timescale 1ns/1ps module cnt10_tb(); reg clk, rst_n; wire carry; wire [3:0] cnt; always #10 clk = ~clk; cnt10 cnt10_tb( .clk(clk), .rst_n(rst_n), .carry(carry), .cnt(cnt) ); initial begin clk = 1\'b0; rst_n = 1\'b1; #10 rst_n = 1\'b0; #10 rst_n = 1\'b1; end endmodule
波形图:
在这个十进制计数器中,唯一要注意的一点就是进位位carry变化的时刻,如果是为了使下一级能正确接收到前一级的进位位标识,要在计数到九时使进位位有效;如上图波形所示。
以上是关于verilog设计十进制计数器(含进位位)的主要内容,如果未能解决你的问题,请参考以下文章
使用74LS83构成4位二进制全加\全减器。 具体要求:1)列出真值表; 2)画出逻辑图; 3)用Verilog HDL仿真