加减BCD计数器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

module counter(clkin, rst_n, ld, data, out, c,jiajian,hex0,hex1); input clkin, rst_n, ld,jiajian;

input [7:0] data;

output [7:0] out;

output c;

output [6:0]hex0;

output [6:0]hex1;

reg [6:0]hex0;

reg [6:0]hex1;

reg c = 0;

reg[3:0] ten, unit;

assign out = {ten, unit};

parameter seg0 = 7'b1000000, //显示在数码管上的数码 seg1 = 7'b1111001,

seg2 = 7'b0100100,

seg3 = 7'b0110000,

seg4 = 7'b0011001,

seg5 = 7'b0010010,

seg6 = 7'b0000010,

seg7 = 7'b1111000,

seg8 = 7'b0000000,

seg9 = 7'b0010000,

sega = 7'b0001000,

segb = 7'b0000011,

segc = 7'b1000110,

segd = 7'b0100001,

sege = 7'b0000110,

segf = 7'b0001110;

always@(posedge clkin )

begin

case (jiajian)

1'b0:

begin

if(!rst_n)

{ten, unit} <= 0;

else if(ld)

{ten, unit} <= data;

else

begin

if(ten == 5)

begin

if(unit == 8)

begin

c = 1;

unit <= unit-1; end

else if(unit == 0)

begin

c = 0;

{ten, unit} <= 9; end

else

unit <= unit-1; end

else if(unit == 0)

begin

ten <= ten-1;

unit <= 9;

end

else

unit <= unit-1;

end

end

1'b1:

begin

if(!rst_n)

{ten, unit} <= 0;

else if(ld)

{ten, unit} <= data;

else

begin

if(ten == 5)

begin

if(unit == 8)

begin

c = 1;

unit <= unit+1; end

else if(unit == 9)

begin

c = 0;

{ten, unit} <= 0; end

else

unit <= unit+1; end

else if(unit == 9)

begin

ten <= ten+1;

unit <= 0;

end

else

unit <= unit+1;

end

end

endcase

end

always@(unit[3:0]) //数码管显示程序case(unit[3:0])

4'b0000:hex0[6:0]=seg0;

4'b0001:hex0[6:0]=seg1;

4'b0010:hex0[6:0]=seg2;

4'b0011:hex0[6:0]=seg3;

4'b0100:hex0[6:0]=seg4;

4'b0101:hex0[6:0]=seg5;

4'b0110:hex0[6:0]=seg6;

4'b0111:hex0[6:0]=seg7;

4'b1000:hex0[6:0]=seg8;

4'b1001:hex0[6:0]=seg9;

endcase

always@(ten[3:0])

case(ten[3:0])

4'b0000:hex1[6:0]=seg0;

4'b0001:hex1[6:0]=seg1;

4'b0010:hex1[6:0]=seg2;

4'b0011:hex1[6:0]=seg3;

4'b0100:hex1[6:0]=seg4;

4'b0101:hex1[6:0]=seg5;

4'b0110:hex1[6:0]=seg6;

4'b0111:hex1[6:0]=seg7;

4'b1000:hex1[6:0]=seg8;

4'b1001:hex1[6:0]=seg9;

endcase

endmodule

相关文档
最新文档