Verilog代码BCD计数器

设计代码

`timescale 1ns / 1ps
module Test0953(clk,reset,count);
input clk;
input reset;
output [3:0] count;
reg [3:0] count;
parameter zero=0,one=1,two=2,three=3,four=4,five=5,six=6,seven=7,eight=8,nine=9;
reg [3:0] pr_state,nx_state;
///
always @(posedge clk)
   if(reset)
      pr_state<=zero;
   else
      pr_state<=nx_state;
 //     
always @(pr_state)
   case(pr_state)
   zero:begin
      nx_state=one;
      count=4'b0000;
      end
   one:begin
      nx_state=two;
      count=4'b0001;
      end
   two:begin
      nx_state=three;
      count=4'b0010;
      end
   three:begin
      nx_state=four;
      count=4'b0011;
      end
   four:begin
      nx_state=five;
      count=4'b0100;
      end   
   five:begin
      nx_state=six;
      count=4'b0101;
      end
   six:begin
      nx_state=seven;
      count=4'b0110;
      end
   seven:begin
      nx_state=eight;
      count=4'b0111;
      end
   eight:begin
      nx_state=nine;
      count=4'b1000;
      end
   nine:begin
      nx_state=zero;
      count=4'b1001;
      end
   default:nx_state=0;
   endcase
endmodule

测试代码

`timescale 1ns / 1ps
module Test1006;
reg clk;
reg reset;
wire [3:0] count;

always begin
   #10 clk=1;
   #10 clk=0;
end

initial begin
   clk=0;
   reset=1;
   #20 reset=0;
   #4000;
   end
Test0953 x1(.clk(clk),
            .reset(reset),
            .count(count));   
endmodule

要求和代码逻辑比较简单,就不放置仿真波形了,可以自己去做仿真看。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值